]> code.delx.au - webdl/blobdiff - common.py
Helper script to run from cron
[webdl] / common.py
index 43c0e86bdbcea94fc1c423cf00e55572a86d5ae8..838cf945bd95d3c2669ef8111dc9d6e2551a13a7 100644 (file)
--- a/common.py
+++ b/common.py
@@ -1,4 +1,5 @@
 import hashlib
+import io
 import json
 import logging
 import lxml.etree
@@ -31,6 +32,9 @@ CACHE_FILE = os.path.join(
     "webdl",
     "requests_cache"
 )
+if not os.path.isdir(os.path.dirname(CACHE_FILE)):
+    os.makedirs(os.path.dirname(CACHE_FILE))
+
 requests_cache.install_cache(CACHE_FILE, backend='sqlite', expire_after=3600)
 
 
@@ -96,7 +100,7 @@ def grab_html(url):
     logging.debug("grab_html(%r)", url)
     request = http_session.prepare_request(requests.Request("GET", url))
     response = http_session.send(request, stream=True)
-    doc = lxml.html.parse(response.raw, lxml.html.HTMLParser(encoding="utf-8", recover=True))
+    doc = lxml.html.parse(io.BytesIO(response.content), lxml.html.HTMLParser(encoding="utf-8", recover=True))
     response.close()
     return doc
 
@@ -104,7 +108,7 @@ def grab_xml(url):
     logging.debug("grab_xml(%r)", url)
     request = http_session.prepare_request(requests.Request("GET", url))
     response = http_session.send(request, stream=True)
-    doc = lxml.etree.parse(response.raw, lxml.etree.XMLParser(encoding="utf-8", recover=True))
+    doc = lxml.etree.parse(io.BytesIO(response.content), lxml.etree.XMLParser(encoding="utf-8", recover=True))
     response.close()
     return doc
 
@@ -199,6 +203,7 @@ def remux(infile, outfile):
         "-bsf:a", "aac_adtstoasc",
         "-acodec", "copy",
         "-vcodec", "copy",
+        "-y",
         outfile,
     ]
     if not exec_subprocess(cmd):
@@ -239,6 +244,7 @@ def download_hds(filename, video_url, pvswf=None):
 
     cmd = [
         "livestreamer",
+        "-f",
         "-o", filename,
         param,
         "best",
@@ -255,6 +261,7 @@ def download_hls(filename, video_url):
 
     cmd = [
         "livestreamer",
+        "-f",
         "-o", filename,
         video_url,
         "best",