Решил для своего паблика сделать что-то вроде "радио" на основе трансляции треков в статус. Написал следующий php скрипт который парсил регулярками id треков и сохранял в базу.
<?
$ids = array();
try {
$dbh = new PDO('mysql:host=localhost;dbname=music', 'root', '');
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
$access_token = '';
$id = '';
$tracks = 'https://api.vk.com/method/audio.get?owner_id='.$id.'&need_user=0&offset=0&count=300&access_token='.$access_token;
preg_match_all('/"aid":(.*?)"/si' ,file_get_contents($tracks),$aResult);
array_push($ids, $aResult[1]);
foreach ($ids as $ids_re) {
foreach ($ids_re as $aid) {
$sound_id = explode(",", $aid);
$stmt = $dbh->prepare("INSERT IGNORE INTO `music` (id, hash) VALUES (:id, :hash)");
$stmt->bindParam(':id', $sound_id[0]);
$stmt->bindParam(':hash', md5($sound_id[0]));
$stmt->execute();
$dbh = null;
}
}
?>
Поставил в крон каждые три минуты и столкнулся со следующей проблемой: треки, время воспроизведения которых меньше трех минут просто обрывали трансляцию и приходится ждать пока крон не выполнит свою работу.
Суть вопроса: как распарсить нижеприведенный json и иды всех песен, продолжительность которых больше 180сек, залить в бд.
{
"response":[
620,
{
"aid":643634345,
"owner_id":115226501,
"artist":"Example1",
"title":"blablabla ",
"duration":272,
"url":"https:\/\/cs9-6v4.vk.me\/p16\/4c24ea770894d1.mp3?extra=OEg_VT_MGAyoZL5qaXZ4dXtT9-rq8quieG5pXg0Dbk69H1kHrywXav2QQ33cEuWdhqFjTLQKvzlkOfnnAPF2jDJEHMvO-Nwi0w",
"genre":9
},
{
"aid":1265631316,
"owner_id":115226501,
"artist":"Example2",
"title":"blablabla ",
"duration":272,
"url":"https:\/\/cs9-6v4.vk.me\/p16\/4c24ea770894d1.mp3?extra=OEg_VT_MGAyoZL5qaXZ4dXtT9-rq8quieG5pXg0Dbk69H1kHrywXav2QQ33cEuWdhqFjTLQKvzlkOfnnAPF2jDJEHMvO-Nwi0w",
"genre":9
},
{
"aid":1251265125,
"owner_id":115226501,
"artist":"Example3",
"title":"blablabla ",
"duration":160,
"url":"https:\/\/cs9-6v4.vk.me\/p16\/4c24ea770894d1.mp3?extra=OEg_VT_MGAyoZL5qaXZ4dXtT9-rq8quieG5pXg0Dbk69H1kHrywXav2QQ33cEuWdhqFjTLQKvzlkOfnnAPF2jDJEHMvO-Nwi0w",
"genre":9
}
]
}