#!/usr/bin/env python # -*- coding: UTF-8 -*- #universal downloader #author:Wos #copy link,then run the script,no need args import pyperclip import os import requests import random import time import tkinter as tk from tkinter import messagebox pxy = "" tl = "" xff = "" BASE_DIR = os.path.dirname(os.path.abspath(__file__)) ini_path = os.path.join(BASE_DIR, "proxy.ini") tracker_path = os.path.join(BASE_DIR, "trackers_all_ip.txt") def random_ip(): global xff a=random.randint(1,255) b=random.randint(1,255) c=random.randint(1,255) d=random.randint(1,255) xff = (str(a)+'.'+str(b)+'.'+str(c)+'.'+str(d)) return def GetDesktopPath(): return os.path.join(os.path.expanduser("~"), 'Desktop') def check(): global pxy if not os.path.exists(ini_path): f=open(ini_path,"w",encoding="utf-8") f.close() else: f = open(ini_path,"r",encoding="utf-8") line = f.readline().strip() if line: pxy = "--all-proxy=\"http://"+line+"\"" f.close() def get_tracker_list(): try: global tl url = "https://ghproxy.com/https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_ip.txt" hdr = { "upgrade-insecure-requests": "1", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36", "X-Forwarded-For" : xff } res = requests.get(url,headers=hdr) temp = res.text.split("\n") for i in temp: if i != "": tl = tl+','+str(i) tl = str(tl).lstrip(',') f = f=open(tracker_path,"w",encoding="utf-8") f.write(tl) f.close() return except: random_ip() time.sleep(1) return get_tracker_list() def check_tracker_list(): global tl if not os.path.exists(tracker_path): get_tracker_list() else: sid = input("whether update trackerlistY/N?(N)") if sid == 'y' or sid == 'Y': get_tracker_list() else: f = open(tracker_path,"r",encoding="utf-8") line = f.readline().strip() if line: tl = line f.close() def check_torrent_link(link): if "torrent" in str(link) or str(link).endswith('.torrent') or "Torrent" in str(link): try: print("filetype:torrent") res = requests.get(link,stream=True) fname = '/tmp/temp.torrent' with open(fname, 'wb') as f: for i in res.iter_content(chunk_size=1024): f.write(i) f.close() print("torrent file downloaded") return True except: print("filetype:Normal_1") return False else: print("filetype:Normal_2") return False #check aria2c exist def check_aria2c(): temp = "" try: temp = (os.popen("aria2c --version").read()) except: pass if str(temp).startswith("aria2 "): return True else: root=tk.Tk() root.withdraw() root.attributes('-topmost',True) messagebox.showinfo(title="warn",message="no aria2c installed!") root.destroy() return False def mdown(): os.system('clear') link = pyperclip.paste() if link: path = GetDesktopPath() while True: sid = input("download_path(default Desktop):") if sid != "": if os.path.exists(sid): path = sid break else: print("path is unexist !") time.sleep(1) continue else: break if str(link).startswith('http') or str(link).startswith('ftp'): sid = input("Enable Proxy Y/N?(N)") if sid == 'y' or sid == 'Y' and pxy != "": cmdline = 'aria2c --check-certificate=false --file-allocation=none \"'+link+'\" -c -j2 -x4 -s4 --dir='+path+' '+pxy os.system(cmdline) else: if(check_torrent_link(link)): check_tracker_list() cmdline = 'aria2c -U80K --seed-time=0 --bt-tracker-connect-timeout=90 --bt-tracker-timeout=120 --bt-tracker-interval=60 --file-allocation=none \"/tmp/temp.torrent\" --dir='+path+' --bt-tracker='+tl else: cmdline = 'aria2c --check-certificate=false --file-allocation=none \"'+link+'\" -c -j2 -x4 -s4 --dir='+path os.system(cmdline) elif str(link).startswith("magnet:?xt="): check_tracker_list() cmdline = 'aria2c -U80K --seed-time=0 --bt-tracker-connect-timeout=90 --bt-tracker-timeout=120 --bt-tracker-interval=60 --file-allocation=none \"'+link+'\" --dir='+path+' --bt-tracker='+tl os.system(cmdline) if __name__ == '__main__': if(check_aria2c()): check() mdown()