Make the program easier to use (auto configuration for the authentication token)

This commit is contained in:
2019-10-16 10:05:20 +02:00
parent 4965e64627
commit 04bc2d263c
3 changed files with 39 additions and 23 deletions

View File

@ -9,6 +9,7 @@ import json
import logging import logging
import re import re
import requests import requests
import socket
import textwrap import textwrap
import tmdbsimple import tmdbsimple
from pyfbx.pyfbx import Fbx from pyfbx.pyfbx import Fbx
@ -135,6 +136,8 @@ class FreeboxMoviePlanner:
logging.debug('Opening config file: config.json') logging.debug('Opening config file: config.json')
with open('config.json') as config_file: with open('config.json') as config_file:
self.config = json.load(config_file) self.config = json.load(config_file)
if(len(self.config['freebox-session-token']) != 64):
self.createAuthenticationToken()
tmdbsimple.API_KEY = self.config['tmdb-api'] tmdbsimple.API_KEY = self.config['tmdb-api']
self.movies = movies self.movies = movies
@ -154,6 +157,20 @@ class FreeboxMoviePlanner:
self.programMovies() self.programMovies()
self.checkForConflicts() self.checkForConflicts()
def createAuthenticationToken(self):
logging.info('Creating authentication token')
self.freebox = Fbx(nomdns=True)
hostname = socket.gethostname()
print("You don't seem to have an authentication token.")
print("I will now atempt to create one.")
print("Please go to your Freebox and accept the authentication.")
token = self.freebox.register(
"FreeboxMoviePlanner", "FreeboxMoviePlanner", hostname
)
self.config['freebox-session-token'] = token
with open('config.json', 'w') as outfile:
json.dump(self.config, outfile, indent=4, sort_keys=True)
def __repr__(self): def __repr__(self):
result = 'FreeboxMoviePlanner <Movies:\n' result = 'FreeboxMoviePlanner <Movies:\n'
for movie in self.movies: for movie in self.movies:

View File

@ -24,33 +24,32 @@ Concrètement, l'outil effectue les opérations suivantes :
Installation Installation
--- ---
Pour utiliser **FreeboxMoviePlanner** il vous faut Python, ainsi que les 3 packages suivants (à installer par exemple avec `pip install [nom du packet]` : ### À partir de l'exécutable
[Téléchargez](https://djib.fr/djib/FreeboxMoviePlanner/releases) le fichier qui correspond à votre système d'exploitation (Linux ou Windows) dans le répertoire `dist` ainsi que le fichier `config.template.json`.
### À partir des sources
Pour utiliser **FreeboxMoviePlanner** à partir des sources, il vous faut Python, ainsi que les 3 packages suivants (à installer par exemple avec `pip install [nom du packet]` :
* `beautifulsoup4` * `beautifulsoup4`
* `tmdbsimple` * `tmdbsimple`
* `zeroconf` * `zeroconf`
Il vous faut ensuite récupérer **FreeboxMoviePlanner**. Le plus simple étant en clonant le dépôt git. Il vous faut ensuite récupérer le code du projet, le plus simple étant en clonant le dépôt git.
```bash
Ensuite, il vous faut créer un fichier de conf `config.json`. Vous pouvez copier-coller `config.template.json` et l'adapter à vos besoins. Vous pourrez y renseigner la marge avant et après chaque enregistrement, ou la note en dessous de laquelle les films ne s'afficheront pas. git clone --recurse-submodules https://djib.fr/djib/FreeboxMoviePlanner.git
Pour pouvoir récupérer les notes sur TMDb, vous aurez besoin d'ouvrir un compte sur leur site et de demander une clef API, à renseigner dans le fichier de config.
Enfin, il vous faudra obtenir un token d'authentification après de votre *Freebox* pour que le programme puisse s'y connecter. Pour ce faire, dans un shell Python, tapez les commandes suivantes :
```python
from pyfbx import Fbx
f=Fbx()
f.register("FreeboxMoviePlanner", "FreeboxMoviePlanner", "N'importe quoi qui identifie votre PC")
``` ```
Pour que la commande d'import fonctionne, vous devez lancer le shell Python depuis le répertoire *pyfbx* de l'outil.
L'affichage de votre boîtier *Freebox* vous demandera alors de valider cette demande d'authentification. Vous devez donc physiquement valider l'accès à partir de votre box (sur la V6, il s'agit de presser la flèche de droite). Configuration
Une fois cette accès validé, notez précieusement le résultat qui s'affiche dans le shell Python (un chaine de 64 caractères). Cette chaine est à inscrire dans votre fichier de configuration au paramètre "pyfbx-session-token". ---
Ensuite, il vous faut créer un fichier de conf `config.json`. Vous pouvez tout simplement renommer le fichier `config.template.json`.
L'installation et le paramétrage devraient être terminés. Dans ce fichier vous devrez renseigner une clef API TMDb. Pour cela vous aurez besoin d'ouvrir un compte sur leur site et de [demander une clef API](https://www.themoviedb.org/settings/api).
Le fichier de config vous permet aussi de configurer la marge avant et après chaque enregistrement, ou la note en dessous de laquelle les films ne s'afficheront pas.
Exécution Exécution
--- ---
Pour lancer le programme, exécuter simplement: `python3 FreeboxMoviePlanner.py`. Sous Linux, vous devriez aussi pouvoir double-cliquer sur le fichier pour l'exécuter.
L'outil devrait vous afficher rapidement le petit texte `Working the magic, please wait…` puis, après environ une minute (ou plus si votre réseau est lent), le détail des films. L'outil devrait vous afficher rapidement le petit texte `Working the magic, please wait…` puis, après environ une minute (ou plus si votre réseau est lent), le détail des films.
À la première exécution, l'outil vous demandera aussi d'autoriser le script sur votre Freebox (*Please go to your Freebox and accept the authentication.*)
À ce moment, l'affichage de votre boîtier *Freebox* vous demandera alors de valider cette demande d'authentification. Vous devez donc physiquement valider l'accès à partir de votre box (sur la V6, il s'agit de presser la flèche de droite).

View File

@ -1,8 +1,8 @@
{ {
"tmdb-api":"yourapikey", "freebox-session-token":"Will generate automatically at first launch",
"tmdb-language":"fr-FR", "margin-after":25,
"minimum-rating":6.5,
"freebox-session-token":"See https://djib.fr/djib/FreeboxMoviePlanner",
"margin-before":5, "margin-before":5,
"margin-after":25 "minimum-rating":6.5,
"tmdb-api":"Get an API key from https://www.themoviedb.org/settings/api",
"tmdb-language":"fr-FR"
} }