samedi 9 février 2013

Alertes [LE BON COIN]





Vous connaissez, surement, l'un des sites de recherche d'objets neufs ou d'occasions le plus connu, Le bon coin. Il est vrai que l'on peut y faire de bonnes affaires, en achetant ou en vendant à peu près tout ce que l'on veut ou en proposant tous types de services.
Il m'arrive, assez régulièrement, de fréquenter ce site, surtout quand je suis à la recherche de choses bien précise.
N'ayant pas la possibilité de me rendre régulièrement sur le site, tout au long d'une journée, j'ai imaginé ce soft qui a pour but d'effectuer la recherche à ma place à une date précise ou un intervalle de temps programmé. Le résultat de cette recherche est ensuite envoyé par email si de nouveaux éléments sont trouvés.
Une interface web est accessible depuis n'importe quel navigateur, afin de faciliter la gestion (Ajout, suppression et configuration) de mes recherches.

Ce programme, sous licence GPL, écrit entièrement en python, utilise différentes sources tierces pour atteindre mon but :

  • CherryPy : Création et gestion d'un serveur Web minimaliste
  • Genshi : Template pour la gestion des pages Web
  • BeautifulSoup : Analyse d'une page internet
  • Minidom : Gestion des fichiers XML qui jouera le rôle de base de données
  • APScheduler : Gestion d'un ordonnanceur/planificateur de tâches

Installation


Télécharger l'archive alertes_lbc-0.1.tar.gz puis décompressez la. Pour une installation facile, avec toutes les dépendances, il faudra avoir le package python-setuptools.

# tar xvzf alertes_lbc-0.1.tar.gz
# sudo apt-get install python-setuptools
# cd alertes_lbc-0.1
# sudo python setup.py install

setuptools installera les dépendances manquantes nécessaires à l'utilisation du soft.

Exécution


Le soft, alertes.py, se trouve dans le dossier source de l'archive. Il est possible d'avoir de l'aide avec la commande :

# ./alertes.py --help
Usage: alertes.py [options]

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -l LIBELLE, --libelle=LIBELLE
                        Libellé d'une nouvelle alerte le bon coin
  -u URL, --url=URL     Url de recherche du site le bon coin
  -e EMAIL, --email=EMAIL
                        Email d'envoi des résultats

  Recherche à une date précise:
    Format JJ/MM/AAAA HH:mm AAAA = Année MM = mois JJ = Jour  HH = Heure
    mm = minute

    -d DATE, --date=DATE
                        Date précise de format : JJ/MM/AAAA HH:mm

  Recherche à un intervalle de temps:
    -j FREQ_DAY, --jour=FREQ_DAY
                        Intervalle de X jours entre chaque recherche
    -H FREQ_HOUR, --heure=FREQ_HOUR
                        Intervalle de X heures entre chaque recherche
    -M FREQ_MINUTE, --minute=FREQ_MINUTE
                        Intervalle de X minutes entre chaque recherche

  Option pour l'interface Web:
    --sans-serveur-web  Ne pas démarrer le serveur web
    -n SERVER_HOST, --server-host=SERVER_HOST
                        L'adresse IP pour le serveur web
    -p SERVER_PORT, --server-port=SERVER_PORT
                        Le port d'écoute du serveur


Deux paramètres principaux sont à renseigner pour lancer le soft :

  • l'adresse IP du serveur, par défaut, localhost
  • Le port du serveur

Exemple :
# ./alertes.py -n "0.0.0.0" -p 3456
[09/Feb/2013:10:40:10] ENGINE Bus STARTING
[09/Feb/2013:10:40:10] ENGINE Started monitor thread '_TimeoutMonitor'.
[09/Feb/2013:10:40:10] ENGINE Started monitor thread 'Autoreloader'.
[09/Feb/2013:10:40:11] ENGINE Serving on 0.0.0.0:3456
[09/Feb/2013:10:40:11] ENGINE Bus STARTED

Je lance l'écoute du serveur web sur toutes les adresses IP du réseau sur le port 3456.
ouvrez un navigateur web et entrez http://IP:PORT dans la barre d'adresse, et on obtient cette page.




Le header de la page permet de naviguer sur le serveur :

  • Accueil : Page d’accueil du serveur, récapitulatif des alertes en cours
  • Ajouter : Page d'ajout de nouvelles alertes
  • Supprimer : Page de suppression d'une ou plusieurs alertes
  • Configuration : Page de configuration pour l'envoi d'email

Le corps de la page principale donne un récapitulatif des alertes enregistrées, chaque alerte est représentée par un libellé, l'URL le bon coin de la recherche, l'email d'envoi des résultats, l'heure et la date de création de l'alerte et la fréquence de recherche.

La page Ajouter



Sur cette page, on va renseigner les champs nécessaires pour notre alerte.

  • Libellé : Nom de l'alerte
  • Lien URL : Le lien URL le bon coin de notre recherche
  • Email : L'adresse email pour l'envoi des résultats
  • Date Unique ou Intervalle de temps

Exemple d'utilisation :

Sur le site internet : le bon coin, je saisi ma recherche complète, et je clique sur le bouton CHERCHER.



La deuxième étape consiste à copier le lien internet de la recherche puis de coller le lien sur notre page ajouter et de renseigner les autres champs. Ici, j'ai configuré une recherche toutes les heures.



On clique sur le bouton Ajout, et la page principale ré-apparaît avec le récapitulatif de la recherche.
















La page Configuration 


















Sur cette page, on va renseigner les différents champs, puis appuyer sur le bouton Configurer pour valider les paramètres :

  • serveur smtp (exemple : smtp.free.fr, smtp.gmail.com, smtp.orange.fr)
  • port smtp (exemple : 587)
  • Sécurité d'email : 
    • Aucune, dans ce cas là, on ne renseigne pas les champs login et password
    • STARTTLS, on va devoir renseigner le login et le password
Le mot de passe est enregistré crypté dans la base de donnée.

Exemple de configuration :

  • Gmail :
    • serveur : smtp.gmail.com
    • port : 587
    • sécurité : STARTTLS
    • login : adresse email gmail
    • password : mot de passe de connexion

La page Supprimer



Pour supprimer une annonce, il suffit de cocher l'alerte ou les alertes à supprimer puis de cliquer sur le bouton Supprimer.

Conclusion


Profitez-en, tant que les sources sont disponibles car ce genre d'outils ne plait pas beaucoup à ce site ... ;-)

5 commentaires:

  1. $ ./alertes.py --help
    Traceback (most recent call last):
    File "./alertes.py", line 26, in
    from apscheduler.scheduler import Scheduler
    ImportError: No module named apscheduler.scheduler

    Suite à l'install du script.
    Kubuntu à jour.
    Je ne fais pas de python. Une idée d'où ça vient ?

    RépondreSupprimer
    Réponses
    1. Il te manque le module Scheduler, sur ubuntu, essaie : sudo apt-get install python-apscheduler

      Supprimer
  2. bonjour je suis guillaume dans le jura (sous kubuntu) .
    Cette application ou logiciel me fascine en théorie ça devrais me faire gagner du temps mais je suis néophyte j'ai déjà copié des lignes de commandes dans la console mais je ne comprend pas forcement tout ce que je fais.
    Pensez vous que ce soit accessible a mon niveau ou c'est plus simple pour moi de garder mes recherches types en marque page dans mon navigateur internet

    RépondreSupprimer
  3. Bonjour,
    la nouvelle interface de LBC peut elle etre la cause de mon échec (sous kubuntu 14.04, seule la source tierce minidom est manquante...mais malgré cela, je peux lancer, configurer, placer des alertes)
    Merci

    RépondreSupprimer
  4. Bonjour
    Je viens de tester l'outil (très intéressant comme développement) sur mon PC (Ubuntu 16.04). L'installation s'est bien déroulée mais je n'arrive pas à faire d'ajout (je saisis tous les champs mais lorsque je clique sur ajout je reviens sur la page d'ajout et mon alerte n'est pas ajoutée). Avez vous déjà rencontré ce type d'erreur ?

    PS: J'ai installé le module python-apscheduler au cas où mais cela n'a rien changé

    RépondreSupprimer