import os from datetime import datetime BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) # Input CSV — override via env var per sviluppo locale INPUT_DIR = os.environ.get( 'DATAHUB_INPUT_DIR', r'\\mediaset.it\share\Indirizzo_controllo_risorse\SOFTWARE\SCHEDULATORE\INPUT' ) # Output Parquet OUTPUT_DIR = os.environ.get( 'DATAHUB_OUTPUT_DIR', os.path.join(BASE_DIR, 'parquet') ) LOGS_DIR = os.path.join(BASE_DIR, 'logs') # Se impostato, scrive il log su questo file (path assoluto) invece di LOGS_DIR LOG_FILE = os.environ.get('PIPELINE_LOG_FILE') # Config files RETI_CLUSTER_FILE = os.path.join(BASE_DIR, 'config', 'reti_cluster.csv') FORNITORE_CLUSTER_FILE = os.path.join(BASE_DIR, 'config', 'fornitori_cluster_mapping.csv') # CSV source files CSV_FILES = { 'prodotti': 'estr_prod.csv', 'emesso': 'estr_emesso.csv', 'diritti': 'estr_acq.csv', 'imdb': 'estr_imdb.csv', 'boxoffice': 'estr_box_totali.csv', 'boxoffice_det': 'estr_box_dettaglio.csv', 'cast': 'estr_cast.csv', 'veg': 'estr_veg.csv', 'scelte_rete': 'estr_scelte_rete.csv', 'gemma': 'estr_gemma.csv', 'osservatorio': 'osservatorio.txt', } def csv_path(key): return os.path.join(INPUT_DIR, CSV_FILES[key]) def out_parquet(name): return os.path.join(OUTPUT_DIR, f'{name}.parquet') RETI_GENERALISTE = ['C5', 'I1', 'R4', 'N1', 'N2', 'N3', 'MC'] # Colonne osservatorio.txt (no header nel file) OSSERVATORIO_COLUMNS = [ 'codice', 'imdb', 'titolo', 'paese', 'genere', 'tipologia', 'subgenere', 'anno', 'rete', 'platform', 'stato', 'titolo_int', 'produttore', 'produzione', 'distribuzione', 'regia', 'cast', 'sceneggiatura', 'showrunner', 'episodi', 'durata', 'giorno_ora', 'trama', 'note_programmazione', 'note_sceneggiatura', 'anno_screening' ] def get_log_path(prefix='datahub'): ts = datetime.now().strftime('%Y%m%d_%H%M%S') return os.path.join(LOGS_DIR, f'{prefix}_{ts}.log') def ensure_dirs(): for d in [OUTPUT_DIR, LOGS_DIR]: os.makedirs(d, exist_ok=True)