Example #1
0
 def scanFsFiles(self):
     d = findUnsupportedGamesavesDir()
     if not d:
         return
     for f in glob(os.path.join(d, '*.fs')):
         self.insertFsFile(f)
     self.filteredGames = self.allGames[:]
Example #2
0
 def scanFsFiles(self):
     d = findUnsupportedGamesavesDir()
     if not d:
         return
     for f in glob(os.path.join(d, '*.fs')):
         self.insertFsFile(f)
     self.filteredGames = self.allGames[:]
Example #3
0
 def checkUnsupportedRom(self):
     if self.fba:
         d = findUnsupportedGamesavesDir()
         if d:
             unsupported = os.path.join(os.path.dirname(self.fba), 'savestates', 'unsupported_ggpo.fs')
             if os.path.isfile(unsupported):
                 unsupported = sha256digest(unsupported)
                 localJsonDigest = readLocalJsonDigest()
                 for k, v in localJsonDigest.items():
                     if v == unsupported:
                         self.unsupportedRom = os.path.splitext(k)[0]
                         break
Example #4
0
 def checkUnsupportedRom(self):
     if self.fba:
         d = findUnsupportedGamesavesDir()
         if d:
             unsupported = os.path.join(os.path.dirname(self.fba),
                                        'savestates', 'unsupported_ggpo.fs')
             if os.path.isfile(unsupported):
                 unsupported = sha256digest(unsupported)
                 localJsonDigest = readLocalJsonDigest()
                 for k, v in localJsonDigest.items():
                     if v == unsupported:
                         self.unsupportedRom = os.path.splitext(k)[0]
                         break
def writeLocalJsonDigest():
    localJsonDigest = {}
    d = findUnsupportedGamesavesDir()
    if d:
        localjson = os.path.join(d, SyncWorker.JSON_INDEX_FILENAME)
        for filename in glob.glob(os.path.join(d, '*.fs')):
            localJsonDigest[os.path.basename(filename)] = sha256digest(filename)
        # noinspection PyBroadException
        try:
            f = open(localjson, 'w')
            f.write(json.dumps(localJsonDigest, sort_keys=True, indent=2))
        except:
            pass
    return localJsonDigest
def readLocalJsonDigest():
    localJsonDigest = {}
    d = findUnsupportedGamesavesDir()
    if d:
        localjson = os.path.join(d, SyncWorker.JSON_INDEX_FILENAME)
        if os.path.isfile(localjson):
            # noinspection PyBroadException
            try:
                localJsonDigest = json.load(file(localjson).read())
            except:
                pass
        if not localJsonDigest:
            return writeLocalJsonDigest()
    return localJsonDigest
def readLocalJsonDigest():
    localJsonDigest = {}
    d = findUnsupportedGamesavesDir()
    if d:
        localjson = os.path.join(d, SyncWorker.JSON_INDEX_FILENAME)
        if os.path.isfile(localjson):
            # noinspection PyBroadException
            try:
                localJsonDigest = json.load(file(localjson).read())
            except:
                pass
        if not localJsonDigest:
            return writeLocalJsonDigest()
    return localJsonDigest
def writeLocalJsonDigest():
    localJsonDigest = {}
    d = findUnsupportedGamesavesDir()
    if d:
        localjson = os.path.join(d, SyncWorker.JSON_INDEX_FILENAME)
        for filename in glob.glob(os.path.join(d, '*.fs')):
            localJsonDigest[os.path.basename(filename)] = sha256digest(
                filename)
        # noinspection PyBroadException
        try:
            f = open(localjson, 'w')
            f.write(json.dumps(localJsonDigest, sort_keys=True, indent=2))
        except:
            pass
    return localJsonDigest
    def download(self):
        d = findUnsupportedGamesavesDir()
        if not d:
            self.sigStatusMessage.emit(
                'Unsupported Savestates Directory is not set')
            self.sigFinished.emit(self.added, self.updated, self.nochange)
            return
        localJsonDigest = readLocalJsonDigest()
        # noinspection PyBroadException
        try:
            # gotta love CPython's GIL, yield thread
            time.sleep(0.05)
            response = urllib2.urlopen(self.SAVESTATES_INDEX_URL, timeout=3)
            games = json.load(response)

            for filename, shahash in games.items():
                if re.search(r'[^ .a-zA-Z0-9_-]', filename):
                    logdebug().error(
                        "Filename {} looks suspicious, ignoring".format(
                            filename))
                    continue
                if filename in localJsonDigest:
                    if localJsonDigest[filename] == shahash:
                        self.nochange += 1
                        continue
                    else:
                        self.updated += 1
                else:
                    self.added += 1
                if not self.checkonly:
                    time.sleep(0.05)
                    localfile = os.path.join(d, filename)
                    fileurl = self.SAVESTATES_GITHUB_BASE_URL + urllib.quote(
                        filename)
                    urllib.urlretrieve(fileurl, localfile)
                    self.sigStatusMessage.emit(
                        'Downloaded {}'.format(localfile))
            if not self.checkonly:
                if not self.added and not self.updated:
                    self.sigStatusMessage.emit('All files are up to date')
                else:
                    writeLocalJsonDigest()
                    self.sigStatusMessage.emit(
                        '{} files are current, added {}, updated {}'.format(
                            self.nochange, self.added, self.updated))
        except Exception, ex:
            logdebug().error(str(ex))
Example #10
0
    def download(self):
        d = findUnsupportedGamesavesDir()
        if not d:
            self.sigStatusMessage.emit('Unsupported Savestates Directory is not set')
            self.sigFinished.emit(self.added, self.updated, self.nochange)
            return
        localJsonDigest = readLocalJsonDigest()
        # noinspection PyBroadException
        try:
            # gotta love CPython's GIL, yield thread
            time.sleep(0.05)
            response = urllib2.urlopen(self.SAVESTATES_INDEX_URL, timeout=3)
            games = json.load(response)

            for filename, shahash in games.items():
                if re.search(r'[^ .a-zA-Z0-9_-]', filename):
                    logger().error("Filename {} looks suspicious, ignoring".format(filename))
                    continue
                if filename in localJsonDigest:
                    if localJsonDigest[filename] == shahash:
                        self.nochange += 1
                        continue
                    else:
                        self.updated += 1
                else:
                    self.added += 1
                if not self.checkonly:
                    time.sleep(0.05)
                    localfile = os.path.join(d, filename)
                    fileurl = self.SAVESTATES_GITHUB_BASE_URL + urllib.quote(filename)
                    urllib.urlretrieve(fileurl, localfile)
                    self.sigStatusMessage.emit('Downloaded {}'.format(localfile))
            if not self.checkonly:
                if not self.added and not self.updated:
                    self.sigStatusMessage.emit('All files are up to date')
                else:
                    writeLocalJsonDigest()
                    self.sigStatusMessage.emit(
                        '{} files are current, added {}, updated {}'.format(
                            self.nochange, self.added, self.updated))
        except Exception, ex:
            logger().error(str(ex))
Example #11
0
 def selectUnsupportedSavestate(self):
     if not self.controller.fba:
         self.onStatusMessage('ggpofba.exe is not set, cannot locate unsupported_ggpo.fs')
         return
     d = findUnsupportedGamesavesDir()
     if not d or not os.path.isdir(d):
         self.onStatusMessage('Unsupported Savestates Directory is not set')
         return
     savestatesDialog = SavestatesDialog()
     if savestatesDialog.exec_():
         fname = savestatesDialog.fsfile
         dst = os.path.join(os.path.dirname(self.controller.fba), 'savestates', 'unsupported_ggpo.fs')
         shutil.copy(fname, dst)
         basefile = os.path.basename(fname)
         basename = os.path.splitext(basefile)[0]
         self.onStatusMessage('Saved {} as unsupported_ggpo.fs'.format(basefile))
         if self.controller.channel == 'unsupported':
             self.controller.setUnsupportedRom('')
             desc = ''
             if basename in allgames:
                 desc = ' {}'.format(allgames[basename][FBA_GAMEDB_DESCRIPTION])
             self.controller.sendChat("* {} switches to [{}]{}".format(self.controller.username, basename, desc))
         self.controller.setUnsupportedRom(basename)