Memo
- Bluesky投稿用のクラスを作りました。
import os
import atproto
from PIL import Image
from io import BytesIO
class BlueSky:
def __init__(self,account,password,base_url="https://bsky.social"):
self.client = atproto.Client(base_url=base_url)
self.client.login(login=account, password=password)
def send_massage(self,message:str=None):
try:
res = self.client.send_post(
text=message
)
except Exception as e:
print(e)
res = False
return res
def send_image(self,message,image_path,image_alt=""):
img = Image.open(image_path)
# bytes型に変換
img_byte_arr = BytesIO()
img.save(img_byte_arr , format=img.format)
img_byte_arr = img_byte_arr.getvalue()
self.client.send_image(
text=message,
image=img_byte_arr,
image_alt=image_alt
)
if __name__ == "__main__":
bs = BlueSky(
account=os.environ.get('BLUESKY_ACCOUNT'),
password=os.environ.get('BLUESKY_PASSWORD')
)
bs.send_image(f"message" ,image_path="画像のパス")
Blueskyにメッセージを投稿するときに、URLはそのまま文字列として投稿されてしまうので、その点は改良が必要