Моя цель : Показать на веб-странице все гифки / видео в моем любимом твите
Для этого я использую API REST для Twitter а также этот класс php (TwitterAPIExchange.php)
Код для получения моего любимого твита, распечатывает текст каждого из моих любимых твитов
require_once('TwitterAPIExchange.php');$settings = array(
'oauth_access_token' => "XXXXXXX",
'oauth_access_token_secret' => "XXXXXXX",
'consumer_key' => "XXXXXXX",
'consumer_secret' => "XXXXXXX");
$url = 'https://api.twitter.com/1.1/favorites/list.json';
$getfield = '?count=200&screen_name=XXXXX&include_entities=false';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$result = $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
$result_array = json_decode($result , true);
for($i = 0 ; $i < count($result_array) ; $i++){
echo $result_array[$i]["text"]."<br><br>";
}
Теперь я должен экстраполировать http-адрес каждого GIF-файла / видео (и для этого у меня нет проблем) и просматривать его, проблема в том, что адрес GIF-видео / видео не указывает непосредственно на GIF / видео
Теперь я попробовал это:
$url = 'https://api.twitter.com/1.1/favorites/list.json';
$getfield = '?count=200&screen_name=XXXXX&include_entities=true';
.....
.....
$app_video = array();
for($i = 0 ; $i < count($result_array) ; $i++){
array_push($app_video, $result_array[$i]["entities"]["urls"][0]["expanded_url"]);
}
получить массив со ссылками на все видео
Теперь после экстраполированной ссылки на все видео (обновление 1), с file_get_contents и используя DomDocument , я экстраполировал
<video> <source ...> </ video>
со страницы.
Это мое окончательное решение
require_once('TwitterAPIExchange.php');$settings = array(
'oauth_access_token' => "XXXXXX",
'oauth_access_token_secret' => "XXXXXX",
'consumer_key' => "XXXXXX",
'consumer_secret' => "XXXXXX");
$url = 'https://api.twitter.com/1.1/favorites/list.json';
$getfield = '?count=200&screen_name=XXXXX&include_entities=true';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$result = $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
$result_array = json_decode($result , true);for($i = 0 ; $i < count($result_array) ; $i++){
$link = $result_array[$i]["entities"]["urls"][0]["expanded_url"];
if(strpos($link,"twitter.com") !== false){
$pageContent = file_get_contents($link , true);
@$dom = new DOMDocument;
@$dom->loadHTML($pageContent);
$p = $dom->getElementsByTagName('video')->item(0);
$source = $p->getElementsByTagName('source');
$src = $source->item(0)->getAttribute("video-src");echo '<video name="media" loop="true" autoplay="true" src="'.$src.'">';
echo '<source video-src="'.$src.'" type="video/mp4" class="source-mp4" src="'.$src.'">';
echo '</video>';
}
}function get_inner_html( $node ) {
$innerHTML= '';
$children = $node->childNodes;
foreach ($children as $child) {
$innerHTML .= $child->ownerDocument->saveXML( $child );
}
return $innerHTML;
}
Вы когда-нибудь слышали о трубах Yahoo? Это довольно крутой, быстрый и простой способ получить информацию о сайте. После того, как вы настроили свои каналы, вы можете просто прочитать rss / json, который Yahoo дает вам. Я знаю, что это не реальный ответ, потому что вы просто передаете сборщик информации, но в конце ваш код будет намного быстрее и проще. Я бы написал это как комментарий, но, к сожалению, stackoverflow не позволяет оставлять комментарии ниже 50 репутации.
Я бы предложил не использовать API, а вместо этого использовать CURL, чтобы сделать запрос на ваш список избранного в твиттере. Я думаю, что если вы можете выполнить запрос curl и получить html страницы, вы можете отфильтровать его до исходного кода и воссоздать на новой странице.
информация о php и cURL: http://php.net/manual/en/book.curl.php
страницу, чтобы очистить cUrl: https://twitter.com/favorites