Descriptif du projet

Lignes directrices afin d’éviter de me perdre dans le tunnel du développement... Disqu.es est développé pour répondre à une série de besoins autour de l'acquisition régulière de disques et l’optimisation des frais de port™. L'idée n'est pas seulement de comparer des prix mais de pouvoir choisir entre plusieurs disquaires avec toutes les cartes en main. L'ajout de nouveaux disquaires sur le site se fera au fur et à mesure avec 3 contraintes :

  1. Le site du disquaire doit être exploitable « programmatiquement »
  2. Le disquaire doit être fiable (c'est vague, mais je me comprends)
  3. Par principe amazon (et éventuellement d'autres sites du même genre) sont exclus

Besoins

Par ordre d’importance, je recherche un outil pour :

  1. Identifier les disquaires qui vendent le disque / la cassette / le CD / ... (tout sauf le digital) que je recherche
  2. M'indiquer la disponibilité du disque (en stock, pré-commande, etc.)
  3. Surveiller les évolutions de prix et m’alerter en cas de baisse

Recherche

Il faut pouvoir différencier les éditions et les supports pour un disque. Quand on cherche le LP vinyl rouge on ne veut pas tomber sur le CD. En utilisant l'API de discogs on dispose d'une base assez complète pour préciser sa recherche. Il est important de pouvoir filtrer les résultats si par pour des raisons de frais de port indécents on ne souhaite pas commander aux USA.

Identifier les disquaires

Pour être sur disqu.es il faut forcément disposer d'un site marchant, sinon impossible de scrapper les catalogues. Plusieurs critères différencient les disquaires :

Un travail de veille sera nécessaire pour suivre les mises à jour des sites et adapter les scrappers en conséquence

Disponibilité

Chaque site dispose de son propre vocabulaire pour décrire ses stocks.

Prix

Plusieurs pays = plusieurs monnaies & taux fluctuants Pour alerter des évolutions il faut stocker au moins l'email de la personne et fixer un rythme d'envoi

Surveillance

Il faut repasser régulièrement sur les sites pour trouver de nouvelles occurrences et mettre à jour les prix / stocks.

L'existant

En terme de meta-moteur de recherche de disques il existe différents sites basés sur des Google Custom Search Engines, comme par exemple LPFinder C'est très performant en terme de recherche et de filtrage, mais les données (prix, stock) ne sont pas extraites.

En terme de suivi de prix et d'alertes CamelCamelCamel est une référence.

Fonctionnalités

Traduction des besoins en fonctionnalités et premières briques techniques (autour de python). Histoire d'être agile je divise le projet en deux, la v1 sera un genre de meta-moteur, la v2 ajoutera les fonctions de suivi des prix / alertes.

Interface web (v1)

Un site pour permettre de rechercher un disques, d'afficher les résultats et d'accéder aux disquaires. Dans un second temps le site permettra de suivre les évolutions de prix et de gérer les alertes. Pour faire simple le site sera construit autour de flask

Formulaire de recherche (v1)

un simple champ + choix format + bouton

Annuaire des disquaires (v1)

Liste des disquaires référencés

Derniers produits trouvés (v1)

Liste des derniers disques trouvés par le moteur, pour donner des idées.

Résultats de recherche (v1)

Un récapitulatif du disque recherché et un tableau de résultats avec nom du disquaire prix et stocks.

Evolution des prix (v2)

Un tableau + courbe qui indique les évolutions

Interface d'admin (v2)

Pour suivre les tâches, afficher les erreurs, activer des scrapers, ...

i18n & l10n (v1)

Dans un premier temps le site sera en Français, mais tant qu'à faire autant prévoir la suite.

Bases de données (v1)

On va pas stocker tout ça dans des fichiers textes hein ? PostgreSQL ou SQLite, donc.

Suggestions (v1)

Il y a plusieurs façons de nommer un disque, utiliser la base discogs pour suggérer des résultats serait pratique. E

Scraping (v1)

Tel un meta moteur disqu.es va recevoir une recherche de la part d'un utilisateur et la transmettre aux disquaires. Il faut un outil pour automatiser ces requêtes et extraire les données des fiches produits. Il est possible de tout faire à la main ou d'utiliser des librairies existantes. Après des premiers essais avec scrapy, il semble plus simple de faire un scraper tout simple à base de requests et de Beautiful Soup

Gestion des erreurs (v1)

Suite à la mise à jour d'un site le scraper peut ne plus fonctionner, il faut surveiller les erreurs et alerter en cas de dysfonctionnement.

Planification / Async (v1)

A chaque nouvelle recherche on planifie les prochaine vérification de la page et du site. On pourrait se baser sur cron ou des systèmes comme celery ou huey.

Gestion des devises (v1)

Conversion de X vers Y, avec éventuellement une notion de date pour être plus fiable dans les évolutions de prix.

Mailing (v2)

Pour notifier des évolutions de prix.

Scénario d'utilisation

  1. Jérémie veut faire l'acquisition de The Party, d'Andy Shauf en vinyl
  2. Il va sur disqu.es
  3. Il recherche andy shauf the party, selectionne vinyl et valide
  4. Il arrive sur une page qui indique que les recherches sont en cours
  5. disqu.es envoie la recherche à tous les sites et actualise la page avec les résultats
  6. Jérémie compare les sites et clique sur celui qui l'intéresse
  7. Jérémie est content