This repository has been archived on 2025-06-18. You can view files and clone it, but cannot push or open issues or pull requests.
Files
skolavdf/dev-prg/ytdownload/ytdownload.py
Dzejkobik007 89a4c17a64 fix
2022-04-20 21:26:39 +02:00

99 lines
2.8 KiB
Python

import sys
import os
import argparse
if os.name == 'nt':
winrunning = True
else:
winrunning = False
print("[main] You are running on {}".format(sys.platform))
def checkconnection():
if winrunning:
if os.system("ping 1.1.1.1 >nul 2>&1"):
print("[main] Network problems, exiting...")
quit(1)
else:
if os.system("ping -c 2 1.1.1.1 > /dev/null"):
print("[main] Network problems, exiting...")
quit(1)
def askyesno():
while True:
answer = input("[main] Enter yes or no: ")
if answer == "yes":
return True
elif answer == "no":
return False
else:
pass
checkconnection()
try:
import youtube_dl
except:
print("[main] Some libraries not installed, install?")
if askyesno():
try:
os.system("{} -m pip install youtube_dl".format(sys.executable))
import youtube_dl
except:
print("[main] Error when installing, exiting...")
quit(1)
else:
print("[main] Missing library, exiting...")
quit(1)
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('-u', dest='url', action='store',
help='Specify download url')
parser.add_argument('-f', dest='filename', action='store',
help='Specify name of file')
parser.add_argument('-p', dest='path', action='store',
help='Specify path to download folder')
parser.add_argument('--video',
help='Specify if download with video', action='store_true')
args = parser.parse_args()
def getinfo(video_url):
return youtube_dl.YoutubeDL().extract_info(
url = video_url,download=False
)
def download(video_url):
if args.video:
fformat = "mp4"
else:
fformat = "mp3"
video_info = getinfo(video_url)
print("[main] Video title: {}".format(video_info['title']))
cwd = os.getcwd()+"/"
if args.path:
cwdinput = args.path
else:
cwdinput = input("[main] Path: [{}] ".format(cwd))
if cwdinput:
cwd = cwdinput
filename = f"{video_info['title']}.{fformat}"
if args.filename:
filenameinput = args.filename
else:
filenameinput = input("[main] Filename: [{}] ".format(filename))
if filenameinput:
filename = filenameinput
options={
'format':'bestaudio/best',
'keepvideo':args.video,
'outtmpl':cwd+"/"+filename,
}
with youtube_dl.YoutubeDL(options) as ydl:
ydl.download([video_info['webpage_url']])
print("[main] Download complete... {}".format(filename))
if __name__=='__main__':
if args.url:
video_url = args.url
else:
video_url = input("Url:")
download(video_url)