Skip to content

Instantly share code, notes, and snippets.

@KD-MM2
Forked from akash-gajjar/tldv.py
Last active April 20, 2025 00:04
Show Gist options
  • Save KD-MM2/4992dcab555cece6448084bd507af604 to your computer and use it in GitHub Desktop.
Save KD-MM2/4992dcab555cece6448084bd507af604 to your computer and use it in GitHub Desktop.
Download videos from TLDV.io
from datetime import datetime
from os import system
import requests
import json
import traceback as tb
import re
## Please install ffmpeg before running this script and make sure it's in your PATH
## brew install ffmpeg
## Please install requests before running this script
## pip3 install requests
## download video from tldv.io
##
## 1. Go to https://tldv.io/
## 2. Login
## 3. Go to the meeting you want to download
## 4. Copy the URL of the meeting
## 5. Open the developer tools (F12)
## 6. Go to the network tab
## 7. Refresh the page
## 8. Find the request to https://gw.tldv.io/v1/meetings/64145828ced74b0013d496ce/watch-page?noTranscript=true
## 9. Copy the auth token from the request headers
## 10. Run this script and paste the URL and auth token
## 11. python3 tldv.py
url = input("Please paste the URL of the meeting you want to download: ")
meeting_id = url.split("/")[-1]
# covering <metting_id>?origin=meeting-delivery-email
if "?" in meeting_id:
meeting_id = meeting_id.split("?")[0]
print("\rFound meeting ID: ", meeting_id)
auth_token = input("Auth token: ")
# Add "Bearer" to auth token if not existing
if "Bearer" not in auth_token:
auth_token = f"Bearer {auth_token}"
data = requests.get(
f"https://gw.tldv.io/v1/meetings/{meeting_id}/watch-page?noTranscript=true",
headers={
"Authorization": auth_token,
},
)
try:
response = json.loads(data.text)
meeting = response.get("meeting", {})
name = meeting.get("name", "No name")
createdAt = meeting.get("createdAt", datetime.now())
source = response.get("video", {}).get("source", None)
date = datetime.strptime((createdAt), "%Y-%m-%dT%H:%M:%S.%fZ")
normalised_date = date.strftime("%Y-%m-%d-%H-%M-%S")
# Remove invalid characters from the filename
safe_name = re.sub(r'[\\/*?:"<>|]', "", name)
filename = f"{normalised_date}_{safe_name}"
filename_ext = ".mp4"
command = f'ffmpeg -i {source} -c copy "{filename}.{filename_ext}"'
json_filename = f'{filename}.json'
with open(json_filename, "w") as f:
f.write(data.text)
print(command)
print("Downloading video...")
system(command)
except:
print("Error encountered")
print(data.text)
tb.print_exc()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment