示例#1
0
 def getResumePoint(self):
     from codecs import open as co
     if not xbmcvfs.exists(self.resumedb) or self.content == 2:
         return {}
     with co(self.resumedb, 'r') as fp:
         items = pickle.load(fp)
         self.resume = items.get(self.asin, {}).get('resume')
         fp.close()
     return items
示例#2
0
 def getResumePoint(self):
     from codecs import open as co
     if not xbmcvfs.exists(self.resumedb) or self.content == 2:
         return {}
     with co(self.resumedb, 'r') as fp:
         items = pickle.load(fp)
         self.resume = items.get(self.asin, {}).get('resume')
         fp.close()
     return items
示例#3
0
文件: playback.py 项目: GammaG/xbmc
 def saveResumePoint(self):
     from codecs import open as co
     if self.content == 2:
         return
     items = self.getResumePoint()
     with co(self.resumedb, 'wb+') as fp:
         if self.watched and self.asin in items.keys():
             del items[self.asin]
         else:
             items.update({self.asin: {'resume': self.video_lastpos}})
         pickle.dump(items, fp, 2)
         fp.close()
示例#4
0
文件: playback.py 项目: GammaG/xbmc
 def getResumePoint(self):
     from codecs import open as co
     if not xbmcvfs.exists(self.resumedb) or self.content == 2:
         return {}
     with co(self.resumedb, 'rb') as fp:
         try:
             items = pickle.load(fp)
         except (KeyError, pickle.UnpicklingError):
             items = {}
         self.resume = items.get(self.asin, {}).get('resume', 0)
         fp.close()
     return items
示例#5
0
 def saveResumePoint(self):
     from codecs import open as co
     if self.content == 2:
         return
     items = self.getResumePoint()
     with co(self.resumedb, 'w+') as fp:
         if self.watched and self.asin in items.keys():
             del items[self.asin]
         else:
             items.update({self.asin: {'resume': self.video_lastpos}})
         pickle.dump(items, fp, 2)
         fp.close()
示例#6
0
def LogJSON(o, url):
    from json import dump

    if not o:
        return
    from codecs import open as co
    from datetime import datetime
    try:
        LogJSON.counter += 1
    except:
        LogJSON.counter = 0
    with co(OSPJoin(g.DATA_PATH, '{}_{}.json'.format(datetime.now().strftime('%Y%m%d_%H%M%S%f'), LogJSON.counter)), 'w+', 'utf-8') as f:
        f.write('/* %s */\n' % url)
        dump(o, f, sort_keys=True, indent=4)
示例#7
0
def LogJSON(o, comment=None, optionalName=None):
    from json import dump

    if (not o) or (not s.dumpJSON):
        return
    from codecs import open as co
    from datetime import datetime
    try:
        LogJSON.counter += 1
    except:
        LogJSON.counter = 0
    fn = '{}_{}{}.json'.format(datetime.now().strftime('%Y%m%d_%H%M%S%f'),
                               LogJSON.counter,
                               '_' + optionalName if optionalName else '')
    with co(OSPJoin(g.DATA_PATH, fn), 'w+', 'utf-8') as f:
        if comment:
            f.write('/* %s */\n' % comment)
        dump(o, f, sort_keys=True, indent=4)
        Log('Saved JSON data with filename “{}”'.format(fn), Log.DEBUG)
示例#8
0
from codecs import open as co

FN1 = 'old.json'  # Oldest UUID achievement JSON file
FN2 = 'new.json'  # Newest UUID achievement JSON file
FNOUT = 'merged.json'  # Output

# Hic sunt dracones ###################
# There be dragons ####################


def Merge(o, n):
    for k in n.keys():
        if k not in o:
            o[k] = n[k]
        elif isinstance(n[k], dict):
            Merge(o[k], n[k])
        else:  # String/bool
            if 'done' == k:  # Bool
                o[k] = o[k] or n[k]
            # Strings are timestamps, so we keep the oldest


with co(FN1, 'r', 'utf-8') as f:
    data = json.load(f)

with co(FN2, 'r', 'utf-8') as f:
    Merge(data, json.load(f))

with co(FNOUT, 'w+', 'utf-8') as f:
    json.dump(data, f, indent=2, sort_keys=True)