Mala CLI skripta koja pročita M3U/M3U8 ili PLS playlistu, pronađe pesme i kopira ih u zadati folder. Putanje u playlisti mogu biti relativne (računaju se od lokacije playliste) ili apsolutne.
python3 -m venv venv
source venv/bin/activateNema eksternih zavisnosti (koristi standardnu biblioteku).
# M3U primer
./venv/bin/python playlist_copy.py /put/do/playlist.m3u /put/do/izlaznog/foldera
# PLS primer
./venv/bin/python playlist_copy.py /put/do/playlist.pls /put/do/izlaznog/folderaOpcije:
--dry-runsamo prikaže šta bi se kopiralo, bez pisanja fajlova.--normalize-lufs <broj>normalizuje glasnoću na zadati LUFS (npr.--normalize-lufs -14, zahteva sistemskiffmpeg).--codec-preset <preset>bira codec/bitrate pri normalizaciji:auto,mp3-192,mp3-256,aac-192,aac-256,flac,wav(defaultauto= prema ekstenziji fajla).
Ako fajl već postoji u odredištu, skripta dodaje sufiks _1, _2, itd. kako bi sačuvala sve kopije.
./venv/bin/python gui.pyGUI dozvoljava:
- izbor M3U/PLS fajla i odredišnog foldera preko dijaloga,
- checkbox za
Dry run, - opciono normalizovanje glasnoće (LUFS) i izbor codec/bitrate preseta (zahteva
ffmpeg), - progress bar i dugme „Otkaži“ za duže operacije,
- log prozor sa statusom i upozorenjima (npr. ako nedostaju fajlovi).
Primera radi, ovako izgleda GUI u radu:
- Ekstenzija playliste određuje parser (
.m3u/.m3u8ili.pls). - Za svaku numerisanu ili listanu putanju pravi apsolutnu putanju (ako je relativna, računa se prema folderu u kom je sama lista).
- Kopira fajlove u odredišni folder čuvajući originalne datoteke (koristi
copy2da zadrži metapodatke).
source venv/bin/activate
pip install pyinstaller
pyinstaller --onefile --name playlist-copier gui.pyIzvršni fajl će biti u dist/playlist-copier. Možeš ga pokrenuti direktno (tkinter biblioteka mora biti prisutna u sistemu, npr. python3-tk paket na Debian/Ubuntu).
py -m venv venv
venv\Scripts\activate
pip install pyinstaller
pyinstaller --onefile --name playlist-copier gui.pyRezultat je dist\playlist-copier.exe. Ako koristiš normalizaciju, instaliraj ffmpeg i dodaj ga u PATH ili stavi ffmpeg.exe pored izvršnog fajla.***
mkdir -p demo/tracks demo/output
printf '/absolute/path/do/pesme1.mp3\ndemo/tracks/pesma2.flac\n' > demo/test.m3u
touch /absolute/path/do/pesme1.mp3 demo/tracks/pesma2.flac
./venv/bin/python playlist_copy.py demo/test.m3u demo/output --dry-runPrva linija pokazuje kako izgledaju apsolutne putanje, a druga relativne. U realnom slučaju zamenite ih stvarnim audio fajlovima.
