livie/livie.py
Jesús 8dbd068524
Use BeautifulSoup to extract information from YT searches
Google is blocking IP's the instances of invidio, because of these reasons
livie will use BeautifulSoup to extract information from YT searches
2019-11-27 16:23:59 -05:00

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)