Exemplo n.º 1
0
def get_videos_url(driver, playlist_url):

    # enter youtube playlist
    driver.get(playlist_url)

    # wait for playlist, and get it
    waiter(driver, 60).until(visibility((By.ID, 'playlist')))
    playlist = driver.find_element_by_id('playlist')

    css_sel = 'a[class$="panel-video-renderer"]'
    waiter(driver, 60).until(visibility((By.CSS_SELECTOR, css_sel)))
    videos_url = playlist.find_elements_by_css_selector(css_sel)
    videos_url = [i.get_attribute('href') for i in videos_url]

    # get videos name
    css_sel = 'span[id="video-title"]'
    waiter(driver, 60).until(visibility((By.CSS_SELECTOR, css_sel)))
    videos_name = playlist.find_elements_by_css_selector(css_sel)
    videos_name = [i.get_attribute('title') for i in videos_name]

    # # for in C mode
    # for video in videos_url:
    #     videos_url_lst.append(video.get_attribute())

    return list(zip(videos_url, videos_name))
Exemplo n.º 2
0
def get_videos_url(driver, playlist_url):
    # Enter youtube list
    driver.get(playlist_url)

    # Wait for playlist, and get it
    waiter(driver, 60).until(visibility((By.ID, 'playlist')))
    playlist = driver.find_element_by_id('playlist')

    # Get url list
    css_sel = 'a[class$="panel-video-renderer"]'
    waiter(driver, 60).until(visibility((By.CSS_SELECTOR, css_sel)))
    videos_url = playlist.find_elements_by_css_selector(css_sel)
    videos_url = [i.get_attribute('href') for i in videos_url]

    # Get name list
    css_sel = 'span[id="video-title"]'
    waiter(driver, 60).until(visibility((By.CSS_SELECTOR, css_sel)))
    videos_name = playlist.find_elements_by_css_selector(css_sel)
    videos_name = [i.get_attribute('title') for i in videos_name]

    return list(zip(videos_url, videos_name))
Exemplo n.º 3
0
def download_mp3(driver, video_url, video_name, download_path):

    mp3_path = os.path.join(download_path, video_name + '.mp3')
    if os.path.exists(mp3_path):
        return "Download ALREADY COMPLETED: " + video_name

    # log into video2mp3
    driver.get('https://video2mp3.net')
    driver.switch_to.default_content()

    for _ in range(2):
        waiter(driver, 60).until(
            visibility((By.CSS_SELECTOR, 'iframe[id="inneriframe"]')))
        iframe = driver.find_element_by_css_selector(
            'iframe[id="inneriframe"]')
        driver.switch_to.frame(iframe)

    # change input
    waiter(driver, 60).until(clickable((By.ID, 'input')))
    input_el = driver.find_element_by_id('input')
    driver.execute_script('arguments[0].value = `%s`' % video_url, input_el)
    waiter(driver, 60).until(clickable((By.ID, 'submit')))
    button = driver.find_element_by_id('submit')
    driver.execute_script("arguments[0].click();", button)

    # download element
    xpath = "//a[contains(text(),'Download')]"
    waiter(driver, 60).until(clickable((By.XPATH, xpath)))
    button = driver.find_element_by_xpath(xpath)
    driver.execute_script("arguments[0].click();", button)

    # wait for download
    for _ in range(5 * 60):
        if os.path.exists(mp3_path):
            break
        time.sleep(1)

    return "Download COMPLETED: " + video_name