import asyncio
import os
import subprocess
import aiohttp

# Remplacez ces valeurs par vos informations d'identification d'application Twitch
client_id = 'hmx7mk0q673evvga2y5l919e4mq6nl'
client_secret = '5cngbki8ifr0elkcgx0wbbixbql4xf'
stream_key = 'live_37250428_jeHrwf8xz3MR29xLYJQarW5nH5dyOK'

async def get_user_info(username):
    async with aiohttp.ClientSession() as session:
        # Obtenez le token d'accès
        resp = await session.post('https://id.twitch.tv/oauth2/token', params={
            'client_id': client_id,
            'client_secret': client_secret,
            'grant_type': 'client_credentials'
        })
        data = await resp.json()
        access_token = data['access_token']

        # Utilisez le token d'accès pour obtenir les informations de l'utilisateur
        headers = {
            'Client-ID': client_id,
            'Authorization': f'Bearer {access_token}'
        }
        resp = await session.get(f'https://api.twitch.tv/helix/users?login={username}', headers=headers)
        user_data = await resp.json()
        return user_data


# Configurez les paramètres OBS (vous devez avoir OBS installé et configuré)
obs_settings = {
    'path_to_obs': r'C:\\Program Files\\obs-studio\\bin\\64bit\\obs64.exe',  # Mettez à jour ce chemin
    'profile': 'Sans nom',  # Mettez à jour ceci avec le nom de votre profil OBS
    'scene': 'Valo',     # Mettez à jour ceci avec le nom de votre scène OBS
    'stream_key': stream_key,
}

# Lancez OBS avec les paramètres spécifiés et commencez à diffuser
def start_streaming(obs_settings):
    obs_dir = os.path.dirname(obs_settings['path_to_obs'])
    subprocess.Popen([
        obs_settings['path_to_obs'],
        '--startstreaming',
        '--profile', obs_settings['profile'],
        '--scene', obs_settings['scene']
    ], cwd=obs_dir)
    print("Streaming started.")

# Démarrez le stream
async def main():
    username = 'blakkcow'  # Remplacez par le nom d'utilisateur Twitch souhaité
    user_info = await get_user_info(username)
    print(user_info)  # Affiche les informations de l'utilisateur
    start_streaming(obs_settings)

# Exécutez la fonction principale dans la boucle d'événements asyncio
if __name__ == "__main__":
    asyncio.run(main())