我想更新icecast服务器元数据信息,如果我手动将它输入浏览器,一切都很有效:
http://IPADDRESS:PORT/admin/metadata?mount=/live&mode=updinfo&song=ARTIST+SONG+NAME
我得到XML响应,元数据已成功更新,如果我检查实时流(即使iTunes弹出歌曲信息)也是如此。
问题是我制作了一个php脚本,应该使用cURL执行相同的URL,但我尝试了numeruos方法和解决方案,而不是它们的工作原理。谁能帮我?如何在php脚本中执行此URL?
谢谢!
这是我的php中的代码,它应该执行URL来更新元数据,但它不起作用:
$url = "http://IPADDRESS:PORT/admin/metadata?mount=/live&mode=updinfo&song=".urlencode($params)."";
file_put_contents($file2, $url);
$agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL,$url);
$result=curl_exec($ch);
var_dump($result);
我甚至创建了帮助,以便将URL保存在.txt文件中并生成OK。如果我复制它并在浏览器中手动输入元数据会被更改,但是自动通过php脚本它不会。我还尝试使用http身份验证进行icecast,但是当我手动输入URL时,我不需要对更改元数据进行身份验证。
我真的不知道还能做什么。
提前感谢您的帮助!
答案 0 :(得分:0)
您的脚本无权更改Icecast Radio的元数据,因为 NOT 有任何用户名和密码。您可以在浏览器中使用URL查询,因为您之前只需提供用户名和密码。您可以使用CURLOPT_USERPWD
curl_setopt($ch, CURLOPT_USERPWD, $username.":".$password);