def close_connection(self): try: self.connection.close() self.releaseLock() except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def get_connection(self): try: self.aquireLock() self.connection = sqlite3.connect(self.dbpath) except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def fileSize(fqfn): try: if fileExists(fqfn): return os.stat(fqfn).st_size except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def fileTouch(fqfn, exists=True): try: junk = open(fqfn, "w").close() # pth = Path.touch(fqfn, exist_ok=exists) except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def timeSlotPrograms(start=0, length=2): try: # now = int(time.time()) if start == 0: start = int(time.time()) xfilter = [ { "field": "stop", "type": "numeric", "value": str(start), "comparison": "gt", }, { "field": "start", "type": "numeric", "value": str(start + (3600 * length)), "comparison": "lt", }, ] data = {"filter": xfilter} data = {"limit": "999"} j = sendToTVH("epg/events/grid", data) if "entries" in j: mindur, minprog = UT.displayProgramList(j["entries"], length) except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def hmsDisplay(seconds): ret = "" try: h, m, s = hms(seconds) hstr = displayWord(h, "hour") mstr = displayWord(m, "minute") sstr = displayWord(s, "second") ret = "" if len(hstr) and len(mstr) and len(sstr): ret = "{}, {} and {}".format(hstr, mstr, sstr) elif len(hstr) and len(mstr): ret = "{} and {}".format(hstr, mstr) elif len(hstr) and len(sstr): ret = "{}, 0 minutes and {}".format(hstr, sstr) elif len(hstr): ret = hstr elif len(mstr) and len(sstr): ret = "{} and {}".format(mstr, sstr) elif len(mstr): ret = mstr else: ret = sstr except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e) finally: return ret
def filesWaiting(db): try: sql = "select count(*) as cn from files where status=0" rows = db.doSql(sql) return int(rows[0][0]) except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def deleteFirstFile(db, name, xhash): try: vals = (1, name, xhash) sql = "delete from files where status=? and name=? and hash=?" db.doDeleteSql(sql, vals) except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def makeFilePath(fn): try: pfn = os.path.basename(fn) ret = makePath(pfn) return ret except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def seriesId(show): show["series"] = None try: m = re.match(".*([sS][0-9]{1,2}[eE][0-9]{1,3}).*", show["filename"]) if m is not None and len(m.groups()) > 0: show["series"] = m.groups()[0] except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def dfExists(dfn): try: ret = Path(dfn).is_file() if not ret: ret = Path(dfn).is_dir() return ret except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def timestampDisplay(ts): ret = "" try: ret = time.ctime(ts) except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e) finally: return ret
def makeXmlAtts(attrs): satts = "" try: for attr in attrs: satts += attr + "=" + attrs[attr] except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e) finally: return satts
def askMe(q, default): try: ret = default val = input("{} ({}) > ".format(q, default)) if len(val) > 0: ret = val return ret except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def hms(seconds): hrs = mins = secs = 0 try: hrs, rem = valMod(seconds, 3600) mins, secs = valMod(rem, 60) except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e) finally: return [hrs, mins, secs]
def valMod(value, divisor): val = rem = 0 try: val = int(value / divisor) rem = value % divisor except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e) finally: return [val, rem]
def channelFilter(epg, channel): try: cevents = [] for event in epg: if event["channelName"] == channel: cevents.append(event) return cevents except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def rename(src, dest): try: if dfExists(src): p = Path(src) p.rename(dest) else: raise FileDoesNotExist("src file does not exist: {}".format(src)) except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def delimitString(xstr, addstr, delimeter=" - "): ret = xstr try: if addstr is not None: if len(addstr) > 0: ret += delimeter + addstr except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e) finally: return ret
def getFirstFile(db): try: sql = "select * from files where status=0 limit 1" row = db.doSql(sql, one=1) vals = (row["name"], row["hash"]) sql = "update files set status=1 where name=? and hash=?" db.doUpdateSql(sql, vals) return row except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def displayWord(value, word): ret = "" try: if value > 0: ret = "{} {}".format(value, word) if value > 1: ret += "s" except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e) finally: return ret
def padStr(xstr, xlen=2, pad=" ", padleft=True): try: zstr = xstr while len(zstr) < xlen: if padleft: zstr = pad + zstr else: zstr += pad return zstr except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def makeFilmNfo(show): fnfo = "" try: mtags = nfoTags(show) mtags["premiered"] = show["year"] mtags["year"] = show["year"] fnfo = makeNfoString(mtags, "movie") except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e) finally: return fnfo
def makePath(pn): try: if not dirExists(pn): p = Path(pn) ret = False p.mkdir(mode=0o755, parents=True, exist_ok=True) ret = True else: ret = True return ret except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def filterPrograms(channel=None, start=None, length=None): try: total, entries = getEpg() if channel is not None and start is not None: epg = channelFilter(entries, channel) return timeFilter(epg, start, length) if channel is not None: return channelFilter(entries, channel) if start is not None: return timeFilter(entries, start, length) except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def showParts(show): try: show["title"] = show["disp_title"] if "disp_subtitle" in show: show["subtitle"] = show["disp_subtitle"] if show["subtitle"].startswith(" - "): show["subtitle"] = show["subtitle"][3:] else: show["subtitle"] = None seriesId(show) except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def makeNfoString(nfodict, maintag="episodedetails"): snfo = content = "" try: xmlargs = {"attrs": None, "oneline": True, "newline": True} for tag in nfodict: content += makeXmlTag(tag, nfodict[tag], **xmlargs) xmlargs["oneline"] = False snfo = makeXmlTag(maintag, content, **xmlargs) except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e) finally: return snfo
def aquireLock(self): try: cn = 0 tempfn = self.lockfn while FUT.fileExists(tempfn): time.sleep(1) cn += 1 if cn > self.locktime: raise DBLockError("Timeout waiting for locked DB") tempfn = "wibble, there is a bug, that doesn't seem to notice the file is missing, if the string is the same" tempfn = self.lockfn FUT.fileTouch(self.lockfn) except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)
def makeProgNfo(show): pnfo = "" try: ptags = nfoTags(show) if "subtitle" in show and show["subtitle"] is not None and len( show["subtitle"]) > 0: ptags["showtitle"] = show["subtitle"] if "series" in show and show["series"] is not None: ptags["series"] = show["series"] pnfo = makeNfoString(ptags) except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e) finally: return pnfo
def addBaseFn(show): try: show["opbase"] = None showParts(show) if "year" in show and show["year"] is not None: bfn = delimitString(show["title"], str(show["year"]), " (") bfn += ")" else: bfn = show["title"] # bfn = delimitString(bfn, show["subtitle"]) bfn = delimitString(bfn, show["series"]) show["opbase"] = bfn except Exception as e: fname = sys._getframe().f_code.co_name errorRaise(fname, e)