84 lines
2.5 KiB
PHP
84 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use GuzzleHttp\Client;
|
|
use Illuminate\Http\Request;
|
|
use MusicBrainz\Filter\PageFilter;
|
|
use MusicBrainz\Filter\Search\ArtistFilter;
|
|
use MusicBrainz\Filter\Search\RecordingFilter;
|
|
use MusicBrainz\Filter\Search\ReleaseFilter;
|
|
use MusicBrainz\HttpAdapter\GuzzleHttpAdapter;
|
|
use MusicBrainz\MusicBrainz;
|
|
use MusicBrainz\Value\Length;
|
|
use MusicBrainz\Value\Name;
|
|
use MusicBrainz\Value\Release;
|
|
|
|
class MusicBrainzController extends Controller
|
|
{
|
|
private $guzzleHttpAdapter;
|
|
private $musicBrainz;
|
|
public function __construct()
|
|
{
|
|
$this->guzzleHttpAdapter = new GuzzleHttpAdapter(new Client);
|
|
$this->musicBrainz = new MusicBrainz($this->guzzleHttpAdapter);
|
|
}
|
|
|
|
public function test()
|
|
{
|
|
$recordingFilter = new RecordingFilter;
|
|
$recordingFilter->addArtistNameWithoutAccents(new Name('Ella Fitzgerald'));
|
|
$recordingFilter->addRecordingNameWithoutAccents(new Name('Summertime'));
|
|
|
|
$pageFilter = new PageFilter(0, 10);
|
|
|
|
$trackList = $this->musicBrainz->api()->search()->recording($recordingFilter, $pageFilter);
|
|
|
|
dd($trackList[0]);
|
|
}
|
|
|
|
public function get_track_metadata(Request $request)
|
|
{
|
|
|
|
$title = $request->title;
|
|
$album = $request->album;
|
|
$artist = $request->artist;
|
|
$length = $request->length;
|
|
|
|
$recordingFilter = new RecordingFilter;
|
|
|
|
if (!empty($title)) {
|
|
$recordingFilter->addRecordingNameWithoutAccents(new Name($title));
|
|
}
|
|
|
|
if (!empty($album)) {
|
|
$recordingFilter->addReleaseName(new Name($album));
|
|
}
|
|
|
|
if (!empty($artist)) {
|
|
$recordingFilter->addArtistNameWithoutAccents(new Name($artist));
|
|
}
|
|
|
|
if (!empty($length)) {
|
|
$recordingFilter->addLength(new Length($length));
|
|
}
|
|
|
|
$pageFilter = new PageFilter(0, 10);
|
|
|
|
$trackList = $this->musicBrainz->api()->search()->recording($recordingFilter, $pageFilter);
|
|
|
|
//return json_encode(serialize($trackList));
|
|
$response = [];
|
|
foreach ($trackList as $key => $track) {
|
|
$recording = $track->getRecording();
|
|
$response[] = [
|
|
'title' => (string) $recording->getTitle(),
|
|
'artist' => (string) $recording->getArtistCredits()[0]->getName(),
|
|
'release' => (string) $recording->getReleases()[0]->getTitle(),
|
|
'length' => (string) $recording->getLength()
|
|
];
|
|
}
|
|
|
|
return response()->json($response);
|
|
}
|
|
}
|