Masiniai darbai su multimedia

Iš Žinynas.
Jump to navigation Jump to search

Kadangi esu žmogus nemėgstantis terliotis, tai aprašau viską automatizuotai bei normaliai, kad nereiktų papildomų veiksmų rankomis. Taip darau ir su multimedia failais, konkrečiai tai čionais kalbama apie muziką. Turiu ir kaupiu didelę muzikos kolekciją todėl, tvarkytis tenka. Masiniai konvertavimai, FLAC splitinimai ir t.t.

Masiniai darbai[keisti]

Screenshot 293.png

Masinis cuesplit visuose pošakiniuose kataloguose. Šis įrankis išsplitina didelius flac, mp3 ir kt. failus (turinčius .cue aprašytus laiko gabalus) į mažesnius, sudėdamas visus reikiamus tagus (autorius, pavadinimas ir t.t).

find . -type d -exec cuesplit "{}" \;

Masinis senų failų (.cue, .flac, .log) ištrynimas, pirmiausia pagal .cue galūnę sužinom .flac pavadinimą ir jį ištrinam, o galiausiai ir kitus failus:

find . -iname "*.cue" -print0 | sed 's/.cue//g' | xargs -0 -I failas rm -v "failas.flac"
find . -iname '*.log' -exec rm -v "{}" \;
find . -iname '*.cue' -exec rm -v "{}" \;

Masinis šiukšlių ir didelių failų pravalymas bei teisių sutvarkymas

chown -R devnull:music .
chmod -R 775 .
find . -iname \*.nfo -exec rm -rv "{}" \;
find . -iname \*.sfv -exec rm -rv "{}" \;
find . -iname desktop.ini -exec rm -rv "{}" \;
find . -type d -iname cover -exec rm -rv "{}" \;
find . -type d -iname covers -exec rm -rv "{}" \;
find . -type d -iname artwork -exec rm -rv "{}" \;
find . -type d -iname artworks -exec rm -rv "{}" \;
find . -type f -size +40M -exec rm -v {} \;

Tuščių katalogų šalinimas

find . -type d -empty -exec rm -rv "{}" \;

Siuntimas[keisti]

Siūsti mp3 masiškai iš nurodyto url[keisti]

wget -r --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" -Amp3 http://url.adresas.com/mp3/

Programinė įranga[keisti]

transcode_mp3[keisti]

Naudojimas! transcode_mp3 folderis/. Šis skriptas rekursiškai pereidamas per visus katalogas perkonvertuoja pagal pasirinktą failo maskę failus į norimo formato failus, pvz perkonvertuoja muzika1_.flac į muzika1_tc.mp3 su 128kbps VBR kokybe (uždėdamas galūnę _tc taip pat pašalina senus failus). Tokiu būdų perkonvertavus media, galima jos pritalpinti visą kolekciją ir tai neužims labai daug vietos, tuo labiau ir kokybė nėra labai prasta.

Pats Bash skriptas:

 #!/bin/bash
 # Script for mass transcoding audio files to the lower quality. It scan process specified location and it's subdirs for audio transcoding
 # USAGE ./transcode_mp3 path/to/directory/
 # Copyright (c) 2014 EofNET LAB07. All Rights Reserved.
 # Licensed under GPLv2
 # Version 0.6 - Transcode process priority customization is impemented to cut down the transcode process time
 # Version 0.5 - Skip transcoding if files that already transcoded, bugfixed file search with spaces
 # Version 0.4 - Log file implementation
 # Version 0.3 - Automatically detect and delete not transcoded zero size files
 # Version 0.1 - Initial Release
 # Some tips
 # To delete all transcoded files: find . -type f -name \*_tc\* -exec rm {} \;
 # to split cue files and add tags use "cuesplit" in current directory
 ########### CONFIGURATION ###################################################
 SOURCE="mp3"                                 # INPUT AUDIO FILE EXTENSION   #
 EXT="mp3"                                    # OUTPUT AUDIO FILE EXTENSION  #
 CODEC="libmp3lame"                           # CODEC FOR TRANSCODE          #
 STRING="_tc"                                 # PREFIX OF TRANSCODED FILE    #
 BIT=128k                                     # BITRATE OF TRANSCODED FILE   #
 FFMPEG=/home/cloud/madsonic/transcode/ffmpeg # PATH TO FFMPEG               #
 VERBOSE=0                                    # VERBOSE LEVEL OF FFMPEG      #
 DEL="YES"                                    # DELETE ORIGINAL FILES ?      #
 LOGGING="YES"
 LOG_FILE="transcode.log"
 NICE=19 # NICE (PRIORITY LEVEL) OF THE PROCESS
 #############################################################################
 VER=0.6
 do_trans() {
 DIR="$( cd "$( dirname "$1" )" && pwd )"
 FILE=$(basename "$1")
 OUT=`echo "$FILE"|sed 's/.'$SOURCE'//gI'`
 OUT="${OUT}${STRING}.${EXT}"
 echo "TRANSCODING FILE: $FILE ..."
 nice -n ${NICE} $FFMPEG -v error -i "${DIR}/${FILE}" -f ${EXT} -ab "${BIT}" -acodec "${CODEC}" "${DIR}/${OUT}" < /dev/null
 if [[ -s "${DIR}/${CHECK}" ]]; then
 echo "File transcoded successfully!"
 if [[ "$LOGGING" == "YES" ]]; then
 echo "${DIR}/${FILE} Transcoded!" >> ${LOG_FILE}
 fi
 if [[ "$DEL" == "YES" ]]; then
 echo "Deleting original file, as requested!"
 rm "${DIR}/${FILE}" > /dev/null 2>&1
 fi
 else
 echo "Not possible to transcode, removing zero sized file"
 rm "${DIR}/${OUT}" > /dev/null 2>&1
 fi
 }  
 echo "Welcome to mass audio transcoder script version $VER"
 echo "Copyright (c) 2014 EofNET LAB07. All Rights Reserved."
 if [[ "$1" != "" ]] && [[ -d "$1" ]]; then
 echo "Scanning directory..."
 # dirty implementation
 echo "Removing old transcoded files..."
 #find "$1" -type f -name \*_tc\* -exec rm -v {} \;
 if [[ "$LOGGING" == "YES" ]]; then
 echo "------------- Transcoding started at `date` ----------" >> ${LOG_FILE}
 echo "--- Transcoding from directory: $1 ---" >> ${LOG_FILE}
 fi
 echo "Starting search for .${SOURCE} ..."
 find "$1" -type f -iname "*.${SOURCE}" | while read file; do do_trans "$file"; done
 if [[ "$LOGGING" == "YES" ]]; then
 echo "------------- Transcoding ended at `date`! -----------" >> ${LOG_FILE}
 fi
 else
 echo "No input specified or directory does not exist"
 fi