Comment trouver le flux RSS d'une chaîne sur YouTube?

13

YouTube prend officiellement en charge les flux RSS des chaînes , mais je rencontre de graves difficultés pour trouver le flux. L'utilisation de l'URL de la chaîne n'est pas possible au moins dans Thunderbird. Firefox semble actuellement incapable de détecter le flux (utilisé pour fonctionner dans le passé, mais quelque peu peu fiable et actualiser la page était parfois nécessaire) et Google Chrome n'a pas de support RSS natif à ma connaissance.

Il existe une méthode pour créer manuellement un flux , mais cela peut ne plus fonctionner (il channel-external-idsemble qu'il n'existe pas dans la source de tous les canaux, il y en a channel_idplutôt):

  1. Afficher le code source de la page
  2. Recherchez le texte suivant: channel-external-id
  3. Obtenez la valeur de cet élément
  4. Remplacez cette valeur dans cette URL:

https://www.youtube.com/feeds/videos.xml?channel_id=UCBcRF18a7Qf58cCRy5xuWwQ

exemple de chaîne: https://www.youtube.com/user/SesameStreet/videos

user598527
la source

Réponses:

10

En fait, ce que vous avez suggéré, c'est exactement l'adresse du flux RSS, bien qu'elle ait été légèrement modifiée par rapport à la procédure décrite dans votre question, la chaîne correcte à rechercher est externalId.

Avec script

Le script suivant va extraire l'URL du flux et l'afficher sur la console:

for (var arrScripts = document.getElementsByTagName('script'), i = 0; i < arrScripts.length; i++) {
    if (arrScripts[i].textContent.indexOf('externalId') != -1) {
        var channelId = arrScripts[i].textContent.match(/\"externalId\"\s*\:\s*\"(.*?)\"/)[1];
        var channelRss = 'https://www.youtube.com/feeds/videos.xml?channel_id=' + channelId;
        var channelTitle = document.title.match(/\(?\d*\)?\s?(.*?)\s\-\sYouTube/)[1];
        console.log('The rss feed of the channel \'' + channelTitle + '\' is:\n' + channelRss);
        break;
    }
}

Résultat:

The rss feed of the channel 'Sesame Street' is:
https://www.youtube.com/feeds/videos.xml?channel_id=UCoookXUzPciGrEZEXmh4Jjg

Où l'enregistrer

  1. Vous pouvez l'utiliser comme script utilisateur (avec Greasemonkey ou Tampermonkey par exemple).
  2. Vous pouvez l'utiliser comme un Bookmarklet .
  3. Copiez le code et collez-le dans la console du développeur.

Remarque: Si vous choisissez des options 1ou 2- il serait plus pratique de remplacer la console.logcommande par alertpour obtenir une fenêtre contextuelle au lieu d'un message à la console.


Manuellement

  1. Ouvrez la page de chaîne YouTube souhaitée.
  2. Ouvrez le view-sourcede cette page (l'un des suivants):
    • Ctrl+ U.
    • Clic droit -> View page source.
    • Ajoutez view-source:au début de l'URL dans la barre d'adresse.
  3. Rechercher le terme externalId
  4. Juste après, il y aura un code aléatoire (l'identifiant du canal) sous la forme de: UCoookXUzPciGrEZEXmh4Jjg
  5. Ajoutez le code que vous avez trouvé comme suffixe https://www.youtube.com/feeds/videos.xml?channel_id=et c'est maintenant votre flux RSS pour cette chaîne.
arieljannai
la source
rssUrln'existe malheureusement pas dans la source de chaque chaîne, par exemple view-source:https://www.youtube.com/channel/UC0YagOInbZxj10gaWwb1Nag/et view-source:https://www.youtube.com/channel/UCEBTfxJ13zkpZVbZTF3aukg.
user598527
1
Je vais vérifier et améliorer ma réponse, merci
arieljannai
J'ai trouvé la chose, je mettrai à jour ma réponse plus tard dans la journée!
arieljannai
@ user598527 Mis à jour :)
arieljannai
Merci d'avoir mis à jour. Je n'ai pas pu installer le bookmarklet en utilisant la méthode standard (en faisant glisser le code vers la barre d'outils des signets). Sur la base de mon expérience, les bookmarklets commencent par javascript:, au moins cela aidera à la procédure d'installation du navigateur.
user598527
1

La méthode que vous mentionnez fonctionne actuellement, mais seulement dans certaines circonstances, le texte exact à rechercher est data-channel-external-id et il fonctionne dans IE11, par exemple. Il est beaucoup plus facile d'obtenir l' <channel-id>URL de la chaîne, composée comme suit

https://www.youtube.com/channel/<channel-id>

Quoi qu'il en soit, il existe un moyen beaucoup plus soutenu de le faire, et cela reflète le fait que YouTube vous aime pour vous abonner aux chaînes que vous souhaitez associer via un flux RSS.

Si vous êtes abonné à la chaîne pour laquelle vous recherchez le flux RSS, vous pouvez le trouver dans votre page Gérer l'abonnement , vous pouvez y faire défiler jusqu'à ce que vous trouviez le bouton "Exporter dans les lecteurs RSS" : cliquer sur ce bouton vous permet de télécharger un fichier XML contenant les noms de chaîne et les flux RSS pour toutes les chaînes auxquelles vous êtes abonné.

Ces flux RSS seront toujours mis à jour si quelque chose change dans la façon dont YouTube les expose.

mrq
la source
1

Ouvrez la console avec F12et exécutez

window["ytInitialData"].metadata.channelMetadataRenderer.rssUrl
goweon
la source
J'obtiens l' TypeError: window.ytInitialData.metadata is undefined erreur lors de l'exécution dans Firefox. Cette commande doit-elle fonctionner sur toutes les pages d'un canal?
user598527
Hmm, il semble que cela ne fonctionne pas sur toutes les pages
goweon