LoginSignup
2
1

More than 5 years have passed since last update.

mastodonで特定のハッシュタグの画像urlを取得する

Posted at

はじめに

今回はmastodonで特定のハッシュタグの画像urlを取得するプログラムを作りました。動機は今度friends.nicoがサービス終了してしまうのでサーバ上にある画像を保存したいと考えたからです。
プログラミング初心者なので結構ガバガバなので何か指摘があったらコメントしてください。

全体の流れ

  1. モジュールインポート
  2. ログイン
  3. 値を決める
  4. 任意の回数ループして画像urlを取得する

プログラム

解説はコメントにだいたいかいてあるはずなので頑張ってコードとコメントを読んで理解してください。そんなに難しいものではないと思います。
また、画像のダウンロードはirvineというソフトを使いました。

#マストドンにおいて特定のハッシュタグの付いた画像tootの画像のurlをすべて取得するプログラム

#モジュールインポート
from mastodon import Mastodon
import re

#login、あらかじめいろいろ取得しといて
mastodon = Mastodon(
    client_id="app_key.txt",
    access_token="user_key.txt",
    api_base_url = "https://****.***" #じぶんのインスタンスで
)




#main
hashtag = 'おっぱい' #任意のワード
max_id = 1145141919810893 #このid以下のものを取得これは下のプログラムでいうrowのリストの中にあるから適当にしらべて
get_number = 1919 #取得するtoot数
cycle = (get_number//40)+1 #ループ回数、下のやつでlimitを40回にしたのは処理を軽くするため

#ループ
while(cycle > 0):
    tl = mastodon.timeline_hashtag(max_id=max_id,hashtag=hashtag,limit=40) #tootを取得、リスト、limitは40まで
    cycle = cycle - 1 #ループ回数
    count = 0 #これはなくてもいいけどデバッグ用に置いておくあとで`print(count)`すればいい

    #画像のurlのみ取得
    for row in (tl):
        count = count+1
        if row['media_attachments'] == []:
            max_id = row['id'] #最後の['id']を取得してループ
        else:
            print(row['media_attachments'][0]['url']) #ここに[0]はさむのは辞書、リスト、辞書の内包表記になってるから
            max_id = row['id'] #最後の['id']を取得してループ

注意ポイント

mastodon.timeline_hashtaglimitがの限界が40までなのでたくさんさかのぼるためにはmax_id(指定したid以下のtootを取得する)を変えていく必要があります。whileでループしているのはそのためです。

おわりに

ぱうーとかでつかえそうですね。

参考にした記事

https://qiita.com/itsumonotakumi/items/1f9273a07f1f7189921f
https://toshipedia.jp/201803133574/

2
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
2
1