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はそのまま文字列として投稿されてしまうので、その点は改良が必要