Make the program easier to use (auto configuration for the authentication token)
This commit is contained in:
@ -9,6 +9,7 @@ import json
|
||||
import logging
|
||||
import re
|
||||
import requests
|
||||
import socket
|
||||
import textwrap
|
||||
import tmdbsimple
|
||||
from pyfbx.pyfbx import Fbx
|
||||
@ -135,6 +136,8 @@ class FreeboxMoviePlanner:
|
||||
logging.debug('Opening config file: config.json')
|
||||
with open('config.json') as 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']
|
||||
self.movies = movies
|
||||
|
||||
@ -154,6 +157,20 @@ class FreeboxMoviePlanner:
|
||||
self.programMovies()
|
||||
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):
|
||||
result = 'FreeboxMoviePlanner <Movies:\n'
|
||||
for movie in self.movies:
|
||||
|
35
Readme.md
35
Readme.md
@ -24,33 +24,32 @@ Concrètement, l'outil effectue les opérations suivantes :
|
||||
|
||||
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`
|
||||
* `tmdbsimple`
|
||||
* `zeroconf`
|
||||
|
||||
Il vous faut ensuite récupérer **FreeboxMoviePlanner**. Le plus simple étant en clonant le dépôt git.
|
||||
|
||||
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.
|
||||
|
||||
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")
|
||||
Il vous faut ensuite récupérer le code du projet, le plus simple étant en clonant le dépôt git.
|
||||
```bash
|
||||
git clone --recurse-submodules https://djib.fr/djib/FreeboxMoviePlanner.git
|
||||
```
|
||||
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).
|
||||
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".
|
||||
Configuration
|
||||
---
|
||||
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
|
||||
---
|
||||
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.
|
||||
|
||||
À 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).
|
||||
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"tmdb-api":"yourapikey",
|
||||
"tmdb-language":"fr-FR",
|
||||
"minimum-rating":6.5,
|
||||
"freebox-session-token":"See https://djib.fr/djib/FreeboxMoviePlanner",
|
||||
"freebox-session-token":"Will generate automatically at first launch",
|
||||
"margin-after":25,
|
||||
"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"
|
||||
}
|
||||
|
Reference in New Issue
Block a user