update
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user