Creare playlist m3u
Creare playlist m3u
Salve a tutti,
stavo cercando di automatizzare un lavoro, in pratica dovrei creare un file-playlist m3u, per ogni cartella o sottocartella contenente un album di mp3, mi dite se questo script in python fa al caso, altrimenti passo... grazie
https://www.hackitu.de/playlist_gen/
stavo cercando di automatizzare un lavoro, in pratica dovrei creare un file-playlist m3u, per ogni cartella o sottocartella contenente un album di mp3, mi dite se questo script in python fa al caso, altrimenti passo... grazie
https://www.hackitu.de/playlist_gen/
Re: Creare playlist m3u
Anche questo ,grazie
Codice: Seleziona tutto
import os
def create_m3u_for_folder(folder_path):
# Get the list of all mp3 files in the folder
mp3_files = [f for f in os.listdir(folder_path) if f.endswith('.mp3')]
if not mp3_files:
return # No mp3 files in this folder, skip creating the m3u file
# Sort the mp3 files to maintain order
mp3_files.sort()
# Create the .m3u file
m3u_file_path = os.path.join(folder_path, 'playlist.m3u')
with open(m3u_file_path, 'w') as m3u_file:
for mp3_file in mp3_files:
m3u_file.write(f"{mp3_file}\n")
print(f"Created playlist: {m3u_file_path}")
def create_m3u_for_all_subfolders(root_folder):
for root, dirs, files in os.walk(root_folder):
create_m3u_for_folder(root)
# Usage
root_folder = 'path/to/your/music/folder'
create_m3u_for_all_subfolders(root_folder)- nuzzopippo
- Entusiasta Emergente

- Messaggi: 1633
- Iscrizione: giovedì 12 ottobre 2006, 11:34
Re: Creare playlist m3u
Il primo non lo ho guardato, ma se a Te interessa crearti in ogni direttrice un file m3u dei soli files mp3 contenuti nella stessa il secondo esempio andrebbe bene, unica accortezza che devi avere è valorizzare con il path assoluto della Tua direttrice che vuoi esaminare ricorsivamente la variabile "root_folder".
Tutte le playlist locali alle singole cartelle saranno denominate "playlist.m3u" e conterranno solo i files *.mp3 contenuti nella cartella stessa.
N.B: essendo che le stringhe python sono codificate in utf-8, non in ascii, forse varrebbe la pena di denominare playlist creata come "playlist.m3u8", la versione m3u prevede l'encoding in ascii.
Tutte le playlist locali alle singole cartelle saranno denominate "playlist.m3u" e conterranno solo i files *.mp3 contenuti nella cartella stessa.
N.B: essendo che le stringhe python sono codificate in utf-8, non in ascii, forse varrebbe la pena di denominare playlist creata come "playlist.m3u8", la versione m3u prevede l'encoding in ascii.
Fatti non foste a viver come bruti ...
-
rai
- Imperturbabile Insigne

- Messaggi: 2872
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: Creare playlist m3u
Il codice python postato mi pare che dovrebbe funzionare (comunque, perché non lo provi in un cartella di test?).
Oltre al fatto della codifica di cui ti ha avvisato @nuzzopippo, tieni conto che quello script opera _solo_ sui file.mp3 di _tutte_ le sottocartelle della cartella root che contiene la tua musica. Questi possono essere dei vantaggi ma anche no: per esempio nel caso che uno abbia file musicali non.mp3 oppure che voglia potere scegliere singolarmente le cartelle su cui agire.
Se usi Gnome potrebbe esserti utile questo Nautilus-script che non uso da diversi anni ma che certamente funzionava quando usavo Gnome. Non ne ho fatto versioni diverse per altri DE.
La playlist creata prende il nome della cartella contenente i file; l'azione non è ricorsiva ma agisce una cartella alla volta; inserisce in playlist tutti i file musicali le cui estensioni sono elencate nell'array AudioVideo
Oltre al fatto della codifica di cui ti ha avvisato @nuzzopippo, tieni conto che quello script opera _solo_ sui file.mp3 di _tutte_ le sottocartelle della cartella root che contiene la tua musica. Questi possono essere dei vantaggi ma anche no: per esempio nel caso che uno abbia file musicali non.mp3 oppure che voglia potere scegliere singolarmente le cartelle su cui agire.
Se usi Gnome potrebbe esserti utile questo Nautilus-script che non uso da diversi anni ma che certamente funzionava quando usavo Gnome. Non ne ho fatto versioni diverse per altri DE.
La playlist creata prende il nome della cartella contenente i file; l'azione non è ricorsiva ma agisce una cartella alla volta; inserisce in playlist tutti i file musicali le cui estensioni sono elencate nell'array AudioVideo
Codice: Seleziona tutto
#!/bin/bash
: <<DOC
questo script deve stare nella cartella ~/.gnome2/nautilus-scripts
Tutti i file eseguibili in questa cartella appariranno nel menù «Script».
Crea una playlist nella cartella corrente o nella cartella selezionata
Nome della playlist: `nomeDellaCartella.m3u'
Contenuto della playlist: (a secondo dalla selezione)
tutti i file selezionati
tutti i file dell'unica cartella selezionata
tutti i file della cartella corrente (no selezione)
DOC
IFS=$'\n' # don't use <space>,<tab> to split words as part of expansion
[ $# -eq 1 ] && [ -f "$1" ] && exit # only one file is selected: nothing is done
AudioVideo=( aac ac3 aiff amr ape bwf cda flac iff mid mka mp1 mp2 mp3 m4a riff pca ra rm oga ogg wav wma xm 3gp animgif asf avi divx flv mkv mov mp4v mpeg ogm svi swf vob wmv )
the_path=$(echo "${PWD}") # the dir where we create the playlist
# in case of no selection: list all files in current dir
[ $# -eq 0 ] && NAUTILUS_SCRIPT_SELECTED_FILE_PATHS=$(ls)
# if only a dir is selected, it's our target: list all its files
[ $# -eq 1 ] && [ -d "$1" ] && NAUTILUS_SCRIPT_SELECTED_FILE_PATHS=$(ls "$1") && the_path=$(echo "${PWD}/$1")
# else list all selected files
for File in ${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS}; do
for ext in ${AudioVideo[@]}; do
FileExt="${File##*.}" # will take file suffix from `File'
if [ ${FileExt,,} == ${ext} ]; then # `,,' change suffix to lowercase
echo $(basename "${File}") >> "${the_path}/$(basename "${the_path}").m3u"
continue 2 # go to next `path' in higher loop, the loop in 2nd level
fi
done
done- nuzzopippo
- Entusiasta Emergente

- Messaggi: 1633
- Iscrizione: giovedì 12 ottobre 2006, 11:34
Re: Creare playlist m3u
Interessante script, anche se per la selezione dei files magari avrei optato per magic, o forse no, essendo la Tua implementazione molto più snella di quella che verrebbe altrimenti.
Fatti non foste a viver come bruti ...
Re: Creare playlist m3u
ringrazio tutti dei vostri sforzi, ma lo script lo ho preso da chat-gpt e mi da problemi su Windows, potreste ricontrollarlo e correggerlo, ovvio che ho estratto il 2% del archivio sulla cartella per testare il tutto, ma sembra non andare quello script... grazie
Re: Creare playlist m3u
Raga!! Ha funzionato, ma ha glissato sugli altri file, possiedo FLAC, m4a, ecc... e fattibile con quelli?
Re: Creare playlist m3u
ho fatto solo le prove con il test, e funziona con tutta la cartella m da questo errore:
Codice: Seleziona tutto
Traceback (most recent call last):
File "C:\Users\User\Desktop\test.py", line 26, in <module>
create_m3u_for_all_subfolders(root_folder)
File "C:\Users\User\Desktop\test.py", line 22, in create_m3u_for_all_subfolders
create_m3u_for_folder(root)
File "C:\Users\User\Desktop\test.py", line 16, in create_m3u_for_folder
m3u_file.write(f"{mp3_file}\n")
File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u0300' in position 18: character maps to <undefined>Re: Creare playlist m3u
Adesso questo funziona lo confermo per tutti gli amici del forum:
Mettete tutto in C:, sapiate che il lavoro lo fa solo sull’estensione mp3, in minuscolo il resto me li ha saltati, adesso chiedo per gli altri file come i FLAC ecc... come faccio?
Codice: Seleziona tutto
import os
def create_m3u_for_folder(folder_path):
# Get the list of all mp3 files in the folder
mp3_files = [f for f in os.listdir(folder_path) if f.endswith('.mp3')]
if not mp3_files:
return # No mp3 files in this folder, skip creating the m3u file
# Sort the mp3 files to maintain order
mp3_files.sort()
# Create the .m3u file
m3u_file_path = os.path.join(folder_path, 'playlist.m3u')
with open(m3u_file_path, 'w', encoding='utf-8') as m3u_file:
for mp3_file in mp3_files:
m3u_file.write("{}\n".format(mp3_file))
print("Created playlist: {}".format(m3u_file_path))
def create_m3u_for_all_subfolders(root_folder):
for root, dirs, files in os.walk(root_folder):
create_m3u_for_folder(root)
# Usage
root_folder = 'C:\Musica'
create_m3u_for_all_subfolders(root_folder)- nuzzopippo
- Entusiasta Emergente

- Messaggi: 1633
- Iscrizione: giovedì 12 ottobre 2006, 11:34
Re: Creare playlist m3u
--- windows + chatGPT, che brutta accoppiata!
Suppongo che parlare di venvs non sia il caso, quindi mi son ricavato da wikipedia alcune estensioni audio ... ho il dubbio che ciò che Ti ho preparato Ti metterà in difficoltà, lo script modificato si aspetta di essere avviato da terminale e di aver passato quale parametro il path assoluto della directory in cui lavorare, il lo ho chiamato "base.py", provalo
Alcune estensioni in circolazione potrebbero mancare ma, penso, il grosso dovrebbe trovarlo
[Edit] Dimenticavo, crea le playlist quali m3u8, che è il formato corretto, tutti i player audio che conosco dovrebbero essere in grado di aprirle, ho, inoltre, integrato una istruzione per la comparazione delle estensioni in caratteri minuscoli che avevo prima dimenticato.
Suppongo che parlare di venvs non sia il caso, quindi mi son ricavato da wikipedia alcune estensioni audio ... ho il dubbio che ciò che Ti ho preparato Ti metterà in difficoltà, lo script modificato si aspetta di essere avviato da terminale e di aver passato quale parametro il path assoluto della directory in cui lavorare, il lo ho chiamato "base.py", provalo
Codice: Seleziona tutto
import os
import sys
# da wikipedia : https://it.wikipedia.org/wiki/Lista_di_formati_di_file#Formati_audio
extensions = ('.m4a .m4b .m4p .m4r .m4v .3gp .mp4 .aac'
' .ac3 .aiff .aif .aifc .ape .amr .wav .bwf'
' .cda .dts .flac .mid .midi .mod .mp3 .opus'
' .ra .ram .ogg .oga .wav .wave .wma')
def create_m3u_for_folder(folder_path):
# Get the list of all mp3 files in the folder
audio_files = [f for f in os.listdir(folder_path) if '.' + f.split('.')[-1].lower() in extensions]
if not audio_files:
return # No mp3 files in this folder, skip creating the m3u file
# Sort the mp3 files to maintain order
audio_files.sort()
# Create the .m3u file
m3u_file_path = os.path.join(folder_path, 'playlist.m3u8')
with open(m3u_file_path, 'w', encoding='utf-8') as m3u_file:
for f in audio_files:
m3u_file.write("{}\n".format(f))
print("Created playlist: {}".format(m3u_file_path))
def create_m3u_for_all_subfolders(root_folder):
for root, dirs, files in os.walk(root_folder):
create_m3u_for_folder(root)
if __name__ == '__main__':
if len(sys.argv) < 2:
print(extensions)
print('Uso : python base.py path_directory')
exit(0)
root_folder = sys.argv[1]
create_m3u_for_all_subfolders(root_folder)[Edit] Dimenticavo, crea le playlist quali m3u8, che è il formato corretto, tutti i player audio che conosco dovrebbero essere in grado di aprirle, ho, inoltre, integrato una istruzione per la comparazione delle estensioni in caratteri minuscoli che avevo prima dimenticato.
Ultima modifica di nuzzopippo il giovedì 27 giugno 2024, 15:58, modificato 1 volta in totale.
Fatti non foste a viver come bruti ...
Re: Creare playlist m3u
fatto tutto, ho chiesto alla chat che non ti aggrada molto, capisco che per chi si e fatto il mazzo una vita a programmare, queste cose non le digerisce heheh...
Metto lo script case-insesitive, con i formati da editare, io ho lasciato cosi perché non ne ho altri, ciao e vi ringrazio a tutti dell'aiuto!
Metto lo script case-insesitive, con i formati da editare, io ho lasciato cosi perché non ne ho altri, ciao e vi ringrazio a tutti dell'aiuto!
Codice: Seleziona tutto
import os
def create_m3u_for_folder(folder_path, audio_extensions):
# Get the list of all audio files in the folder (case insensitive)
audio_files = [f for f in os.listdir(folder_path) if f.lower().endswith(tuple(audio_extensions))]
if not audio_files:
return # No audio files in this folder, skip creating the m3u file
# Sort the audio files to maintain order
audio_files.sort()
# Create the .m3u file
m3u_file_path = os.path.join(folder_path, 'playlist.m3u')
with open(m3u_file_path, 'w', encoding='utf-8') as m3u_file:
for audio_file in audio_files:
m3u_file.write("{}\n".format(audio_file))
print("Created playlist: {}".format(m3u_file_path))
def create_m3u_for_all_subfolders(root_folder, audio_extensions):
for root, dirs, files in os.walk(root_folder):
create_m3u_for_folder(root, audio_extensions)
# Usage
root_folder = r'D:\Musica' # Update this path
audio_extensions = ['.mp3', '.wav', '.flac', '.aac', '.wma'] # Add more extensions if needed
create_m3u_for_all_subfolders(root_folder, audio_extensions)- nuzzopippo
- Entusiasta Emergente

- Messaggi: 1633
- Iscrizione: giovedì 12 ottobre 2006, 11:34
Re: Creare playlist m3u

Oltre a farmi playlist di file audio/video come le voglio per tutti i files sparsi nel sistema, mi permette di vederli in anteprima o fullscreen, copiarli, muoverli, etc.
Comunque, è vero, le IA non le digerisco molto, sono un dinosauro
Fatti non foste a viver come bruti ...
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti
