title:      Votre aggrégateur manquerait-il de fonctionnalités ?
slug:       votre-aggregateur-manquerait-il-de-fonctionnalites
date:       2005-08-20 18:24:24
type:       post
vignette:   
contextual_title1:  Réflexions sur les conférences de geeks
contextual_url1:    20090327-reflexions-sur-les-conferences-de-geeks
contextual_title2:  Son propre TinyURL en Python et HTML5 avec webpy
contextual_url2:    20090221-son-propre-tinyurl-en-python-et-html5-avec-webpy
contextual_title3:  Analyse des données utilisateur d&#39;AOL : suite et fin
contextual_url3:    20060814-analyse-des-donnees-utilisateur-d-aol-suite-et-fin

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


<p>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&nbsp;:</p>

<h2>Fonctionnalités classiques</h2>

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

<h2>Fonctionnalités avancées</h2>

<ul>
<li>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&nbsp;: (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&nbsp;: geek, normal, découverte).</li>
<li>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.</li>
<li>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&nbsp;: ne pas lire deux fois le même item). Par exemple pour un fichier opml très (très) simple&nbsp;:</li>
</ul>
<pre>[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</pre>
<ul>
<li>Possibilité de renommer les fils (ne pas oublier d'annoncer le changement éventuel de titre réel).</li>
<li>Vérification de l'unicité des fils (à l'ajout et à l'import d'opml).</li>
</ul>

<p>La balise outline d'un opml aura donc (pour l'instant) les attributs suivants&nbsp;: xmlUrl, htmlUrl, realTitle, ownTitle, updateIntervalle, lastRead.</p>


<h2>Reste à déterminer&nbsp;:</h2>
<ul>
<li>Profondeur de l'arborescence, faut-il limiter&nbsp;?</li>
<li>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&nbsp;? (je sais entre les fils et les fils on s'y perd un peu... euh, comprendre feeds et children ;).</li>
<li>Le nom, FeedManager ou mieux selon vos idées :-)</li>
<li>Beaucoup d'autres choses, n'hésitez pas à passer commande, il vaut mieux définir les spécifications <strong>avant</strong> le début du développement&nbsp;!</li>
</ul>
