programing tip

2015 년 4 월 20 일 이후 (v3 API없이) Youtube 채널 RSS 피드를받는 방법은 무엇입니까?

itbloger 2020. 11. 26. 07:57
반응형

2015 년 4 월 20 일 이후 (v3 API없이) Youtube 채널 RSS 피드를받는 방법은 무엇입니까?


이제 API v2가 사라 졌으니 v3 API없이 채널의 간단한 RSS 피드를 얻는 방법은 무엇일까요? 저는 Yahoo Pipes 또는 대상이 피드 리더 인 경우 v3 API 용 응용 프로그램을 만드는 것보다 간단한 해결 방법에 대해 열려 있습니다. RSS 피드 만 필요합니다. 그것은 지금까지 공개적으로 사용 가능했고 지금은 잠시 멈출 수 있습니다 (제 생각에). 이제 더 이상 API 키없이 액세스 할 수 있도록 허용하지 마십시오.


에서 RSS 리더 섹션 https://support.google.com/youtube/answer/6098135?hl=en OPML 파일로 구독을 수출 할 수있는 옵션이 있습니다. 그런 다음 OPML의 내용을 살펴보면 피드를 추출 할 수 있으며 각 피드의 구조는 다음과 같습니다.

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

따라서 채널 ID를 알고 있으면이 구조에서 새 피드를 생성 할 수 있습니다. 이러한 종류의 피드에는 " 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)은 더 이상 지원되지 않습니다.

또한 개발자 콘솔 에서 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 문서의 추가 정보 .


튜브에서 왼쪽 창에서 구독을 클릭하십시오. 그러면 페이지 중앙에 모든 구독이 열립니다. 아래로 스크롤하면 모든 구독의 xml 파일을 생성하는 RSS 리더로 내보내기 버튼이 있습니다. 나는 이것을하고 내가 선호하는 RSS 리더 피드에 추가했습니다.


Youtube 채널 페이지를 검사하면 내부에 <head>다음과 같은 rss 메타 노드가 있습니다.

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

필요한 데이터를 제공해야합니다.


YouTube 채널 페이지의 소스 코드에서 data-channel-external-id 속성을 검색하여 채널 ID를 가져옵니다. (helq에 감사드립니다).

이 코드는 피드에서 모든 비디오 제목과 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);

비디오 링크 용 Youtube URL을 긁어 낸 다음 아톰 피드로 출력하는 작은 PHP 스크립트를 만들었습니다 : https://gist.github.com/Skalman/801436d9693ff03bc4ce

https://www.youtube.com/user/scishow/videos 와 같은 URL이 작동합니다.

주의 사항 :

  • 이 도구는 날짜를 긁지 않습니다.
  • 재생 목록에는 100 개 이상의 동영상이 포함되지 않습니다.
  • 재생 목록에는 "모두 재생"링크가 포함됩니다.
  • 작성자가 채널에 대해서만 올바르게 설정 됨 (예 : 재생 목록이 아님)
  • 너무 많이 사용하면 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

나를 위해 잘 작동합니다.


내 블로그 게시물에서 : http://tcodesblog.blogspot.com/search/label/howtofindyouryoutubechannelfeed


YouTube 채널 피드를 찾는 방법

예전에는 쉬웠지만 (2009 년) 지금은 찾기가 훨씬 더 어려워졌습니다 (2012- 현재). 다음은 YouTube 채널에서 새 피드를 찾는 빠른 방법입니다. 목록을 올바르게 따르십시오!

  1. 먼저 채널 ID를 찾으세요 . 대시 보드에서 YouTube 채널로 이동하면됩니다.

  2. 채널 ID 복사 : 대시 보드 내에서 YouTube 채널을 방문하면 채널 ID 를 찾을 수 있습니다.

  3. 당신의 복사 채널 ID를 : 당신의 복사 채널 ID를 및 교체 channelidgoeshere을 당신과 함께 아래의 채널 ID :https://www.youtube.com/feeds/videos.xml?channel_id=channelidgoeshere

  4. 전체 YouTube 채널 피드를 복사하고 단순화 된 피드를 만듭니다 http://www.feedburner.com/. Google의 일부인 FeedBurner (Google 계정이 필요합니다. 무료입니다.)에 더 짧은 피드 링크를 만들면 됩니다. 새 피드를 생성합니다 ( 동영상이 피드에 나타나는 것을 확인하고 피드가 Digg Reader, Apple iPhone Apple News App, Apple iPhone Podcasts App, Feedly 등과 같은 다른 피드 리더와 호환되도록 하려면 I 'm A Podcaster! 를 선택하십시오. .) - 또는 - 편집 전체 YouTube 채널 피드를 복사 한 다음 확인을 클릭하여 기존의 저장 피드 세부 사항을 정상으로

  5. 이제 YouTube 채널 피드가 작동하고 FeedBurner 피드의 피드 파일에서 직접 동영상을 볼 수 있습니다. Mine은 YouTube https://www.youtube.com/feeds/videos.xml?channel_id=UCvFR6YxwnYfLt_QqRFk_r3g에서 FeedBurner의 피드로http://feeds.feedburner.com/youtube/warrenwoodhouse예를 들어 내 동영상을 표시하려면 내 동영상을 업데이트해야하므로 텍스트 형식으로 만 표시되는 동영상이 있습니다. FeedBurner에서 다른 설정을 변경하고 다른 작업을 수행 할 수 있으므로 무료이며 사용하기 쉽기 때문에 시도해 볼 가치가 있습니다. FeedBurner 또는 다른 피드 생성 서비스를 사용하는 것이 좋습니다. 그러나 FeedBurner는 교차 피드 구독 서비스 메커니즘 (USM-Universal Subscription Mechanism)도 포함하고 있기 때문에 최상의 선택입니다. 컴퓨터, 휴대폰 (올바른 앱이 설치된), 이전 웹 브라우저 (예 : 웹 조각 및 RSS / Atom / XML 피드를 지원하는 Internet Explorer)를 통해

설정을 USM (Universal Subscription Mechanism)으로 올바르게 설정 한 경우 Apple iPhone, Apple iPod Touch 및 Apple iPad의 Apple iPhone Apple News 앱 및 Apple iPhone 팟 캐스트 앱에서도 피드를 열 수 있습니다. 이것이 적용되면 다양한 서비스와 장치를 통해 피드를 볼 수 있습니다.

FeedBurner의 피드를 사용하면 구독자 수, Chiclets 및 기타 멋진 항목과 함께 이메일 구독, 헤드 라인 애니메이터 (최신 게시물에 대한 링크 표시)를 만들 수 있습니다.

이 답변이 도움이 되었기를 바랍니다. 더 멋진 코딩 사례를보고 싶다면 T-Codes 웹 사이트에서 http://warrenwoodhouse.webs.com/codes더 많은 정보 를 확인하십시오 .


여기에 Yahoo Pipes 예제를 만들었습니다.
http://pipes.yahoo.com/pipes/pipe.info?_id=6eeff0110a81f2ab94e8472620770b11

API 키를 채우지 않고 "Run Pipe"를 눌러이 파이프를 실행할 수 있습니다. 그러나 복제 할 때 고유 한 API 키와 채널 ID (채널 API를 통해 얻을 수 있음)를 제공해야합니다. YouTube 사용자 이름으로 channelId 가져 오기를 자동화하고 싶지만 파이프하기가 쉽지 않습니다.


새 구독 동영상의 RSS 피드를 만드는 배치 스크립트를 만들었습니다. API 키가 필요하지 않습니다. 이 스크립트는 YouTube-DL 및 Xidel의 두 가지 외부 도구를 사용합니다.

어쨌든 다음 스레드를 읽고 게시물 98로 이동하여 스크립트를 다운로드하십시오. http://code.google.com/p/gdata-issues/issues/detail?id=3946#c98

누군가 이것을 php, python, javascript, powershell 또는 bash로 코딩하기를 바랍니다.


YouTube 응답에 약간의 변화가 있다고 생각하므로 Curl을 사용하여 RSS 피드에서 채널 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 Feed를 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
 ?>

비디오, 채널 및 탐색 페이지에 RSS 아이콘을 삽입하는 Youtube RSS-ify 라는 Chrome 확장 프로그램을 찾았습니다 . 내가 찾던 바로 그 것이었다.

Youtube RSS-ify extension screenshot

아이콘은 다음과 같습니다.

Youtube RSS-ify RSS icon


훌륭한 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());

채널 ID를 얻는 가장 쉬운 방법 :

구독 관리자 (왼쪽 패널, 구독 아래 아래)를 열고 원하는 사용자를 클릭합니다.

URL은 다음과 같은 형식입니다. https://www.youtube.com/channel/XXXXXXXXXXXXXXXXX

So the feed url should be:

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

Note: Better use channel ids rather than user names because user names may change.

참고URL : https://stackoverflow.com/questions/29752447/how-to-get-a-youtube-channel-rss-feed-after-2015-april-20-without-v3-api

반응형