diff --git a/livesupport/modules/storageAdmin/var/conf.php b/livesupport/modules/storageAdmin/var/conf.php new file mode 100644 index 000000000..515ebd439 --- /dev/null +++ b/livesupport/modules/storageAdmin/var/conf.php @@ -0,0 +1,32 @@ + \ No newline at end of file diff --git a/livesupport/modules/storageAdmin/var/conf.php.template b/livesupport/modules/storageAdmin/var/conf.php.template new file mode 100644 index 000000000..5765d6c5d --- /dev/null +++ b/livesupport/modules/storageAdmin/var/conf.php.template @@ -0,0 +1,32 @@ + diff --git a/livesupport/modules/storageAdmin/var/dumpDbSchema.php b/livesupport/modules/storageAdmin/var/dumpDbSchema.php new file mode 100644 index 000000000..a48d3862c --- /dev/null +++ b/livesupport/modules/storageAdmin/var/dumpDbSchema.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/livesupport/modules/storageAdmin/var/import.php b/livesupport/modules/storageAdmin/var/import.php new file mode 100644 index 000000000..8721d1de3 --- /dev/null +++ b/livesupport/modules/storageAdmin/var/import.php @@ -0,0 +1,162 @@ +\n"); +PEAR::setErrorHandling(PEAR_ERROR_RETURN); +$dbc = DB::connect($config['dsn'], TRUE); +if(PEAR::isError($dbc)){ echo "ERROR: ".$dbc->getMessage()." ".$dbc->getUserInfo()."\n"; exit(1); } +$dbc->setFetchMode(DB_FETCHMODE_ASSOC); +$gb = &new GreenBox($dbc, $config); + +$errors=0; +$filecount=0; +function _err($r, $fn){ + global $errors; + echo "ERROR\n ".$r->getMessage()." ".$r->getUserInfo()."\n"; + $errors++; +} + +$flds = array( +// 'fileformat' => NULL, + 'mime_type' => 'dc:format', + 'bitrate' => 'ls:bitrate', + 'playtime_seconds' => 'dcterms:extent', + 'tags' => array( + 'TT2' => 'dc:title', + 'TIT2' => 'dc:title', + 'TP1' => 'dc:creator', + 'TPE1' => 'dc:creator', + 'TAL' => 'dc:source', + 'TALB' => 'dc:source', +// 'TCO' => NULL, + 'TEN' => 'ls:encoded_by', + 'TENC' => 'ls:encoded_by', + 'TRK' => 'ls:track_num', + 'TRCK' => 'ls:track_num', + ), + 'audio' => array( + 'channels' => 'ls:channels', +// 'bitrate' => 'ls:bitrate', + ), + 'comments' => array( + 'genre' => 'dc:type', +// 'genreid' => 'GENREID', + ), + 'filename' => 'ls:filename', +); + +$r = $gb->getObjId('import', $gb->storId); +if(PEAR::isError($r)){ echo "ERROR: ".$r->getMessage()." ".$r->getUserInfo()."\n"; exit(1); } +if(is_null($r)){ + $r = $gb->bsCreateFolder($gb->storId, 'import'); + if(PEAR::isError($r)){ echo "ERROR: ".$r->getMessage()." ".$r->getUserInfo()."\n"; exit(1); } +} +$parid = $r; + +$stdin = fopen('php://stdin', 'r'); +while($filename = fgets($stdin, 2048)){ + $filename = rtrim($filename); + echo "$filename: "; + set_time_limit(30); + $ia = GetAllFileInfo("$filename", 'mp3'); + if(PEAR::isError($ia)){ _err($ia, $filename); continue; } + if(!$ia['fileformat']){ echo "???\n"; continue; } + + $mdata = array(); + foreach($flds as $k1=>$fn1){ + if(is_null($fn1)) continue; + list($fn, $v) = array($fn1, $ia[$k1]); + if(is_array($fn1)){ + $k0 = $k1; + if($k0=='tags') $k1=$ia['tags'][0]; + list($fn, $v) = array($fn1, $ia[$k1]); + foreach($fn1 as $k2=>$fn2){ + if(is_null($fn2)) continue; + if(!isset($ia[$k1][$k2])) continue; + switch($k0){ + case"tags": + list($fn, $v) = array($fn2, $ia[$k1][$k2]['data']); + $enc = $ia[$k1][$k2]['encoding']; + if($enc != 'UTF-8' && $enc != 'ISO-8859-1'){ + echo " Warning: wrong encoding '$enc' in $fn2.\n"; + } + break; + case"comments": + list($fn, $v) = array($fn2, $ia[$k1][$k2][0]); + break; + default; + list($fn, $v) = array($fn2, $ia[$k1][$k2]); + } +# if(is_array($fn)) var_dump($fn); + if(!is_null($v)) $mdata[$fn] = addslashes($v); + } + }else{ + switch($fn){ + case"dcterms:extent": + list($fn, $v) = array($fn1, round($ia[$k1], 6)); + break; + default: + list($fn, $v) = array($fn1, $ia[$k1]); + } + if(!is_null($v)) $mdata[$fn] = addslashes($v); + } + } + + $r = $gb->bsPutFile($parid, $mdata['ls:filename'], "$filename", "$storageServerPath/var/emptyMdata.xml", NULL, 'audioclip'); + if(PEAR::isError($r)){ _err($r, $filename); echo var_export($mdata)."\n"; continue; } + $id = $r; + + $r = $gb->bsSetMetadataBatch($id, $mdata); + if(PEAR::isError($r)){ _err($r, $filename); echo var_export($mdata)."\n"; continue; } + +# $r = $gb->bsGetMetadata($id); +# if(PEAR::isError($r)){ _err($r, $filename); continue; } +# echo "$r\n"; + echo "OK\n"; + $filecount++; +} + +fclose($stdin); +$end = intval(date('U')); +//echo date('H:i:s')."\n"; +$time = $end-$start; +if($time>0) $speed = round(($filecount+$errors)/$time, 1); +else $speed = "N/A"; +echo " File imported: $filecount, in $time s, $speed files/s, errors: $errors\n"; +?> \ No newline at end of file