在我的脚本中,我使用Google YouTube API从YouTube频道接收头像图片。除了“标准”头像外,每个头像都会被收到并保存到我们自己的服务器上。
This is a screen shot of the standard avatar
我正在尝试使用file_get_contents
保存它们,但它给了我一个错误。
代码:
$filename = './img/avatars/'. $ytname .'.jpg';
if (file_exists($filename)) {
print_r("http://youtube-top.eu/img/avatars/".$ytname.".jpg");
} else {
$url = file_get_contents("https://www.googleapis.com/youtube/v3/channels?part=brandingSettings,snippet&forUsername=".$ytname."&key=#KEYISPRIVATE#");
$json = json_decode($url, true);
$str = $json['items'][0]['snippet']['thumbnails']['default']['url'];
$str = str_replace('https://', 'http://', $str );
$content = file_get_contents($str);
?>
/*
<?php
echo $str;
?>
*/
<?php
file_put_contents('./img/avatars/'. $ytname . '.jpg', $content);
print_r("http://youtube-top.eu/img/avatars/".$ytname.".jpg");
}
}
对于带有自定义头像的频道,它会保存到我们的服务器,而不是标准头像。这是错误:
的file_get_contents(http://i.ytimg.com/i/MJJbPVnNlvRAWSgfVuzxJA/1.jpg): 无法打开流:HTTP请求失败!找不到HTTP / 1.0 404
错误中的图像链接确实存在。
有人理解这个吗?
答案 0 :(得分:0)
谷歌有一些阻止自动请求,热链接等的魔力。如果他们的监视程序算法标记了您的IP活动,他们可能会阻止您。
您可以尝试使用cURL函数并将User-Agent字符串设置为适合现代浏览器的内容。否则,我建议您重新考虑应用的逻辑。
来源:个人经历;我无法使用Google自动确定其中一个应用程序的二手办公机器的性质。
答案 1 :(得分:0)
谷歌有一些阻止自动请求的魔力, 如果他们的看门狗算法有标记的活动 从您的IP,他们可能阻止你。
但为什么不禁止我使用自定义头像,只为标准头像?
当我这样做时:
<img src="http://i.ytimg.com/i/MJJbPVnNlvRAWSgfVuzxJA/1.jpg" />
正确显示图像。所以谷歌没有阻止我服务器的IP ..