Maintenant que l'API v2 n'est plus disponible, quel serait le moyen d'obtenir un simple flux RSS d'un canal sans API v3? Je suis ouvert à Yahoo Pipes ou à toute solution de contournement plus simple que de créer une application pour v3 API si la cible est un lecteur de flux. Je n'ai besoin que d'un flux RSS. Il était disponible publiquement jusqu'à maintenant et peut cesser d'une minute à l'autre (je pense). Alors, pourquoi ne pas en laisser l’accès sans clé API?.
Dans la section Lecteur RSShttps://support.google.com/youtube/answer/6098135?hl=fr il existe une option pour exporter vos abonnements dans un fichier OPML. Ensuite, en regardant le contenu de l'OPML, vous pouvez extraire les flux. La structure de chaque flux est la suivante:
https://www.youtube.com/feeds/videos.xml?channel_id=XXXX
Vous pouvez donc générer de nouveaux flux à partir de cette structure si vous connaissez l'identifiant du canal. Ce type de flux ne reçoit pas l'erreur " https://youtube.com/devicesupport ", je m'attends donc à ce qu'ils continuent à fonctionner.
Vous pouvez obtenir les flux comme ceci:
https://www.youtube.com/feeds/videos.xml?channel_id=CHANNELID
https://www.youtube.com/feeds/videos.xml?user=USERNAME
https://www.youtube.com/feeds/videos.xml?playlist_id=YOUR_YOUTUBE_PLAYLIST_NUMBER
Mais le format JSON qui était auparavant pris en charge (avec le paramètre supplémentaire &alt=JSON
) n'est plus pris en charge.
De plus, vous pouvez demander une clé API pour un accès public à vos vidéos YouTube à partir de votre console développeur et obtenir des vidéos YouTube, des listes de lecture au format JSON comme ceci:
- Get Channels:
https://www.googleapis.com/youtube/v3/channels?part=snippet%2CcontentDetails&forUsername={YOUR_USER_NAME}&key={YOUR_API_KEY}
- Get Playlists:
https://www.googleapis.com/youtube/v3/playlists?part=snippet%2CcontentDetails&channelId={YOUR_CHANNEL_ID}&key={YOUR_API_KEY}
- Get Playlist Videos:
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails%2Cstatus&playlistId={YOUR_PLAYLIST_ID}&key={YOUR_API_KEY}
Plus d'informations sur YouTube v3 docs .
dans you tube, cliquez sur les abonnements dans le volet de gauche. Cela ouvrira tous vos abonnements au centre de la page. Faites défiler la liste et vous trouverez un bouton Exporter vers un lecteur RSS qui produit un fichier XML de tous vos abonnements. Je l'ai fait et l'a ajouté à mon lecteur RSS préféré feedly.
Si vous inspectez une page de chaîne Youtube, vous trouverez dans le <head>
un nœud méta rss comme celui-ci:
<link rel="alternate"
type="application/rss+xml" title="RSS"
href="https://www.youtube.com/feeds/videos.xml?channel_id=UCn8zNIfYAQNdrFRrr8oibKw">
Cela devrait vous fournir les données dont vous avez besoin.
Obtenez l'identifiant de chaîne en recherchant l'attribut data-channel-external-id dans le code source de la page de chaîne YouTube. (merci à helq).
Ce code va récupérer tous les titres et identifiants vidéo du flux et les transférer dans un tableau:
$channel_id = 'XXX'; // put the channel id here
$youtube = file_get_contents('https://www.youtube.com/feeds/videos.xml?channel_id='.$channel_id);
$xml = simplexml_load_string($youtube, "SimpleXMLElement", LIBXML_NOCDATA);
$json = json_encode($xml);
$youtube = json_decode($json, true);
$yt_vids = array();
$count = 0;
foreach ($youtube['entry'] as $k => $v) {
$yt_vids[$count]['id'] = str_replace('http://www.youtube.com/watch?v=', '', $v['link']['@attributes']['href']);
$yt_vids[$count]['title'] = $v['title'];
$count++;
}
print_r($yt_vids);
De mon message de blog: http://tcodesblog.blogspot.com/search/label/howtofindyouryoutubechannelfeed
Tout d'abord trouver votre identifiant de la chaine: Vous pouvez le faire en accédant à votre chaîne YouTube dans le tableau de bord
Copier le identifiant de la chaine: Votre identifiant de la chaine peut être trouvé lors de la visite de votre chaîne YouTube à partir du tableau de bord
Copiez votre identifiant de la chaine: Copiez votre identifiant de la chaine et remplacer channelidgoeshere ci-dessous avec votre identifiant de la chaine: https://www.youtube.com/feeds/videos.xml?channel_id=channelidgoeshere
Copiez l'intégralité de votre flux de chaîne YouTube et créez un flux simplifié: Vous pouvez le faire en créant un lien de flux plus court dans FeedBurner à l'adresse http://www.feedburner.com/
(nécessite un compte Google. Libre d'utilisation.), Qui fait également partie de Google. Créer un nouveau flux (sélectionnez Je suis un podcasteur! pour que vos vidéos apparaissent dans le flux et pour le rendre compatible avec d'autres lecteurs de flux tels que: Digg Reader, Application Apple iPhone Apple News, Application Podcasts Apple iPhone, Feedly, etc.) -OU- modifier un existant en copiant votre tout le contenu de la chaîne YouTube, puis cliquez sur Enregistrer les détails du flux comme d'habitude
Votre flux de chaîne YouTube fonctionne maintenant et vos vidéos peuvent être visionnées dans un fichier de flux directement sur votre flux FeedBurner. Le mien est sur YouTube sous forme de flux à https://www.youtube.com/feeds/videos.xml?channel_id=UCvFR6YxwnYfLt_QqRFk_r3g
et à FeedBurner sous http://feeds.feedburner.com/youtube/warrenwoodhouse
avec mes vidéos qui apparaissent uniquement au format texte, par exemple, car je dois mettre à jour le mien pour afficher mes vidéos. Vous pouvez modifier différents paramètres dans FeedBurner et faire d'autres opérations, de sorte que cela vaut la peine d'essayer car c'est gratuit et facile à utiliser. Je recommande fortement d'utiliser FeedBurner ou un autre service de création de flux. Toutefois, FeedBurner est votre meilleur choix car il inclut également un mécanisme de service d'abonnement à flux croisés (USM - Universal Subscription Mechanism), ce qui signifie que votre flux peut être lu à partir de tout périphérique compatible, tel qu'un ordinateur, téléphone mobile (avec l’application appropriée installée), via un navigateur Web plus ancien (tel que Internet Explorer, qui prend en charge les tranches Web et les flux RSS/Atom/XML).
Votre flux peut également être ouvert dans l'Apple iPhone App Apple News et l'application Podcasts Apple iPhone sur votre iPhone, Apple iPod Touch et iPad Apple si vous avez correctement défini les paramètres USM (Universal Subscription Mechanism). Une fois que cela est en vigueur, votre flux peut être visualisé via différents services et appareils.
Votre flux sur FeedBurner vous permet de créer un abonnement électronique, Headline Animator (qui montre comment créer un lien vers le dernier message), ainsi que le nombre d’abonnés, de Chiclets et d’autres éléments intéressants.
J'espère que cette réponse sera utile et si vous voulez voir d'autres pratiques de codage géniales et géniales, n'hésitez pas à consulter mon site Web T-Codes à l'adresse http://warrenwoodhouse.webs.com/codes
pour plus d'informations.
Il existe également RSS-Bridge qui peut extraire les flux RSS de nombreux services tels que Twitter, Google+, Flickr, Youtube, Identi.ca, etc.
source: https://github.com/sebsauvage/rss-bridge
serveur de démonstration: https://bridge.suumitsu.eu/
J'ai créé un petit script PHP qui récupère une URL Youtube pour les liens vidéo, puis les affiche sous forme de flux Atom: https://Gist.github.com/Skalman/801436d9693ff03bc4ce
Des URL telles que https://www.youtube.com/user/scishow/videos work.
Mises en garde:
essayez d'utiliser cette URL: https://www.youtube.com/feeds/videos.xml?user=USERNAME
Fonctionne bien pour moi.
J'ai créé un exemple de Yahoo Pipes ici.
http://pipes.yahoo.com/pipes/pipe.info?_id=6eeff0110a81f2ab94e8472620770b11
Vous pouvez exécuter ce tuyau en appuyant sur "Run Pipe" sans clé API remplie. Mais vous devez fournir votre propre clé API et votre identifiant de canal (qui peuvent être obtenus via l'API des canaux) lors du clonage. Voulait automatiser la récupération de channelId par nom d'utilisateur YouTube mais pas facile à canaliser.
J'ai créé un script batch qui crée un flux RSS de vos nouvelles vidéos d'abonnement. Vous n'avez pas besoin d'une clé API. Le script utilise 2 outils externes: YouTube-DL et Xidel.
Quoi qu'il en soit, lisez le fil suivant et accédez à l'article 98 pour télécharger le script: http://code.google.com/p/gdata-issues/issues/detail?id=3946#c98
J'espère que quelqu'un le codera en php, python, javascript, powershell ou bash.
Je pense qu'il y a quelques changements dans la réponse de YouTube, donc je fais quelques changements pour obtenir l'identifiant de la chaîne depuis le flux RSS en utilisant Curl.
$channel_id = 'XXXXXXXX'; // put the channel id here
//using curl
$url = 'https://www.youtube.com/feeds/videos.xml?channel_id='.$channel_id.'&orderby=published';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
//curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($ch);
curl_close($ch);
$response=simplexml_load_string($response);
$json = json_encode($response);
$youtube= json_decode($json, true);
$count = 0;
if(isset($youtube['entry']['0']) && $youtube['entry']['0']!=array())
{
foreach ($youtube['entry'] as $k => $v) {
$yt_vids[$count]['id'] = str_replace('http://www.youtube.com/watch?v=', '', $v['link']['@attributes']['href']);
$yt_vids[$count]['title'] = $v['title'];
$count++;
}
}
else
{
$yt_vids[$count]['id']=str_replace('http://www.youtube.com/watch?v=', '', $youtube['entry']['link']['@attributes']['href']);
$yt_vids[$count]['title']=$youtube['title'];
}
echo "<pre>";
print_r($yt_vids);
J'ai trouvé une extension Chrome nommée Youtube RSS-ify qui injecte une icône RSS dans les pages de vidéos, de chaînes et de navigation. C'était juste ce que je cherchais.
Les icônes ressemblent à ceci:
J'ai utilisé le code ci-dessous pour intégrer Youtube Feed avec le champ personnalisé wordpress "ACF plugin" & FancyBox
<?php
$channel_id = get_field('youtube_chanel_id'); //ACF text field
if ($channel_id){ // if channel_id not empty -- START
$youtube = file_get_contents('https://www.youtube.com/feeds/videos.xml?channel_id='.$channel_id);
$xml = simplexml_load_string($youtube, "SimpleXMLElement", LIBXML_NOCDATA);
$json = json_encode($xml);
$youtube = json_decode($json, true);
echo'<div class="col-md-12 youtube-videos-feed">';
foreach ($youtube['entry'] as $k => $v) {
$id = str_replace(array("yt:video:"), "", $v['id']); // Remove "yt:video:" from ID value
//$date = $v['updated']; // video updated date (disabled for now)
$title = $v['title']; // video title
echo '<a class="with-video" href="https://www.youtube.com/watch?v=',$id,'&autoplay=1&rel=0&controls=0&showinfo=0&modestbranding=0" data-fancybox="videos" data-caption="',$title,'" title="',$title,'" >
<div class="col-md-3 main-image post-image img-fancy">
<img src="https://img.youtube.com/vi/',$id,'/0.jpg" alt="',$title,'" >
</div>
</a>';
}
echo'</div>';
} // if channel_id not empty -- END
?>