정말 API를 전혀 건드리지 않고 그 일의 빠른 더러운 방법입니다.
나는 그것이 더 좋은 방법이라고 제안하지 않으며 더 똑똑한 방법이 있다고 확신하지만 현재의 Youtube 피드 서비스에서 확실히 작동합니다.
제 솔루션은 Zend Framework의 Zend_Feed_Reader 구성 요소를 사용하는 PHP입니다. 익숙하지 않은 경우 손으로 직접 설정해야합니다.
기본적으로 Zend.com here에서 버전 1.11을 다운로드 한 다음 PHP 포함 경로에서 프레임 워크 파일에 액세스 할 수 있는지 확인하십시오.
이미 MVC 패턴에 젠드 프레임 워크를 사용하는 경우는 선택한 컨트롤러 액션이 작업을 수행 할 수 있습니다
$channel = 'Blanktv'; //change this to your channel name
$url = 'https://gdata.youtube.com/feeds/api/users/'.$channel.'/uploads';
$feed = Zend_Feed_Reader::import($url);
$this->view->feed = $feed;
그런 다음 당신이보기에이 작업을 수행 할 수 있습니다
<h1>Latest Video</h1>
<div>
<?php
$i=0;
foreach ($this->feed as $entry)
{
$urlChop = explode ('http://gdata.youtube.com/feeds/api/videos/',$entry->getId());
$videoId = end($urlChop);
echo '<h3><a href="http://www.youtube.com/watch?v=' . $videoId .'" target="_blank">' . $entry->getTitle() . '</a></h3>';
echo '<p>Uploaded on: '. $entry->getDateCreated() .'</p>';
echo '<a href="http://www.youtube.com/watch?v=' . $videoId .'" target="_blank">
<img src="http://img.youtube.com/vi/' . $videoId .'/hqdefault.jpg">
</a>';
$i++;
if($i==1) break;
}
?>
</div>
그렇지 않으면 당신을 할 수있다 :
<?php
$channel = 'Blanktv'; //change this to your channel
$url = 'https://gdata.youtube.com/feeds/api/users/'.$channel.'/uploads';
$feed = Zend_Feed_Reader::import($url);
?>
<h1>Latest Video</h1>
<div>
<?php
$i=0;
foreach ($feed as $entry)
{
$urlChop = explode ('http://gdata.youtube.com/feeds/api/videos/',$entry->getId());
$videoId = end($urlChop);
echo '<h3><a href="http://www.youtube.com/watch?v=' . $videoId .'" target="_blank">' . $entry->getTitle() . '</a></h3>';
echo '<p>Uploaded on: '. $entry->getDateCreated() .'</p>';
echo '<a href="http://www.youtube.com/watch?v=' . $videoId .'" target="_blank">
<img src="http://img.youtube.com/vi/' . $videoId .'/hqdefault.jpg">
</a>';
$i++;
if($i==1) break;
}
?>
</div>
아마도 후자의 방법을 사용하면 PHP requi Zend_Feed_Reader 파일 등에 대한 re 문 ....
희망이 있으면 도움이 될 것입니다.
모든 최선을,
데이브
UPDATE : 캐싱에 대한 당신의 의견에 응답는
하이 톰, 여기 캐시를 사용 할 수 있지만하지 않는 다른 신속하고 더러운 솔루션입니다 구현이 매우 빠르다.
캐싱 구성 요소를 사용하지 않은 이유는 간단한 db 솔루션으로 상황이 충분하다고 판단했기 때문입니다.나는 또한 새 것이 든 아닌지를 비교하기 위해 사료를 가져와야한다고 생각하여 당신에게 가장 경제적이지는 않을 것입니다.
특정 시간에이 프로세스가 자동으로 실행되도록 자동화 할 수 있지만 프로세스를 자동화하고 링크를 클릭하여 수동으로 비디오를 업데이트 할 필요가없는 경우이 방법으로 트리거 할 수 있습니다.
내 솔루션은 ZF를 기반으로하지만 cakephp와 함께 유용한 정보를 해킹 한 것이므로 여기에서도 동일한 작업을 수행해야합니다.
먼저 새 테이블 (MySQL의 DB를 가정) 설정 :이 템플릿에 사용하기 위해 최신 비디오 정보를 원하시면 그러나 기본값 내가 설정 한을 테이블을 생성합니다
CREATE TABLE `yourdbname`.`latestvid` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier',
`videoId` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'Video id',
`videoTitle` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'Video title',
`uploadDate` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'Video upload date'
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERT INTO `yourdbname`.`latestvid` (`id`, `videoId`, `videoTitle`, `uploadDate`) VALUES (NULL, '--', '--', '--');
것은하지 않을 것이다 명백한 이유로 템플릿을 사용하십시오.
public function updateAction()
{
$this->_helper->viewRenderer->setNoRender(); // disable view
$this->_helper->layout()->disableLayout(); // disable layout
$user = 'Blanktv'; // insert your channel name
$url = 'https://gdata.youtube.com/feeds/api/users/'.$user.'/uploads';
$feed = Zend_Feed_Reader::import($url);
if(!$feed)
{
die("couldn't access the feed"); // Note: the Zend component will display an error if the feed is not available so this wouldn't really be necessary for ZF
}
else
{
$i=0;
foreach ($feed as $entry)
{
$urlChop = explode ('http://gdata.youtube.com/feeds/api/videos/',$entry->getId());
$videoId = end($urlChop);
$videoTitle = $entry->getTitle();
$uploadDate = $entry->getDateCreated();
// use your preferred method to update the db record where the id = 1
$i++;
if($i==1) break;
}
}
}
은 아마 이동이 나를 당신이 얻을 방법을 알려 주시기 :
그런 다음이 비슷한을 할 수 있습니까?
축소판 제외하고 데이터베이스에서 Youtube 대신 변수를 가져 오려면 템플릿을 조정해야합니다.
미리보기 이미지가 여전히 YouTube에서 가져와지고 작업 속도가 느려질 수 있으므로 항상이 방법을 사용하고 이미지를 저장하는 것이 좋습니다.
표준 브랜딩이 필요한 일련의 비디오를 실행하는 경우 축소판을 자신의 서버에 복사하고 db에 경로를 저장하거나 표준 축소판을 사용하는 스크립트를 설정할 수 있습니다.
- D
데이브
안녕 데이브! 정말 좋은 제안, 나를 많이 도와 줬어. 나는 cakephp를 사용하고 있으며, 인터넷 검색을 한 후, 귀하의 접근 방식을 사용하여 제 질문에 대한 수정 된 답을 찾았습니다. 이제 남은 것은 누군가가 웹 사이트의 메인 페이지를 방문 할 때마다 피드를받지 않도록 YouTube에 전화를 캐시하는 것입니다. 어떤 제안? – Tom
안녕하세요 톰, 도움이되어 기쁩니다 .-D, 피드 캐싱에 관해서는 빠른 생각을하고 나중에 오늘 밤에 다시 방문하겠습니다. – dkcwd
지금 업데이트되었습니다. – dkcwd