1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Bluesky と Twitter で arXiv bot を作った

Last updated at Posted at 2024-08-29

0. はじめに

  • Bluesky で arXiv Bot を作ります。
  • Twitter で arXiv Bot を作ります。

それでは、レッツゴー!

1. Bluesky API

Bluesky API は登録と同時に自動的に使えます。

Get Started | Bluesky
https://docs.bsky.app/docs/get-started

BlueskyのAPIを試してみる #API - Qiita
https://qiita.com/koyukitukimino/items/ff0f75e86fc7cf7a5124

簡単。ログインはID とパスワードでこうやってやる。

def bsky_login(category):
    # password
    p = read_password(category)
    # login
    client = Client(base_url='https://bsky.social')
    client.login(login='krxiv-' + category + '.bsky.social',password=p)

    # set a image 
    with open('img/ArXiv_logo_2022.png', 'rb') as f:
        img = f.read()
    thumb = client.upload_blob(img)
    return client, thumb

簡単。

2. arXiv

arXiv の締切や更新予定日時は公開されています。

localtime at arxiv.org
https://arxiv.org/localtime

現状

gr-qc
hep-th
math-ph
quant-ph
hep-ph

のカテゴリーをサポートしています。

保証はできかねますが、追加してほしいカテゴリーがあったらご一報ください。

3. cron

cron で平日12時にコードを走らせます。

SHELL=/bin/zsh
0 12 * * 1-5 cd ~/arxiv_bot ; /bin/sh run.sh

(/bin/sh はとりあえず消してない)

コードの中身は GitHub においてあります。

4. Twitter API

Bluesky bot が目標期限内の8月に出来上がったので、余力で Twitter bot も作ってみる。

登録

Twitter で Developer 登録をします。もちろんフリープラン。アカウントは新しく作ります。はっきり言ってロボットではない証明あたりがステップ数ありすぎて超絶イライラする

macOS の Safari で登録するとスムーズに行きました。メアド認証がうまくいかないときは、再送を繰り返してください。

アカウント作成 / Twitter
https://twitter.com/i/flow/signup?lang=ja

X Developers
https://developer.x.com/en/portal/petition/essential/terms?plan=free

参考→

2023年版 Twitter API v2を無料で叩く (OAuth 2.0 with PKCE)
https://zenn.dev/nyancat/articles/20230803-twitter-api-oauth2-pkce

目的は下のように書いた。

The project aims to develop an arXiv bot utilizing the Twitter API to automatically post updates on newly published scientific papers in specific categories, such as hep-th, hep-ph, or gr-qc. The bot will enhance scientific outreach by making recent research more accessible to the community, enabling researchers and enthusiasts to stay informed about the latest advancements in their field. The bot will filter papers based on keywords, topics, or authors, and tweet summaries or links to these papers in real-time. This tool is intended to support the dissemination of scientific knowledge and foster academic collaboration.

GPT、最高。

認証

憎き Elon Musk のせいで ク◯めんどくさい認証をくぐり抜けながら ツイートを通します。

  1. Key や Token は適宜 regenerate する。必ずメモする。
  2. Developer Portal に Twitter account を登録する。(さっきやった)
  3. API v1.1 のコードは基本的に使えなくなっているので v2 のコードにする。(Elon Musk のせい
  4. User Authentication settings < Settings < 番号 < Default-Project < Project & Apps を save する。権限は Read & Write にする("Access Token and Secret"を (re)generate する)
  5. Keys and tokens < 番号 < Default-Project で Key や Token を generate する。
  6. 投稿する。

2 をしないと以下のようなエラーが出ます。

Error occurred: 403 Forbidden
453 - You currently have access to a subset of Twitter API v2 endpoints and limited v1.1 endpoints (e.g. media post, oauth) only. If you need access to this endpoint, you may need a different access level. You can learn more here: https://developer.twitter.com/en/portal/product

3 をしないと以下のようなエラーが出ます。

Error occurred: 403 Forbidden
Your client app is not configured with the appropriate oauth1 app permissions for this endpoint.

参考サイト

  1. X Developers
    https://developer.x.com/en/portal/petition/essential/terms?plan=free

    1. Twitter APIs Error Python: You currently have access to a subset of Twitter API v2 endpoints and limited v1.1 endpoints (e.g. media post, oauth) only - Stack Overflow https://stackoverflow.com/questions/76744593/twitter-apis-error-python-you-currently-have-access-to-a-subset-of-twitter-api
    2. 古いの使ってて勝手に勘違いしていた話。|あさぶろ https://note.com/furokun/n/n5cfadf6027bb
    3. PythonTweepy oauth1 - X API / X API v2 - X Developers https://devcommunity.x.com/t/pythontweepy-oauth1/189150
    4. 【Twitter API Errorcode:453】TweepyをAPIv2で利用する | ClassyNode https://classynode.com/2023/07/apply_twitter_apiv2/
    1. performance - errors when trying to tweet using tweepy - Stack Overflow https://stackoverflow.com/questions/74436471/errors-when-trying-to-tweet-using-tweepy
    2. 【2022年 10月更新】よくわかる「Twitter API」-申請編- | ENT+(エントプラス) https://ent-plus.com/twitter-api-request/ (「User Authentication settings」でユーザー認証を編集しよう!)
    3. App permissions | Docs | Twitter Developer Platform https://developer.x.com/en/docs/apps/app-permissions

stackoverflow, 最高ーーー

ログインは4つの文字列を使ってこのようにします。

import tweepy

def twitter_login(category):
    # Load the credentials into a dictionary
    credentials_dict = load_credentials(category)

    # Authenticate to Twitter
    client = tweepy.Client(
        consumer_key=credentials_dict['API Key'],
        consumer_secret=credentials_dict['API Key Secret'],
        access_token=credentials_dict['Access Token'],
        access_token_secret=credentials_dict['Access Token Secret']
    )
    return client

n. おわりに

  • Bluesky で arXiv Bot を作りました。
  • Twitter で arXiv Bot を作りました。

お気づきかと思いますが、Twitter のことは X と呼ぶつもりはありません。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?