Auch mehrere Downloads pro Run unterstuetzen; man muss kurz warten, damit sich der Tivo erholen kann
This commit is contained in:
parent
93c2a625ea
commit
8cd90d5984
1 changed files with 18 additions and 11 deletions
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/local/bin/python
|
#!/usr/local/bin/python
|
||||||
|
|
||||||
# $Schlepperbande: src/tivomirror/tivomirror,v 1.56 2014/06/28 12:16:12 stb Exp $
|
# $Schlepperbande: src/tivomirror/tivomirror,v 1.57 2014/07/01 07:04:45 stb Exp $
|
||||||
#
|
#
|
||||||
# Stefans Script, um die Sendungen vom Tivo runterzuladen und in MPEG4
|
# Stefans Script, um die Sendungen vom Tivo runterzuladen und in MPEG4
|
||||||
# zu transkodieren.
|
# zu transkodieren.
|
||||||
|
@ -241,6 +241,8 @@ def download(url, mak, target):
|
||||||
logger.info("--- downloading \"%s\"" % (url))
|
logger.info("--- downloading \"%s\"" % (url))
|
||||||
start = time.time()
|
start = time.time()
|
||||||
r = session.get(url, stream=True)
|
r = session.get(url, stream=True)
|
||||||
|
r.raise_for_status()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
p_decode = subprocess.Popen(["tivodecode", "--mak", mak, \
|
p_decode = subprocess.Popen(["tivodecode", "--mak", mak, \
|
||||||
"--no-verify", "--out", target, "-"], stdin=subprocess.PIPE)
|
"--no-verify", "--out", target, "-"], stdin=subprocess.PIPE)
|
||||||
|
@ -260,20 +262,28 @@ def download(url, mak, target):
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
logger.error("problem decoding: %s" % (e))
|
logger.error("problem decoding: %s" % (e))
|
||||||
finally:
|
finally:
|
||||||
|
elapsed = time.time() - start
|
||||||
|
throughput = count / elapsed
|
||||||
|
logger.info("%5.3fGB transferred in %d:%02d, %.1f MB/s" % (
|
||||||
|
count/1e9, int(elapsed/3600), int(elapsed / 60) % 60, throughput/1e6))
|
||||||
try:
|
try:
|
||||||
p_decode.stdin.close()
|
p_decode.stdin.close()
|
||||||
quit_process(p_decode.pid)
|
#quit_process(p_decode.pid)
|
||||||
|
p_decode.poll()
|
||||||
|
if p_decode.returncode == None:
|
||||||
|
time.sleep(1)
|
||||||
|
p_decode.poll()
|
||||||
|
if p_decode.returncode == None:
|
||||||
|
p_decode.terminate()
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
pass
|
pass
|
||||||
|
p_decode.wait()
|
||||||
|
logger.info("tivodecode exited with %s" % (p_decode.returncode))
|
||||||
size = os.path.getsize(target)
|
size = os.path.getsize(target)
|
||||||
if size < 1024:
|
if size < 1024:
|
||||||
logger.error("error downloading file: too small")
|
logger.error("error downloading file: too small")
|
||||||
os.remove(target)
|
os.remove(target)
|
||||||
raise TivoException("downloaded file is too small")
|
raise TivoException("downloaded file is too small")
|
||||||
elapsed = time.time() - start
|
|
||||||
throughput = size / elapsed
|
|
||||||
logger.info("%5.3fGB transferred in %d:%02d, %.1f MB/s" % (
|
|
||||||
size/1e9, int(elapsed/3600), int(elapsed / 60) % 60, throughput/1e6))
|
|
||||||
|
|
||||||
|
|
||||||
def download_decode(item, mak):
|
def download_decode(item, mak):
|
||||||
|
@ -348,13 +358,10 @@ def mirror(dom, downloaddb):
|
||||||
downloaddb[item.name] = item.datestr
|
downloaddb[item.name] = item.datestr
|
||||||
if getattr(downloaddb, "sync", None) and callable(downloaddb.sync):
|
if getattr(downloaddb, "sync", None) and callable(downloaddb.sync):
|
||||||
downloaddb.sync()
|
downloaddb.sync()
|
||||||
# stop after the first successful download since the tivo hangs easily
|
logger.debug("Sleeping 30 seconds before moving on...")
|
||||||
#logger.info("Stopping after one successful transfer")
|
time.sleep(30)
|
||||||
#break
|
|
||||||
except TivoException, e:
|
except TivoException, e:
|
||||||
logger.info("Error processing \"%s\": %s" % (item.name, e))
|
logger.info("Error processing \"%s\": %s" % (item.name, e))
|
||||||
# stop after one beacuse tivodevode cannot be launch twice in a row?
|
|
||||||
break
|
|
||||||
|
|
||||||
logger.info("*** Completed %s" % datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))
|
logger.info("*** Completed %s" % datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue