BlueskyにAPIから画像、リンク、ハッシュタグ付きでツイートする最小Pythonスクリプト。とても面倒
メモ
- atprotoライブラリーを利用。さくらレンタルサーバーにはライブラリー入らなかったのでロリポップサーバーにエンドポイントを設置。
- x.comのAPIと違い、画像、リンク、ハッシュタグそれぞれ別要素として渡す必要がある。
- 画像は縦横サイズまで渡さないと無駄な余白がつく。
- 下記では画像の縦横比を取得するためだけにPillowライブラリーを使用している。
Blueskyは登場しては消えていく多くのSNSと違ってそれなりに利用者がいて最小限のコミュニティー&情報収集場所としての地位を確立出来ている感じだね。
スクリプト
from atproto import Client, client_utils, models
from PIL import Image
# ツイート内容、画像は事前にファイルとしてローカルに保存してある場合
posttext='ツイートのテキスト'
posttag='test'
postimage='embedphoto.jpg'
posturl='https://usepocket.com'
# Blueskyのアカウント
account = "fetuin.bsky.social"
pwd = "xxxxxxxxx"
# BlueskyのAPIにアクセス開始
client = Client(base_url='https://bsky.social')
client.login(account, pwd)
# 投稿内容を作成
text_builder = client_utils.TextBuilder()
# テキストをセット
text_builder.text(posttext)
# リンクをセット
text_builder.link('リンクだよ', postlink)
# ハッシュタグをセット
text_builder.tag("#"+posttag, posttag)
# 画像を読み込んでPillowを使い縦横の長さを取得
with Image.open(postimage) as im:
width, height = im.size
#画像をセット
with open(postimage, "rb") as f:
image = client.upload_blob(f.read())
images = [models.AppBskyEmbedImages.Image(alt="photo", image=image.blob,aspect_ratio={"width": width, "height":height})]
image_embed = models.AppBskyEmbedImages.Main(images=images)
# Blueskyに投稿
client.send_post(text_builder,embed=image_embed)
イーロンマスクが私物化してるし、収益化の目途がついたらx.comが不自由なSNSになっていくのは目に見えているのでBluskyをそれなりの規模に育てておくのが皆のためな気がする。
Category:#サイト運営関連
Follow @fetuin
■ ■ ■ コメント ■ ■ ■
この記事のアクセス数:本カテゴリーで直近コメントが書かれた記事
→カテゴリー:#サイト運営関連(記事数:31)
本カテゴリーの最近の記事(コメント数)




