Shotgunsoftware

Shotgun non è solo un DAM (Digital Asset Manager), è il sistema per il controllo della produzione di film che va per la maggiore. Viene usato da quasi tutte le principali case di produzione e studi di animazione, serve soprattutto per organizzare la produzione, ma crea anche una pipeline attraverso strumenti che si integrano con i principali programmi di Computer Grafica. Insomma è veramente un software colossale, basta guardare quante persone ne fanno  parte https://www.shotgunsoftware.com/about/.

E’ molto efficiente per quello che riguarda le revisioni, insomma ha un sacco di pregi, ovviamente costa anche parecchio. Nonostante tutti i grandi aiuti che fornisce alla produzione, è odiatissimo dagli artisti, come tutte quello che li costringe ad usare la parte sinistra del cervello. Insomma dopo l’esperienza con il Taskmanager, per me è stato un sollievo sentire che le persone che stavano usando SG (abbreviazione di Shotgun) si lamentavano nello stesso modo, adducendo le stesse motivazioni per non volerlo utilizzare.

I producers (non tutti) lo amano, ma solo se hanno uno sviluppatore che lo adatta alla loro logica, che in genere è quella di avere a che fare sempre e comunque con un foglio Excel. Questa è la mia esperienza, non voglio generalizzare.

Quando mi sono dovuto confrontare con questo sistema, la prima cosa che mi hanno chiesto è stata quella di far diventare uno script una procedura automatizzata.
Lo script sincronizzava il data entry del producer su SG  con il database della pipeline, che non faceva parte di SG. In pratica SG viene usato solo per fare data entry di asset e monitorare i task delle lavorazioni, senza usare gli strumenti di pipeline.

Lo script veniva fatto partire sul computer (windows) dello sviluppatore a chiamata, cioè quando si volevano sincronizzare i dati, un producer avvisava il ragazzo, che lanciava la sincronizzazione dal suo computer, ma questo non sembrava essere molto efficiente.

Alla mia domanda: “Ma non si può far partire con un cron job ogni 5 minuti?”. In realtà si poteva eccome, ma i miei colleghi erano impegnati nel costruire la nuova pipeline e prima qualcuno doveva risolvere un po’ di problemi.

Il primo problema era che il server del database aveva un Python precedente a quello usato della pipeline di Maya. Il secondo che non c’erano i moduli installati di SG e nemmeno quelli di PyMySQL, il terzo era che il server non usciva su Internet.

Il responsabile dell’IT, mi dice che lui non mette le mani sul server della pipeline e anche lui è molto impegnato. Dopo una trattativa laboriosa riesco ad ottenere la possibilità di avere una connessione sul server.

La cosa più impegnativa è stato prendere la responsabilità di passare dalla versione 2.6 alla versione 2.7.9 di Python, dopo un po di ricerche ho trovato questa soluzione.

A questo punto ho installato il modulo di pymysql e di shotgun_api3,  modificando la variabile PYTHONPATH per aggiungere il percorso dove avevo scompattato i files del modulo.

Ho creato un file bash, che chiamava lo script e che reindirizzava l’output su un file di log nel cui nome c’è il minuto della chiamata. In questo modo il cron job che parte ogni 5 minuti sovrascrive il file di log ogni ora.

Successivamente mi hanno assegnato molti task di sincronizzazione dei dati da SG verso il database e dal database verso SG per visualizzare, per esempio, l’ultima versione di un dato asset sulle colonne di SG.

Il lavoro con le api di SG è semplificato dal modello CRUD permettendo azioni quali “Create, Read, Update, Delete” in maniera semplice e intuitiva. Ma prima bisogna capire cos’è l’entità, che è l’elemento principale con cui interagisce il software.
Esempi di entità sono “SHOT”, “SEQUENCE” per la parte delle scene, “ASSET” per quello degli asset, modellazione, rig etc. Naturalmente possono crearsi delle entità personalizzate, da inserire nelle gerarchie preconfigurate.
Così per esempio potrei inserire la categoria “EPISODE” prima di “SEQUENCE” qualora il progetto fosse una serie televisiva.
Ogni richiesta agisce su un solo tipo di entità e in base all’azione specifica, può definire filtri, e far tornare colonne, informazioni ordinate e anche sotto forma di documenti.

Ovviamente le richieste che mi sono arrivati erano per lo più di far diventare SG, excel con interminabili file di colonne raggruppate sotto i tipi di lavorazioni che si usano nello studio in questione. Devo dire che l’interfaccia di SG permette una grande flessibilità si possono creare infinite pagine personalizzate, penso che sia un ottimo strumento per un producer che affronta questo tipo di lavoro.