Created
September 21, 2016 06:54
-
-
Save glouvigny/9621a8b1b6b0a8f981b005c77dd9290f to your computer and use it in GitHub Desktop.
Add albums from file system to Deezer, excepts /Root/Artist/Album/files.mp3 storage pattern
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$basedir = '/Volumes/VERBATIM HD/Musique/'; | |
$oauth_token = 'MY_DEEZER_OAUTH_TOKEN'; | |
$artist_iterator = new DirectoryIterator($basedir); | |
function addToAccount($artist, $album) { | |
global $oauth_token; | |
$data = file_get_contents('http://api.deezer.com/search/album?q=' . urlencode($artist . ' ' . $album)); | |
$data = json_decode($data, true); | |
$what = 'Adding album: ' . $album . ', from artist: ' . $artist . PHP_EOL; | |
if (empty($data['data'])) { | |
var_dump($what . 'Not found.'); | |
return false; | |
} | |
$album = reset($data['data']); | |
$result = file_get_contents('https://api.deezer.com/user/me/albums?output=json&request_method=POST&album_id=' . $album['id'] . '&access_token=' . $oauth_token); | |
$result = json_decode($result); | |
if ($result === true) { | |
var_dump($what . 'Added!'); | |
return true; | |
} | |
var_dump($what . 'Not added!' . PHP_EOL . json_encode($result)); | |
return false; | |
} | |
class AdderThread extends Thread { | |
public $artist; | |
public $album; | |
public function __construct($artist, $album){ | |
$this->artist = $artist; | |
$this->album = $album; | |
} | |
public function run() { | |
addToAccount($this->artist, $this->album); | |
} | |
} | |
foreach ($artist_iterator as $artist) { | |
if (!$artist->isDir() || $artist->isDot()) { | |
continue; | |
} | |
$album_iterator = new DirectoryIterator($artist->getPathname()); | |
foreach ($album_iterator as $album) { | |
if (!$album->isDir() || $album->isDot()) { | |
continue; | |
} | |
$track_iterator = new DirectoryIterator($album->getPathname()); | |
foreach ($track_iterator as $track) { | |
if (!$track->isFile() || $track->isDot() || !in_array($track->getExtension(), array('mp3', 'ogg', 'm4a', 'mp4', 'flac', 'wma'))) { | |
continue; | |
} | |
$addThread = new AdderThread($artist->getBasename(), $album->getBasename()); | |
$addThread->run(); | |
$addThread->join(); | |
sleep(1); | |
continue 2; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment