1

Тема: Сепарація музики за плейлистом

Був у мене в ритмбоксі свій лист відтворення, там була тільки українські пісні.
Захтів скопіювати всю українську музику на мобільний, тому довелося зробити невеличкий скрипт, котрий допоміг мені це зробити.

#!/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

Прихований текст

m_mv = music_move

Подякували: ostap34PHP, Monolith, leofun013