mirror of
https://github.com/NohamR/OqeeRewind.git
synced 2026-01-09 23:58:17 +00:00
133 lines
3.9 KiB
Python
133 lines
3.9 KiB
Python
"""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))
|