"""Script for testing and analyzing past Oqee streams and manifests.""" import asyncio import datetime from dotenv import load_dotenv from utils.stream import fetch_drm_keys from utils.times import ( convert_date_to_sec, convert_sec_to_ticks, bruteforce ) TIMESCALE = 90000 DURATION = 288000 load_dotenv() if __name__ == '__main__': # mpd_content = get_manifest('201') # 201: france 2 # manifest_info = parse_mpd_manifest(mpd_content) # organized_info = organize_by_content_type(manifest_info) # with open('manifest_organized.json', 'w') as f: # json.dump(organized_info, f, indent=4) # drm_kid = "0dfa399a-425d-3095-0255-f357e2407edf" # drm_kid = drm_kid.replace("-", "") # print('kid: ', drm_kid) # print(fetch_drm_keys(drm_kid)) # dt = datetime.datetime.strptime("2023-12-14 23:02:14", "%Y-%m-%d %H:%M:%S") dt = datetime.datetime.strptime("2024-01-11 22:45:01", "%Y-%m-%d %H:%M:%S") tick = int(convert_sec_to_ticks(convert_date_to_sec(dt), TIMESCALE)) print(tick) # # 1280x720, 3000 # track_id = "0_1_390" # base = 153232896078968 # # 1920x1080, 14800 # track_id = "0_1_3525" # # not found # # # 1920x1080, 4800 # video_track_id = "0_1_3524" # video_base1 = 153232896150968 # # audio fra_main # audio_track_id = "0_1_384" # audio_base2 = 153232896097804 # # 1920x1080, 4800 France 2 video_track_id = "0_1_3566" asyncio.run(bruteforce(video_track_id, tick)) # # https://catalogue.ina.fr/doc/TV-RADIO/TV_8165000.001/Bordeaux_%2Bchampagne%2B_%2Bquand%2Bles%2Bescrocs%2Bs_attaquent%2Ba%2Bnos%2Bbouteilles%2B_ # # 14/12/2023 23:02:22 - 24:12:22 # start = "2023-12-14 23:02:22" # start_tick1, start_rep1 = find_nearest_tick_by_hour( # video_base1, start, TIMESCALE, DURATION # ) # start_tick2, start_rep2 = find_nearest_tick_by_hour( # audio_base2, start, TIMESCALE, DURATION # ) # end = "2023-12-15 00:12:22" # end_tick1, end_rep1 = find_nearest_tick_by_hour( # video_base1, end, TIMESCALE, DURATION # ) # end_tick2, end_rep2 = find_nearest_tick_by_hour( # audio_base2, end, TIMESCALE, DURATION # ) # rep_nb = end_rep1 - start_rep1 # diff_start = start_tick2 - start_tick1 # diff_start_sec = convert_ticks_to_sec(diff_start, TIMESCALE) # print('diff_start_sec: ', diff_start_sec) # print(f"Total segments to fetch: {rep_nb}") # # Download the segments # asyncio.run(save_segments(track_id, start_tick, rep_nb, duration)) # cat $(ls -v *.m4s) > merged.m4s # get_init(track_id) # kid = get_kid(track_id) # print("KID:", kid) # key = fetch_drm_keys(kid) # print("KEY:", key) # mp4ff-decrypt -init init.mp4 -key f31708f7237632849c591202e3043417 # merged.m4s merged_dec.m4s # command_decrypt = ( # f"mp4ff-decrypt -init segments/segments_{track_id}/init.mp4 " # f"-key {key} segments/segments_{track_id}/merged.m4s merged_dec.m4s" # ) # print("Decrypt command:", command_decrypt) # ffmpeg -i "concat:init.mp4|merged_dec.m4s" -c copy output.mp4 # command_ffmpeg = ( # f'ffmpeg -i "concat:segments/segments_{track_id}/init.mp4|' # f'merged_dec.m4s" -c copy output.mp4' # ) # print("FFmpeg command:", command_ffmpeg) # command_merge = ( # f"ffmpeg -i video.mp4 -itsoffset {diff_start_sec} " # f"-i audio.mp4 -c copy -map 0:v -map 1:a output.mp4" # ) # print("Merge command:", command_merge) # TF1 research (manifest id : 612) # 2023-06-10 is the latest available date for TF1 0_1_382 and 0_1_381 # dt = datetime.datetime.strptime("2023-06-10 08:00:00", "%Y-%m-%d %H:%M:%S") # # dt = datetime.datetime.strptime("2023-09-01 08:00:00", "%Y-%m-%d %H:%M:%S") # tick = int(convert_sec_to_ticks(convert_date_to_sec(dt), TIMESCALE)) # # 1280x720, 3000 # track_id = "0_1_382" # asyncio.run(bruteforce(track_id, tick))