From 4056887b0917c3173e86f62e61aee6154256d97d Mon Sep 17 00:00:00 2001 From: "Edgar P. Burkhart" Date: Tue, 9 Apr 2024 21:42:22 +0200 Subject: [PATCH] Split playlist creation in separate file --- musik/__main__.py | 59 +++++------------------------------------------ musik/youtube.py | 55 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 53 deletions(-) create mode 100644 musik/youtube.py diff --git a/musik/__main__.py b/musik/__main__.py index 9de1b3a..3ed7ff3 100644 --- a/musik/__main__.py +++ b/musik/__main__.py @@ -24,8 +24,9 @@ def bl_path(user): # Lecture arguments console parser = argparse.ArgumentParser( - prog="python -m musik", description="Lancer une partie de Musik", - formatter_class=argparse.ArgumentDefaultsHelpFormatter + prog="python -m musik", + description="Lancer une partie de Musik", + formatter_class=argparse.ArgumentDefaultsHelpFormatter, ) parser.add_argument( "-a", @@ -67,6 +68,8 @@ parser.add_argument( args = parser.parse_args() NO_API = args.no_api +if not NO_API: + from .youtube import create_playlist NO_BLACKLIST = args.no_blacklist NUM_MUS = args.number ROOT_PATH = args.lists @@ -120,57 +123,7 @@ random.shuffle(UM) USERS, MUSIK = zip(*UM) if not NO_API: - import google_auth_oauthlib.flow - import googleapiclient.discovery - import googleapiclient.errors - - # Connexion à l'API youtube, obtention d'un jeton OAuth - print("> Connexion à l'API Youtube") - flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file( - "./secret.json", ["https://www.googleapis.com/auth/youtube.force-ssl"] - ) - credentials = flow.run_local_server(port=0) - youtube = googleapiclient.discovery.build("youtube", "v3", credentials=credentials) - - # Création d'une playlist - print("> Création de la playlist") - pl_request = youtube.playlists().insert( - part="snippet,status", - body={ - "snippet": { - "title": f"Musik {date.today().strftime('%x')}", - }, - "status": { - "privacyStatus": "private", - }, - }, - ) - pl_response = pl_request.execute() - print( - f"> > Playlist créée : https://www.youtube.com/playlist?list={pl_response['id']}" - ) - - # Insertion des musiques dans la playlist - print("> Insertion des musiques dans la playlist") - print(f"> > {'_'*len(MUSIK)}") - print("> > ", end="") - for musik in MUSIK: - print("#", end="") - request = youtube.playlistItems().insert( - part="snippet", - body={ - "snippet": { - "playlistId": pl_response.get("id"), - "position": 0, - "resourceId": { - "kind": "youtube#video", - "videoId": musik, - }, - } - }, - ) - response = request.execute() - print() + create_playlist(MUSIK) else: print("> Liste des musiques :") for musik in MUSIK: diff --git a/musik/youtube.py b/musik/youtube.py new file mode 100644 index 0000000..bf0b9ce --- /dev/null +++ b/musik/youtube.py @@ -0,0 +1,55 @@ +from datetime import date + +import google_auth_oauthlib.flow +import googleapiclient.discovery +import googleapiclient.errors + + +def create_playlist(MUSIK): + # Connexion à l'API youtube, obtention d'un jeton OAuth + print("> Connexion à l'API Youtube") + flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file( + "./secret.json", ["https://www.googleapis.com/auth/youtube.force-ssl"] + ) + credentials = flow.run_local_server(port=0) + youtube = googleapiclient.discovery.build("youtube", "v3", credentials=credentials) + + # Création d'une playlist + print("> Création de la playlist") + pl_request = youtube.playlists().insert( + part="snippet,status", + body={ + "snippet": { + "title": f"Musik {date.today().strftime('%x')}", + }, + "status": { + "privacyStatus": "private", + }, + }, + ) + pl_response = pl_request.execute() + print( + f"> > Playlist créée : https://www.youtube.com/playlist?list={pl_response['id']}" + ) + + # Insertion des musiques dans la playlist + print("> Insertion des musiques dans la playlist") + print(f"> > {'_'*len(MUSIK)}") + print("> > ", end="") + for musik in MUSIK: + print("#", end="") + request = youtube.playlistItems().insert( + part="snippet", + body={ + "snippet": { + "playlistId": pl_response.get("id"), + "position": 0, + "resourceId": { + "kind": "youtube#video", + "videoId": musik, + }, + } + }, + ) + response = request.execute() + print()