Тема: Сепарація музики за плейлистом
Був у мене в ритмбоксі свій лист відтворення, там була тільки українські пісні.
Захтів скопіювати всю українську музику на мобільний, тому довелося зробити невеличкий скрипт, котрий допоміг мені це зробити.
#!/usr/bin/php
<?php
const COMMAND_CP = 'cp';
const COMMAND_MV = 'mv';
$music_fav_list = null;
$music_path = null;
$command = COMMAND_MV;
foreach ($argv as $arg) {
if (is_dir($arg)) {
$music_path = $arg;
} elseif (preg_match('/.+\.(m3u)$/', $arg) && is_file($arg)) {
$music_fav_list = $arg;
} elseif ($arg == COMMAND_CP) {
$command = COMMAND_CP;
}
}
if (!$music_fav_list || !$music_path) {
echo "Неодхідно вказати перелік композицій та директорію в котру їх перемістити\n";
echo "Наприклад: ./m_mv /home/music_fav_list.m3u /home/urer/music\n";
return;
}
$music_list = file_get_contents($music_fav_list);
$music_list = explode("\n", $music_list);
foreach ($music_list as $music) {
if (preg_match('/\/.+\.(mp3|aac)$/', $music) && is_file($music)) {
$music = escapeshellarg($music);
exec("{$command} {$music} {$music_path}");
}
}
Команда буде вигляду: ./m_mv Українська\ пісня.m3u /home/nagard/Музика/Українська
Два обов'язкових аргументи: лист відтворення та директорія куди буде переміщено чи скопійовано пісні
Є ще один, не обов'язковий аргумент, котрий визначає команду, відповідно це або cp (копіювання), або mv (переміщення). Без задання стоїть переміщення.
Порядок аргументів не має значення, так теж буде працювати ./m_mv cp /home/nagard/Музика/Українська Українська\ пісня.m3u