既然API v2已经消失,那么在没有v3 API的情况下,如何获得频道的简单RSS提要?如果目标是提要阅读器,我可以使用Yahoo Pipes或任何比创建v3 API应用程序更简单的解决方法。我只需要一个RSS提要。到目前为止它已公开发布,现在可以停止任何一分钟(我认为)。那么为什么不再使用API密钥就可以访问它。
答案 0 :(得分:97)
在 RSS阅读器部分https://support.google.com/youtube/answer/6098135?hl=en,您可以选择将订阅导出到OPML文件。然后,查看OPML的内容,您可以提取提要,每个提要的结构是:
https://www.youtube.com/feeds/videos.xml?channel_id=XXXX
因此,如果您知道频道ID,则可以从此结构生成新的Feed。这种饲料没有得到" https://youtube.com/devicesupport"错误,所以我希望他们继续工作。
答案 1 :(得分:57)
你可以得到这样的信息:
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
)。
此外,您可以通过developer console申请公开访问YouTube视频的API密钥,并以JSON格式获取YouTube视频,播放列表,如下所示:
- 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 docs的更多信息。
答案 2 :(得分:10)
在你的管中,点击左侧窗格上的订阅。这将打开页面中心的所有订阅。向下滚动,您将找到“导出到RSS阅读器”按钮,该按钮会生成所有订阅的xml文件。我已经完成了这个并将其添加到我喜欢的RSS阅读器中。
答案 3 :(得分:6)
如果你检查任何Youtube频道页面,在<head>
内你会找到一个这样的rss元节点:
<link rel="alternate"
type="application/rss+xml" title="RSS"
href="https://www.youtube.com/feeds/videos.xml?channel_id=UCn8zNIfYAQNdrFRrr8oibKw">
这应该为您提供所需的数据。
答案 4 :(得分:4)
通过在YouTube频道页面的源代码中搜索属性data-channel-external-id来获取频道ID。 (感谢helq)。
此代码将从Feed中获取所有视频标题和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);
答案 5 :(得分:2)
我创建了一个小的PHP脚本,用于抓取视频链接的Youtube网址,然后将其作为原子输出输出:https://gist.github.com/Skalman/801436d9693ff03bc4ce
https://www.youtube.com/user/scishow/videos等网址。
注意事项:
答案 6 :(得分:2)
还存在RSS-Bridge女巫可以从Twitter,Google +,Flickr,Youtube,Identi.ca等许多服务中提取RSS源。
答案 7 :(得分:2)
尝试使用此网址: https://www.youtube.com/feeds/videos.xml?user=USERNAME
对我来说很好。
答案 8 :(得分:2)
来自我的博文:http://tcodesblog.blogspot.com/search/label/howtofindyouryoutubechannelfeed
首先找到频道ID :您可以通过转到信息中心内的YouTube频道来实现此目的
复制频道ID :在信息中心内访问您的YouTube频道时,可以找到频道ID
复制频道ID :复制频道ID 并将频道ID channelidgoeshere >:https://www.youtube.com/feeds/videos.xml?channel_id=channelidgoeshere
复制整个YouTube频道Feed并创建简化Feed:您可以在FeedBurner中http://www.feedburner.com/
创建一个较短的Feed链接(需要Google帐户。免费使用。),这是也是谷歌的一部分。创建一个新的Feed(选择我是一个Podcaster!,以查看您的视频是否显示在Feed中,并使您的Feed与其他Feed阅读器兼容,例如:Digg Reader,Apple iPhone Apple News App ,Apple iPhone Podcasts App,Feedly等) - 或 - 通过复制整个YouTube频道Feed编辑现有的,然后点击保存Feed详细信息正常
您的YouTube频道Feed现已正常运行,您的视频可直接在FeedBurner Feed上的Feed文件中显示。我在https://www.youtube.com/feeds/videos.xml?channel_id=UCvFR6YxwnYfLt_QqRFk_r3g
&amp;在FeedBurner中为http://feeds.feedburner.com/youtube/warrenwoodhouse
,我的视频仅以文字格式显示,例如,因为我需要更新我的视频以显示我的视频。您可以在FeedBurner中更改不同的设置并执行其他操作,因此它值得一试,因为它免费且易于使用。我强烈建议您使用FeedBurner或其他Feed创建服务,但FeedBurner是您最好的选择,因为它还包括交叉订阅服务机制(USM - 通用订阅机制),这意味着您的Feed可以从任何兼容设备上读取,例如计算机,手机(安装了正确的应用程序),通过较旧的Web浏览器(例如支持Web Slices&amp; RSS / Atom / XML Feeds的Internet Explorer)。
您的Feed也可以在Apple iPhone Apple News App&amp;如果您已将设置正确设置为USM(通用订阅机制),Apple iPhone,Apple iPod Touch和Apple iPad上的Apple iPhone Podcast应用程序。一旦生效,您的Feed可以通过不同的服务和设备进行查看。
您在FeedBurner上的Feed可以创建电子邮件订阅,标题动画制作工具(向您展示最新帖子的链接)以及订阅者数量,Chiclets和其他很酷的内容。
我希望这个答案证明是有用的,如果你想看一些更酷的令人敬畏的编码实践,请随时查看我的T-Codes网站http://warrenwoodhouse.webs.com/codes
了解更多内容。
答案 9 :(得分:1)
我在这里创建了一个Yahoo Pipes示例 http://pipes.yahoo.com/pipes/pipe.info?_id=6eeff0110a81f2ab94e8472620770b11
您可以通过按“运行管道”来运行此管道而不填充API密钥。但是,克隆时,您必须提供自己的API密钥和渠道ID(可以通过渠道API获取)。想要通过YouTube用户名自动获取channelId,但不容易管道。
答案 10 :(得分:1)
我制作了一个批处理脚本,用于创建新订阅视频的RSS源。您不需要API密钥。该脚本使用2个外部工具:YouTube-DL和Xidel。
无论如何,请阅读以下主题,并转到98后下载脚本: http://code.google.com/p/gdata-issues/issues/detail?id=3946#c98
我希望有人将其编码为php,python,javascript,powershell或bash。
答案 11 :(得分:1)
我认为youtube响应有一些变化,所以我做了一些更改,以便使用Curl从rss feed获取频道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);
答案 12 :(得分:1)
我使用以下代码将YouTube Feed与wordpress custom field "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
?>
答案 13 :(得分:0)
答案 14 :(得分:-1)
我建议使用优秀的rss解析器。其中许多都可用,但您可以尝试http://simplepie.org/,这是我个人项目中最好的之一。
通过一些例子很好地记录了它。
使用示例
注意:使用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());
答案 15 :(得分:-1)
获取频道ID的最简单方法:
打开订阅管理器(左侧面板,在订阅下方),然后单击所需的用户。
网址将采用以下形式:
https://www.youtube.com/channel/XXXXXXXXXXXXXXXXX
所以Feed网址应为:
https://www.youtube.com/feeds/videos.xml?channel_id=XXXXXXXXXXXXXXXXX
注意:更好地使用频道ID而不是用户名,因为用户名可能会发生变化。