#!/usr/bin/awk -f BEGIN { AUTORE = "Alessandro Selli" LICENZA = "GPL versione 3 o successiva" VERSIONE = "2" # Nella versione 2 è stato introdotto il controllo per la disponibilità del comando WGET QUIET = tolower(QUIET) if ( QUIET != "yes" && QUIET != "si") { print "Script di: " AUTORE print "Rilasciato sotto licenza: " LICENZA print "Versione: " VERSIONE } WGET = "wget" CERCA = "which " WGET ERR = (CERCA | getline TROVATO) if ( ERR == 0 ) { print "ERRORE: comando " WGET " non disponibile" > "/dev/stderr" exit 5 } else { if ( QUIET != "yes" && QUIET != "si") { print "Comando " WGET " disponibile in " TROVATO } } WGET = WGET " --continue" } { if ($1 " " $2 == "trackinfo :") { DIR = FILENAME sub(/\/[^/]*$/,"",DIR) A = $3 for ( I = 4; I <= NF; I++) { A = A " " $I } sub(/^\[\{/,"",A) sub(/\}\],$/,"",A) # A={"has_info":true,"alt_link":null,"track_num":1, [...] # ,"has_lyrics":false,"file":"http://popplers5.bandc [...]"," [...] # In generale ho: {"nome variabile con spazi":valore, "nome variabile... # ,"license_type":3},{"has_info": [...] ... } split(A, BRANI, /[{}]/) for (INDICE in BRANI) { BRANO = BRANI[INDICE] sub(/^,/,"",BRANO) sub(/,$/,"",BRANO) if (BRANO !~ "^$") { split(BRANO, ELEMENTI, ",\"") TRACCIA = "" TITOLO = "" URI = "" NOME_FILE = "" for (INDICE in ELEMENTI) { ELEMENTO = ELEMENTI[INDICE] if (ELEMENTO ~ /^track_num\":[0-9]+/) { TRACCIA = ELEMENTO sub(/^track_num\":/,"",TRACCIA) } if (ELEMENTO ~ /^title\":\"/) { TITOLO = ELEMENTO sub(/^title\":\" */,"",TITOLO) sub(/\"$/,"",TITOLO) } if (ELEMENTO ~ /^file\":\"/) { URI = ELEMENTO sub(/^file\":\"/,"",URI) sub(/\"$/,"",URI) } } if (TRACCIA != "") { NOME_FILE = (sprintf("%02d", TRACCIA)) } if (TITOLO != "") { if (NOME_FILE != "") NOME_FILE = NOME_FILE "-" TITOLO} else { NOME_FILE = TITOLO } if (URI != "") { TIPO_FILE = URI sub(/.*?enc=/,"",TIPO_FILE) sub(/-.*$/,"",TIPO_FILE) if (TIPO_FILE != "") { NOME_FILE = NOME_FILE "." TIPO_FILE } NOME_FILE = tolower(NOME_FILE) gsub(/ /,"_",NOME_FILE) gsub(/_-_/,"-",NOME_FILE) gsub(/'/,"-",NOME_FILE) # I caratteri "'" interferiscono con il seguito WGET = WGET " --output-document='" DIR "/" NOME_FILE "' '" URI "' 2>&1" while (WGET | getline WGETOUT == 1) { print WGETOUT } close(WGET) } } } } }