Untitled
unknown
plain_text
3 years ago
3.2 kB
7
Indexable
from pyrogram import Client
import requests
import os
import time
import re
from tqdm import tqdm
api_id =
api_hash = ''
client = Client('hollywoodhindi', api_id, api_hash)
# Telegram channel name or ID
channel_username = '-'
# File to store IDs of uploaded files
uploaded_ids_file = 'hollywoodhindi_done.txt'
def download_file(url):
with requests.get(url, stream=True) as r:
if r.status_code == 403:
print("Skipping download due to 403 status code")
return None, 0
if r.status_code == 500:
download_file(url)
file_name = re.findall('filename="(.+)"', r.headers.get('Content-Disposition'))[0]
file_size = int(r.headers.get('Content-Length', 0))
if os.path.isfile(file_name) and os.path.getsize(file_name) == file_size:
print("File already exists:", file_name)
return file_name, file_size
print(f"Downloading {file_name}...")
with open(file_name, "wb") as f:
for chunk in tqdm(r.iter_content(chunk_size=1048576)):
if chunk:
f.write(chunk)
print(f"Downloaded {file_name}!")
return file_name, file_size
def upload_file(file_path):
retries = 5
for i in range(retries):
try:
with tqdm(total=os.path.getsize(file_path), unit='B', unit_scale=True, desc=f"Uploading {os.path.basename(file_path)}") as pbar:
progress_callback = lambda current, total: pbar.update(current - pbar.n)
result = client.send_document(int(channel_username), file_path, progress=progress_callback)
print(f'Uploaded {file_path} with ID {result.document.file_id}')
os.remove(file_path)
return result.document.file_id
except Exception as e:
print(f'Error uploading {file_path}: {e}')
print(f'Retrying in 10 seconds...')
time.sleep(10)
return None
if __name__ == '__main__':
client.start()
if not client.is_connected:
print('Error connecting to Telegram')
exit()
uploaded_ids = set()
if os.path.isfile(uploaded_ids_file):
with open(uploaded_ids_file, 'r') as f:
uploaded_ids = set(f.read().splitlines())
with open('hollywoodhindi.txt', 'r') as f:
file_ids = f.read().splitlines()
for file_id in file_ids:
if file_id in uploaded_ids:
print(f'{file_id} already uploaded')
continue
link = f'https://spdownload.b-f.workers.dev/download/{file_id}'
file_path, file_size = download_file(link)
if file_path is None:
print("Download failed due to 403 error")
continue
elif file_size == 0:
print("Download failed due to unknown error")
continue
else:
print(f"Downloaded {file_path} ({file_size} bytes)")
uploaded_id = upload_file(file_path)
if uploaded_id:
uploaded_ids.add(file_id)
with open(uploaded_ids_file, 'a') as f:
f.write(f'{file_id}\n')
client.stop()Editor is loading...