MastodonにRSSフィードを投稿する


ブログの更新情報や複数サイトの更新情報をトゥートしたいときにpythonのコードからRSSフィードを取得してマストドンに投稿してみる

まず必要なパッケージを入れる

pip install feedparser Mastodon.py

Mastodon.pyの説明をみながら組んでいく
https://github.com/halcy/Mastodon.py

以下のように配列に追加したRSSFeedの数だけループしていき、トゥートしたものに関してはログファイルに保存していく

それぞれ

  • instance_url: マストドンインスタンスのURL
  • login_id: マストドンのログインID
  • login_password: マストドンのログインパスワード

“feed_urls”の配列に配信したいRSSのURLを入れていけば準備完了

import os
from mastodon import Mastodon
import feedparser

# Settings
instance_url = 'https://mastodon.social'
login_id = '[YourUserName]'
login_password = '[YourPassword]'

history_file = 'toot_log.txt'
clientcred_file = 'pytooter_clientcred.txt'
feed_urls = []
feed_urls.append('[RSS feed url]')

if not os.path.exists(clientcred_file):
    Mastodon.create_app(
        'Feed2Mastodon',
        to_file = clientcred_file,
        api_base_url = instance_url
    )

mastodon = Mastodon(
    client_id = clientcred_file,
    api_base_url = instance_url
)
mastodon.log_in(
    login_id,
    login_password
)

for feed_url in feed_urls:
    feed = feedparser.parse(feed_url)

    for item in reversed(feed.entries):
        link = item.link
        content = item.title + ' ' + item.link
        is_send = True

        if os.path.exists(history_file):
            data = open(history_file, "r+")
            entries = data.readlines()
        else:
            data = open(history_file, "a+")
            entries = []

        for entry in entries:
            if link in entry:
                is_send = False

        if is_send:
            mastodon.toot(content)
            data.write(link + '\n')
            data.flush()

    data.close()

このファイルを”feed_toot.py”として保存したら、下記コマンドを実行してトゥートされるか確認する

python feed_toot.py

上記コードは一応GitHubにものせています

https://github.com/exizlynx/feed2toot

ログファイルが単純なテキストファイルなので、更新頻度の高いRSSフィードや多数のフィードを登録する場合は注意が必要


この投稿へのコメント

  1. 匿名 said on 2017/05/15 at 11:57 AM

    ありがとうございました

コメントを残す

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL