This commit is contained in:
tnt2402
2022-12-27 12:49:42 +07:00
parent a64c7bbf4f
commit d91e167936
5 changed files with 30 additions and 16 deletions

View File

@@ -9,6 +9,7 @@ import string
import subprocess
import pyfiglet
import signal
import mechanicalsoup
#############
def ascii_banner(text):
@@ -18,10 +19,10 @@ def ascii_banner(text):
################################
### Configuration
ydl_opts_start = {
'format': 'best',
'nooverwrites': True,
'no_warnings': True,
'ignoreerrors': True,
'format': "bestvideo",
}
@@ -52,14 +53,14 @@ def ph_check_valid_pornhub_url(url):
def download_video(url, filename):
try:
p = subprocess.run(["downloadm3u8", "-o", filename, url])
p = subprocess.run(['.\youtube-dl', '--hls-prefer-ffmpeg', '--ffmpeg-location', os.getcwd(), '-o', filename, url], shell = True)
except KeyboardInterrupt:
os.kill(p.pid, signal.CTRL_C_EVENT)
sys.exit()
def fix_title(s):
decoded_unicode = ''.join([i if i in string.printable else ' ' for i in s])
deny_char = ['\\', '/', '.', '?', '*', ':']
deny_char = ['\\', '/', '.', '?', '*', ':', '!']
for i in deny_char:
decoded_unicode = decoded_unicode.replace(i, '')
return decoded_unicode
@@ -70,15 +71,12 @@ def check_output_dir(model_name):
if (os.path.exists(download_dir + model_name) != True):
os.mkdir(download_dir+model_name)
def ph_download_video(url, model_name):
def ph_download_video(url, model_name, filename):
try:
check_output_dir(model_name)
video = ydl.extract_info(url, download=False)
filename = fix_title(str(video["title"])) + '.' + str(video['ext'])
print(' [-] {}'.format(filename))
filename = download_dir + '\\' + model_name + '\\' + filename
url_video = video['url']
download_video(url_video, filename)
# video = ydl.extract_info(url, download=False)
# filename = os.path.join(download_dir, model_name, fix_title(str(video["title"])) + '.' + str(video['ext']))
download_video(url, filename)
except:
print('Cannot download video')
@@ -87,7 +85,7 @@ def ph_download_playlist(url, model_name, limit):
# tmp_playlist download
print('... Getting playlist information...')
playlist_download_command = ["youtube-dl", "-j", "--flat-playlist", "--no-check-certificate", url]
playlist_download_command = [".\youtube-dl", "-j", "--flat-playlist", "--no-check-certificate", url]
res = subprocess.run(playlist_download_command, capture_output=True, text=True).stdout.split("\n")
if (limit != 0 ):
print("[!] Limit: {} videos".format(limit))
@@ -101,7 +99,8 @@ def ph_download_playlist(url, model_name, limit):
video = ydl.extract_info(str(video_dict["url"]), download=False)
filename = fix_title(str(video["title"])) + '.' + str(video['ext'])
print('\n\n\n\n#######################\n\n[-] Video #{}: {}\n\n'.format(count, filename))
filename = download_dir + '\\' + model_name + '\\' + filename
# filename = download_dir + '\\' + model_name + '\\' + filename
filename = os.path.join(download_dir, model_name, filename)
url_video = video['url']
download_video(url_video, filename)
count = count + 1
@@ -109,8 +108,15 @@ def ph_download_playlist(url, model_name, limit):
print("Cannot download video")
def get_model_name(url):
html = req.get(url).text
soup = BeautifulSoup(html, 'lxml')
# html = req.get(url).text
# soup = BeautifulSoup(html, 'lxml')
browser = mechanicalsoup.Browser()
page = browser.get(url)
soup = BeautifulSoup(page.text, 'lxml')
if ("Page Not Found" in soup.title):
print("Page not found!")
@@ -141,9 +147,16 @@ def fix_url(url, type):
def ph_get_video(url):
url = ph_check_valid_pornhub_url(url)
model_name = get_model_name(url)
info = ydl.extract_info(url, download=False)
retry = 0
while (info == None and retry < 5):
info = ydl.extract_info(url, download=False)
retry += 1
model_name = info['uploader']
filename = os.path.join(download_dir, model_name, fix_title(str(info["title"])) + '.' + str(info['ext']))
print("[+] Model: " + model_name)
ph_download_video(url, model_name)
ph_download_video(url, model_name, filename)
def ph_get_playlist(url, type, limit):
url, model_name = fix_url(url, type)