Avec AntennaPod, lorsque j'essaie d'ajouter un flux Ohdieux, j'obtiens l'erreur suivante:
Item has no title: FeedItem[autoDownload=1,description=<null>,feedId=0,hasChapters=false,imageUrl=<null>,itemIdentifier=https://rcavmedias-static.akamaized.net/hls/0d811476-bdc1-4287-b321-a0acddb5adef/2022-09-05_16_30_00_journeeestencorejeune_0000_master.m3u8,link=<null>,media=de.danoeh.antennapod.model.feed.FeedMedia@f569512,paymentLink=<null>,podcastIndexChapterUrl=<null>,pubDate=Mon Sep 05 16:30:00 EDT 2022,state=0,tags=[],title=<null>,id=0]
File URL:
unknown
J'ai creusé un peu, et j'ai trouvé qu'il échoue à analyser le titre suivant:
<title>
Rattrapage du lundi 5 sept. 2022 : La première émission de <em>La journée</em>, avec Jean-Sébastien Girard et Claire Samson
</title>
À noter: la présence des balises <em>...</em> au milieu de l'élément textuel AntennaPod. Je croyais qu'avoir des éléments enfants mêlés avec des enfants textuels n'était pas valide en XML, mais en fait oui, il s'agit de mixed content. Donc le document est syntaxiquement correct.
Par contre, je crois que la présence de balises HTML dans les descriptions et titres rend le document invalide en sa qualité de flux RSS. D'abord, la réponse suivante:
... if so, the description contains the text (entity-encoded HTML is allowed ...
Donc, les descriptions peuvent contenir du HTML, à condition qu'ils soit encodé de façon appropriée. Comme ce n'est pas précisé pour les titres, j'aurais tendance à croire qu'il n'est pas attendu d'avoir du HTML (entity-encodé ou non) dans la balise title.
En effectuant la modification suivante, j'arrive à m'abonner au flux dans AntennaPod:
diff --git a/ohdieux/resource/rss_resource.py b/ohdieux/resource/rss_resource.py
index fd494864f463..b55f13e1f7f8 100644
--- a/ohdieux/resource/rss_resource.py
+++ b/ohdieux/resource/rss_resource.py
@@ -2,6 +2,7 @@ import logging
import threading
from datetime import datetime
from email.utils import formatdate
+from html import escape
from jivago.inject.annotation import Singleton
from jivago.lang.annotations import Inject
@@ -52,7 +53,7 @@ class RssResource(object):
return RenderedView("manifest.xml",
{"programme": programme.programme,
"episodes": Stream(programme.episodes)
- .map(lambda x: EpisodeDescriptor(x.title, x.description, x.guid,
+ .map(lambda x: EpisodeDescriptor(escape(x.title), escape(x.description), x.guid,
formatdate(float(x.date.strftime("%s"))), x.duration,
MediaDescriptor(x.media.media_url, x.media.media_type,
x.media.length))
Cependant, je crois qu'il serait mieux de retirer les valises HTML du titre pour ne garder que le texte.
Salut, merci pour les détails. Il ne me semble pas trop problématique d'enlever les balises HTML. Les changements sont listés ici (#7) et devraient déjà être déployés.
Avec AntennaPod, lorsque j'essaie d'ajouter un flux Ohdieux, j'obtiens l'erreur suivante:
J'ai creusé un peu, et j'ai trouvé qu'il échoue à analyser le titre suivant:
À noter: la présence des balises
<em>...</em>
au milieu de l'élément textuel AntennaPod. Je croyais qu'avoir des éléments enfants mêlés avec des enfants textuels n'était pas valide en XML, mais en fait oui, il s'agit de mixed content. Donc le document est syntaxiquement correct.Par contre, je crois que la présence de balises HTML dans les descriptions et titres rend le document invalide en sa qualité de flux RSS. D'abord, la réponse suivante:
https://stackoverflow.com/questions/1140307/what-are-the-valid-html-tags-in-rss-feeds
Puis, la spécification RSS 2.0 dit:
Donc, les descriptions peuvent contenir du HTML, à condition qu'ils soit encodé de façon appropriée. Comme ce n'est pas précisé pour les titres, j'aurais tendance à croire qu'il n'est pas attendu d'avoir du HTML (entity-encodé ou non) dans la balise
title
.En effectuant la modification suivante, j'arrive à m'abonner au flux dans AntennaPod:
Cependant, je crois qu'il serait mieux de retirer les valises HTML du titre pour ne garder que le texte.