"""Config for YouTube Monthly Ingestion Workflow.""" import os environment = os.environ.get('Environment', 'dev') feed_name = 'youtube_monthly' secrets_path = 'youtube_monthly' cucumber_feed_name = 'YouTubeMonthly' s3_bucket = os.environ.get( 'FEED_INGESTION_DATA_BUCKET', 'dev-cucumbers') if environment == 'production': s3_bucket = 'cucumbers' s3_report_archive_path_template = ( 's3://' + s3_bucket + '/YouTubeMonthly/reports/{report_name}/{date:%Y-%m-%d}/') drop_location = 'ftp/youtube/' if environment == 'dev': s3_sftp_drop_path = 's3://dev-feed-drop/{drop_location}' else: s3_sftp_drop_path = 's3://prod-orcd-ftp/{drop_location}' reports = { 'legacy_monthly': { # Legacy 'monthly' report # the data overlapped with 'rawdata_v1_0' report below # YouTube_dmgi_M_20220801_20220831_rawdata_v1-0.csv.zip # YouTube_theorchardmusic_M_20220701_20220731_rawdata_v1-0.csv.gz 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_rawdata_v1-0.csv{compression}', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_v2', 'accounts': { 'dmgi': { 'compression': '.zip' }, 'theorchardmusic': { 'compression': '.gz' }, } }, 'adjustment_red_music_rawdata_video_v1_1': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_adjustment_red_music_rawdata_video_v1-1.csv.gz', # noqa: E501 'staging_raw_table': None, 'subreports': { 'video_claim_raw_report': { 'report_title': 'Video Claim Raw Report', 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_adjustment_red_music_rawdata_video_v1-1__video_claim_raw_report.csv', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_adjustment_red_music_rawdata_video_v1_1__video_claim_raw_report' # noqa: E501 } }, 'accounts': { 'dmgi': {} } }, 'red_rawdata_video_v1_1': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_red_rawdata_video_v1-1.csv.gz', # noqa: E501 'staging_raw_table': None, 'subreports': { 'video_claim_raw_report': { 'report_title': 'Video Claim Raw Report', 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_red_rawdata_video_v1-1__video_claim_raw_report.csv', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_red_rawdata_video_v1_1__video_claim_raw_report' # noqa: E501 } }, 'accounts': { 'dmgi': {}, 'theorchardmusic': {}, } }, 'red_music_rawdata_video_v1_1': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_red_music_rawdata_video_v1-1.csv.gz', # noqa: E501 'staging_raw_table': None, 'subreports': { 'video_claim_raw_report': { 'report_title': 'Video Claim Raw Report', 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_red_music_rawdata_video_v1-1__video_claim_raw_report.csv', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_red_music_rawdata_video_v1_1__video_claim_raw_report' # noqa: E501 } }, 'accounts': { 'dmgi': {} } }, 'red_summary_v1_1': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_red_summary_v1-1.csv.gz', # noqa: E501 'staging_raw_table': None, 'subreports': { 'non_music_summary': { 'report_title': 'Non Music Summary', 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_red_summary_v1-1__non_music_summary.csv', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_red_summary_v1_1__non_music_summary' # noqa: E501 }, 'music_summary': { 'report_title': 'Music Summary', 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_red_summary_v1-1__music_summary.csv', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_red_summary_v1_1__music_summary' # noqa: E501 } }, 'accounts': { 'dmgi': {} } }, 'adjustment_red_rawdata_video_v1_1': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_adjustment_red_rawdata_video_v1-1.csv.gz', # noqa: E501 'staging_raw_table': None, 'subreports': { 'video_claim_raw_report': { 'report_title': 'Video Claim Raw Report', 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_adjustment_red_rawdata_video_v1-1__video_claim_raw_report.csv', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_adjustment_red_rawdata_video_v1_1__video_claim_raw_report' # noqa: E501 } }, 'accounts': { 'theorchardmusic': {} } }, 'videoclaim_rawdata_v1_0': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_videoclaim_rawdata_v1-0.csv{compression}', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_videoclaim_rawdata_v1_0', # noqa: E501 'accounts': { 'theorchardmusic': { 'compression': '.gz' }, } }, 'adj_claim_raw_v1_1': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_ADJ_claim_raw_v1-1.csv.gz', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_adj_claim_raw_v1_1', # noqa: E501 'accounts': { 'theorchardmusic': {} } }, 'adj_claim_raw_v1_1_dmgi': { # separate table for "dmgi" account due to different structure 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_ADJ_claim_raw_v1-1.csv.gz', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_adj_claim_raw_v1_1_dmgi', # noqa: E501 'accounts': { 'dmgi': {} } }, 'adj_claim_summary_v1_1': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_ADJ_claim_summary_v1-1.csv.gz', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_adj_claim_summary_v1_1', # noqa: E501 'staging_raw_table_cols': ['mcn_account,', 'download_date,', 'video_id,', 'channel_id,', 'asset_id,', 'asset_channel_id,', 'custom_id,', 'isrc,', 'upc,', 'grid,', 'content_type,', 'policy,', 'claim_type,', 'claim_origin,', 'multiple_claims_'], # noqa: E501 'accounts': { 'theorchardmusic': {} } }, 'adj_claim_summary_v1_1_dmgi': { # separate table for "dmgi" account due to different structure 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_ADJ_claim_summary_v1-1.csv.gz', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_adj_claim_summary_v1_1_dmgi', # noqa: E501 'accounts': { 'dmgi': {} } }, 'adjustment_red_label_rawdata_video_v1_1': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_adjustment_red_label_rawdata_video_v1-1.csv.gz', # noqa: E501 'staging_raw_table': None, 'subreports': { 'video_claim_raw_report': { 'report_title': 'Video Claim Raw Report', 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_adjustment_red_label_rawdata_video_v1-1__video_claim_raw_report.csv', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_adjustment_red_label_rawdata_video_v1_1__video_claim_raw_report' # noqa: E501 } }, 'accounts': { 'theorchardmusic': {} } }, 'rawdata_v1_0': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_rawdata_v1-0.csv{compression}', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_rawdata_v1_0', 'accounts': { 'theorchardmusic': { 'compression': '.gz' } } }, 'rawdata_v1_0_dmgi': { # separate table for "dmgi" account due to different structure 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_rawdata_v1-0.csv.zip', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_rawdata_v1_0_dmgi', 'accounts': { 'dmgi': {}, } }, 'red_label_rawdata_video_v1_1': { # This a special case. Actually it has a structure of multireport file: # 1: Video Claim Raw Report # 2: Adjustment Type,Country,Day,Video ID,Video Channel ID,... # # but it contains only one subreport and the source file is HUGE. # So for performace sake we just skip first 2 lines from CSV # and process it as a single report file 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_red_label_rawdata_video_v1-1.csv.gz', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_red_label_rawdata_video_v1_1__video_claim_raw_report', # noqa: E501 'csv_header_lines': 2, 'accounts': { 'theorchardmusic': {}, } }, 'red_label_summary_v1_1': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_red_label_summary_v1-1.csv.gz', # noqa: E501 'staging_raw_table': None, 'subreports': { 'subscriber_summary': { 'report_title': 'Subscriber Summary', 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_red_label_summary_v1-1__subscriber_summary.csv', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_red_label_summary_v1_1__subscriber_summary' # noqa: E501 }, 'music_summary': { 'report_title': 'Music Summary', 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_red_label_summary_v1-1__music_summary.csv', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_red_label_summary_v1_1__music_summary' # noqa: E501 }, 'non_music_summary': { 'report_title': 'Non Music Summary', 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_red_label_summary_v1-1__non_music_summary.csv', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_red_label_summary_v1_1__non_music_summary' # noqa: E501 } }, 'accounts': { 'theorchardmusic': {} } }, 'adj_video_raw_v1_1': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_ADJ_video_raw_v1-1.csv.gz', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_adj_video_raw_v1_1', 'accounts': { 'theorchardmusic': {}, 'dmgi': {}, } }, 'claim_raw_v1_1': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_claim_raw_v1-1.csv.gz', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_claim_raw_v1_1', # noqa: E501 'accounts': { 'theorchardmusic': {}, } }, 'report_v1_0': { 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_report_v1-0.csv.gz', # noqa: E501 'staging_raw_table': None, 'subreports': { 'summary': { 'report_title': 'Summary', 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_report_v1-0__summary.csv', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_report_v1_0__summary' # noqa: E501 }, 'summary_by_day': { 'report_title': 'Summary By Day', 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_report_v1-0__summary_by_day.csv', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_report_v1_0__summary_by_day' # noqa: E501 }, 'summary_by_country': { 'report_title': 'Summary By Country', 'file_pattern': 'YouTube_{account}_M_{start_date:%Y%m%d}_{end_date:%Y%m%d}_report_v1-0__summary_by_country.csv', # noqa: E501 'staging_raw_table': 'staging_raw_youtube_monthly_report_v1_0__summary_by_country' # noqa: E501 } }, 'accounts': { 'theorchardmusic': {} } }, # WEEKLY REPORTS 'rawdata_v1_0_altafonte': { 'file_pattern': 'YouTube_{account}_W_{start_date:%Y%m%d}_{end_date:%Y%m%d}_rawdata_v1-0.csv{compression}', # noqa: E501 # noqa: E501 # YouTube_Altafonte_W_20240513_20240519_rawdata_v1-0.csv.zip 'staging_raw_table': 'staging_raw_youtube_weekly_rawdata_v1_0_altafonte', # noqa: E501 'accounts': { 'Altafonte': { 'compression': '.zip' }, }, 'drop_location': 'ftp/altafonte/youtube/', }, }