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 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:
|
||||||
|
35
Readme.md
35
Readme.md
@ -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).
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user