2

特定のYouTubeチャンネルのチャンネル登録者数を取得しようとしています。Stackoverflowや外部サイトのいくつかのリンクを参照しましたが、このようなリンクに出くわしました。ほとんどすべてのリンクは、youtube gdata apiを使用し、subscriberCountからカウントを取得することを提案しましたが、次のコード

$data   = file_get_contents("http://gdata.youtube.com/feeds/api/users/Tollywood/playlists");
$xml    = simplexml_load_string($data);

print_r($ xml);

そのようなsubscriberCountを返しません。加入者を数える他の方法はありますか、それとも私は何か間違ったことをしていますか?

4

5 に答える 5

12

YouTubeAPIv2.0は非推奨になりました。3.0でそれを行う方法は次のとおりです。OAuthは必要ありません。

1)Googleアカウントにログインし、https://console.developers.google.com/にアクセスします。新しいプロジェクトを開始する必要があるかもしれません。

2)APIs & auth[パブリックAPIアクセス]->[新しいキーの作成]に移動して移動します

3)必要なオプションを選択します(私は「ブラウザアプリケーション」を使用しました)これにより、APIキーが提供されます。

4)YouTubeで自分のチャンネルに移動し、URLを確認します。チャンネルIDはこちら:https ://www.youtube.com/channel/YOUR_CHANNEL_ID

5)APIキーとチャネルIDを使用して、次のクエリで結果を取得します:https ://www.googleapis.com/youtube/v3/channels?part=statistics&id=YOUR_CHANNEL_ID&key=YOUR_API_KEY

大成功!


ドキュメントは実際にはかなり良いですが、たくさんあります。ここにいくつかの重要なリンクがあります:

チャンネル情報のドキュメント:https ://developers.google.com/youtube/v3/sample_requests

「試してみる」ページ:https ://developers.google.com/youtube/v3/docs/subscriptions/list#try-it

于 2015-06-24T22:14:13.810 に答える
8

これを試して ;)

<?php 
$data = file_get_contents('http://gdata.youtube.com/feeds/api/users/Tollywood');

$xml = new SimpleXMLElement($data);
$stats_data = (array)$xml->children('yt', true)->statistics->attributes();
$stats_data = $stats_data['@attributes'];

/********* OR **********/

$data = file_get_contents('http://gdata.youtube.com/feeds/api/users/Tollywood?alt=json');
$data = json_decode($data, true);
$stats_data = $data['entry']['yt$statistics'];

/**********************************************************/

echo 'lastWebAccess = '.$stats_data['lastWebAccess'].'<br />';
echo 'subscriberCount = '.$stats_data['subscriberCount'].'<br />';
echo 'videoWatchCount = '.$stats_data['videoWatchCount'].'<br />';
echo 'viewCount = '.$stats_data['viewCount'].'<br />';
echo 'totalUploadViews = '.$stats_data['totalUploadViews'].'<br />';
?>
于 2012-12-14T03:07:06.977 に答える
6

私は自分のページの正規表現でそれを行うことができましたが、それがあなたのために機能するかどうかはわかりません。次のコードを確認してください。

<?php 
$channel = 'http://youtube.com/user/YOURUSERNAME/';
$t = file_get_contents($channel);
$pattern = '/yt-uix-tooltip" title="(.*)" tabindex/';
preg_match($pattern, $t, $matches, PREG_OFFSET_CAPTURE);
echo $matches[1][0];
于 2015-07-27T13:21:47.743 に答える
3
<?php

//this code was written by Abdu ElRhoul
//If you have any questions please contact me at info@oklahomies.com
//My website is http://Oklahomies.com



set_time_limit(0);

function retrieveContent($url){
$file = fopen($url,"rb");
if (!$file)
    return "";
while (feof ($file)===false) {
    $line = fgets ($file, 1024);
    $salida .= $line;
}
fclose($file);
return $salida;
}

{
$content = retrieveContent("https://www.youtube.com/user/rhoula/about");         //replace rhoula with the channel name
$start = strpos($content,'<span class="about-stat"><b>');
$end = strpos($content,'</b>',$start+1);
$output = substr($content,$start,$end-$start);

echo "Number of Subscribers = $output";
}
?>
于 2015-08-27T03:27:30.737 に答える
1
<?php 
echo get_subscriber("UCOshmVNmGce3iwozz55hpww");

function get_subscriber($channel,$use = "user") {
    (int) $subs = 0;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,            "https://www.youtube.com/".$use."/".$channel."/about?disable_polymer=1");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch, CURLOPT_POST,           0 ); 
    curl_setopt($ch, CURLOPT_REFERER, 'https://www.youtube.com/');
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0');
    $result = curl_exec($ch);
    $R = curl_getinfo($ch);
    if($R["http_code"] == 200) {
        $pattern = '/yt-uix-tooltip" title="(.*)" tabindex/';
        preg_match($pattern, $result, $matches, PREG_OFFSET_CAPTURE);
        $subs = intval(str_replace(',','',$matches[1][0]));
    }
    if($subs == 0 && $use == "user") return get_subscriber($channel,"channel");
    return $subs;
}
于 2018-01-28T04:33:32.253 に答える