crowncode-backend / generate_youtube_token.py
Rthur2003's picture
feat: add YouTube OAuth token generator script
ae650a9
"""
YouTube OAuth Token Generator for Crown Commend
Bu script'i bir kez çalıştırıp token.json oluşturacaksın.
Kullanım:
1. client_secret_XXXXX.json dosyasını bu klasöre kopyala
2. Dosya adını 'client_secret.json' olarak değiştir
3. Bu script'i çalıştır: python generate_youtube_token.py
4. Tarayıcıda Google hesabınla giriş yap
5. token.json dosyası oluşacak
6. token.json içeriğini COMMEND_TOKEN_JSON environment variable'a koy
"""
import os
import json
from google_auth_oauthlib.flow import InstalledAppFlow
from google.oauth2.credentials import Credentials
from google.auth.transport.requests import Request
# YouTube yorum yazma için gerekli scope
SCOPES = ['https://www.googleapis.com/auth/youtube.force-ssl']
def main():
creds = None
# Mevcut token varsa kontrol et
if os.path.exists('token.json'):
print("Mevcut token.json bulundu, kontrol ediliyor...")
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# Token yoksa veya geçersizse yeni token al
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
print("Token expired, refreshing...")
creds.refresh(Request())
else:
# client_secret.json dosyasını kontrol et
if not os.path.exists('client_secret.json'):
print("\n" + "="*60)
print("HATA: client_secret.json dosyası bulunamadı!")
print("="*60)
print("\nYapman gerekenler:")
print("1. Google Cloud Console'dan indirdiğin")
print(" client_secret_XXXXX.json dosyasını bu klasöre kopyala")
print("2. Dosya adını 'client_secret.json' olarak değiştir")
print("3. Bu script'i tekrar çalıştır")
print("="*60 + "\n")
return
print("\nTarayıcı açılacak, Google hesabınla giriş yap...")
print("(Test kullanıcısı olarak eklediğin hesapla giriş yapmalısın)\n")
flow = InstalledAppFlow.from_client_secrets_file(
'client_secret.json',
SCOPES
)
creds = flow.run_local_server(port=8080)
# Token'ı kaydet
with open('token.json', 'w') as token_file:
token_file.write(creds.to_json())
print("\n✓ token.json başarıyla oluşturuldu!")
# Token içeriğini göster
print("\n" + "="*60)
print("COMMEND_TOKEN_JSON için kullanacağın değer:")
print("="*60)
with open('token.json', 'r') as f:
token_data = json.load(f)
# Tek satır JSON olarak yazdır (environment variable için)
token_json_str = json.dumps(token_data)
print("\n" + token_json_str)
print("\n" + "="*60)
print("Yukarıdaki JSON'u kopyala ve COMMEND_TOKEN_JSON")
print("environment variable olarak ayarla.")
print("="*60 + "\n")
# Test: Token çalışıyor mu?
print("Token test ediliyor...")
try:
from googleapiclient.discovery import build
youtube = build('youtube', 'v3', credentials=creds)
# Kendi kanalını çek
request = youtube.channels().list(
part="snippet",
mine=True
)
response = request.execute()
if response.get('items'):
channel_name = response['items'][0]['snippet']['title']
print(f"✓ Token çalışıyor! Bağlı kanal: {channel_name}")
else:
print("⚠ Token çalışıyor ama YouTube kanalı bulunamadı.")
print(" YouTube'da bir kanal oluşturduğundan emin ol.")
except Exception as e:
print(f"⚠ Token test hatası: {e}")
print(" Ama token.json oluşturuldu, deneyebilirsin.")
if __name__ == '__main__':
main()