Skip to content

Instantly share code, notes, and snippets.

@glouvigny
Created September 21, 2016 06:54
Show Gist options
  • Save glouvigny/9621a8b1b6b0a8f981b005c77dd9290f to your computer and use it in GitHub Desktop.
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
<?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