- completato il supporto ai torrent e aggiunto ilcorsaronero.xyz - aggiunto supporto agli episodi locali, ovvero poter inserire nella libreria di kodi un misto tra puntate di kod e file scaricati altrove - le viste ora si salvano di nuovo dal menu laterale, ma rimangono salvate per il tipo di contenuto visualizzato e non per il singolo menu - ripensato il menu rapido, che ora è più rapido, ridisegnate alcune finestre
86 lines
2.5 KiB
Python
86 lines
2.5 KiB
Python
"""
|
|
Copyright (c) 2003-2005 Gustavo Niemeyer <gustavo@niemeyer.net>
|
|
|
|
This module offers extensions to the standard python 2.3+
|
|
datetime module.
|
|
"""
|
|
from dateutil.tz import tzfile
|
|
from tarfile import TarFile
|
|
import os
|
|
|
|
__author__ = "Gustavo Niemeyer <gustavo@niemeyer.net>"
|
|
__license__ = "PSF License"
|
|
|
|
__all__ = ["setcachesize", "gettz", "rebuild"]
|
|
|
|
CACHE = {}
|
|
|
|
class tzfile(tzfile):
|
|
def __reduce__(self):
|
|
return (gettz, (self._filename,))
|
|
|
|
def getzoneinfofile():
|
|
filenames = os.listdir(os.path.join(os.path.dirname(__file__)))
|
|
filenames.sort()
|
|
filenames.reverse()
|
|
for entry in filenames:
|
|
if entry.startswith("zoneinfo") and ".tar." in entry:
|
|
return os.path.join(os.path.dirname(__file__), entry)
|
|
return None
|
|
|
|
def buildcache():
|
|
global CACHE
|
|
zoneinfofile = getzoneinfofile()
|
|
if zoneinfofile:
|
|
tf = TarFile.open(zoneinfofile)
|
|
try:
|
|
for tarinfo in tf.getmembers():
|
|
if tarinfo.islnk() or tarinfo.isfile():
|
|
zonefile = tf.extractfile(tarinfo)
|
|
CACHE[tarinfo.name] = tzfile(zonefile)
|
|
finally:
|
|
tf.close()
|
|
|
|
buildcache()
|
|
|
|
del getzoneinfofile
|
|
del buildcache
|
|
|
|
def setcachesize(_):
|
|
# Since the cache now eagerly initialized at
|
|
# import time, there's no point in controlling
|
|
# its size.
|
|
pass
|
|
|
|
def gettz(name):
|
|
return CACHE.get(name)
|
|
|
|
def rebuild(filename, tag=None, format="gz"):
|
|
import tempfile, shutil
|
|
tmpdir = tempfile.mkdtemp()
|
|
zonedir = os.path.join(tmpdir, "zoneinfo")
|
|
moduledir = os.path.dirname(__file__)
|
|
if tag: tag = "-"+tag
|
|
targetname = "zoneinfo%s.tar.%s" % (tag, format)
|
|
try:
|
|
tf = TarFile.open(filename)
|
|
for name in tf.getnames():
|
|
if not (name.endswith(".sh") or
|
|
name.endswith(".tab") or
|
|
name == "leapseconds"):
|
|
tf.extract(name, tmpdir)
|
|
filepath = os.path.join(tmpdir, name)
|
|
os.system("zic -d %s %s" % (zonedir, filepath))
|
|
tf.close()
|
|
target = os.path.join(moduledir, targetname)
|
|
for entry in os.listdir(moduledir):
|
|
if entry.startswith("zoneinfo") and ".tar." in entry:
|
|
os.unlink(os.path.join(moduledir, entry))
|
|
tf = TarFile.open(target, "w:%s" % format)
|
|
for entry in os.listdir(zonedir):
|
|
entrypath = os.path.join(zonedir, entry)
|
|
tf.add(entrypath, entry)
|
|
tf.close()
|
|
finally:
|
|
shutil.rmtree(tmpdir)
|