Le blog de Genma
Vous êtes ici : Accueil » Lifehacking » Lifehacking - Wallabag, Liseuse et fainéantise : mon projet. Billet (...)

Lifehacking - Wallabag, Liseuse et fainéantise : mon projet. Billet N°2

D 4 octobre 2016     H 09:00     A Genma     C 0 messages   Flattr cet article Logo Tipee

TAGS : Yunohost Lifehacking Planet Libre Wallabag

Ce billet fait suite à mon billet Lifehacking - Wallabag, Liseuse et fainéantise : mon projet. Billet N°1

Dans les commentaires on me signalait l’existence du billet Wallabag sur votre Kobo en un clic. Wallabag sur votre Kobo en un clicLe billet propose deux approches différentes : une via Calibre et l’autre via Wallabag et c’est de la 2ème dont je reprends le code que je me suis inspiré. Je suis donc allé voir ça et j’ai trouvé une partie de la résolution à mon problème, ce qui m’a permis d’avancer mon projet.

Via Twitter on me signale une applicatiion qui permettrait de lire le contenu d’une instance Wallabag 2 sur sa Pocketbook Touch Lux. C’est du C++, je ne connais pas ce langage. Je vous invite tout de même à y jeter un coup d’oeil.

Cas de l’utilisateur utilisé

Comme je le disais dans mon billet, je ne peux (pas encore) utiliser l’API de Wallabag ni l’utilisateur de Yunohost.

Pour l’instant, je crée donc un utilisateur dédié dans Wallabag (et je ne passe donc pas par l’identifiant générique de Yunohost)
- Avantages : c’est générique et marche pour toute instance de Wallabag autohebergé.
- Inconvénients : ça ne marche pas (pas encore) avec l’utilisateur de Yunohost. Il faut créer un autre utilisateur dans Wallabag. Et donc recommencer à marquer des articles à lire sous ce nouvel utilisateur.

La machine

J’ai une machine autohébergée qui a un port USB facilement accessible (pratique avec une rallonge de câble USB). Mon objectif final est de brancher ma liseuse sur le serveur, qu’elle soit détectée et que l’Epub contenant les articles non lus de Wallabag soit téléchargé et copié sur la liseuse Booken.

Les scripts

Ces scripts sont mis sur la machine sur laquelle on branche la liseuse en USB. Dans mon cas, c’est mon serveur, mais ça peut être son PC sous Linux, ça marchera aussi.

Il y a donc un script RecupEpubDeWallabag.sh qui sera lancé avec la règle udev (ce sera dans lebillet n°3 à venir)
Lui même appel le script Wallabag_Epub_to_Booken.py disponible ici https://framagit.org/genma/Wallabag_Epub_to_Booken/blob/master/Wallabag_Epub_to_Booken.py

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import cookielib
import mechanize
import configparser
import time

# Lecture du fichier de param pour les codes
config = configparser.ConfigParser()
config.read('Config.ini')
configWallabag = config['WALLABAG']
LOGIN = configWallabag['LOGIN']
PASSWORD = configWallabag['PASSWORD']
WALLABAG_URL = configWallabag['WALLABAG_URL']
WALLABAG_EPUB_URL = configWallabag['WALLABAG_EPUB_URL']

# Date & time
now = time.localtime(time.time())

# Browser
br = mechanize.Browser()

# Enable cookie support for urllib2
cookiejar = cookielib.LWPCookieJar()
br.set_cookiejar(cookiejar)

# Browser options
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

# authenticate
print (str(time.strftime("%d-%m-%y %H:%M:%S", now)) + " Lancement du script")
br.open(WALLABAG_URL)
br.select_form(name="loginform")
br['_username'] = LOGIN
br['_password'] = PASSWORD
br.submit()
print (str(time.strftime("%d-%m-%y %H:%M:%S", now)) + " Tentative de connexion à Wallabag")
url = br.open(WALLABAG_URL)
print (str(time.strftime("%d-%m-%y %H:%M:%S", now)) + " Connexion à Wallabag réussie")
# TODO  timeout value has to be optimized
url2 = br.open(WALLABAG_EPUB_URL, timeout=300.0)
print (str(time.strftime("%d-%m-%y %H:%M:%S", now)) +" Lancement de l'export de l'Epub")
now = time.localtime(time.time())
EpubFileName = "Wallabag_export_" + str(time.strftime("%d%m%y", now)) + ".epub"
with open(EpubFileName, 'w') as newsfobj:
   newsfobj.write(url2.read())
print (str(time.strftime("%d-%m-%y %H:%M:%S", now)) + " Epub généné & récupéré sous le nom " + EpubFileName)

C’est un premier jet, je ne connais pas bien le Python et il y a encore des choses à optimiser / améliorer.

A optimiser

- Mettre en "lu" dans Wallabag les entrées récupérées dans l’epub
- Optimiser le temps de timeout. A voir selon le nombre d’articles & le temps de connexion. J’ai mis un timeout à 3 minutes, mais je rencontre encore des soucis de temps de connexion (le temps de génération de l’epub est assez long)
- Ajouter des "vraies" logs pour suivre la progression
- Envoyer un mail ou un SMS (utilisateur Freemobile) une fois la copie terminée
- Ajouter la gestion des dépendances python
- Ajouter des tests unitaires...
- ...

Je pense que toutes ces évolutions, ce sera pour au moins le billet N°4 et suivant, le N°3 sera consacré à la règle UDev (Le principe : le noyau linux détecte un périphérique USB lors de son branchement, lit son numéro de série et lance alors une commande / un script définie comme règle udev.)

 Les Tags - mots clefs de ce article

logo clef

 Vous aimez cet article? Soutenez le blog et partagez-le ;-)

Logo Tipee Flattr icon  Facebook icon  Twitter icon  Diapora icon   Licence Creative Commons
Un message, un commentaire ?
modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Conférences

Médiathèques vous recherchez un conférencier sur l’éducation populaire et l’hygiène numérique? Jetez un coup d’oeil à mon CV

Date des prochaines conférences?
Cliquer ici

Rechercher sur le blog

Liens

Logo Flattr Logo Gmail Logo Twitter
Logo RSS Logo Linkedin Logo GitHub
Logo Gitlab Logo Mastodon
Logo Diaspora

Soutenir ce blog?

Logo Tipee Logo Liberapay

Licence

Licence Creative Commons

Derniers articles

1.  Philosophie de vie

2.  Émission Blockbuster sur France Inter

3.  De la différence

4.  Je s’appelle root

5.  Le guide de survie Tails

6.  De l’hygiène numérique à l’autodéfense numérique

7.  Je serai aux RPLL (RMLL)

8.  SSD Crucial MX300

9.  Quelques réflexions militantes et féministes

10.  Mais je suis une femme


Date de mise à jour :

Le 25 juillet 2017