first commit
This commit is contained in:
commit
275915ad2a
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
output/
|
2
chat_links.txt
Normal file
2
chat_links.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
fav
|
||||||
|
https://t.me/xxxxxx
|
3
requirements.txt
Normal file
3
requirements.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
requests[socks]
|
||||||
|
beautifulsoup4
|
||||||
|
pysocks
|
82
tdl.py
Normal file
82
tdl.py
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
import subprocess
|
||||||
|
import time
|
||||||
|
from datetime import datetime
|
||||||
|
import os
|
||||||
|
import requests
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
import re
|
||||||
|
import logging
|
||||||
|
|
||||||
|
|
||||||
|
logging.basicConfig(filename='script.log', level=logging.INFO, format='%(asctime)s %(levelname)s:%(message)s')
|
||||||
|
|
||||||
|
|
||||||
|
def log_message(message):
|
||||||
|
print(message)
|
||||||
|
logging.info(message)
|
||||||
|
|
||||||
|
|
||||||
|
def get_chat_id_from_url(url):
|
||||||
|
return url.strip().split("/")[-1]
|
||||||
|
|
||||||
|
|
||||||
|
def read_chat_links(file_path):
|
||||||
|
with open(file_path, 'r') as file:
|
||||||
|
return [line.strip() for line in file.readlines()]
|
||||||
|
|
||||||
|
|
||||||
|
def get_meta_title(url, proxy):
|
||||||
|
proxies = {
|
||||||
|
"http": proxy,
|
||||||
|
"https": proxy
|
||||||
|
}
|
||||||
|
response = requests.get(url, proxies=proxies)
|
||||||
|
soup = BeautifulSoup(response.text, 'html.parser')
|
||||||
|
meta_tag = soup.find('meta', property='og:title')
|
||||||
|
if meta_tag:
|
||||||
|
return meta_tag['content']
|
||||||
|
return get_chat_id_from_url(url) # Fallback to chat ID if meta tag is not found
|
||||||
|
|
||||||
|
|
||||||
|
def execute_commands(tdl_exe, chat_link, last_timestamp, current_timestamp, proxy, output_dir):
|
||||||
|
file_name = "我的收藏"
|
||||||
|
if chat_link == "fav":
|
||||||
|
export_command = f"{tdl_exe} chat export -i {last_timestamp},{current_timestamp} --proxy {proxy} -o {output_dir}/{file_name}.json >> tdl.log"
|
||||||
|
download_command = f"{tdl_exe} dl -f {output_dir}/{file_name}.json --proxy {proxy} --reconnect-timeout 0 --continue --skip-same -d {output_dir}/{file_name} >> tdl.log"
|
||||||
|
else:
|
||||||
|
file_name = re.sub(r'[<>:"/\\|?* ]', '_', get_meta_title(chat_link, proxy))
|
||||||
|
export_command = f"{tdl_exe} chat export -c {chat_link} -i {last_timestamp},{current_timestamp} --proxy {proxy} -o {output_dir}/{file_name}.json >> tdl.log"
|
||||||
|
download_command = f"{tdl_exe} dl -f {output_dir}/{file_name}.json --proxy {proxy} --reconnect-timeout 0 --continue --skip-same -d {output_dir}/{file_name} >> tdl.log"
|
||||||
|
|
||||||
|
# log_message(f"开始导出:{file_name}")
|
||||||
|
subprocess.run(export_command, shell=True)
|
||||||
|
# log_message(f"开始下载:{file_name}")
|
||||||
|
subprocess.run(download_command, shell=True)
|
||||||
|
# log_message(f"下载完成:{file_name}")
|
||||||
|
|
||||||
|
|
||||||
|
def main(tdl_exe, file_path, proxy, output_dir, sleep_time):
|
||||||
|
last_timestamp = int(time.time()) - 86400 # Initialize with the timestamp of 1 days ago
|
||||||
|
|
||||||
|
while True:
|
||||||
|
current_timestamp = int(time.time())
|
||||||
|
chat_links = read_chat_links(file_path)
|
||||||
|
|
||||||
|
for chat_link in chat_links:
|
||||||
|
execute_commands(tdl_exe, chat_link, last_timestamp, current_timestamp, proxy, output_dir)
|
||||||
|
|
||||||
|
last_timestamp = current_timestamp
|
||||||
|
log_message(f"本轮完成时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||||
|
log_message(f"暂停时间:{sleep_time}秒")
|
||||||
|
log_message(f"===========================================================")
|
||||||
|
time.sleep(sleep_time)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
tdl_exe = "tdl.exe" # Path to tdl.exe
|
||||||
|
file_path = "./chat_links.txt" # Path to your file containing chat links
|
||||||
|
proxy = "socks5://127.0.0.1:10808" # Proxy address
|
||||||
|
output_dir = "./res" # Output directory for downloaded content
|
||||||
|
sleep_time = 3600 # Sleep time in second
|
||||||
|
|
||||||
|
main(tdl_exe, file_path, proxy, output_dir, sleep_time)
|
Loading…
x
Reference in New Issue
Block a user