Google is blocking IP's the instances of invidio, because of these reasons livie will use BeautifulSoup to extract information from YT searches
51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
"""This module does render video"""
|
|
|
|
import sys
|
|
import requests
|
|
from bs4 import BeautifulSoup
|
|
|
|
URL = 'https://www.youtube.com'
|
|
FILTER = '&sp=EgIQAQ%253D%253D'
|
|
INPUT = sys.argv[1]
|
|
SEARCH = '%s/results?search_query=%s%s' % (URL, INPUT, FILTER)
|
|
REQUEST = requests.get(SEARCH)
|
|
SOUP = BeautifulSoup(REQUEST.content, 'lxml', from_encoding=REQUEST.encoding)
|
|
FIRST = True
|
|
|
|
|
|
def replace(string):
|
|
"""Remove unnecessary characters"""
|
|
string = string.replace(' - Duration: ', '')
|
|
string = string.replace('.', '')
|
|
string = string.replace(' views', '')
|
|
return string
|
|
|
|
for vid in SOUP.find_all(class_='yt-lockup-content'):
|
|
try:
|
|
link = URL + vid.h3.a['href']
|
|
title = vid.h3.a.text
|
|
description = vid.h3.span.text
|
|
author = vid.find(class_='yt-lockup-byline').a.text
|
|
meta = vid.find(class_='yt-lockup-meta').ul.contents
|
|
time_srt = vid.find(class_='yt-lockup-title').span.text
|
|
time = replace(time_srt)
|
|
uploaded = meta[0].text
|
|
views_str = vid.find(class_='yt-lockup-meta').ul.li.find_next()
|
|
views = replace(views_str.text)
|
|
|
|
except TypeError:
|
|
continue
|
|
|
|
if FIRST:
|
|
FIRST = False
|
|
else:
|
|
print() # print skip line
|
|
|
|
# prints
|
|
print(' title: %s' % title)
|
|
print(' url: %s' % link)
|
|
print(' channel: %s' % author)
|
|
print(' uploaded: %s' % uploaded)
|
|
print(' time: %s' % time)
|
|
print(' views: %s' % views)
|