Post to Twitter - kitsystemyou/EnigmaticEcho GitHub Wiki

By Claude

import tweepy
import os
from openai import OpenAI
import requests
from datetime import datetime

def setup_twitter_clients():
    # Twitter API v1認証(メディアアップロード用)
    auth = tweepy.OAuthHandler(
        os.getenv("TWITTER_API_KEY"),
        os.getenv("TWITTER_API_SECRET")
    )
    auth.set_access_token(
        os.getenv("TWITTER_ACCESS_TOKEN"),
        os.getenv("TWITTER_ACCESS_TOKEN_SECRET")
    )
    api_v1 = tweepy.API(auth)
    
    # Twitter API v2認証(ツイート投稿用)
    client_v2 = tweepy.Client(
        consumer_key=os.getenv("TWITTER_API_KEY"),
        consumer_secret=os.getenv("TWITTER_API_SECRET"),
        access_token=os.getenv("TWITTER_ACCESS_TOKEN"),
        access_token_secret=os.getenv("TWITTER_ACCESS_TOKEN_SECRET")
    )
    
    return api_v1, client_v2

def generate_and_post_image(prompt, tweet_text):
    client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
    
    try:
        # 画像生成
        response = client.images.generate(
            model="dall-e-3",
            prompt=prompt,
            size="1024x1024",
            quality="standard",
            n=1
        )
        
        # 画像ダウンロード
        image_url = response.data[0].url
        image_response = requests.get(image_url)
        
        temp_image = "temp_image.png"
        with open(temp_image, "wb") as f:
            f.write(image_response.content)
        
        # Twitter APIクライアント取得
        api_v1, client_v2 = setup_twitter_clients()
        
        # 画像アップロード(v1 API)
        media = api_v1.media_upload(temp_image)
        
        # ツイート投稿(v2 API)
        tweet = client_v2.create_tweet(text=tweet_text, media_ids=[media.media_id])
        
        os.remove(temp_image)
        print("ツイートを投稿しました")
        return tweet.data['id']
        
    except Exception as e:
        print(f"エラーが発生しました: {str(e)}")
        return None

if __name__ == "__main__":
    # 環境変数の設定
    os.environ["OPENAI_API_KEY"] = "your-openai-api-key"
    os.environ["TWITTER_API_KEY"] = "your-twitter-api-key"
    os.environ["TWITTER_API_SECRET"] = "your-twitter-api-secret"
    os.environ["TWITTER_ACCESS_TOKEN"] = "your-twitter-access-token"
    os.environ["TWITTER_ACCESS_TOKEN_SECRET"] = "your-twitter-access-token-secret"
    
    prompt = "青い空と白い雲がある美しい風景"
    tweet_text = "AIで生成した風景画像です #AI #ArtificialIntelligence"
    generate_and_post_image(prompt, tweet_text)