Bonjour nal !
Pour cette première entrée je pensais te présenter un projet sur lequel je taff depuis pas mal de temps: JARR (qui veut dire Just Another RSS Reader).
C'est donc un agrégateur de flux RSS / Atom ainsi qu'un outil pour lire les entrées ainsi récupérées.
JARR est la reprise et la refonte quasi totale d'un projet qui avait déjà été présenté ici. Je tiens donc tout d'abord à remercier son auteur pour m'avoir laisser travailler sur son projet et avoir apporter pas mal de changements qui l'ont changé assez profondément.
Avant d'entrer dans les détails, vous pouvez tester le projet sur mon instance en y créant un compte !
La Stack
Le projet tourne sous Python3.4 (minimum) et utilise lourdement Flask pour le framework web, SQLAlchemy pour l'ORM.
Personnellement je fais tourner tout ça sur un PostgreSQL mais l'ORM permet tout aussi simplement d'utiliser sqlite à la place.
Pour l'UI, on a du ReactJS à la pointe de la technologie pour une one page app du plus bel effet.
Petite présentation
Comme vous pouvez le voir sur la capture d'écran au dessus, l'interface est divisée en trois colonnes.
De droite à gauche :
- la première liste les catégories et les flux et permet de filtrer la seconde colonne selon ces catégories ou flux. On peut replier les catégories ou filtrer les flux pour n'afficher que ceux avec des articles non lu ou ceux qui ont rencontré des erreurs les dernières fois que JARR a tenté de les mettre à jour.
- la deuxième colonne est la liste des articles. Elle se met à jours quand on sélectionne un flux ou un article pour n'afficher que les articles idoines
- la troisième colonne est le détail de la catégorie, du flux ou de l'article sélectionné.
Certains flux ne fournissent pas de contenu pour leurs entrées ou des entrées tronquées. Dans ce cas vous avez deux choix, soit aller sur le site source de l'article pour le consulter, soit utiliser Readability dont l'icône en forme de petit fauteuil est visible dans le coin haut droit du panneau droit. Cette icône apparaît si une clef a été fournie soit à l'installation de JARR soit dans le profil utilisateur. En cliquant dessus, JARR utilisera l'API de readability pour parser l'article et avoir un rendu plutôt propre (ça dépends fortement du site parsé). Ce parsage peut être automatisé pour tout un flux.
C'est très pratique pour des sites agrégateur de liens comme le journal du hacker.
Mobile
JARR, est utilisable sur plateforme mobile, même si ce n'est pas optimal puisque, comme vous pouvez le voir sci-dessous on perd d'abord la possibilité de consulter les articles directement, puis la possibilité de filtrer par flux et catégories.
Aperçu sur tablette :
Et sur téléphone :
Développement à venir
Les développements à venir auxquels j'ai pensé sont listé sur github dans les milestones. La plupart d'entre eux sont des améliorations de l'interface et / ou de l'utilisabilité (comme marquer un article comme "à lire plus tard" ou avoir une meilleur intégration de flux populaire qui sont mal foutu).
Mais la fonctionnalité principal que j'ai en tête c'est le regroupement intelligent d'article. L'idée serait dans un premier temps de grouper des entrées parce qu'elles ont la même url (typiquement, une entrée de LinuxFr repostée sur le journal du hacker) et plus tard d'élargir le procédé à une analyse du contenu de chaque entrée.
Conclusion
Je vous enjoins à installer le projet (j'ai retravaillé récemment l'installateur à cette fin), ou l'essayer sur mon instance.
Bien entendu, je suis avide de retour d'expérience utilisateur et de commentaires sur le projet en général.
Les contributions sont aussi les bienvenues !
# Vous ne passerez pas !!
Posté par Naabster . Évalué à 4.
J'ai voulu tester pour le comparer à mon instance de FreshRSS, mais la page d'accueil ma gentiment rappelée que je ne faisais pas partie des élus…
C'est dommage.
[^] # Re: Vous ne passerez pas !!
Posté par François (site web personnel) . Évalué à 2.
Oui, il n'y a pas de compte de test ouvert à tout le monde. Il faut nécessairement créer le sien pour tester le projet.
J'ai désactivé la création de compte classique (login / mot de passe) sur mon instance mais ça reste possible avec un provider d'Oauth (google, Facebook, Twitter).
# euh...
Posté par Tonton Th (Mastodon) . Évalué à 5. Dernière modification le 14 avril 2016 à 08:19.
Marche pas terrible, ton truc.
Edit: Ah, oké, posté trop vite. Il faut être inféodé au grand capital pour tester le projet.
[^] # Re: euh...
Posté par François (site web personnel) . Évalué à 3.
Bah, grand capital, tout de suite, c'est de l'openId !
Du coup, j'ai réactivé la gestion "classique" des utilisateurs (on peut se créer un compte via login/mdp), mais je suis pas super fan de faire tout ça de mon côté, quand des fournisseur d'identité le feront mieux que moi.
[^] # Re: euh...
Posté par TuxMips . Évalué à 3.
Bonjour,
Un de mes amis est en train de développer une application, amis comme pour le moment ce n'est qu'un proof of concept, il n'y a rien de divulguable. Nous sommes donc pour le moment que 4 à tester.
Or je peux me connecter via LinuxFR !
Ne serait il pas possible d'avoir cette option également ? Cela m'éviterait d'ouvrir un compte "tout court" ;-)
[^] # Re: euh...
Posté par barmic . Évalué à 3.
Ce serait sympa, mais c'est pas mal de boulot je pense pour linuxfr de devenir fournisseur d'identité.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: euh...
Posté par François (site web personnel) . Évalué à 6.
En fait si ! C'est déjà là : https://linuxfr.org/developpeur
[^] # Re: euh...
Posté par François (site web personnel) . Évalué à 7.
Je ne savais pas que LinuxFr fournissait de l'OAuth ! Je vais créer une implémentation dans la journée. Merci !
[^] # Re: euh...
Posté par François (site web personnel) . Évalué à 7.
Juste pour notifier que linuxfr a été rajouté comme fournisseur d'OAuth ! :)
[^] # Re: euh...
Posté par aurel (site web personnel, Mastodon) . Évalué à 4.
Merci beaucoup d'avoir autorisé la création de comptes indépendants, je suis sûr que ça va permettre à beaucoup d'entre nous de tester :)
[^] # Re: euh...
Posté par Goffi (site web personnel, Mastodon) . Évalué à 5.
Y'a plus qu'à implémenter l'accès via XMPP (cf. ici)
[^] # Re: euh...
Posté par François (site web personnel) . Évalué à 1.
On it :)
[^] # Re: euh...
Posté par Mimoza . Évalué à 3.
Malheureusement ces fournisseur d’identité ne se prive pas d'épier tes moindre fait et geste … une alternative plus respectueuse de la vie privé aurait sans doute été bien mieux accepté
[^] # Re: euh...
Posté par steph1978 . Évalué à 5.
Ggl/Fb/twtr.
Il faut donc avoir une identité parmi l'une de ces sociétés privées pour exister sur le web ?
Je vote non.
Que tu permettes d'utiliser un identity provider, je plussois.
Que tu t'estimes moins qualifié qu'un identity provider pour gérer des identités, je dis pareil et je plussois encore.
Mais, ne restreint pas la liste des fournisseurs, please.
Vive la fédération !
[^] # Re: euh...
Posté par François (site web personnel) . Évalué à 4.
Je suis en train de mettre linuxFr mais l'implémentation n'est pas strictement identique entre tous les fournisseurs, donc je ne peux pas juste mettre des champs en mode "utilisez l'openId que vous souhaitez". Il faut un minimum d'implémentation.
Mais oui en avoir un maximum, pour laisser un maximum de choix me semble carrément la piste à suivre.
[^] # Re: euh...
Posté par barmic . Évalué à 4.
Selon l'implémentation, tu dois enregistrer ton application.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
# Prometteur
Posté par Carl Chenet (site web personnel) . Évalué à 3.
Salut,
Je viens de tester rapidement en créant une instance et ça marche très bien. j'aime beaucoup l'UI, elle me semble vraiment bien organisée. Je vais essayer de l'utiliser quelque temps en parallèle de mon instance de Freshrss.
En plus du Python et de l'AGPLv3 miam miam
[^] # Re: Prometteur
Posté par flan (site web personnel) . Évalué à 4.
Je suis également franchement intéressé. Ça me paraît pas mal du tout ! Je n'ai pas eu le temps de tester, mais je le mets sur ma liste de choses à installer.
Par pur plaisir d'être pénible, j'aurais quelques remarques, uniquement basées sur la doc et liées à mes petites manies :
[^] # Re: Prometteur
Posté par François (site web personnel) . Évalué à 2.
Tout à fait d'accord pour une dépendance ! Mais JARR n'en étant pas une, et n'étant pas 100% python (github me dit 40% html/js) et le JS étant compilé, ça va pas forcément être pratique à utiliser via l'env python. D'autant que si on utilise un serveur http digne de ce nom, il faudra préciser l'entry point pour wsgi et si c'est loin dans un env, encore une fois, ça va être malpratique.
Hum. Bonne question, ça doit pouvoir se faire avec quelques ajustement et en tripatouillant la conf du serveur. Je suis pas du tout contre une intégration de ce genre de chose, mais clairement je vais pas avoir le temps de plancher là dessus :/
[^] # Re: Prometteur
Posté par flan (site web personnel) . Évalué à 2.
Merci pour tes réponses. Je n'ai pas encore eu le temps de m'y plonger sérieusement, mais je note pour plus tard, dans ma liste de choses à installer ^ ^
Peut-on l'utiliser en reverse proxy, plus simplement ?
Y a-t-il moyen de compiler facilement et de l'exporter sous forme de .deb ?
De plus, si je comprends bien, la conf' est écrite dans un fichier .py au milieu du code. Serait-il envisageable de l'exporter dans un .ini ?
Que se passe-t-il pour la mise à jour de la base de données si tu changes le modèle ? Je suis habitué au système de migrations de Django, mais je ne connais pas du tout Flask.
Encore une question : peut-on partager ou rendre publiques des catégories ? Je n'ai pas vu de telle option en me logguant rapidement.
[^] # Re: Prometteur
Posté par François (site web personnel) . Évalué à 1.
Techniquement, oui. Si il y a du contenu distant dans les flux récupéré ce dernier ne sera pas chargé en base et sera récupéré par le navigateur (ce qui, j'imagine, doit être un comportement désactivable). Les icônes des flux sont chargées sur le server ainsi que le contenu récupéré par readability, dans un souci de vie privée mais ça se limite à ça.
Je n'ai pas fait mais je crois que faire un .deb à partir d'un projet python est assez aisé. Je pense pas que ça demanderait beaucoup de travail (enfin sauf d'écrire des MakeFile jusqu'à plus soif quoi :D).
Alors ça, c'est voulu. À la base elle était dans un point .ini mais l'intégration était vraiment pas top et j'ai finit par refaire le système pour qu'il fasse ainsi. L'idée est que l'intégration avec flask est bien meilleur avec la conf directement dans un module. On peut faire autrement (dans un objet python qui va chercher ses variables dans la conf par exemple) et c'est carrément indiqué si on veut compiler tout ça dans un .deb.
Mais tout ça, (faire des .deb, compiler des sources, refaire le système de conf) n'est pas vraiment dans mes priorités immédiates…
Ça c'est très bien géré avec Flask-Migrate.
Et c'est finit :)
Non et qu'est ce que tu entends par là ?
[^] # Re: Prometteur
Posté par flan (site web personnel) . Évalué à 3.
Ok, merci encore pour toutes ces réponses.
pour les catégories ou les flux publics, je pensais à la possibilité de mettre des flux ou des groupes de flux visibles d'autres personnes, avec une page proposant ces groupes déjà prêts à être ajoutés dans une sélection perso.
[^] # Re: Prometteur
Posté par François (site web personnel) . Évalué à 1.
Et bien j'avais ça de planifié pour un peu tard. L'idée étant de proposer des flux déjà dans la base avec une recherche par mot clef. Après, ça n'aurait pas de rapport avec les catégories et chaque utilisateurs devra toujours organiser ses flux à la main.
# Selfoss
Posté par Noobinux . Évalué à 4.
Salut,
Merci pour ton travail et ta solution !
Après test je préfère rester sur mon Selfoss, beaucoup plus clair et simple de mon point de vue, après c'est les goûts et les couleurs…
Le gros point positif de ta solution, c'est pour les flux RSS qui te file tout l'article et non seulement le preview, la lecture en devient agréable avec le panel de droite
[^] # Re: Selfoss
Posté par zurvan . Évalué à 2.
idem, ça semble très bien (joli, pratique), mais j'ai déjà un selfoss qui fonctionne bien, donc je le garde ;)
« Le pouvoir des Tripodes dépendait de la résignation des hommes à l'esclavage. » -- John Christopher
# Erreur 500
Posté par Glandos . Évalué à 2.
Bon, j'ai eu une erreur 500 sur la suppression de mon user avec https://jarr.info/user/delete_account/25
C'est pas grave, hein :)
Sinon, c'est vrai que le chemin est long pour atteindre le niveau des lecteurs RSS actuels. Mais je te souhaite de continuer. Parce que c'est déjà une vraie alternative. Et en Python :)
[^] # Re: Erreur 500
Posté par François (site web personnel) . Évalué à 2.
Ah, c'est moche, mais je note, je vais publier un fix dans la journée.
Merci pour les encouragements !
[^] # Re: Erreur 500
Posté par François (site web personnel) . Évalué à 1.
Résolu :)
# Super !
Posté par barmic . Évalué à 4.
Ton projet a l'air super !
Sur mon mobile avec Firefox je n'ai qu'une page blanche.
Je ne l'utiliserais pas tout de suite parce que je suis assez content de TTRSS et surtout du client Android que j'utilise (qui a la possibilité de s'utiliser en mode déconnecté).
Est-ce que tu envisage de travailler sur ce cas d'usage ? En implémentant un mode déconnecté à la partie web, en implémentant les webservice de ttrss ou en créant ta propre appli mobile ? C'est un énorme travail j'en suis tout à fait conscient… :(
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Super !
Posté par François (site web personnel) . Évalué à 1.
Effectivement c'est très moche, mais ça marche parfaitement sur chrome mobile, donc aussi très bizarre. Je vais plancher dessus.
Vu que ce n'est qu'une page web, un mode hors ligne n'est pas vraiment envisageable tel quel. Je pense qu'il faudrait développer une app pour ça comme tu dis. Et à vrai dire, je n'en suis vraiment pas là…
[^] # Re: Super !
Posté par barmic . Évalué à 5.
Si si c'est tout à fait possible.
Ce n'est pas simple à mettre en place par contre (surtout après coup je pense).
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Super !
Posté par François (site web personnel) . Évalué à 1.
Ah, au temps pour moi, mais comme tu le dis ça a l'air assez lourd à mettre en place. Et le cache à générer pour que ça soit utilisable serait assez conséquent (au minimum tous les articles non lus, ce qui, selon les usages, peu monter à quelques milliers !).
Mais je garde ça dans un coin.
[^] # Re: Super !
Posté par barmic . Évalué à 4.
Non pour ça il vaut mieux utiliser localstorage ou IndexedDB. Tu a un vrai accès programmatique et tu peux faire du crud (là où le cache est déclaratif).
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Super !
Posté par François (site web personnel) . Évalué à 1.
J'ai régler le problème sur firefox mobile :)
# readability
Posté par steph1978 . Évalué à 4.
Bravo pour ton projet.
L'interface a l'air très clean.
Je trouve la fonctionnalité de "readability" très novatrice pour ce type de logiciel. Bravo !
Par contre, est ce qu'il ne sera pas possible de travailler avec une bibliothèque intégrée plutôt qu'avec les API d'un fournisseur privé ? Je pense aux travaux que font Mozilla/Firefox (reader mode) ou wallabag.
Bonne continuation
[^] # Re: readability
Posté par François (site web personnel) . Évalué à 1.
Je vais voir pour wallabag, mais c'est du php (donc moyennement intégrable dans JARR côté server) et je vais aussi regarder du côté de Mozilla/Firefox pour le reader mode. Malheureusement de ce que j'ai vu voir vite fait, il ne propose pas une api requêtable comme le fait readability. L'intégration sera forcément plus laborieuse.
En tout cas merci du commentaire !
[^] # Re: readability
Posté par El Titi . Évalué à 3.
Pour ce besoin, je t'invite à aller jeter un coup d'oeil sur ce projet https://github.com/1flow/1flow. Une news est passée ici: https://linuxfr.org/news/1flow-plate-forme-libre-pour-l-information
La philosophie est identique à wallabag et ambitionne(ait) d'aller plus loin car ça permet aussi de suivre d'autres types de flux comme twitter.
C'est basé sur du Python avec Django (pas Flask). Mais il doit sûrement y avoir des trucs à récupérer sur le module de parsing de page.
L'auteur est passé par ici mais nous n'avons plus guère de nouvelles de son projet. voici son Trello: https://trello.com/b/lSR7Y6Vi/1flow-features-development
N'hésite pas à prendre contact avec lui. Il est très sympa.
[^] # Re: readability
Posté par François (site web personnel) . Évalué à 1.
Je note, je vais voir pour une implémentation dans un futur assez proche (j'ai créer une issue sur github : https://github.com/jaesivsm/JARR/issues/35)
Merci !
# Suggestions: raccourcis clavier
Posté par aurel (site web personnel, Mastodon) . Évalué à 3.
Vraiment très sympa, ce projet. Utilisateur de tt-rss, j'apprécie énormément les raccourcis claviers qui permettent par exemple de passer d'un article à l'autre sans avoir à toucher la souris. C'est le genre de chose qui enlarge tellement la productivity qu'il est difficile de s'en passer :)
[^] # Re: Suggestions: raccourcis clavier
Posté par François (site web personnel) . Évalué à 1.
Un utilisateur m'en avait déjà parler en bêta, je prends note (et je met ça dans le tracker :)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.