# Votre aggrégateur manquerait-il de fonctionnalités ?

Si vous n'avez toujours pas trouvé d'aggrégateur satisfaisant, il serait peut-être temps de coder le votre passer votre commande :-)

Je me suis finalement décidé à coder un aggrégateur en python, d'une part pour réaliser un projet intéressant et d'autre part pour avoir des fonctionnalités qui me manquent cruellement, voila une première liste à compléter :

## Fonctionnalités classiques

- Créer une arborescence (dossiers/fils)
- Obtenir les items d'un fil en cliquant dessus (lus en grisé, ou non lus en gras ? ou les deux ?)
- Possibilité d'import/export de fichiers opml

## Fonctionnalités avancées

- Calcul d'un intervalle de mise à jour en fonction de la fréquence de mise à jour des items (min = 5 minutes et max = 3 heures, pas de 5 minutes). Signaler lorsque une mise à jour n'a pas été effectuée depuis longtemps (6 mois ?). La fonction de calcul doit ressembler à ça : (somme des intervalles - (plus grand + plus petit)) / ((nombre d'intervalles - 2) * facteur). On enlève le plus grand pour les vacances et le plus petit pour les cas de mise à jour frénétique. Le facteur pourra être déterminé en fonction du profil de l'utilisateur (normalement 3 profils prévus : geek, normal, découverte).
- Afficher les fils dans l'ordre de parution de manière à pourvoir déterminer à quelle date s'est arrêtée la lecture d'un fil. Pratique pour les personnes ayant cet aggrégateur au boulot et à la maison par exemple, un simple upload du fichier opml en fin de journée et on reprend la lecture à la maison à partir de là où on en était. Possibilité d'automatiser l'upload à la fermeture de l'aggrégateur.
- Possibilité de créer des dossiers virtuels recherchant des mots-clés dans les items non lus. Lorsqu'un item est lu, il est considéré comme lu dans tous les dossiers virtuels ainsi que dans son fil principal (objectif : ne pas lire deux fois le même item). Par exemple pour un fichier opml très (très) simple :

    [Dossier] Non lus       # contient tous les items non lus de biologeek, play et DLFP
    [Dossier] Ubuntu        # contient les items non lus contenant le mot-clé "ubuntu"
    [Dossier] Blog Fr       # contient les items non lus de biologeek et play
                Biologeek   # contient tous les items de biologeek
                Play        # contient tous les items de play
    [Dossier] Informations  # contient les items non lus de DLFP
                DLFP        # contient tous les items de DLFP

- Possibilité de renommer les fils (ne pas oublier d'annoncer le changement éventuel de titre réel).
- Vérification de l'unicité des fils (à l'ajout et à l'import d'opml).

La balise outline d'un opml aura donc (pour l'instant) les attributs suivants : xmlUrl, htmlUrl, realTitle, ownTitle, updateIntervalle, lastRead.

## Reste à déterminer :

- Profondeur de l'arborescence, faut-il limiter ?
- Dans le cas d'un dossier contenant un autre dossier, faut-il que le dossier parent afficher les items non lus de ses fils ou aussi les items non lus des items de ses dossiers fils ? (je sais entre les fils et les fils on s'y perd un peu... euh, comprendre feeds et children ;).
- Le nom, FeedManager ou mieux selon vos idées :-)
- Beaucoup d'autres choses, n'hésitez pas à passer commande, il vaut mieux définir les spécifications avant le début du développement !

### Articles peut-être en rapport

- Réflexions sur les conférences de geeks
- Son propre TinyURL en Python et HTML5 avec webpy
- Analyse des données utilisateur d'AOL : suite et fin

### Commentaires

szdavid le 20/08/2005 :

Salut,
franchement, je te souhaite bon courage ;-)
Personnellement, le mien me convient (quoi que l'histoire des dates si deux lecteurs en parrallèle, ça me plairait bien).
Pour les fonctionnalités, pourquoi pas la possibilité de ne pas charger d'images si non désiré

mauriz le 20/08/2005 :

Y'a deux features qui peuvent être sympa:
* afficher les favicons
* permettre d'accéder à des fils privés (BasicAuth) en renseignant le login/mot de passe.

NiKo le 20/08/2005 :

Si tu codes le premier agrégateur software à base de tags, de dossiers, de feuilles de styles personnalisables (skins d'affichage) et de synchro distante avec en plus une gestion intelligente de l'archivage, je te fais un bisou :)

David, biologeek le 20/08/2005 :

@szdavid : ok pour le téléchargement des images, j'en ferais une option.
@mauriz : ok pour les favicons, par contre je ne connais pas les fils privés, si tu as de la doc dessus tu sais où me trouver ;)
@NiKo : je n'oublierais pas de venir réclamer un bisou en temps voulu ^^.

S.F. le 21/08/2005 :

* Pouvoir donner une page HTML lorsqu'on veut s'abonner à un fil RSS : après tu la parses pour trouver le(s) fil(s)
* Reconnaître les billets publiés plusieurs fois (ex: planets, les marquer toutes les versions comme lus si on en a lu un)
* Attribuer des sujets (ou tags ou whatever) aux carnets.
* Pouvoir les associer avec les gens du carnet d'adresse EDS (optionnel mais ça peut être sympa)
* Support de plug-ins ^^
* Interface D-BUS pour pouvoir créer un backend beagle le cas échéant.
* Possibilité de réduire dans la zone de notification
* Possibilité de récupérer les fils depuis le système de fichier ou par une commande, comme dans liferea.
Voilà les premières idées auxquelles je pense ^^
N'hésite pas à prévenir quand tu le mets quelque part sur un cvs quelconque, histoire que les gens motivés (ou pas) puissent s'y investir un petit peu.
BasicAuth c'est l'authentification http, comme quand ton navigateur de demande login/mdp pour te connecter à une page (.htaccess, etc). C'est pratique dans la mesure où tu peux avoir un tel fil privé dans le cadre d'un projet de rédaction, etc. (openweb, gmail en ont un du genre)

Demeester Vincent le 22/08/2005 :

Alors moi non plus je trouve pas vraiment un aggrégateur à ma convencane.
Mes idées :
* Si tu codes tout à toi tout seul c'est chaud non ?
* localisable (en français, en anglais, etc.. )
* Favicons & téléchargement d'images en option
* style personnalisable dans les 2 sens : css pour la lecture des feeds (qui pourrait donc varié également d'un fil à l'autre mais là.. faudrait juste spécifier ça dans un fichier config bien caché :p) et interface personnalisable (possibilité de changer un peu l'affichage, icônes des dossiers, feeds, etc..)
* Je connais pas non plus les feeds privés, mais permettre de reclamer des feeds qui sont dans un dossier protégé (par .htaccess par exemple) si on a les mots de passe.
* gestion de tags pourquoi pas
* possibilité d'archivage ce serait bien :p
* Si présence dans le rss de la fréquence de la mise à jour en tenir compte
mmmhh moi je sais déjà quel profil est à utiliser :p
C'est à peu près tout ce qui me vient à la tête à cetet heure-ci.

David, biologeek le 22/08/2005 :

J'ai bien fait de faire un billet là dessus :-)
> * Reconnaître les billets publiés plusieurs fois (ex: planets, les marquer toutes les versions comme lus si on en a lu un)
Pas simple à faire ça...
> * Interface D-BUS pour pouvoir créer un backend beagle le cas échéant.
Il va falloir que je me documente.
> * Possibilité de récupérer les fils depuis le système de fichier ou par une commande, comme dans liferea.
Peux-tu détailler ?
> N'hésite pas à prévenir quand tu le mets quelque part sur un cvs quelconque, histoire que les gens motivés (ou pas) puissent s'y investir un petit peu.
Pas de problème :)
> C'est pratique dans la mesure où tu peux avoir un tel fil privé dans le cadre d'un projet de rédaction, etc. (openweb, gmail en ont un du genre)
Surtout quand le login/mdp est dans le rss et que tu le retrouves dans l'opml... (cf. le tiens ;))
> localisable (en français, en anglais, etc.. )
Ok, c'est prévu.
> interface personnalisable (possibilité de changer un peu l'affichage, icônes des dossiers, feeds, etc..)
Là si je le fais avec du gtk+, ça changera avec ton thème, pas suffisant ?
> * Si présence dans le rss de la fréquence de la mise à jour en tenir compte
Oui, ne pas oublier ça (merci pour le rappel).
Bon ça fait plaisir d'avoir pas mal de retours intéressants, maintenant j'aimerai que vous détaillez ce que vous appellez une "bonne gestion des archives". Oui, je sais j'en demande beaucoup :D

mauriz le 22/08/2005 :

Pour les fils privés dont je parlais, c'est exactement ce que disent Steve et Vincent.
Concernant le téléchargement des images, il faudrait songer à une résolution des urls de relative en absolue. (bon je sais c'est assez con de mettre des urls relatives dans un fil rss, mais bon...)

David, biologeek le 22/08/2005 :

Oui pour la conversion relative => absolue, c'est ce que j'avais du faire pour la première version du planet (donc c'est con mais ça se fait :/).

S.F. le 22/08/2005 :

> Possibilité de récupérer les fils depuis le système de fichier ou par une commande, comme dans liferea.
Exemple simple : j'ai un service quelconque qui tourne en tâche de fond. Celui-ci génère un journal. Imaginons que les événements les plus importants soient stockés dans un fichier de type RSS ou Atom. Dans ce cas il pourrait être sympa de pouvoir récupérer ce fil directement. Rien de compliqué si tu utilises quelque chose comme gnome-vfs.
Deuxième exemple : j'ai écrit un petit script qui parse les pages d'un site web quelconque et génère à partir de celui-ci un fil RSS. J'aimerais pouvoir appeler ce programme directement, pour avoir mon fil personnalisé. Autre cas, l'emploi de curl, rendu inutile si tu gères l'authentification HTTP.
> Surtout quand le login/mdp est dans le rss et que tu le retrouves dans l'opml
chuuuut malheureux ! Corollaire : faire en sorte de pas avoir ce genre de bricoles avec ton propre agrégateur. D'où l'utilité d'une gestion native de l'authentification HTTP.
> Là si je le fais avec du gtk+, ça changera avec ton thème, pas suffisant ?
Grandement suffisant, j'aime bien les trucs qui ont un look natif, je suis pas trop friand des trucs skinnables qui ressemblent à rien (xmms, firefox, j'en passe et des meilleures)
> "bonne gestion des archives"
Bah, un backend beagle ;-)
Des bonnes archives, ce sont des archives dans lesquelles ont peut faire une recherche. Le backend beagle me semble donc tout à fait approprié.
Autre chose, il pourrait être sympa de séparer autant que faire se peut l'affichage du traitement. Ça permettrait éventuellement de créer une version KDE à moindres frais (pour shogouki par exemple ;-))
Bon courage.

S.F. le 22/08/2005 :

Ah j'oubliais :
>> * Reconnaître les billets publiés plusieurs fois (ex: planets, les marquer toutes les versions comme lus si on en a lu un)
>
>Pas simple à faire ça...
INDISPENSABLE !
Surtout que les planets se multiplient et restent le meilleur moyen d'avoir des infos fraiches sur un projet... Ce qui s'accompagne d'une floppée de doublons, dans le cas des blogs repris sur plusieurs planets (gnome et gnome-fr par exemple), ou si on a aussi le blog directement.
Le bouton 'marquer tous les items comme lus' ne devrait par contre pas marquer les publications multiples du même coup. Exemple : j'ai 150 nouveaux billets dans planet-trucmuche, mais j'ai aussi le blog de machin dans mes fils. Si je ne veux pas passer mon temps à lire les 150 billets d'une importance somme toute très relative, je voudrai par contre voir le blog de machin, car s'il est dans mes rss en plus du planet, on peut partir du principe qu'il m'intéresse... Je sais pas si c'est clair mais je suppose que tu as compris l'idée :-)

al_ le 22/08/2005 :

* possibilité de s'abonner à des opml (genre celui d'un planet pour paf ajouter tous les blogs à l'agrégateur et que ça se synchro quand l'opml change.)
* plus stable que liferea (mais ça doit pas être trop dur)
* le coder en rub.. non rien

David, biologeek le 22/08/2005 :

> Le bouton 'marquer tous les items comme lus' ne devrait par contre pas marquer les publications multiples du même coup.
En fait plus je réfléchis à ça et plus on se dirige vers deux catégories de dossiers : les réels et les virtuels.
Dans les réels il y aurait les fils à proprement parler, consultables comme dans n'importe quel aggrégateur.
Dans les virtuels, c'est là où ça pourrait devenir intéressant de faire des tags/recherche de mots-clé/catégories/opml de planets, etc...
Donc dans ton cas il serait intéressant de commencer par consulter les fils en dur si tu ne comptes pas lire le planet, enfin c'est encore confus, il faudrait que j'écrive tout ça noir sur blanc.
> * possibilité de s'abonner à des opml (genre celui d'un planet pour paf ajouter tous les blogs à l'agrégateur et que ça se synchro quand l'opml change.)
ok (penser à créer un opml pour le planet ubuntu-fr alors...)

David, biologeek le 22/08/2005 :

al_> titus`lap, tiens un classement en fonction de la langue
al_> si la langue est indiquée dans le fil rss bien sûr
al_> mais paf tagger le feed selon sa langue
Pour pas oublier...

Pititjo le 02/09/2005 :

Ce serait bien de pouvoir «bookmarker» un billet, le mettre de côté en somme.

Florian le 12/09/2005 :

Salut, je découvre ce blog et ce projet en meme temps. Ca me semble une bonne idée, ton agrégateur. En plus, ca fait un moment que je dis que je veux aprendre le Python et le GTK. Si ça t'intéresse, je suis prêt ) participer à ce projet. Si tu veux faire le début tout seul, je comprend, mais si tu veux un coup de main dès maintenant, j'en serais ravis. Contacte moi par mail pour qu'on en discute si ça t'interesse.
Coté remarques, beaucoup de bonnes choses ont déjà été dites. Je pourrais rajouter:
* Suivre les Human Interface Guidelines de gnome serait une bonne chose
* Gerer proprement les enclosure, et en particulier reflechir a ce qui pourrait être fait pour tenir compte du phénomène podcasting.

Tartopom le 18/03/2006 :

Où en est le projet ? (Titus je sais que tu lis les commentaires avant de les publier, dis moi que c'est pas abandonné ^^').

David, biologeek le 19/03/2006 :

C'est pas abandonné, je vais essayer de contribuer à straw, n'hésites pas à faire de même ;)
www.gnome.org/projects/st...

Tartopom le 19/03/2006 :

J'aimerais bien mais d'abord il faut que j'apprene python (et aussi que je refasse les css de mon site ^^').