Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from __future__ import unicode_literals
- import youtube_dl
- import time
- import datetime
- import os
- from tkinter import *
- from tkinter.filedialog import askdirectory
- from tkinter.messagebox import *
- import re
- from subprocess import call
- import ffmpeg
- import ffmpy
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support.ui import WebDriverWait
- from selenium.webdriver.support import expected_conditions as EC
- from selenium.webdriver.common.action_chains import ActionChains
- from pytube import Playlist
- from selenium.common.exceptions import NoSuchElementException
- # from moviepy.editor import *
- """
- print('Please enter your username/email:')
- usernameStr = str(input())
- print('Please enter your password:')
- passwordStr = str(input())
- print('mix or normal playlist:')
- mnp = str(input())
- print('Link:')
- ul = str(input())
- print('How many songs in mix:')
- q = int(input())
- print('mp3 or mp4?')
- mp5 = str(input())
- print('Where download? NOTE: if you want mp3 all files in the folder are going to be converted to mp3')
- dp = str(input()) + "%(title)s-%(id)s.%(ext)s"
- print('Browser? chrome; firefox; edge; safari')
- brwr = str(input())
- """
- master = Tk()
- def directory_ptah():
- dtp = askdirectory()
- e5dp.insert(10, dtp)
- def form_to_fill_out():
- e1mail.get()
- e2pass.get()
- e3url.get()
- e4number_songs.get()
- e5dp.get()
- e6mp3.get()
- e7mp4.get()
- e8chrome.get()
- e9firefox.get()
- e10safari.get()
- e11edge.get()
- # print(usernameStr, passwordStr, ul, q, dp, mp5mp3, mp5mp4, brwrchrome, brwrfirefox, brwrsafari, brwredge)
- Label(master, text="Youtube email:").grid(row=0)
- Label(master, text="Youtube password:").grid(row=1)
- Label(master, text="Playlist url:").grid(row=2)
- Label(master, text="File format:").grid(row=5)
- Label(master, text="Number of songs to download:").grid(row=3)
- Label(master, text="Browser:").grid(row=6)
- e1mail = Entry(master)
- e2pass = Entry(master)
- e3url = Entry(master)
- e4number_songs = Entry(master)
- e5dp = Entry(master)
- e6mp3 = IntVar()
- e7mp4 = IntVar()
- e8chrome = IntVar()
- e9firefox = IntVar()
- e10safari = IntVar()
- e11edge = IntVar()
- e1mail.grid(row=0, column=1)
- e2pass.grid(row=1, column=1)
- e3url.grid(row=2, column=1)
- e5dp.grid(row=4, column=1)
- e4number_songs.grid(row=3, column=1)
- Button(master, text='Download path', command=directory_ptah).grid(row=4, column=0, sticky=W, pady=4)
- Checkbutton(master, text="mp3", variable=e6mp3).grid(row=5, column=1, sticky=W)
- Checkbutton(master, text="mp4", variable=e7mp4).grid(row=5, column=2, sticky=W)
- Checkbutton(master, text="chrome", variable=e8chrome).grid(row=6, column=1, sticky=W)
- Checkbutton(master, text="firefox", variable=e9firefox).grid(row=6, column=2, sticky=W)
- Checkbutton(master, text="safari", variable=e10safari).grid(row=6, column=3, sticky=W)
- Checkbutton(master, text="edge", variable=e11edge).grid(row=6, column=4, sticky=W)
- Button(master, text='quit', command=master.quit).grid(row=7, column=0, sticky=W, pady=4)
- Button(master, text='start program', command=form_to_fill_out).grid(row=7, column=1, sticky=W, pady=4)
- usernameStr = e1mail.get()
- passwordStr = e2pass.get()
- ul = e3url.get()
- q = e4number_songs.get()
- dp = e5dp.get()
- mp5mp3 = e6mp3.get()
- mp5mp4 = e7mp4.get()
- brwrchrome = e8chrome.get()
- brwrfirefox = e9firefox.get()
- brwrsafari = e10safari.get()
- brwredge = e11edge.get()
- mainloop()
- """
- usernamestr = e1mail.get()
- passwordstr = e2pass.get()
- ul = e3url.get()
- q = e4number_songs.get()
- dp = e5dp.get()
- k = e6mp3.get()
- n = e7mp4.get()
- a = e8chrome.get()
- b = e9firefox.get()
- c = e10safari.get()
- d = e11edge.get()
- print(usernamestr)
- print(passwordstr)
- print(ul)
- print(q)
- print(dp)
- print(k)
- print(n)
- print(a)
- print(b)
- print(c)
- print(d)
- """
- if brwrchrome == '1':
- cytd = webdriver.Chrome()
- cytd.maximize_window()
- cytd.get("https://www.youtube.com/")
- cytd.find_element_by_xpath('//div[2]/ytd-button-renderer/a/paper-button/yt-formatted-string').click()
- cytd.find_element_by_id('identifierId').send_keys(usernameStr)
- cytd.find_element_by_id('identifierId').send_keys(Keys.ENTER)
- time.sleep(1)
- cytd.find_element_by_xpath('//div/input').send_keys(passwordStr)
- cytd.find_element_by_xpath('//div/input').send_keys(Keys.ENTER)
- time.sleep(1)
- cytd.get(ul)
- """
- if mnp == 'playlist':
- """
- pattern_ul = r"playlist"
- match_ul = re.search(pattern_ul, ul)
- if match_ul:
- wait = WebDriverWait(cytd, 10)
- il = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.ytd-playlist-sidebar-primary-info-renderer > #thumbnail > #playlist-thumbnails #img')))
- il.click()
- vv = "!!!Download"
- suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
- plname = "_".join([vv, suffix])
- time.sleep(0.5)
- wait031 = ActionChains(cytd)
- wait031.send_keys('k')
- wait031.perform()
- time.sleep(0.5)
- cytd.find_element_by_css_selector('.style-scope:nth-child(4) > .yt-simple-endpoint > #button > #button').click()
- time.sleep(0.5)
- cytd.find_element_by_css_selector('.content-icon > .style-scope:nth-child(2)').click()
- cytd.find_element_by_css_selector('#input-1').click()
- cytd.find_element_by_css_selector('#input-1').send_keys(plname)
- cytd.find_element_by_css_selector('.ytd-add-to-playlist-create-renderer #text').click()
- i = 2
- while i <= q: # True?
- if i <= q:
- try:
- time.sleep(1)
- cytd.find_element_by_css_selector('.ytp-next-button').click()
- time.sleep(1)
- wait31 = ActionChains(cytd)
- wait31.send_keys('k')
- wait31.perform()
- time.sleep(1)
- cytd.find_element_by_css_selector('.style-scope:nth-child(4) > .yt-simple-endpoint > #button > #button').click()
- time.sleep(1)
- cytd.find_element_by_css_selector('.style-scope:nth-child(2) > #checkbox > #checkboxLabel > #checkbox-container #label').click()
- time.sleep(1)
- cytd.find_element_by_css_selector('.style-scope:nth-child(4) > .yt-simple-endpoint > #button > #button').click()
- i = i + 1
- # .yt-button-renderer #text
- except NoSuchElementException:
- cytd.find_element_by_xpath('xpath=//yt-button-renderer/a/paper-button/yt-formatted-string').click()
- time.sleep(1)
- wait31 = ActionChains(cytd)
- wait31.send_keys('k')
- wait31.perform()
- time.sleep(1)
- cytd.find_element_by_css_selector('.style-scope:nth-child(4) > .yt-simple-endpoint > #button > #button').click()
- time.sleep(1)
- cytd.find_element_by_css_selector('.style-scope:nth-child(2) > #checkbox > #checkboxLabel > #checkbox-container #label').click()
- time.sleep(1)
- cytd.find_element_by_css_selector('.style-scope:nth-child(4) > .yt-simple-endpoint > #button > #button').click()
- i = i + 1
- continue
- cytd.find_element_by_css_selector('#container > #guide-button > #button').click()
- time.sleep(2)
- cytd.find_element_by_css_selector('.ytd-guide-collapsible-section-entry-renderer:nth-child(3) .title').click()
- time.sleep(1)
- """
- wait = WebDriverWait(cytd, 10)
- il = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.ytd-playlist-sidebar-primary-info-renderer > #thumbnail > #playlist-thumbnails #img')))
- il.click()
- """
- cytd.find_element_by_css_selector('.ytd-playlist-sidebar-primary-info-renderer > #thumbnail > #playlist-thumbnails #img').click()
- time.sleep(1)
- wait31 = ActionChains(cytd)
- wait31.send_keys('k')
- wait31.perform()
- plurl = cytd.current_url
- print(plurl)
- """
- pattern = r"watch" # basically searching for watch + list to merge to ideal form # ideal form = https://www.youtube.com/watch?list.... or not>? it doesn't any longer
- pattern2 = r"list"
- match = re.search(pattern, plurl)
- match2 = re.search(pattern2, plurl)
- i = match.end() + 1
- print(i)
- li = plurl[:i]
- print(li)
- j = match2.start()
- print(j)
- ji = plurl[j:]
- print(ji)
- liji = li + ji
- print(liji)
- """
- # https://github.com/rg3/youtube-dl
- if mp5mp4 == '1':
- os.chdir(str({}).format(dp))
- ydl_downloadpl = {'format': 'mp4'}
- with youtube_dl.YoutubeDL(ydl_downloadpl) as ydl:
- ydl.download(['{}'.format(plurl)]) # brackets necessary? probably
- path, dirs, files = os.walk(dp).__next__()
- s = len(files)
- print(s)
- if mp5mp3 == '1':
- os.chdir(str({}).format(dp))
- ydl_downloadpl = {'format': 'bestaudio/best', 'postprocessors': [{
- 'key': 'FFmpegExtractAudio',
- 'preferredcodec': 'mp3',
- 'preferredquality': '192', }]}
- with youtube_dl.YoutubeDL(ydl_downloadpl) as ydl:
- ydl.download(['{}'.format(plurl)])
- path, dirs, files = os.walk(dp).__next__()
- s = len(files)
- print(s)
- """
- if plurl[0:4] != 'list':
- strg = plurl.lstrip("qwertyuiopasdfghjkzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890:&//?_=.")
- print(strg)
- if strg[0:1] == 'l':
- print('l found')
- if strg[0:4] == 'list':
- plurlk = "https://www.youtube.com/watch?" + strg
- plurldp = (dp, plurlk)
- # https://github.com/rg3/youtube-dl
- # chill implement see github # re first
- if mp5 == 'mp4':
- os.system("youtube-dl -o {0} {1}".format(*plurldp))
- if mp5 == 'mp3':
- os.system("youtube-dl -x --audio-format mp3 -o {0} {1}".format(*plurldp))
- """
- """
- if strg[0:4] != 'list':
- str1 = strg.lstrip("l")
- print(str1)
- print('l found')
- str1 = str1.lstrip("qwertyuiopasdfghjkzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890:&//?_=.")
- print(str1)
- if str1[0:4] == 'list':
- plurlk = "https://www.youtube.com/watch?" + str1
- plurldp = (dp, plurlk)
- # https://github.com/rg3/youtube-dl
- if mp5 == 'mp4':
- os.system("youtube-dl -o {0} {1}".format(*plurldp))
- if mp5 == 'mp3':
- os.system("youtube-dl -x --audio-format mp3 -o {0} {1}".format(*plurldp))
- if str1[0:4] != 'list':
- str2 = str1.lstrip("l")
- print(str2)
- print('l found')
- str2 = str2.lstrip("qwertyuiopasdfghjkzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890:&//?_=.")
- print(str2)
- if str2[0:4] == 'list':
- plurlk = "https://www.youtube.com/watch?" + str2
- plurldp = (dp, plurlk)
- # https://github.com/rg3/youtube-dl
- if mp5 == 'mp4':
- os.system("youtube-dl -o {0} {1}".format(*plurldp))
- if mp5 == 'mp3':
- os.system("youtube-dl -x --audio-format mp3 -o {0} {1}".format(*plurldp))
- if str2[0:4] != 'list':
- str3 = str2.lstrip("l")
- print(str3)
- print('l found')
- str3 = str3.lstrip("qwertyuiopasdfghjkzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890:&//?_=.")
- print(str3)
- if str3[0:4] == 'list':
- plurlk = "https://www.youtube.com/watch?" + str3
- plurldp = (dp, plurlk)
- # https://github.com/rg3/youtube-dl
- if mp5 == 'mp4':
- os.system("youtube-dl -o {0} {1}".format(*plurldp))
- if mp5 == 'mp3':
- os.system("youtube-dl -x --audio-format mp3 -o {0} {1}".format(*plurldp))
- if str3[0:4] != 'list':
- str4 = str3.lstrip("l")
- print(str4)
- print('l found')
- str4 = str4.lstrip("qwertyuiopasdfghjkzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890:&//?_=.")
- print(str4)
- if str4[0:4] == 'list':
- plurlk = "https://www.youtube.com/watch?" + str4
- plurldp = (dp, plurlk)
- # https://github.com/rg3/youtube-dl
- if mp5 == 'mp4':
- os.system("youtube-dl -o {0} {1}".format(*plurldp))
- if mp5 == 'mp3':
- os.system("youtube-dl -x --audio-format mp3 -o {0} {1}".format(*plurldp))
- if str4[0:4] != 'list':
- str5 = str4.lstrip("l")
- print(str5)
- print('l found')
- str5 = str5.lstrip("qwertyuiopasdfghjkzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890:&//?_=.")
- print(str5)
- if str5[0:4] == 'list':
- plurlk = "https://www.youtube.com/watch?" + str5
- plurldp = (dp, plurlk)
- # https://github.com/rg3/youtube-dl
- if mp5 == 'mp4':
- os.system("youtube-dl -o {0} {1}".format(*plurldp))
- if mp5 == 'mp3':
- os.system("youtube-dl -x --audio-format mp3 -o {0} {1}".format(*plurldp))
- if str5[0:4] != 'list':
- str6 = str5.lstrip("l")
- print(str6)
- print('l found')
- str6 = str6.lstrip("qwertyuiopasdfghjkzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890:&//?_=.")
- print(str6)
- if str6[0:4] == 'list':
- plurlk = "https://www.youtube.com/watch?" + str6
- plurldp = (dp, plurlk)
- # https://github.com/rg3/youtube-dl
- if mp5 == 'mp4':
- os.system("youtube-dl -o {0} {1}".format(*plurldp))
- if mp5 == 'mp3':
- os.system("youtube-dl -x --audio-format mp3 -o {0} {1}".format(*plurldp))
- """
- """
- if mp5 == 'mp4':
- call(["youtube-dl -o {0} {1}".format(*plurldp)])
- elif mp5 == 'mp3':
- call(["youtube-dl -x --audio-format mp3 -o {0} {1}".format(*plurldp)])
- """
- """
- pl = Playlist(plurl)
- pl.download_all(dp)
- # path, dirs, files = os.walk(dp).__next__()
- # s = len(files)
- if mp5 == 'mp3':
- for filename in os.listdir(dp):
- if filename.endswith(".mp4"):
- os.system("ffmpeg -i {0} {0}.mp3".format(filename))
- else:
- continue
- """
- """
- mpf = dp
- for file in [n for n in os.listdir(mpf) if re.search('mp4', n)]:
- fp = os.path.join(mpf, file)
- opp = os.path.join(mpf, os.path.splitext(file)[0] + '.mp3')
- c = mp.AudioFileClip(fp).subclip(10, )
- c.write_audiofile(opp)
- print('done')
- """
- """
- """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement