aboutsummaryrefslogtreecommitdiffstats
path: root/livie.py
diff options
context:
space:
mode:
authorJesús <heckyel@hyperbola.info>2020-07-17 16:52:56 -0500
committerJesús <heckyel@hyperbola.info>2020-07-17 16:52:56 -0500
commit938265700a2a9361dd78325e6c3143b20473df25 (patch)
treed22000ab49c5d7f6dcf7cc888ef113fddbcfe06d /livie.py
parentcc0df81f1968544bcce1801680af7042e9d77a2e (diff)
downloadlivie-938265700a2a9361dd78325e6c3143b20473df25.tar.lz
livie-938265700a2a9361dd78325e6c3143b20473df25.tar.xz
livie-938265700a2a9361dd78325e6c3143b20473df25.zip
Revert "Use BeautifulSoup to extract information from YT searches"
This reverts commit 8dbd0685240518f255603d3d86ac07e20460b862. (closes #7)
Diffstat (limited to 'livie.py')
-rw-r--r--livie.py55
1 files changed, 25 insertions, 30 deletions
diff --git a/livie.py b/livie.py
index a2f7f3c..b03d1c4 100644
--- a/livie.py
+++ b/livie.py
@@ -1,39 +1,34 @@
"""This module does render video"""
import sys
+import datetime
+import json
import requests
-from bs4 import BeautifulSoup
-URL = 'https://www.youtube.com'
-FILTER = '&sp=EgIQAQ%253D%253D'
+URL = 'https://invidio.us'
INPUT = sys.argv[1]
-SEARCH = '%s/results?search_query=%s%s' % (URL, INPUT, FILTER)
+SEARCH = '%s/api/v1/search?q=%s' % (URL, INPUT)
REQUEST = requests.get(SEARCH)
-SOUP = BeautifulSoup(REQUEST.content, 'lxml', from_encoding=REQUEST.encoding)
-FIRST = True
+SD = '&itag=18&local=true'
+HD = '&itag=22&local=true'
+FIRST = True # skip line loop
-def replace(string):
- """Remove unnecessary characters"""
- string = string.replace(' - Duration: ', '')
- string = string.replace('.', '')
- string = string.replace(' views', '')
- return string
+VIDEOS = json.loads(REQUEST.content.decode('utf-8'))
-
-for vid in SOUP.find_all(class_='yt-lockup-content'):
+for video in VIDEOS:
try:
- link = 'https://invidio.us%s' % 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)
+ title = video.get('title', '')
+ videoid = video.get('videoId', '')
+ author = video.get('author', '')
+
+ # Make URL
+ sd = '%s/latest_version?id=%s%s' % (URL, videoid, SD)
+ hd = '%s/latest_version?id=%s%s' % (URL, videoid, HD)
+ timer = video.get('lengthSeconds', '')
+ time = str(datetime.timedelta(seconds=timer))
+ publish = video.get('publishedText', '')
except TypeError:
continue
@@ -43,9 +38,9 @@ for vid in SOUP.find_all(class_='yt-lockup-content'):
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)
+ print(' title: %s' % (title))
+ print(' SD: %s' % (sd))
+ print(' HD: %s' % (hd))
+ print(' HD ^ Only some videos available caused by DRM')
+ print(' channel: %s' % (author))
+ print(' time: %s' % (time))