# cfg.py
# utiliser les variables mnu_zik, mnu_rad, ... pour mettre à jour le manuel utilisateur
# 2020_guide_utilisateur_xavbox
import mod.aba as aba
import mod.commun as commun
import inc.mpc as mpc
import mod.mtn as mtn
import mod.rad as rad
import mod.zik as zik
hard_name = "Xavbox"
soft_name = "jk2020"
fichierVersion = "/opt/jk2019/tout/VERSION.txt" # attention : variable inutilisée dans mtn.py (problème de substitution)
DIR_JK = "/opt/jk2019"
# CONFIG_INI="/opt/jk2019/tout/ini/config.ini"
CONFIG_INI="/m/py_user.ini"
NIV_AIDE_VOC_DEFAULT = 3
ONLINE_BACKUP_dir = "http://gangand.net/jj/jk2019"
ONLINE_BACKUP_file = "jk2019.tgz"
MACHINE_DEV_1 = "jkmusic12" # machine maître raspi 3b+
MACHINE_DEV_2 = "cuisine_38" # machine secondaire raspi zero
# variables à construire avec code_gen
# idem pour la fonction commande() dans jukebox.py
# animation sonore
SOUND_1 = "/opt/jk2019/tout/ini/sound/maximize.mp3"
SOUND_2 = "/opt/jk2019/tout/ini/sound/map.mp3"
SOUND_3 = "/opt/jk2019/tout/ini/sound/switch.mp3"
# mpd
PLAYLISTS_PATH="/m/playlists"
MOUNT_USB="/m"
# module rad
# MEMO_RAD = "/m/memo/rad/py_rad_der_radio.txt"
ALL_RADIOS = "/opt/jk2019/conf/all_radios.txt"
REC_RAW = "/m/music/rec/raw/"
REC_RAW_REL = "rec/raw/"
# module zik
PL_ZIK_MEMO="py_zik_memo" # /m/playlists/zik_memo.m3u, mémorise playliste quand on quitte
ZIK_MEMO_DIR = "/m/memo/zik"
ZIK_MEMO = "/m/memo/zik/py_zik_memo.txt" # combiné à PL_ZIK_MEMO, mémorise la position dans playliste et progression
ZIK_FAV = "py_zik_fav" # /m/playlists/zik_fav_1.m3u = favoris normaux (une fois la commande *)
# /m/playlists/zik_fav_2.m3u = super favoris (deux fois la commande *)
# module aba
DIRE_FILE_ATTENTE = "/m/file_attente_dire"
BIBLIO_CLE_USB = "cle_usb"
BIBLIO_PERSO_ZIP = "perso_zip"
CLE_USB_BROWSE_M_MUSIC = False
M_MUSIC = "/m/music"
DEFAUT_BIBLIO = "audio_cite_classiques"
LG_FRANCAIS = "francais"
LG_ALLEMAND = "allemand"
LG_ANGLAIS = "anglais"
WAV_WAV = "/m/deleting_allowed.wav"
BIB_DISPOS = {
DEFAUT_BIBLIO: {
# la clé est utilisée pour les dossier et fichier
# /m/music/aba/memo_lvr_<clé>.txt et
# /m/music/aba/<clé>/
"catalogue" : "/opt/jk2019/tout/ini/aba/audiocite_classiques",
"langue" : LG_FRANCAIS, # deutsch, english, francais, équivalents pico2wave de-DE, en-GB, fr-FR
"nom" : "audiocité classiques",
"website" : "http://www.audiocite.net",
},
"audio_cite_contemporains": {
"catalogue" : "/opt/jk2019/tout/ini/aba/audiocite_contemporains",
"langue" : LG_FRANCAIS,
"nom" : "audiocité contemporains",
"website" : "http://www.audiocite.net",
},
BIBLIO_CLE_USB: { # rappel : BIBLIO_CLE_USB = "cle_usb"
"catalogue" : "dynamique",
"langue" : LG_FRANCAIS,
"nom" : "clé u s b",
"website" : "",
},
BIBLIO_PERSO_ZIP: { # rappel : BIBLIO_PERSO_ZIP = "perso_zip"
"catalogue" : "http://gangand.net/aa/audiolivres/perso_zip",
"langue" : LG_FRANCAIS,
"nom" : "perso en ligne",
"website" : "http://gangand.net/aa/audiolivres/perso_zip",
},
"librivoxde": {
"catalogue" : "/opt/jk2019/tout/ini/aba/librivox_de",
"langue" : LG_ALLEMAND,
"nom" : "librivox allemand",
"website" : "http://www.librivox.org",
},
"librivoxen": {
"catalogue" : "/opt/jk2019/tout/ini/aba/librivox_en",
"langue" : LG_ANGLAIS,
"nom" : "librivox anglais",
"website" : "http://www.librivox.org",
},
"librivoxfr": {
"catalogue" : "/opt/jk2019/tout/ini/aba/librivox_fr",
"langue" : LG_FRANCAIS,
"nom" : "librivox francais",
"website" : "http://www.librivox.org",
},
"litteaudio": {
"catalogue" : "/opt/jk2019/tout/ini/aba/litteratureaudio",
"langue" : LG_FRANCAIS,
"nom" : "littérature audio",
"website" : "http://www.litteratureaudio.com",
},
"divers_src": {
"catalogue" : "/opt/jk2019/tout/ini/aba/autres_sources",
"langue" : LG_FRANCAIS,
"nom" : "autres sources",
"website" : "",
},
"tagesschau": {
"catalogue" : "/opt/jk2019/tout/ini/aba/tagesschau",
"langue" : LG_ALLEMAND,
"nom" : "tageschau en allemand",
"website" : "https://www.tagesschau.de/download/podcast/",
},
# récupérer les tags .mp3 des podcasts
# wget -O podcast.html https://www.tagesschau.de/download/podcast
# récupérer les adresses http d'une page de recherche google
# grep -o -E http://[-,.\;a-zA-Z/+?0-9=\&_]* search.htm |sort|uniq|nl
# for i in $(grep -o -E http://[-,.\;a-zA-Z/+?0-9=\&_]* search.htm |sort|uniq) ; do n=$((n+1)) ; wget $i ; done
# autre solution
# cat page_web.html | grep -o \
# -E '\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))'
"vorleser": {
"catalogue" : "/opt/jk2019/tout/ini/aba/vorleser",
"langue" : LG_ALLEMAND,
"nom" : "vorleser en allemand",
"website" : "http://www.vorleser.net",
},
# ~ # TODO : utiliser chromedriver et python/phantomjs, pour télécharger les fichiers distants
"loyalbooks": {
"catalogue" : "/opt/jk2019/tout/ini/aba/loyalbooks",
"langue" : LG_ANGLAIS,
"nom" : "loyalbooks",
"website" : "http://www.loyalbooks.com",
} }
mnu_commun = { # éviter "11" dans ce menu, il est réservé aux menus modules !!!
"...": [commun.quitter, "quitter tout"],
"0": [commun.qu_mod_co, "quitter le module"],
# "00": [commun.aide_rapide, "connaître les commandes de lancement"],
"00": [commun.aide_rapide_NEW, "connaître les commandes du module"],
"000": [commun.touches_communes_NEW, "connaître les commandes communes"],
# "000": [commun.touches_module, "connaître les commandes de navigation"],
# "111": [commun.touches_communes, "connaître les commandes communes"],
# "..": [commun.detente, "lisent une histoire drôle ou un proverbe au hasard"],
".0": [commun.clear_screen, "nettoyer l'écran"],
"0.": [commun.clear_screen, "nettoyer l'écran"],
# "111": [chg_lang, "change la langue par défaut"],
# "222": [rand_toggle, "mélange ou ordonne les titres"],
# "444": [debugPL, "[DEV_ONLY], problème de playliste mal ordonnée du livre ... Rhubarbe"],
# "12": [commun.fake_apprentissage, "mode apprentissage, énonce le rôle des touches et combinaisons de touches"],
"33": [commun.tts_niveau_aide, "définir le niveau de l'aide vocale"],
"34": [commun.tts_basculer, "basculer voix de synthèse"],
"5": [commun.toggle, "basculer la pause"],
"55": [commun.stop, "stopper la lecture"],
"67": [commun.disHeure, "annoncer date, heure, température Reims"],
"68": [commun.temperatures, "annoncer températures Reims et Metz"],
"69": [commun.temperatures2, "annoncer températures Auxerre et Orléans"],
"778": [commun.aideVisuel1, "[DEV_ONLY], affichent touches module"],
"779": [commun.aideVisuel2, "[DEV_ONLY], affichent touches communes"],
# "77": [commun.rebours05mn, "arrêter le module après 5 minutes"],
# "78": [commun.rebours10mn, "arrêter le module après 10 minutes"],
# "79": [commun.rebours15mn, "arrêter le module après 15 minutes"],
"999": [commun.eteindre, "éteindre ou programmer l'arrêt de jukebox"],
"-": [commun.vol_down, "baisser le volume"],
"+": [commun.vol_up, "monter le volume"],
"--": [commun.vol_down2, "baisser le volume de deux crans"],
"---": [commun.vol_down2, "baisser le volume de deux crans"],
"----": [commun.vol_down2, "baisser le volume de deux crans"],
"++": [commun.vol_up2, "monter le volume de deux crans"],
"+++": [commun.vol_up2, "monter le volume de deux crans"],
"++++": [commun.vol_up2, "monter le volume de deux crans"],
"-+": [commun.vol_down4, "baisser le volume de quatre crans"] }
# juk, accueil du programme
mnu_juk = {
"1": [rad.reprendre, "démarrer la radio"],
"2": [zik.reprendre, "lancer la musique"],
"3": [aba.reprendre, "ouvrir les audiolivres"],
"4": [mtn.reprendre, "accéder à la maintenance"],
"11": [commun.juk_menu_special11,"ouvrir le menu spécial jukebox"], # menu spécial (= commandes diverses utiles)
}
mnu_juk_activer = {
"0": "juk",
"1": "rad",
"2": "zik",
"3": "aba",
"4": "mtn",
"8": "juk" }
juk_special11 = {
"1": [rad.reprendre, "démarrer la radio"],
"2": [zik.reprendre, "lancer la musique"],
"3": [aba.reprendre, "ouvrir les audiolivres"],
"4": [mtn.reprendre, "accéder à la maintenance"],
"5": [commun.temperatures, "annoncer la température de deux villes"],
"6": [commun.temperatures2, "annoncer la température de deux villes"],
"7": [commun.fake_apprentissage, "mode apprentissage, énonce le rôle des touches et combinaisons de touches"],
"8": [commun.tts_niveau_aide, "définir le niveau de l'aide vocale"],
"9": [commun.tts_basculer, "basculer voix de synthèse"], }
# aba, audiolivres
mnu_aba = { # audiocite.net, litteratureaudio.com, librivox, clé usb, perso
"B": [aba.biblio_perso_zip, "B comme brouillon"],
"D": [aba.biblio_perso_zip, "D comme debug ou développement"],
"E": [aba.entree_lire, "lit ou télécharge le livre actuel"], # touche Entrée
# ~ "EE": [aba.entree_lire_livre_court, "télécharge et lit le livre actuel si inférieur à 5 minutes"], # touche Entrée 2 fois
"1": [aba.livre_prec, "passer au livre précédent"],
"2": [aba.livre_hasard, "choisir un livre au hasard"],
"3": [aba.livre_suiv, "passer au livre suivant"],
"4": [aba.prev_trk, "aller au chapitre précédent"],
"6": [aba.next_trk, "aller au chapitre suivant"],
"7": [mpc.rew_10s, "reculer de 10 s"],
"9": [mpc.fwd_30s, "avancer de 30 s"],
# menus aba : 11, 22, 33
"11": [aba.menu_voc11,"ouvrir le menu spécial audiolivres"], # menu spécial (= commandes diverses utiles)
"22": [aba.fav_menu, "gérer les favoris et indésirables"], # menu favoris/bannis
"44": [aba.trk_first, "sauter au premier chapitre"],
"66": [aba.trk_last, "sauter au dernier chapitre"],
"91": [aba.stats_fichiers, "donner des statistiques sur fichiers"],
"/": [aba.aba_nfo1, "annoncer titre et auteur du livre"],
"//": [aba.aba_nfo2, "annoncer numéro, genre et durée du livre"],
"/*": [aba.aba_nfo3, "annoncer numéro, lecteur et poids du livre"],
"*": [aba.fav_add, "ajouter le livre actuel aux favoris"],
"**": [aba.fav_del, "supprimer le livre des favoris"] }
aba_special11 = { # menu vocal spécial
"1": [aba.select_presents, "sélectionner les livres présents"],
"2": [aba.select_favoris, "sélectionner vos livres favoris"],
# ~ "3": [aba.select_lecteur, "sélectionner les livres du lecteur actuel"],
# ~ "4": [aba.select_genre, "sélectionner les livres du genre actuel"],
"3": [aba.select_tout, "réinitialiser la sélection, en prenant tous les livres"],
"4": [aba.choisir_livre, "choisir directement un livre par son numéro"],
# ~ "7": [aba.hasard_10_livres, "télécharger 10 livres au hasard"],
"5": [aba.menu_biblio, "changer de bibliothèque"],
"6": [aba.supprimer_livre, "supprimer le livre présent"],
"7": [aba.supprimer_livres, "supprimer tous les livres présents"],
"8": [aba.supprimer_livres_tous, "supprimer les livres présents dans toutes les bibliothèques"],
}
aba_bibliotheques = { # menu vocal bibliothèques
# c'est aba_bibliotheques qui désignent les bibliothèques visibles et utilisables
"1": [aba.biblio_audio_cite_classiques, "activer la bibliothèque audio cité classiques"],
"2": [aba.biblio_audio_cite_contemporains, "activer la bibliothèque audio cité contemporains"],
"3": [aba.biblio_litterature, "activer la bibliothèque littérature audio"], # catalogue pas dynamique des 500 préférés (492 restants)
"4": [aba.biblio_cle_usb, "lire les livres de la clé u s b"],
"5": [aba.biblio_perso_zip, "activer la bibliothèque personnelle en ligne"],
"6": [aba.biblio_librivoxde, "activer la bibliothèque librivox allemand"],
"7": [aba.biblio_librivoxen, "activer la bibliothèque librivox anglais"],
"8": [aba.biblio_librivoxfr, "activer la bibliothèque librivox francais"],
"9": [aba.biblio_tagesschau, "activer la bibliothèque tagesschau"],
# "8": [aba.biblio_vorleser, "activer la bibliothèque vorleser"],
# "9": [aba.biblio_loyalbooks, "activer la bibliothèque loyalbooks"],
}
aba_fav_ban = { # menu vocal favoris et bannis
"1": [aba.fav_add, "ajouter le livre aux favoris"],
"2": [aba.fav_del, "supprimer le livre des favoris"],
"3": [aba.ban_add, "ajouter le livre aux bannis"],
"4": [aba.ban_del, "supprimer le livre des bannis"] }
# mtn, maintenance
mnu_mtn = {
"11": [mtn.menu_voc11, "accéder aux commandes de maintenance utiles"],
"88": [mtn.bak_restor, "restaurer ou mettre à jour jukebox depuis la dernière version en ligne"],
"99": [mtn.bak_backup, "sauvegarder jukebox"] }
mtn_special11 = { # menu vocal spécial
"1": [mtn.bak_restor, "restaure jukebox depuis la dernière version en ligne"],
"2": [mtn.bak_backup, "sauvegarde jukebox"],
# "3": [mtn.annoncer_version_actu, "annoncer la version actuelle du programme"],
# "4": [mtn.annoncer_version_maj, "annoncer la version disponible en mise à jour"],
}
# rad, radios
mnu_rad = {
"1": [rad.group1, "lancer le groupe de radios 1"],
"2": [rad.group2, "lancer le groupe de radios 2"],
"3": [rad.group3, "lancer le groupe de radios 3"],
"4": [rad.prev_trk, "passer à la station précédente"],
"6": [rad.next_trk, "passer à la station suivante"],
"7": [mpc.rew_10s, "reculer de 10 s"], # utile pour 22, écoute enregistrements
"9": [mpc.fwd_30s, "avancer de 30 s"], # utile pour 22, écoute enregistrements
"8": [rad.rebours, "programmer un arrêt du module"],
"11": [rad.menu_voc11,"ouvrir le menu spécial radio"], # menu spécial (= commandes diverses utiles)
"22": [rad.enregistrements_ecouter, "écouter les enregistrements réalisés"],
"44": [rad.trk_first, "sauter à la première station"],
"66": [rad.trk_last, "sauter à la dernière station"],
"85": [rad.pausepub, "faire une pause de 1 minute"],
"88": [rad.enreg_suppr, "supprimer l'enregistrement actuel si vous les écoutez avec 22"],
"/": [rad.rad_nfo1, "annoncer le nom de la radio"],
"//": [rad.rad_nfo2, "annoncer station et groupe en cours"],
"/*": [rad.rad_nfo3, "annoncer nombre de stations dans le groupe et leur nom"],
"*": [rad.rad_fav1, "enregistrer 3 minutes"],
"**": [rad.rad_fav2, "enregistrer 30 minutes"],
"*/": [rad.rad_fav3, "programmer un enregistrement"],
"*9": [rad.records, "afficher les enregistrement en cours"] }
rad_special11 = { # menu vocal spécial
"1": [rad.group1, "lancer le groupe de radios 1"],
"2": [rad.rad_fav1, "enregistrer 3 minutes"],
"3": [rad.enregistrements_ecouter, "écouter les enregistrements passé"],
"4": [rad.enregistrements_ecouter_alea, "écouter les enregistrements dans le désordre"],
"5": [rad.pausepub2, "faire une pause de 2 mn"],
}
# rec, enregistrements
# mnu_rec = {
# "1": [rec.rec_todo, "rec todo"] }
# zik, musique
mnu_zik = {
"1": [zik.az_shuf, "jouer la musique au hasard"],
"2": [zik.fav_play_random, "jouer les favoris dans le désordre"],
"3": [zik.chg_type, "changer le type de musique"],
"4": [zik.prev_trk, "passer au morceau précédent"],
"6": [zik.next_trk, "passer au morceau suivant"],
"46": [zik.random_trk, "aller à un morceau de la playliste au hasard"],
"64": [zik.random_trk, "aller à un morceau de la playliste au hasard"],
"7": [zik.rew_10s, "reculer de 10 s"],
"8": [zik.rebours, "programmer un arrêt du module"],
"9": [zik.fwd_30s, "avancer de 30 s"],
"11": [zik.menu_voc11,"ouvrir le menu spécial musique"], # menu spécial (= commandes diverses utiles)
"22": [zik.keepcd, "jouer seulement les chansons du dossier en cours"],
"44": [zik.trk_first, "sauter au premier morceau"],
"66": [zik.trk_last, "sauter au dernier morceau"],
"/": [zik.zik_nfo1, ""],
"//": [zik.zik_nfo2, ""],
"/*": [zik.zik_nfo3, ""],
"*": [zik.fav_add, "ajouter aux favoris"],
"**": [zik.fav_del, "retirer des favoris"],
"*/": [zik.fav_play_random, "jouer les favoris"] }
zik_special11 = { # menu vocal spécial
"1": [zik.fav_play, "jouer les favoris"],
"2": [zik.fav_play_random, "jouer les favoris dans le désordre"],
"3": [zik.play_all, "jouer toute la musique au hasard"],
"4": [zik.keepcd, "jouer seulement les chansons du dossier en cours"],
"5": [zik.keepcdprt, "jouer seulement les chansons du dossier parent en cours"],
}
zik_fav_ban = { # menu vocal favoris et bannis
"1": [zik.fav_add, "ajouter le m p 3 aux favoris"],
"2": [zik.fav_del, "supprimer le m p 3 des favoris"],
"3": [zik.fav_play, "jouer les favoris"] }
# index des menus module
dic_menus = {
"commun": mnu_commun,
"aba": mnu_aba, "aba_special11": aba_special11,
"juk": mnu_juk, "juk_special11": juk_special11,
"mtn": mnu_mtn, "mtn_special11": mtn_special11,
"rad": mnu_rad, "rad_special11": rad_special11,
"zik": mnu_zik, "zik_special11": zik_special11,
"aba_bibliotheques": aba_bibliotheques,
"aba_fav_ban": aba_fav_ban,
}