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 のせいで ク◯めんどくさい認証をくぐり抜けながら ツイートを通します。
- Key や Token は適宜 regenerate する。必ずメモする。
- Developer Portal に Twitter account を登録する。(さっきやった)
- API v1.1 のコードは基本的に使えなくなっているので v2 のコードにする。(
Elon Musk のせい) -
User Authentication settings < Settings < 番号 < Default-Project < Project & Apps
を save する。権限はRead & Write
にする("Access Token and Secret"を (re)generate する) -
Keys and tokens < 番号 < Default-Project
で Key や Token を generate する。 - 投稿する。
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.
参考サイト
-
X Developers
https://developer.x.com/en/portal/petition/essential/terms?plan=free -
- 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
- 古いの使ってて勝手に勘違いしていた話。|あさぶろ https://note.com/furokun/n/n5cfadf6027bb
- PythonTweepy oauth1 - X API / X API v2 - X Developers https://devcommunity.x.com/t/pythontweepy-oauth1/189150
- 【Twitter API Errorcode:453】TweepyをAPIv2で利用する | ClassyNode https://classynode.com/2023/07/apply_twitter_apiv2/
-
- performance - errors when trying to tweet using tweepy - Stack Overflow https://stackoverflow.com/questions/74436471/errors-when-trying-to-tweet-using-tweepy
- 【2022年 10月更新】よくわかる「Twitter API」-申請編- | ENT+(エントプラス) https://ent-plus.com/twitter-api-request/ (「User Authentication settings」でユーザー認証を編集しよう!)
- 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 と呼ぶつもりはありません。