gpt4 book ai didi

PHP MusicBrainz 获得第一个发布日期

转载 作者:搜寻专家 更新时间:2023-10-31 21:54:04 24 4
gpt4 key购买 nike

我正在尝试使用 Musicbrainz 获取歌曲的首次发行日期。为此,我使用了 mikealmond musicBrainz 库。

我遇到的问题是,当我尝试执行与本示例 (https://github.com/mikealmond/MusicBrainz/blob/master/examples/first-recording-search.php) 完全相同的代码时,我总是遇到身份验证错误。

Client error response [status code] 401 [reason phrase] Unauthorized [url] http://musicbrainz.org/ws/2/artist/0383dadf-2a4e-4d10-a46a-e9e041da8eb3?inc=releases+recordings+release-groups+user-ratings&fmt=json

因此我尝试将我的用户名和密码添加到请求中:

$brainz = new MusicBrainz(new GuzzleHttpAdapter(new Client()),'myusername','mypassword'); 
$brainz->setUserAgent('myapplicationname', '0.2', 'http://localhost:443/');

如果我手动调用错误消息中的 url 并输入我的用户名和密码,我会得到我期望的数组。

我刚刚有一个发现:如果我删除 -"+ user - ratings"- 它不需要身份验证。

因此我在我的项目中用"user - ratings" 注释了行

现在我认为它可以工作,但是查询的性能非常差,而且我经常收到错误 503//The MusicBrainz 网络服务器当前正忙。请稍后再试。// 一首歌只需要几秒钟。有人知道这是正常现象还是我仍然有某种错误?

我的代码....

//Create new MusicBrainz object
$brainz = new MusicBrainz(new GuzzleHttpAdapter(new Client()), 'username', 'password');
$brainz->setUserAgent('applicationname', '0.2', 'http://localhost:443/');

// set defaults
$artistId = null;
$songId = null;
$lastScore = null;
$firstRecording = array(
'releaseDate' => new DateTime()
);
// Set the search arguments to pass into the RecordingFilter
$args = array(
"recording" => 'we will rock you',
"artist" => 'Queen',
);
try {
// Find all the recordings that match the search and loop through them
$recordings = $brainz->search(new RecordingFilter($args));

$recorings 我可以打印,在循环中我可以打印每个 $recording,但是当我提取信息时出现错误


 /** @var $recording \MusicBrainz\Recording */
foreach ($recordings as $recording) {
// if the recording has a lower score than the previous recording, stop the loop.
// This is because scores less than 100 usually don't match the search well
if (null != $lastScore && $recording->getScore() < $lastScore) {
break;
}
$lastScore = $recording->getScore();
$releaseDates = $recording->getReleaseDates();
$oldestReleaseKey = key($releaseDates);
if (strtoupper($recording->getArtist()->getName()) == strtoupper($args['artist'])
&& $releaseDates[$oldestReleaseKey] < $firstRecording['releaseDate']
) {
$firstRecording = array(
'releaseDate' => $recording->releases[$oldestReleaseKey]->getReleaseDate()
);
}
}
pr($firstRecording);
} catch (Exception $e) {
pr($e->getMessage());
}

最佳答案

 $brainz = new MusicBrainz(new GuzzleHttpAdapter(new Client()), 'username', 'password');

您必须设置您的 MusicBrainz 帐户凭据。将“用户名”替换为您的帐户用户名,将“密码”替换为用于登录 MusicBrainz.org 的密码

关于PHP MusicBrainz 获得第一个发布日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35486109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com