如何获得2015年4月20日之后的YouTube频道RSS提要(不含v3 API)?

现在API v2已经不存在了,没有v3 API的情况下,获得频道的简单RSS提要的方法是什么? 我对雅虎pipe道开放或任何解决方法,比如果目标是一个供稿阅读器创build一个v3 API的应用程序更简单。 我只需要一个RSS提要。 它到目前为止是公开的,现在可以停止任何一分钟(我想)。 所以为什么不让API访问呢?

RSS阅读器部分https://support.google.com/youtube/answer/6098135?hl=zh-CN ,您可以select将您的订阅导出到OPML文件。 然后,查看OPML的内容,可以提取这些提要,并且每个提要的结构是:

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

因此,如果您知道频道ID,则可以从此结构生成新的Feed。 这种Feed没有得到“ https://youtube.com/devicesupport ”错误,所以我希望他们会继续工作。

你可以得到像这样的提要:

 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 

但过去支持的JSON格式(使用附加参数&alt=JSON )不再受支持。

此外,您可以请求API密钥,以便从您的开发者控制台公开访问您的YouTubevideo,并以JSON格式获取YouTubevideo,播放列表,如下所示:

 - 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} 

来自YouTube v3文档的更多信息。

在你pipe中,点击左侧窗格上的订阅。 这将打开页面中间的所有订阅。 向下滚动,你会发现一个导出到RSS阅读器button,它会产生一个所有订阅的XML文件。 我已经完成了这个,并将其添加到我的首选RSS阅读器feedly。

如果你检查任何Youtube频道页面,在<head>里面你会发现一个rss元节点,像这样:

 <link rel="alternate" type="application/rss+xml" title="RSS" href="https://www.youtube.com/feeds/videos.xml?channel_id=UCn8zNIfYAQNdrFRrr8oibKw"> 

这应该为您提供您需要的数据。

通过在YouTube频道页面的源代码中search属性data-channel-external-id获取频道ID。 (感谢helq)。

此代码将抓取来自Feed的所有video标题和ID,并将其转储到数组中:

 $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); 

我已经创build了一个小的PHP脚本,为video链接提供了一个Youtube URL,然后将它们输出为atom feed: https : //gist.github.com/Skalman/801436d9693ff03bc4ce

诸如https://www.youtube.com/user/scishow/videos之类的url可以工作。;

注意事项:

  • 该工具不会刮date
  • 播放列表不会包含超过100个video
  • 播放列表包括“全部播放”链接
  • 作者只能正确设置频道(例如不播放列表)
  • 也许Youtube会阻止你,如果你使用太多(但希望的限制是足够高的)
  • 可能还有几个…

还有RSS-Bridge巫婆可以从Twitter,Google +,Flickr,Youtube,Identi.ca等许多服务中提取RSS提要。

来源: https : //github.com/sebsauvage/rss-bridge

演示服务器: https : //bridge.suumitsu.eu/

请尝试使用以下url: https : //www.youtube.com/feeds/videos.xml?user=USERNAME

为我工作得很好。

来自我的博客post: http://tcodesblog.blogspot.com/search/label/howtofindyouryoutubechannelfeed : http://tcodesblog.blogspot.com/search/label/howtofindyouryoutubechannelfeed


如何find你的YOUTUBE通道饲料

在过去,这很容易(2009年),但现在很难find它(2012年至今)。 以下是从您的YouTube频道中find新的Feed的快速方法。 记得正确地按照列表!

  1. 首先find您的频道ID :您可以通过转到您的YouTube频道在仪表板

  2. 复制频道ID :从Dashboard中访问您的YouTube频道时可以find您的频道ID

  3. 复制您的频道ID :复制您的频道ID ,并将下面的channelidgoesherereplace为您的频道IDhttps://www.youtube.com/feeds/videos.xml?channel_id=channelidgoesherehttps://www.youtube.com/feeds/videos.xml?channel_id=channelidgoeshere channelidgoeshere

  4. 复制您的整个YouTube频道Feed,并创build一个简化的Feed:您可以通过在FeedBurner中创build一个较短的Feed链接http://www.feedburner.com/ (需要一个Google帐户,免费使用)来实现。 Google的一部分。 创build新的Feed(select我是Podcaster!来查看您的video出现在Feed中,并使您的Feed与其他Feed阅读器兼容,例如:Digg Reader,Apple iPhone Apple News App,Apple iPhone Podcasts App,Feedly等。) – 或 – 通过复制整个YouTube频道Feed来编辑现有的频道Feed,然后点击正常保存Feed Details

  5. 您的YouTube频道Feed现在可以正常工作,您的video可以直接在您的FeedBurner Feed中的Feed文件中看到。 我的video在https://www.youtube.com/feeds/videos.xml?channel_id=UCvFR6YxwnYfLt_QqRFk_r3g上,位于YouTube上,位于http://feeds.feedburner.com/youtube/warrenwoodhouse ,我的video只显示作为文本格式,作为一个例子,因为我需要更新我的显示我的video。 您可以在FeedBurner中更改不同的设置并执行其他操作,因此它是免费且易于使用的,因此值得一试。 我强烈build议您使用FeedBurner或其他Feed创build服务,但FeedBurner是您最好的select,因为它还包含交叉订阅服务机制(USM – Universal Subscription Mechanism),这意味着您的Feed可以从任何兼容设备电脑,手机(安装了正确的应用程序),通过一个旧的networking浏览器(如支持Web Slices&RSS / Atom / XML Feeds的Internet Explorer)。

如果您已将设置正确设置为USM(通用订阅机制),则还可以在Apple iPhone,Apple iPod Touch和Apple iPad上的Apple iPhone Apple News App和Apple iPhone Podcasts App中打开您的Feed。 一旦这是有效的,你的饲料可以通过不同的服务和设备来查看。

您在FeedBurner上的Feed允许您创build一个电子邮件订阅,标题animation(显示您如何链接到最新的post)以及多less订户,Chiclets和其他很酷的东西。

我希望这个答案certificate是有用的,如果你想看到我更酷的真棒编码实践,请随时查看我的T代码网站在http://warrenwoodhouse.webs.com/codes更多的东西。

我在这里创build了一个示例Yahoo Pipes。
http://pipes.yahoo.com/pipes/pipe.info?_id=6eeff0110a81f2ab94e8472620770b11

您可以通过按“运行pipe道”而不用填写API Key来运行此pipe道。 但是,您必须在克隆时提供您自己的API密钥和频道ID(可以通过频道API获取)。 希望通过YouTube用户名自动获取channelId,但不容易。

我制作了一个批处理脚本,可以创build新订阅video的RSS订阅源。 您不需要API密钥。 该脚本使用2个外部工具:YouTube-DL和Xidel。

无论如何,阅读下面的线程,并去98后下载脚本: http : //code.google.com/p/gdata-issues/issues/detail?id=3946#c98

我希望有人编码到PHP,Python,JavaScript,PowerShell或bash。

我认为在YouTube的响应有一些变化,所以我做了一些变化,以获得使用curlrss提要通道ID。

 $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); 

我发现了一个名为Youtube RSS的Chrome扩展程序,它在video,频道和导航页面上插入RSS图标。 这正是我正在寻找的。

Youtube RSS-ify扩展截图

图标看起来像这样:

Youtube RSS-ify RSS图标

我会build议使用一个优秀的RSSparsing器。 它们中的很多都可用,但你可以尝试http://simplepie.org/ ,这是我用于个人项目的最好的之一。

它的一些例子很好的logging。

用法示例

注意:使用YouTube频道大学的幽默,你可以从频道页面本身获得

 <?php include_once('../autoloader.php'); // Parse it $feed = new SimplePie(); $feed->set_feed_url('https://www.youtube.com/feeds/videos.xml?channel_id=UCPDXXXJj9nax0fr0Wfc048g'); $feed->enable_cache(false); $feed->init(); $items = $feed->get_items(); foreach ($items as $item) { echo $item->get_title() . "\n"; } var_dump($feed->get_item_quantity()); 

获取频道ID最简单的方法:

打开订阅pipe理器(左侧面板,低于订阅)并点击所需的用户。

该url的格式如下: https://www.youtube.com/channel/XXXXXXXXXXXXXXXXXhttps://www.youtube.com/channel/XXXXXXXXXXXXXXXXX

所以提要的url应该是:

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

注意:更好地使用频道ID而不是用户名,因为用户名可能会改变。