Update yt-dlp, add --file argument
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
This commit is contained in:
@@ -13,7 +13,7 @@ from tqdm import tqdm
|
||||
|
||||
|
||||
def ascii_banner(text):
|
||||
print('\n\n########################################################\n\n\n')
|
||||
print('\n########################################################\n\n\n')
|
||||
ascii_banner = pyfiglet.figlet_format(text)
|
||||
print(ascii_banner)
|
||||
################################
|
||||
@@ -27,11 +27,11 @@ def ph_config_dl_dir(dir):
|
||||
global download_dir
|
||||
if (dir != None):
|
||||
download_dir = dir
|
||||
print("Output directory: " + download_dir + "\model\\")
|
||||
print("Output directory: " + download_dir + "\\model\\")
|
||||
if (os.path.exists(download_dir) != True):
|
||||
print('Invalid Directory!')
|
||||
sys.exit()
|
||||
download_dir = download_dir + "\model\\"
|
||||
download_dir = download_dir + "\\model\\"
|
||||
if (os.path.exists(download_dir) != True):
|
||||
os.mkdir(download_dir)
|
||||
|
||||
@@ -86,7 +86,7 @@ def download_video(url, filename):
|
||||
state = 0
|
||||
print('[+] Save as: ' + filename + '\n')
|
||||
try:
|
||||
run_command(['.\yt-dlp', '--downloader', 'aria2c', '--downloader-args',
|
||||
run_command(['.\\yt-dlp', '--downloader', 'aria2c', '--downloader-args',
|
||||
'aria2c:-x 8 --log-level=info --file-allocation=none --summary-interval=1', '--no-warnings', '--newline', '-o', filename, url])
|
||||
print("[$] Video download successfully!")
|
||||
except KeyboardInterrupt:
|
||||
@@ -129,7 +129,7 @@ def ph_download_playlist(url, model_name, limit):
|
||||
# tmp_playlist download
|
||||
print('... Getting playlist information...')
|
||||
try:
|
||||
playlist_download_command = [".\yt-dlp", "-j",
|
||||
playlist_download_command = [".\\yt-dlp", "-j",
|
||||
"--flat-playlist", "--no-check-certificate", url]
|
||||
res = subprocess.run(playlist_download_command,
|
||||
capture_output=True, text=True).stdout.split("\n")
|
||||
@@ -152,13 +152,13 @@ def ph_download_playlist(url, model_name, limit):
|
||||
# video_dict = ast.literal_eval(res[i])
|
||||
video_dict = json.loads(res[i])
|
||||
url = video_dict['url']
|
||||
p = subprocess.Popen(['.\yt-dlp', '--no-warnings', '--dump-json',
|
||||
p = subprocess.Popen(['.\\yt-dlp', '--no-warnings', '--dump-json',
|
||||
'--skip-download', url], stdout=subprocess.PIPE, stderr=None, shell=True)
|
||||
output = p.communicate()[0]
|
||||
info = json.loads(output.decode('utf-8'))
|
||||
# duration = int(info['duration'])
|
||||
filename = os.path.join(download_dir, model_name, fix_title(
|
||||
str(info["title"])) + '.' + str(info['ext']))
|
||||
filename = os.path.join(download_dir, model_name,
|
||||
fix_title(str(info["title"])) + '.' + str(info['ext']))
|
||||
print("\n\n==========================================\n[+] File #{}: {}".format(
|
||||
count, fix_title(str(info["title"])) + '.' + str(info['ext'])))
|
||||
ph_download_video(url, model_name, filename)
|
||||
@@ -172,7 +172,7 @@ def fix_url(url, type):
|
||||
url = ph_check_valid_pornhub_url(url)
|
||||
|
||||
if '/model/' not in url:
|
||||
p = subprocess.Popen(['.\yt-dlp', '--no-warnings', '--dump-json',
|
||||
p = subprocess.Popen(['.\\yt-dlp', '--no-warnings', '--dump-json',
|
||||
'--skip-download', url], stdout=subprocess.PIPE, stderr=None, shell=True)
|
||||
output = p.communicate()[0]
|
||||
info = json.loads(output.decode('utf-8'))
|
||||
@@ -195,7 +195,7 @@ def ph_get_video(url):
|
||||
# global duration
|
||||
url = ph_check_valid_pornhub_url(url)
|
||||
|
||||
p = subprocess.Popen(['.\yt-dlp', '--no-warnings', '--dump-json',
|
||||
p = subprocess.Popen(['.\\yt-dlp', '--no-warnings', '--dump-json',
|
||||
'--skip-download', url], stdout=subprocess.PIPE, stderr=None, shell=True)
|
||||
output = p.communicate()[0]
|
||||
info = json.loads(output.decode('utf-8'))
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
#!/usr/bin/env python
|
||||
from sys import exit as sysexit
|
||||
from json import decoder, load, dump
|
||||
from os.path import isfile
|
||||
from lib_pornhub import ph_config_dl_dir, ph_get_video
|
||||
from lib_pornhub import (
|
||||
ascii_banner, ph_config_dl_dir, ph_get_playlist, ph_get_video
|
||||
)
|
||||
from argparse import ArgumentParser
|
||||
import ssl
|
||||
|
||||
|
||||
@@ -16,45 +18,57 @@ else:
|
||||
ssl._create_default_https_context = _create_unverified_https_context
|
||||
|
||||
|
||||
filename = "video_list.json"
|
||||
video_list = []
|
||||
fl_video_list = []
|
||||
|
||||
|
||||
def save_file():
|
||||
global filename, fl_video_list
|
||||
def save_file(filename, list_to_file):
|
||||
with open(filename, encoding="utf-8", mode="w") as f:
|
||||
dump(fl_video_list, f, indent=4)
|
||||
for url in list_to_file:
|
||||
f.write(url + "\n")
|
||||
|
||||
|
||||
def main():
|
||||
global filename, video_list, fl_video_list
|
||||
if not isfile(filename):
|
||||
print("file not found")
|
||||
sysexit()
|
||||
try:
|
||||
with open(filename, encoding="utf-8") as f:
|
||||
temp = load(f)
|
||||
video_list = temp.copy()
|
||||
fl_video_list = temp.copy()
|
||||
except decoder.JSONDecodeError:
|
||||
print("syntax error, check file")
|
||||
sysexit()
|
||||
ph_config_dl_dir(None)
|
||||
video_len = len(video_list)
|
||||
count = 0
|
||||
for url in video_list:
|
||||
print('[+] URL: ' + url)
|
||||
ph_get_video(url)
|
||||
fl_video_list.remove(url)
|
||||
count += 1
|
||||
print("\nDownloaded: {}/{}\n".format(count, video_len))
|
||||
save_file()
|
||||
parser = ArgumentParser()
|
||||
parser.add_argument('--url', type=str, help='URL of Pornhub video')
|
||||
parser.add_argument('--playlist', nargs='?', const='best', choices=['most-viewed', 'best', 'top-rated', 'longest'], help='Optional ordering of videos')
|
||||
parser.add_argument('--limit', type=int, help='Maximum number of videos', default=0)
|
||||
parser.add_argument('--dir', type=str, help='Output directory')
|
||||
parser.add_argument('--file', type=str, help='File with links to download')
|
||||
args = parser.parse_args()
|
||||
|
||||
################################
|
||||
ascii_banner("PornHub-dl")
|
||||
print("\t\tMade by tnt2402\n")
|
||||
print("\t\tModified by JDM17")
|
||||
print("\n\n\n########################################################\n")
|
||||
################################
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
main()
|
||||
except KeyboardInterrupt:
|
||||
save_file()
|
||||
sysexit()
|
||||
ph_config_dl_dir(args.dir)
|
||||
if (args.url == None and args.playlist != None):
|
||||
print("URL cannot be empty!")
|
||||
sys.exit()
|
||||
elif (args.playlist != None):
|
||||
ph_get_playlist(args.url, args.playlist, args.limit)
|
||||
elif (args.url != None):
|
||||
ph_get_video(args.url)
|
||||
elif (args.file != None):
|
||||
if not isfile(args.file):
|
||||
print("file not found")
|
||||
sysexit()
|
||||
with open(args.file, encoding="utf-8") as f:
|
||||
temp = list(filter(None, f.read().strip().split("\n")))
|
||||
list_from_file = temp.copy()
|
||||
new_file = temp.copy()
|
||||
video_len = len(list_from_file)
|
||||
count = 0
|
||||
try:
|
||||
for url in list_from_file:
|
||||
print('[+] URL: ' + url)
|
||||
ph_get_video(url)
|
||||
new_file.remove(url)
|
||||
count += 1
|
||||
print("\nProcessed: {}/{}\n".format(count, video_len))
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
save_file(args.file, new_file)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
from lib_pornhub import *
|
||||
import argparse
|
||||
|
||||
import ssl
|
||||
|
||||
try:
|
||||
_create_unverified_https_context = ssl._create_unverified_context
|
||||
except AttributeError:
|
||||
# Legacy Python that doesn't verify HTTPS certificates by default
|
||||
pass
|
||||
else:
|
||||
# Handle target environment that doesn't support HTTPS verification
|
||||
ssl._create_default_https_context = _create_unverified_https_context
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--url', type=str, help='URL of Pornhub video')
|
||||
parser.add_argument('--playlist', nargs='?', const='best', choices=['most-viewed', 'best', 'top-rated', 'longest'], help='Optional ordering of videos')
|
||||
parser.add_argument('--limit', type=int, help='Maximum number of videos', default=0)
|
||||
parser.add_argument('--dir', type=str, help='Output directory')
|
||||
args = parser.parse_args()
|
||||
|
||||
################################
|
||||
ascii_banner("PornHub-dl")
|
||||
print(" Made by tnt2402\n\n\n########################################################")
|
||||
################################
|
||||
ph_config_dl_dir(args.dir)
|
||||
if (args.url == None and args.playlist != None):
|
||||
print("URL cannot be empty !")
|
||||
sys.exit()
|
||||
elif (args.playlist != None):
|
||||
ph_get_playlist(args.url, args.playlist, args.limit)
|
||||
elif (args.url != None):
|
||||
ph_get_video(args.url)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
61
pornhub_dl_only_file.py
Normal file
61
pornhub_dl_only_file.py
Normal file
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env python
|
||||
from sys import exit as sysexit
|
||||
from json import decoder, load, dump
|
||||
from os.path import isfile
|
||||
from lib_pornhub import ph_config_dl_dir, ph_get_video
|
||||
import ssl
|
||||
|
||||
|
||||
try:
|
||||
_create_unverified_https_context = ssl._create_unverified_context
|
||||
except AttributeError:
|
||||
# Legacy Python that doesn't verify HTTPS certificates by default
|
||||
pass
|
||||
else:
|
||||
# Handle target environment that doesn't support HTTPS verification
|
||||
ssl._create_default_https_context = _create_unverified_https_context
|
||||
|
||||
|
||||
filename = "video_list.json"
|
||||
video_list = []
|
||||
fl_video_list = []
|
||||
|
||||
|
||||
def save_file():
|
||||
global filename, fl_video_list
|
||||
with open(filename, encoding="utf-8", mode="w") as f:
|
||||
dump(fl_video_list, f, indent=4)
|
||||
|
||||
|
||||
def main():
|
||||
global filename, video_list, fl_video_list
|
||||
if not isfile(filename):
|
||||
print("file not found")
|
||||
sysexit()
|
||||
try:
|
||||
with open(filename, encoding="utf-8") as f:
|
||||
temp = load(f)
|
||||
video_list = temp.copy()
|
||||
fl_video_list = temp.copy()
|
||||
except decoder.JSONDecodeError:
|
||||
print("syntax error, check file")
|
||||
sysexit()
|
||||
ph_config_dl_dir(None)
|
||||
video_len = len(video_list)
|
||||
count = 0
|
||||
for url in video_list:
|
||||
print('[+] URL: ' + url)
|
||||
ph_get_video(url)
|
||||
fl_video_list.remove(url)
|
||||
count += 1
|
||||
print("\nDownloaded: {}/{}\n".format(count, video_len))
|
||||
save_file()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
main()
|
||||
except KeyboardInterrupt:
|
||||
save_file()
|
||||
sysexit()
|
||||
save_file()
|
||||
BIN
yt-dlp.exe
BIN
yt-dlp.exe
Binary file not shown.
Reference in New Issue
Block a user