Journal MediaRSS le mal aimé

Posté par (page perso) . Licence CC by-sa.
32
20
nov.
2019

Sommaire

Parmi les standards intéressants que personne n'implémente, on peut compter Managesieve, la RFC 1149 ou encore Media-RSS (ou MRSS). Pourtant j'ai envie de vous parler un peu de ce dernier.

Le standard Media-RSS

Media-RSS est une extension RSS permettant d'attacher des contenus audio, vidéo ou images à des articles. Wikipedia nous apprend qu'il fut créé par Yahoo en 2004, et vécu quelques itération pour trouver sa version la plus aboutie en 2009, il y a 10 ans déjà. Media-RSS permet de décrire assez précisément les métadonnées du contenu attaché : miniatures, description, notes, nombre de vues, licences, hash, classification du contenue (PEGI &co), sous-titres, etc. Tout est là par exemple pour décrire correctement une vidéo. Et ça tombe bien car Youtube l'utilise dans ses flux, ainsi que Peertube (du moins en partie). D'autres outils tels que RSS-Bridge supportent aussi en partie cette extension.

J'y vois là une manière élégante de s'abonner à des chaînes de vidéos, la possibilité de classer et organiser les contenus qui m'intéressent avec mes propres outils. Tout cela en utilisant un standard ouvert, et surtout, sans avoir à me créer de compte. Ce standard me semble pertinent dans une démarche de dégooglisation lente, bien qu'on ne puisse pas réellement faire confiance à Google pour soutenir des formats interopérables sur le long terme.

Parmi les extensions similaires, on peut citer le namespace maison que l'on retrouve dans les flux youtube, ou bien l'extension Podcast Connect d'Apple (utilisée notamment par Vimeo, Soundcloud, etc.) et qui semble faire standard en matière de podcast.

Alors voilà, à part Peertube, et Youtube, tout le monde se fout de Media-RSS. De la dizaine de sujets sur StackOverflow, tous datant de ~2010-2012, au vide sidéral de contenu proposé par les moteurs de recherche, en passant par l'age et la solitude des projets Github en rapport avec Media-RSS, on se rend vite compte à quel point ce standard est mal supporté, et surtout, méconnu.

La plupart des lecteurs de flux RSS ne supporte donc pas Media-RSS. En fouillant un peu, on se rend vite compte que les bibliothèques logicielles de lecture de flux sur lesquelles ils s'appuient non plus. J'ai donc pris un peu de temps pour faire le tour du support de Media-RSS dans quelques lecteurs RSS bureau, web et mobiles, et ouvrir quelques tickets de bug pour discuter de son adoption avec les développeurs.

Les lecteurs de flux RSS

J'attends d'un lecteur de flux qu'il tire partie au maximum des informations apportées Media-RSS, mais pour une utilisation confortable, je me contenterait de l'affichage de la miniature et de la description d'une vidéo. Je constate que la plupart des lecteurs de flux ne supporte pas du tout le standard. Lorsqu'ils le supportent, généralement ils considèrent les vidéos comme des pièces-jointe à un article, mais pas de réelle intégration.

Voici l'affichage des flux de la chaîne Youtube de PBS Space Time et la chaîne Peertube de Framasoft dans plusieurs applications.

Logiciel Langage Support de MediaRSS Notes Flux Youtube Flux Peertube
Akregator C aucun (rapport de bug) akregator-youtube akregator-peertube
Commafeed Java aucun (rapport de bug) commafeed-youtube comafeed-peertube
Feeder Kotlin (android) moyen (rapport de bug) feeder-youtube feeder-peertube
FeedReader Vala aucun (rapport de bug) feedreader-youtube feedreader-peertube
Flym Kotlin+Java (android) aucun (rapport de bug) flym-youtube flym-peertube
FreshRSS PHP mauvais (rapport de bug) Affiche miniature et description, mais pas le reste. Utilise la bibliothèque SimplePie freshrss-youtube freshrss-peertube
gfeeds python aucun (rapport de bug) Utilise la bibliothèque feedparser gfeeds-youtube gfeeds-peertube
handy news reader Java aucun (rapport de bug) fork de flym handy-youtube handy-peertbe
Kriss feed PHP correct (rapport de bug Youtube OK - Peertube KO krissfeed-youtube krissfeed-peertube
Leed PHP mauvais (rapport de bug) Format reconnu, UI non adaptée. leed-youtube leed-peertube
Liferea C mauvais (rapport de bug) Format reconnu, UI non adaptée. liferea-youtube liferea-peertube
Miniflux GO mauvais (rapport de bug) Seul le player youtube est affiché miniflux-youtube miniflux-peertube
nextcloud news PHP mauvais (rapport de bug) Utilise la bibliothèque feed-io nextcloud-news-youtube nextcloud-news-peertube
nextcloud news android Java aucun (rapport de bug) Player Youtube OK. Pas de miniature, pas de description. nextcloud-news-android-youtube nextcloud-news-android-peertube
newsboat C++ mauvais (rapport de bug) C'est un lecteur en terminal. On pourrait tout de même y lire les descriptions des vidéos newsboat-youtube newsboat-peertube
newsblur python moyen (rapport de bug) Youtube est OK mais Peertube KO. Je les soupçonne d'utiliser le namespace de youtube plutôt que Media-RSS newsblur-youtube newsblur-peertube
QuiteRSS C++ partiel (rapport de bug) Youtube OK, Peertube KO quiterss-youtube quiterss-peertube
RSSMonster Javascript aucun (rapport de bug rssmonster-youtube rssmonster-peertube
rssowl Java mauvais (rapport de bug) Format reconnu, UI non adaptée. rssowl-youtube rssowl-peertube
selfoss PHP aucun (rapport de bug) Utilise la bibliothèque SimplePie selfoss-youtube selfoss-peertube
TinyTinyRSS PHP mauvais (rapport de bug) Format reconnu, UI non adaptée. ttrss-youtube ttrss-peertube
Winds Javascript correct (rapport de bug) Youtube OK. Peertube KO winds-youtube winds-peertube

Si d'aventure vous voyez d'autres lecteurs qui pourraient avoir leur place dans cette liste, je suis tout ouïe.

Les bibliothèques de lecture de flux RSS

J'attends des bibliothèques de lecture de flux RSS qu'elles exposent un modèle de données qui soit fidèle à la spécification. Je constate que peu de bibliothèques supportent le standard, et absolument aucune ne le fait correctement, le support étant généralement cantonné à la gestion des miniatures et des descriptions des vidéos (mais c'est un début !).

Il est intéressant de noter que certaines bibliothèques sont utilisées par beaucoup de lecteurs de flux (comme par exemple Simplepie).

Langage Support Notes
feed-io PHP aucun
feedparser python partiel L'implémentation existe, mais elle ne respecte pas du tout le standard.
podcastparser python partiel Beaucoup de tags sont ignorés
libgrss C aucun
SimplePie PHP OK Le code semble supporter MediaRSS, mais la documentation n'est pas explicite sur le sujet.
syndication Rust aucun

Mes recherches sur les bibliothèques n'ont pas été très approfondies, mais si vous en voyez une qui aurait sa place dans ce tableau, encore une fois je suis tout ouïe.

Conclusion

Étonnamment, je me rends compte que la plupart des développeurs d'outils lié à Atom/RSS ignorent jusqu'à l'existence de Media-RSS. Lorsque des utilisateurs demandent le support du tag <media:content>, les développeurs le considèrent souvent comme du RSS non standard et exotique et refusent de l'implémenter.

Je suis bien au courant qu'il ne suffit pas de demander gentiment aux développeurs pour qu'une fonctionnalité arrive, mais j'espère au moins que ces tickets permettront de discuter, et à minima de rappeler au monde l'existence de Media-RSS. Pour le moment les réponses que j'ai eues sont globalement positives. Elles vont de « ok, code le toi-même » à « trop cool j'implémente ça tout de suite ». Par ailleurs je compte contribuer à une meilleure implémentation dans feedparser afin que gfeeds puisse en profiter, ainsi que dans feed-io afin que nextcloud-news puisse en profiter.

Et puis qui sait, si les choses bougent, je publierai peut-être une rétrospective.

  • # C'est bien du RSS non standard

    Posté par (page perso) . Évalué à 2 (+2/-2).

    Lorsque des utilisateurs demandent le support du tag <media:content>, les développeurs le considèrent souvent comme du RSS non standard et exotique et refusent de l'implémenter.

    Et ils ont raison, c'est du RSS non standard, puisque ça ne fait pas partie de la spécification RSS. J'imagine que si vos lecteurs RSS/Atom préféré ont un système de plugins, c'est l'endroit parfait pour y inclure ce genre de chose.

    La connaissance libre : https://zestedesavoir.com

    • [^] # Re: C'est bien du RSS non standard

      Posté par (page perso) . Évalué à 4 (+4/-1). Dernière modification le 20/11/19 à 15:40.

      Et ils ont raison.

      Ça, je laisse chacun juger.

      Stricto-sensu, c'est effectivement hors de la spécification RSS. Cependant c'est une extension éditée par le RSS Advisory Board, qui est aussi l'auteur de la spécification RSS, donc on n'est pas non plus dans du très exotique.
      Ce groupe semble inactif depuis très longtemps (puisque même RSS n'a pas vécu de nouvelle itération depuis 2009) mais j'imagine que c'est eux qui font autorité pour RSS.

  • # Miniflux

    Posté par . Évalué à 2 (+1/-0).

    Chez moi youtube s'affiche correctement.
    Pour peertube en revanche la vidéo n'est pas affichée.

    • [^] # Pétrolette

      Posté par . Évalué à 2 (+0/-0). Dernière modification le 20/11/19 à 17:22.

      Tout pareil dans Pétrolette. Les chaînes YT sont correctement affichées (elle trouve même toute seule l'URL du flux RSS à partir de celle de la chaîne) et pour Peertube, la miniature est cassée (elle pointe vers un fichier .torrent) bon, mais si tu cliques sur le lien, tu vois la vidéo.

      Le truc, c'est que ce journal n'explique pas ce qui constituerait (au moins dans les deux cas d'usage présentés) un support "OK" de ce bidule. On devrait pouvoir lire la vidéo directement dans le lecteur RSS, ce genre-là ? Spaclair.

      Je veux dire, pour afficher une liste de vidéos avec leurs miniature, titre, optionnelle description, et le lien, ya pas besoin d'autre chose que du RSS/Atom à la papa..?

      • [^] # Re: Pétrolette

        Posté par (page perso) . Évalué à 2 (+1/-0). Dernière modification le 20/11/19 à 17:31.

        Je ne connaissais pas Pétrolette, je vais y jeter un œil.

        Comme je le disais dans le journal, afficher correctement la miniature d'une vidéo et sa description serait déjà un bon point de départ à mon sens. On pourrait espérer ensuite le support des players vidéo directement dans les lecteurs de flux (après tout, c'est standard), mais j'imagine que ça pose de nouveaux problèmes : youtube ne fournit un lien que vers son player Flash, et Peertube utilise webtorrent, qui reste une techno relativement nouvelle.

        • [^] # Re: Pétrolette

          Posté par (page perso) . Évalué à 3 (+1/-0).

          C'est peut-être la la clé du non support de la norme : le sites ne fournissant pas directement une URL vers la vidéo, l'intérêt est bien moindre que pour les Podcast…

          ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

      • [^] # Re: Pétrolette

        Posté par . Évalué à 3 (+1/-0).

        Tiens, vu que tu es là j'en profite : Y a-t-il moyen que Pétrolette affiche le contenu complet des items d'un flux ? Exemple avec https://linuxfr.org/news.atom :
        Que le type soit text ou mixed, je n'ai que le <title> (et éventuellement une image). Ça serait cool si on pouvait avoir un mode affichant aussi le contenu complet de l'article :

        <content type="html">

        (J'ai regardé sur https://framagit.org/yphil/petrolette/issues et n'ai rien vu de ce style. Si besoin, je mets ma demande là-bas, j'ai juste pas encore pris le temps de créer un compte)

        • [^] # Re: Pétrolette

          Posté par . Évalué à 4 (+2/-0).

          Tiens, vu que tu es là j'en profite : Y a-t-il moyen que Pétrolette affiche le contenu complet des items d'un flux ? Exemple avec https://linuxfr.org/news.atom

          Wopopop. Pétrolette, de fait, affiche le contenu complet des items d'un flux c'est le principe. Un "item" typique, c'est un titre et un lien, et optionnellement, un résumé, et une image.

          Certains sites mettent dans leur flux "le contenu complet de l'article" mais d'abord c'est très rare (le seul exemple que je connais - et des flux j'en ai vu - est linuxfr, justement, note que c'est pas le contenu complet, ya pas les commentaires - ou leur nombre, ce qui est dommage - par exemple) et dans ce cas, ledit contenu se retrouve en description, donc dans le tooltip.

          Mais dans tous les autres cas, non, on va pas aller chercher autre chose que ce que l'item contient, et on va pas non plus l'afficher dans la page, car ça casserait tout. La philosophie de RSS est d'afficher des références partielles à des trucs qui sont dispo intégralement ailleurs.

          J’espère avoir répondu à ta question, si j'ai pas compris n'hésite pas à me l'indiquer :)

          • [^] # Re: Pétrolette

            Posté par . Évalué à 3 (+1/-0).

            OK, en fait tu as raison <content type="html"> a l'air de n'exister que sur linuxfr. Ce que je cherchais en fait c'est le tooltip.
            Et ce que je voudrais c'est ce contenu soit affiché dans une itemDiv plutôt qu'en title. Mais je pense pouvoir le faire tout seul sans vous déranger plus avant. Merci bien.

      • [^] # Re: Pétrolette

        Posté par (page perso) . Évalué à 4 (+2/-0).

        Salut yPhil,

        je profite de ton message pour te remercier d'avoir mis en place Pétrolette ! Je l'utilise depuis l'annonce que tu avais faite ici même, et je suis vraiment content de l'outil ! (Ça me fait penser qu'il me faut regarder où j'en suis dans librepay, je crois que tu ne dois plus rien recevoir de ma part depuis un moment)

        Il faut aussi que j'ouvre un ticket sur l'import de configuration qui n'est pas sauvegardé et qui oblige à faire une modification manuelle pour que ça soit pris en compte.

        En tout cas, merci à toi !

        • [^] # Re: Pétrolette

          Posté par . Évalué à 2 (+0/-0).

          je profite de ton message pour te remercier d'avoir mis en place Pétrolette ! Je l'utilise depuis l'annonce que tu avais faite ici même, et je suis vraiment content de l'outil !

          Ça fait (vraiment) plaisir, merci !

          Il faut aussi que j'ouvre un ticket sur l'import de configuration qui n'est pas sauvegardé et qui oblige à faire une modification manuelle pour que ça soit pris en compte.

          Arg, je me souviens de ce bug subtil, que j'ai pas réussi à régler de façon élégante, faut que je vois ça, d’ailleurs il doit déjà y avoir un ticket ; Le truc c'est que la plupart des utilisateurs utilisent la synchro (exporter / importer, c'est galère, à un moment tu vas te marcher dessus et perdre tes flux) qui permet d'éviter ça.

  • # Une autre source

    Posté par . Évalué à 4 (+2/-0).

    Tout d'abord, je trouve que le travail effectué est intéressant. Je suis donc allé voir ce que Wikipedia avait à dire sur le sujet. Si on en croit cette page Wikipedia, Akregator supporterait le protocole MRSS. La notion de "supporter" un format est sans doute très différente. Ce qui semble étrange, c'est que le nombre d’agrégateurs de flux affichés comme supportant le MRSS n'est pas marginal.

    As-tu vérifié les agrégateurs de flux qui prétendent officiellement supporter le MRSS ?

    • [^] # Re: Une autre source

      Posté par (page perso) . Évalué à 3 (+2/-0).

      Je n'avais pas eu l'idée d'aller jeter un œil aux listes wikipedia. Il y a quelques lecteurs à côté desquels j'étais passé.

      Akregator comprend en partie le protocole, mais n'exploite rien d'intéressant. Les vidéos Peertube sont présentées comme des pièces jointes aux articles, les vidéos Youtube sont juste ignorées. Les informations comme la description, la miniature et les autres métadonnées ne sont pas affichées.

      Le développeur d'akregator a visiblement commencé à travailler à un meilleur support de Media-RSS.

  • # Ah si, en fait !

    Posté par . Évalué à 3 (+1/-0). Dernière modification le 24/11/19 à 21:45.

    Ah ça y est, ça me revient. J'ai implémenté ce truc dans Pétrolette il y a un moment déjà, à l'aveugle, juste en épluchant les flux de divers podcasts et autres sites multimedia, et de fait, parfois, on voit passer un tel item, auquel est attaché un fichier (? Quelle idée bizarre, mais passons) et quand c'est le cas, j'affiche un glyphe "video" ou "audio" qui est, de fait, un lien vers le fichier lui-même, lisible directement (et localement) dans le navigateur.

    Il y en avait un l'autre jour (c'est rare) dans un flux mais là il est passé, j'ai la flemme de chercher et faire une capture, mais ça marche, promis :)

    Si je me suis pas souvenu, ça doit être parce que les deux exemples fournis dans ce journal semblent moyennement pertinents : L'implémentation de Peertube est clairement buggée, et celle de YTube est heu, pas implémentée du tout (en fait je suis pas sur, faut que je regarde, ce dont je suis sur c'est que certains flux fonctionnent, et pas ces deux-là, hum) c'est un feed normal avec un lien vers la video… Hum. Faut que je me tape les specs de ce truc maintenant, groumph.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.