Improve logging
This commit is contained in:
parent
0fd0c4911b
commit
c0b9924ed3
3 changed files with 105 additions and 86 deletions
|
@ -1,4 +1,5 @@
|
||||||
import argparse
|
import argparse
|
||||||
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from .list import generate_list, write_blacklist, write_results
|
from .list import generate_list, write_blacklist, write_results
|
||||||
|
@ -8,83 +9,99 @@ BLACKLIST = Path("./blacklists")
|
||||||
RESULTS = Path("./results")
|
RESULTS = Path("./results")
|
||||||
NUM_MUS = 2
|
NUM_MUS = 2
|
||||||
|
|
||||||
# Lecture arguments console
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
prog="python -m musik",
|
|
||||||
description="Lancer une partie de Musik",
|
|
||||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-a",
|
|
||||||
"--no-api",
|
|
||||||
action="store_true",
|
|
||||||
help="Désactiver l'API Youtube ; affiche la liste des liens",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-b",
|
|
||||||
"--no-blacklist",
|
|
||||||
action="store_true",
|
|
||||||
help="Désactiver le méchanisme de blacklist en lecture et écriture",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-n",
|
|
||||||
"--number",
|
|
||||||
type=int,
|
|
||||||
default=NUM_MUS,
|
|
||||||
help="Modifier le nombre de musiques par joueur",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--lists",
|
|
||||||
type=Path,
|
|
||||||
default=ROOT_PATH,
|
|
||||||
help="Sélectionner le dossier contenant les listes de musiques",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--blacklists",
|
|
||||||
type=Path,
|
|
||||||
default=BLACKLIST,
|
|
||||||
help="Sélectionner le dossier contenant les blacklist",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--results",
|
|
||||||
type=Path,
|
|
||||||
default=RESULTS,
|
|
||||||
help="Sélectionner le dossier pour stocker les résultats",
|
|
||||||
)
|
|
||||||
|
|
||||||
args = parser.parse_args()
|
def main():
|
||||||
if not args.no_api:
|
# Lecture arguments console
|
||||||
from .youtube import create_playlist
|
parser = argparse.ArgumentParser(
|
||||||
|
prog="python -m musik",
|
||||||
|
description="Lancer une partie de Musik",
|
||||||
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-a",
|
||||||
|
"--no-api",
|
||||||
|
action="store_true",
|
||||||
|
help="Désactiver l'API Youtube ; affiche la liste des liens",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-b",
|
||||||
|
"--no-blacklist",
|
||||||
|
action="store_true",
|
||||||
|
help="Désactiver le méchanisme de blacklist en lecture et écriture",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-n",
|
||||||
|
"--number",
|
||||||
|
type=int,
|
||||||
|
default=NUM_MUS,
|
||||||
|
help="Modifier le nombre de musiques par joueur",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--lists",
|
||||||
|
type=Path,
|
||||||
|
default=ROOT_PATH,
|
||||||
|
help="Sélectionner le dossier contenant les listes de musiques",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--blacklists",
|
||||||
|
type=Path,
|
||||||
|
default=BLACKLIST,
|
||||||
|
help="Sélectionner le dossier contenant les blacklist",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--results",
|
||||||
|
type=Path,
|
||||||
|
default=RESULTS,
|
||||||
|
help="Sélectionner le dossier pour stocker les résultats",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-v",
|
||||||
|
"--verbose",
|
||||||
|
action="store_const",
|
||||||
|
const=logging.DEBUG,
|
||||||
|
default=logging.INFO,
|
||||||
|
)
|
||||||
|
|
||||||
print("--- DÉBUT ---")
|
args = parser.parse_args()
|
||||||
|
if not args.no_api:
|
||||||
|
from .youtube import create_playlist
|
||||||
|
|
||||||
print("> Vérification")
|
# Configuration logs
|
||||||
assert args.lists.is_dir(), f"ROOT_PATH={ROOT_PATH} n'est pas un dossier"
|
logger = logging.getLogger("musik")
|
||||||
if not args.blacklists.is_dir():
|
logging.basicConfig(
|
||||||
args.blacklists.mkdir()
|
level=args.verbose, format="%(asctime)s\t%(levelname)s\t%(message)s"
|
||||||
if not args.results.is_dir():
|
)
|
||||||
args.results.mkdir()
|
|
||||||
|
|
||||||
assert args.number >= 1, "Nombre de musiques < 1"
|
logger.info("Vérification")
|
||||||
|
assert args.lists.is_dir(), f"ROOT_PATH={ROOT_PATH} n'est pas un dossier"
|
||||||
|
if not args.blacklists.is_dir():
|
||||||
|
args.blacklists.mkdir()
|
||||||
|
if not args.results.is_dir():
|
||||||
|
args.results.mkdir()
|
||||||
|
|
||||||
# Lecture des fichiers musique dans ROOT_PATH
|
assert args.number >= 1, "Nombre de musiques < 1"
|
||||||
# Faire un dossier différent pour les gens qui ne jouent pas
|
|
||||||
musik_list = generate_list(args)
|
|
||||||
|
|
||||||
if not args.no_api:
|
# Lecture des fichiers musique dans ROOT_PATH
|
||||||
create_playlist(musik_list)
|
# Faire un dossier différent pour les gens qui ne jouent pas
|
||||||
else:
|
logger.info("Génération de la liste de musiques")
|
||||||
print("> Liste des musiques :")
|
musik_list = generate_list(args)
|
||||||
for _, musik in musik_list:
|
|
||||||
print(f"> # https://www.youtube.com/watch?v={musik}")
|
|
||||||
|
|
||||||
# Écriture des résultats
|
if not args.no_api:
|
||||||
print("> Écriture des résultats")
|
create_playlist(musik_list)
|
||||||
write_results(musik_list, args)
|
else:
|
||||||
|
logger.info("Liste des musiques :")
|
||||||
|
for _, musik in musik_list:
|
||||||
|
logger.info(f"# https://www.youtube.com/watch?v={musik}")
|
||||||
|
|
||||||
# Écriture de la blacklist
|
# Écriture des résultats
|
||||||
if not args.no_blacklist:
|
logger.info("Écriture des résultats")
|
||||||
print("> Écriture de la blacklist")
|
write_results(musik_list, args)
|
||||||
write_blacklist(musik_list, args)
|
|
||||||
|
|
||||||
print("--- FIN ---")
|
# Écriture de la blacklist
|
||||||
|
if not args.no_blacklist:
|
||||||
|
logger.info("Écriture de la blacklist")
|
||||||
|
write_blacklist(musik_list, args)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
|
import logging
|
||||||
import random
|
import random
|
||||||
import re
|
import re
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
|
logger = logging.getLogger("musik.list")
|
||||||
|
|
||||||
|
|
||||||
def bl_path(bl, user):
|
def bl_path(bl, user):
|
||||||
return bl.joinpath(user).with_suffix(".txt")
|
return bl.joinpath(user).with_suffix(".txt")
|
||||||
|
@ -11,18 +14,17 @@ def generate_list(args):
|
||||||
musik_list = []
|
musik_list = []
|
||||||
user_list = []
|
user_list = []
|
||||||
|
|
||||||
print("> Génération de la liste de musiques")
|
|
||||||
for q in args.lists.iterdir():
|
for q in args.lists.iterdir():
|
||||||
_u = q.stem
|
_u = q.stem
|
||||||
print(f"> > Musiques de {_u}")
|
logger.info(f"Musiques de {_u}")
|
||||||
if (not args.no_blacklist) and bl_path(args.blacklists, _u).exists():
|
if (not args.no_blacklist) and bl_path(args.blacklists, _u).exists():
|
||||||
print("> > > Blacklist")
|
logger.debug("Blacklist")
|
||||||
with bl_path(args.blacklists, _u).open("r") as blf:
|
with bl_path(args.blacklists, _u).open("r") as blf:
|
||||||
blacklist = blf.read().splitlines()
|
blacklist = blf.read().splitlines()
|
||||||
else:
|
else:
|
||||||
blacklist = []
|
blacklist = []
|
||||||
|
|
||||||
print("> > > Lecture de la liste")
|
logger.debug("Lecture de la liste")
|
||||||
with q.open() as f:
|
with q.open() as f:
|
||||||
_raw_musiks = [
|
_raw_musiks = [
|
||||||
(re.compile(r"[\?\&]v=(\w+)").search(_musik) or ("", _musik))[1]
|
(re.compile(r"[\?\&]v=(\w+)").search(_musik) or ("", _musik))[1]
|
||||||
|
@ -34,12 +36,12 @@ def generate_list(args):
|
||||||
len(_musiks) >= args.number
|
len(_musiks) >= args.number
|
||||||
), f"{_u} a {len(_musiks)} musique(s) non black-listée au lieu de {args.number}"
|
), f"{_u} a {len(_musiks)} musique(s) non black-listée au lieu de {args.number}"
|
||||||
|
|
||||||
print("> > > Ajout des musiques à la liste")
|
logger.debug("Ajout des musiques à la liste")
|
||||||
musik_list += random.sample(_musiks, args.number)
|
musik_list += random.sample(_musiks, args.number)
|
||||||
user_list += [_u] * args.number
|
user_list += [_u] * args.number
|
||||||
|
|
||||||
# Shuffle musics
|
# Shuffle musics
|
||||||
print("> Classement aléatoire des musiques")
|
logger.info("Classement aléatoire des musiques")
|
||||||
user_musik_list = list(zip(user_list, musik_list))
|
user_musik_list = list(zip(user_list, musik_list))
|
||||||
random.shuffle(user_musik_list)
|
random.shuffle(user_musik_list)
|
||||||
return user_musik_list
|
return user_musik_list
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
|
import logging
|
||||||
from datetime import date
|
from datetime import date
|
||||||
|
|
||||||
import google_auth_oauthlib.flow
|
import google_auth_oauthlib.flow
|
||||||
import googleapiclient.discovery
|
import googleapiclient.discovery
|
||||||
import googleapiclient.errors
|
import googleapiclient.errors
|
||||||
|
|
||||||
|
logger = logging.getLogger("musik.youtube")
|
||||||
|
|
||||||
|
|
||||||
def create_playlist(musik_list):
|
def create_playlist(musik_list):
|
||||||
# Connexion à l'API youtube, obtention d'un jeton OAuth
|
# Connexion à l'API youtube, obtention d'un jeton OAuth
|
||||||
print("> Connexion à l'API Youtube")
|
logger.info("Connexion à l'API Youtube")
|
||||||
flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
|
flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
|
||||||
"./secret.json", ["https://www.googleapis.com/auth/youtube.force-ssl"]
|
"./secret.json", ["https://www.googleapis.com/auth/youtube.force-ssl"]
|
||||||
)
|
)
|
||||||
|
@ -15,7 +18,7 @@ def create_playlist(musik_list):
|
||||||
youtube = googleapiclient.discovery.build("youtube", "v3", credentials=credentials)
|
youtube = googleapiclient.discovery.build("youtube", "v3", credentials=credentials)
|
||||||
|
|
||||||
# Création d'une playlist
|
# Création d'une playlist
|
||||||
print("> Création de la playlist")
|
logger.info("Création de la playlist")
|
||||||
pl_request = youtube.playlists().insert(
|
pl_request = youtube.playlists().insert(
|
||||||
part="snippet,status",
|
part="snippet,status",
|
||||||
body={
|
body={
|
||||||
|
@ -28,17 +31,15 @@ def create_playlist(musik_list):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
pl_response = pl_request.execute()
|
pl_response = pl_request.execute()
|
||||||
print(
|
logger.info(
|
||||||
"> > Playlist créée :",
|
"Playlist créée : "
|
||||||
f"https://www.youtube.com/playlist?list={pl_response['id']}",
|
f"https://www.youtube.com/playlist?list={pl_response['id']}",
|
||||||
)
|
)
|
||||||
|
|
||||||
# Insertion des musiques dans la playlist
|
# Insertion des musiques dans la playlist
|
||||||
print("> Insertion des musiques dans la playlist")
|
logger.info("Insertion des musiques dans la playlist")
|
||||||
print(f"> > {'_'*len(musik_list)}")
|
|
||||||
print("> > ", end="")
|
|
||||||
for _, musik in musik_list:
|
for _, musik in musik_list:
|
||||||
print("#", end="")
|
logger.debug(musik)
|
||||||
request = youtube.playlistItems().insert(
|
request = youtube.playlistItems().insert(
|
||||||
part="snippet",
|
part="snippet",
|
||||||
body={
|
body={
|
||||||
|
@ -53,4 +54,3 @@ def create_playlist(musik_list):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
request.execute()
|
request.execute()
|
||||||
print()
|
|
||||||
|
|
Loading…
Reference in a new issue