見出し画像

業務連絡:WeTheMedia🇯🇵日本語訳チャネルは新バージョンをテスト中

ここ数日かけて、Botの安定化と、新機能の実装と両方をチマチマとやっていたのですが、今日の運用している感じだと、おかしなエラーは無くなった感じなので、もうちょっと様子見します。

これから寝るので止まってたら対処できるのは8時間後くらいかなーーー。

エラーで止まるのは、主にDeepLが混んでいるときに翻訳のリクエストだして拒否られる感じと思うので、DeepLへのAPIコールはTry Exceptをwhileループに入れて、2回目のリトライをしたり、数秒のウェイトを入れたりして、混雑を避ける努力をしたので、これが原因だったのなら安定化するんじゃないかなーと期待しています。

あとは、テレグラムのウェブページインスタントビューという機能があるのですが、URLが含まれる投稿すると、投稿中に記事のタイトルと二行くらいの記事の出だしとかが含まれるじゃないですか。

あの部分が取得できたらツイッターでも投稿者と出だしくらいは取得できて、翻訳できちゃうかなーと思って、このインスタントビューを取得する方法を探していたんだけど、なーんかよく分からないんですよね。

getWebPagePreview

というのがTDLibにあるから、これなんだろうなーとは思ったけど、これを使ってもエラーしか出てこなくってどうやって使うのか訳わかんねーよと思ってたんだけど、今回再挑戦したら、たまにプレビューが取得出来る時があったので、単にプレビューがあったりなかったりするだけらしいです。

これはPython側からは

from telegram.client import Telegram
tg = Telegram(api_id, api_hash, phone, database_encryption_key)
tg.login()

instant_view = tg.get_web_page_instant_view(url)
instant_view.wait()

で取得できます(たまに)。恐らく起動したtgインスタンスのsqlite3データベースにキャッシュされていないといけないパターンだと思うから、同一セッション内でUpdateを取得してデータベースにキャッシュさせてからAPIコールすると結果が変わる時がある気がする。

def getWebPagePreview(tg, url):
   data = {
    '@type': 'getWebPagePreview',
    'url': url,
    }

return tg._send_data(data)

もしかしたらインスタントビューとWebPagePreviewって違うのかなー。こっちはAPIをもとに自作した関数だけど、結果はこれもエラーばっかりだ。

で、取得できたときには、最大500文字までの記事の出だしとタイトルを投稿に含めるようにしてみたので、URLだけのような短い投稿ではMeaning Cloudの要旨サービスが活躍していましたが、プレビューがある時はこちらのデータも追加されると思います。

例えばこの投稿

Dan the man on fakebook.
https://fxn.ws/3gCyypT

Red.Pill.Pharmacist

という短い投稿ですが、プレビューがあったようで、次が追加されました。

Telegram web preview
Trump 'TRUTH Social' developing content moderation practices to ensure 'family-friendly' community by By Brooke Singman

EXCLUSIVE: When TRUTH Social launches later this quarter, the Trump Media & Technology Group social media platform will already have stringent content moderation practices in place to ensure it is a "family-friendly" online community, company CEO Devin Nunes told Fox Business.

Both Nunes and former President Donald Trump separately have told Fox Business that TRUTH Social is expected to be up and running by the end of the first quarter of 2022. Nunes told Fox Business that the company is on track.

これがdeeplで翻訳されて

テレグラム・ウェブ・プレビュー
トランプ「TRUTH Social」が「家族向け」のコミュニティを確保するためにコンテンツのモデレーション方法を開発中 By Brooke Singman

独占:TRUTH Socialが今四半期中にスタートする際、Trump Media&Technology Groupのソーシャルメディアプラットフォームは、 「家族に優しい」 オンラインコミュニティーであることを保証するために、すでに厳格なコンテンツモデレーションを実施していると、同社CEOのDevin Nunes氏はFox Businessに語った。

Nunes氏とDonald Trump元大統領はそれぞれ、Fox Businessに対し、TRUTH Socialは2022年の第一四半期末までにサービスを開始する予定だと述べた。Nunes氏はFox Businessに対し、同社は順調に進んでいると語った。

こんな感じでプレビューがある時は

タイトル by 記者の名前

500文字までの出だし

というフォーマットで記事のプレビューが見れるようになっています。

ただ、プレビューが取得できたケースがあまりないのでテストがあまく、取得できたデータをうまくParsingできるかが不透明なのが、辛いところ。

今の所、10個くらい?テストできたのは。

まあ、帰ってくる値はnestされたdictなんだけど、再帰関数でrecursiveにデータを探すようにしたから大丈夫なはずではあるのですが、世に放つと思わぬエラーに出くわすのが現実でごわします。

で、せっかくやったプレビューだけどTwitterには効いていない感じ。投稿にはプレビューがあるのにAPI経由では取得されせくれないのかい・・・。

ふうぅ・・。