gothi<?php
/**
* $Id: playlist.php 1631 2007-05-12 22:40:28Z matthieu $
*/
if (!defined('__CLASS_PATH__')) {
define('__CLASS_PATH__', realpath(dirname(__FILE__) . '/../'));
}
require_once __CLASS_PATH__ . '/Autoload.php';
/**
* @package playlist
* this script allow browsing hard drive from mp3 and create playlist with
* result
*
* args: path to mp3
* for better results: this script is a test script, just for
* showing how works class_playlist.php
* you need to use this script to have sort your mp3 in the following way:
* path parameters => bandname => albumname
*
* this script will:
* - test paramters
* - delete all playlist in $config['file']['playlistfile'] folders
* - browser path paramters and get list of mp3
* - create playlist for each path
*
* warning : if you have more than 300 subfolders, you can exceed the
* max_execution time parameters
* increase this value if you have a max_execution_time error
*
* for bugs, http://www.phplibrairies.com
*
* this product is under GPL licence, please see copy of this licence for
* furthers details
*
* latest version at http://www.phplibrairies.com
*/
@ set_time_limit(0);
error_reporting(E_ALL);
// config arrays
$debug = Debug_Console :: getInstance();
define('__SYNTAX__', 'playlist.php /path/to/mp3/files /playlist/destination/folder');
define('__CONFIG_PLAYLIST_FILES__', 'pls:m3u:b4s');
define('__CONFIG_AUDIO_FILES__', 'mp3:mpc:wma');
define('__ERR_CODE_BAD_SYNTAX__', 1);
define('__ERR_CODE_BAD_SOURCE_FOLDER__', 3);
define('__ERR_CODE_BAD_DEST_FOLDER__', 4);
$config['file']['playlistfiles'] = explode(';', __CONFIG_PLAYLIST_FILES__);
//------------------
// checks parameters
//------------------
if ($_SERVER['argc'] != 3) {
$debug->showErrorMessage('Expecting at least the mp3 source folder and the destination folder');
$debug->showFatalMessage(__SYNTAX__, __ERR_CODE_BAD_SYNTAX__);
}
define('__PARAM_PLAYLIST_DESTINATION_FOLDER__', $_SERVER['argv'][2]);
define('__PARAM_MP3_ROOT_PATH__', $_SERVER['argv'][1]);
/**
* Check that parameters paths are valid folders
*/
if (!is_dir(__PARAM_PLAYLIST_DESTINATION_FOLDER__)) {
$debug->showErrorMessage('Your playlist destination folder [' . __PARAM_PLAYLIST_DESTINATION_FOLDER__ . '] is not a valid folder');
$debug->showFatalMessage(__SYNTAX__, __ERR_CODE_BAD_DEST_FOLDER__);
}
if (!is_dir(__PARAM_MP3_ROOT_PATH__)) {
$debug->showErrorMessage(__PARAM_MP3_ROOT_PATH__ . 'isn\'t a valid folder');
$debug->showFatalMessage(__SYNTAX__, __ERR_CODE_BAD_SOURCE_FOLDER__);
}
//--------------------------------------
// Delete folders where are the playlist
//--------------------------------------
$dir_playlist = new Files_DirectoryListing(__PARAM_PLAYLIST_DESTINATION_FOLDER__);
$aFile_playlist = $dir_playlist->LIST_files('--e ' . implode(',', explode(':', __CONFIG_PLAYLIST_FILES__)));
foreach ($aFile_playlist as $id => $sPath) {
(!@ unlink($sPath)) ? $debug->showWarningMessage('cannot delete [' . $sPath . ']') : $debug->showMessage("DELETE : clean [$sPath] succefully");
}
//----------------------------------------------
// get the list of folders in the source folders
//----------------------------------------------
$directory = new Files_DirectoryListing(__PARAM_MP3_ROOT_PATH__);
if ($directory->DATA_errors_size()) {
$debug->showErrorMessage('wrong source folder');
}
$aBand = $directory->LIST_directories();
// foreach Band Name
foreach ($aBand as $key => $sFolder) {
// get all the album name
$dir_band = new Files_DirectoryListing($sFolder);
if (!$dir_band->DATA_errors_size()) {
$aAlbums = $dir_band->LIST_directories();
// foreach album name
foreach ($aAlbums as $key_album => $sPath_album) {
$debug->showDebugMessage("processing $sPath_album");
// create playlist for the album name
$aSubdirs = explode('/', $sPath_album);
$aBandname = $aSubdirs[(count($aSubdirs) - 2)];
$aAlbumname = $aSubdirs[(count($aSubdirs) - 1)];
try {
$playlist = new Audio_Playlist($sPath_album, $aBandname, __PARAM_PLAYLIST_DESTINATION_FOLDER__ . '/' . $aBandname . "-" . $aAlbumname . ".m3u", explode(':', __CONFIG_AUDIO_FILES__));
}
catch (Audio_Playlist_Exception $e) {
echo $e;
}
} //foreach
} //else
unset ($dir_band);
} //foreach
?>
|