Si sono tutti script, ne ho 4 tipologie: generazione/conversione video, play di una partita, archiviazione e preparazione per l'upload e quello di caricamento vero e proprio.
Per ciascuno esiste la controparte di gestione multipla dei file, con scelta (opzionale o automatica) della versione del Mame, dell'autore dell'inp, ecc.
Ad esempio posso giocare ad una partita con Mame 163, poi registrarla, convertirla e caricarla con solo tre comandi:
Codice: Seleziona tutto
mame_record atetris 163
mame_convert_all motoschifo
mame_upload_all
Utilizzo avconv per i tagli e le conversioni (mp3, avi, mp4), mediainfo per avere i metadati (quelli che verranno pubblicati su Youtube, l'utility youtube-uploader scritta in python per il caricamento batch ed ovviamente sfrutto il sito per farmi dare tutte le informazioni accessorie (aspect ratio, titolo, sistema, lista, cover se si tratta di un mp3, ecc).
Gli script sono in bash e sono piuttosto lunghetti, inoltre ci sono eccezioni per un sacco di giochi perchè in tanti casi la risoluzione dell'avi raw è sbagliata (credo un errore o bug Mame).
Saranno 1300 righe circa in tutto, più un altro migliaio lato php. Non è un'esagerazione ma comunque si fa sentire.
La struttura è molto rigida perchè la "catena di montaggio" deve rispettare regole molto precise.
La sequenza è questa: ogni file inp viene controllato e se incompleto scartato o rinominato, per ogni file vengono riconosciuti i parametri essenziali (nome, sistema, gioco, versione mame) e poi spostato nella coda di conversione. Da qui, viene preso da un processo che può lavorare i file in parallelo (mediamente uso dai 3 ai 6 processi insieme, in base al carico della macchina) e poi se ci sono problemi marcato "in errore" altrimenti "in lavorazione". Questo mi permette di sapere come sta procedendo la coda.
Terminato verifico i 3 file per ciascun gioco (aspect ratio, risoluzione, gameplay, ecc) ed aggiorno il documento su Google. Poi sposto il file in una cartella differente, e quei file verranno copiati ed archiviati opportunamente. Ci sono posti differenti in cui finiranno: archivio ufficiale (disco locale), Youtube, ProgettoSnaps, Mega, sito ADB locale e remoto.
Ciascuna di queste destinazioni ha regole particolari per i nomi (es. Mess in alcuni ha la propria cartella, in altri usa il nome "sistema-gioco" ed in altri ancora "softwarelist-gioco").
Tutti i file legati ad un gioco, quindi inp, inp.timecode, avi-raw, avi, mp4, mp3, log/errori, ecc. vengono quindi smistati e finiscono anche in un archivio "storico", da cui potrò in futuro ripescarli per ripetere l'intero processo. Ho rifatto tutti i Mess proprio ieri con questo sistema, circa 900 video per ciascun formato.
Mediamente si producono 100 video all'ora e se sono fortunato anche più di 400 (ma capita raramente...). Infatti la risoluzione può non essere corretta, alcuni giochi hanno i file nvram/cfg particolari, possono avere problemi con i miei Mame, ecc. Se non devo tornarci sopra, il mio intervento è solo quello di aggiornare il documento su Google (ma in futuro, anche questa fase sarà automatica e gestita dal sito).
E' più complicato descriverlo che farlo... diciamo che l'intero processo è sempre in cambiamento perchè aggiungo i pezzi che mi servono, comunque per ora sembra stabile

Avrei voluto farlo con un linguaggio più evoluto ma ormai l'ho fatto in bash e per adesso me lo tengo così.
Per la gui non ne ho bisogno visto che lavoro sempre da riga comando e la cosa mi permette di essere più rapido. Ad ogni modo anche qui il sito mi verrà in aiuto perchè sarà poi lui a lanciare gli script, convertire e spostare i vari file (ovviamente la mia copia in locale, l'unica che ha accesso al disco fisso).