Ejemplo n.º 1
0
    def ParseRomDetailsXml(self, romName, text):

        xmlDocument = minidom.parseString(text)
        if self.TestXmlDocumentErrorStatus(xmlDocument) == False:
            raise Exception("Invalid response for get rom details XML")

        #print "XML: " + text

        gameTagResultList = xmlDocument.getElementsByTagName("results")

        if len(gameTagResultList) == 0:
            raise Exception("Could not find result for rom")
        if len(gameTagResultList) > 1:
            raise Exception("Unexpected number of results for rom")

        gameTag = gameTagResultList[0]

        romDict = {}

        #romDict[ 'name' ] = XmlHelper.FindFirstDataInXmlTagList( gameTag, 'name' )
        romDict['description'] = XmlHelper.FindFirstDataInXmlTagList(
            gameTag, 'deck')
        romDict['giantBombRomId'] = XmlHelper.FindFirstDataInXmlTagList(
            gameTag, 'id')

        # string is provided in ISO standard format anyway so can be stored in DB like that
        romDict['releaseDate'] = XmlHelper.FindFirstDataInXmlTagList(
            gameTag, 'original_release_date')

        # similar games are map of { 'giantBombRomId', 'name' }
        romDict['similarGames'] = self.ParseSimilarGamesData(
            XmlHelper.FindFirstChildNodeByTagName(gameTag, 'similar_games'))

        romDict['developers'] = self.ParseDeveloperData(
            XmlHelper.FindFirstChildNodeByTagName(gameTag, 'developers'),
            'company')
        romDict['publishers'] = self.ParseDeveloperData(
            XmlHelper.FindFirstChildNodeByTagName(gameTag, 'publishers'),
            'publisher')
        romDict['genres'] = self.ParseDeveloperData(
            XmlHelper.FindFirstChildNodeByTagName(gameTag, 'genres'), 'genre')

        imageNode = XmlHelper.FindFirstChildNodeByTagName(gameTag, 'image')
        if imageNode is not None:
            self.SaveImageToRomCache(
                Config.config.GetRomsImageCachePath(romName), romName,
                imageNode)

        return romDict
Ejemplo n.º 2
0
    def ParseGenreDetailsXml(self, text):

        xmlDocument = minidom.parseString(text)
        if self.TestXmlDocumentErrorStatus(xmlDocument) == False:
            raise Exception("Invalid response for get genre details XML")

#		print "XML: " + text

        gameTagResultList = xmlDocument.getElementsByTagName("results")

        if len(gameTagResultList) == 0:
            raise Exception("Could not find result for genre")
        if len(gameTagResultList) > 1:
            raise Exception("Unexpected number of results for genre")

        gameTag = gameTagResultList[0]

        romDict = {}

        romDict['name'] = XmlHelper.FindFirstDataInXmlTagList(gameTag, 'name')
        romDict['description'] = XmlHelper.FindFirstDataInXmlTagList(
            gameTag, 'deck')
        romDict['giantBombId'] = XmlHelper.FindFirstDataInXmlTagList(
            gameTag, 'id')

        imageNode = XmlHelper.FindFirstChildNodeByTagName(gameTag, 'image')
        if imageNode is not None:
            self.SaveImageToRomCache(
                Config.config.GetGenresImageCachePath(romDict['name']),
                romDict['name'], imageNode)

        return romDict
Ejemplo n.º 3
0
    def ParseSearchXml(self, text, giantBombPlatformId):

        xmlDocument = minidom.parseString(text)
        if self.TestXmlDocumentErrorStatus(xmlDocument) == False:
            raise Exception("Invalid response for search XML")

        gameTagResultList = xmlDocument.getElementsByTagName("game")

        #		print "ROM SEARCH TEXT: " + text

        resultDictList = []
        for gameTag in gameTagResultList:
            romDict = {}

            romDict['giantBombRomId'] = XmlHelper.FindFirstDataInXmlTagList(
                gameTag, 'id')
            romDict['name'] = XmlHelper.FindFirstDataInXmlTagList(
                gameTag, 'name')
            romDict['aliases'] = XmlHelper.FindFirstDataInXmlTagList(
                gameTag, 'aliases')
            platformList = XmlHelper.FindFirstChildNodeByTagName(
                gameTag, 'platforms')
            if platformList != None:
                romDict['platforms'] = FormatPlatformsData(platformList)
            romDict[
                'giantBombApiDetailsUrl'] = XmlHelper.FindFirstDataInXmlTagList(
                    gameTag, 'api_detail_url')

            # filter by giantBombPlatformId (can't do this directly in the url search string)
            foundPlatformId = False
            if len(giantBombPlatformId) > 0:
                for platform in romDict['platforms']:
                    #					print "Platform: " + platform[ 'name' ]
                    if int(platform['giantBombPlatformId']) == int(
                            giantBombPlatformId):
                        foundPlatformId = True
                        break
            else:
                foundPlatformId = True

            if foundPlatformId == True:
                resultDictList.append(romDict)

        return resultDictList
Ejemplo n.º 4
0
    def Init(self, resourcesPath):

        self.resourcesPath = resourcesPath
        self.configFilePath = os.path.join(resourcesPath, 'config.xml')

        try:
            if (os.path.isfile(self.configFilePath)):
                dom = parse(self.configFilePath)

                rootNode = XmlHelper.FindFirstChildNodeByTagName(dom, 'config')

                displayNodeList = XmlHelper.FindChildNodesByTagName(
                    rootNode, 'display')
                if len(displayNodeList) > 0:
                    displayNode = displayNodeList[0]
                    try:
                        self.RomItemCount = int(
                            displayNode.getAttribute('romItemCount'))
                    except:
                        pass

                dateTimeNodeList = XmlHelper.FindChildNodesByTagName(
                    rootNode, 'datetime')
                if len(dateTimeNodeList) > 0:
                    dateTimeNode = dateTimeNodeList[0]
                    self.dateFormatString = dateTimeNode.getAttribute('format')

                scraperNodeList = XmlHelper.FindChildNodesByTagName(
                    rootNode, 'scraper')
                if len(scraperNodeList) > 0:
                    scraperNode = scraperNodeList[0]
                    self.scaperType = scraperNode.getAttribute('type')
                    self.scaperImageQuality = scraperNode.getAttribute(
                        'imageQuality')
                    self.scraperCacheDirectory = scraperNode.getAttribute(
                        'cacheDirectory')

                launcherNodeList = XmlHelper.FindChildNodesByTagName(
                    rootNode, 'ziptool')
                if len(launcherNodeList) > 0:
                    launcherNode = launcherNodeList[0]
                    self.zipToolPath = launcherNode.getAttribute('path')
                    self.zipToolArgs = launcherNode.getAttribute('args')

                # read in supported platforms
                emulatorNodeList = XmlHelper.FindChildNodesByTagName(
                    rootNode, 'emulator')

                for emulatorNode in emulatorNodeList:
                    name = emulatorNode.getAttribute('name')
                    romsPath = emulatorNode.getAttribute('romsPath')
                    romFilter = emulatorNode.getAttribute('romFilter')
                    exe_file = emulatorNode.getAttribute('exe_file')
                    exe_args = emulatorNode.getAttribute('exe_args')
                    giantBombPlatformId = emulatorNode.getAttribute(
                        'giantBombPlatformId')

                    emuMap = {
                        "name": name,
                        "romsPath": romsPath,
                        "romFilter": romFilter,
                        "exe_file": exe_file,
                        "exe_args": exe_args,
                        "giantBombPlatformId": giantBombPlatformId
                    }
                    self.emulatorTypeMap.append(emuMap)
        except:
            pass

        if len(self.scraperCacheDirectory) == 0:
            self.scraperCacheDirectory = os.path.join(resourcesPath, 'cache')