Esempio n. 1
0
def importRegion(region='US', language='en'):
    if not region in Config.regionLanguages(
    ) or language not in Config.regionLanguages()[region]:
        Print.error('Could not locate %s/%s !' % (region, language))
        return False

    for region2 in Config.regionLanguages():
        for language2 in Config.regionLanguages()[region2]:
            for nsuId, regionTitle in Titles.data(region2, language2).items():
                if not regionTitle.id:
                    continue
                title = Titles.get(regionTitle.id, None, None)
                title.importFrom(regionTitle, region2, language2)

    for region2 in Config.regionLanguages():
        for language2 in Config.regionLanguages()[region2]:
            if language2 != language:
                continue
            for nsuId, regionTitle in Titles.data(region2, language2).items():
                if not regionTitle.id:
                    continue
                title = Titles.get(regionTitle.id, None, None)
                title.importFrom(regionTitle, region2, language2)

    for nsuId, regionTitle in Titles.data(region, language).items():
        if not regionTitle.id:
            continue

        title = Titles.get(regionTitle.id, None, None)
        title.importFrom(regionTitle, region, language)

    Titles.loadTxtDatabases()
    Titles.save()
Esempio n. 2
0
def matchDemos():
    for nsuId, rt in Titles.data('US', 'en'):
        if rt.id:
            continue

        for tid, t in Titles.data():
            if rt.name.startsWith(t.name) or (t.name == rt.name
                                              and len(t.name) > 5):
                print(rt.name + ' - ' + t.name)
                break
Esempio n. 3
0
File: nut.py Progetto: blawar/nut
def matchDemos():
    nut.initTitles()
    nut.initFiles()
    orphans = {}

    Titles.loadTxtDatabases()

    for nsuId, titleId in Titles.nsuIdMap.items():
        for region, languages in Config.regionLanguages().items():
            for language in languages:
                if nsuId:
                    title = Titles.get(str(nsuId), region, language)
                    title.id = titleId

    for region, languages in Config.regionLanguages().items():
        for language in languages:
            for nsuId, rt in Titles.data(region, language).items():
                if rt.id:
                    continue
                orphans[nsuId] = rt.name

            Titles.saveRegion(region, language)

    for nsuId, name in orphans.items():
        print(str(nsuId) + '|' + str(name))
Esempio n. 4
0
def updateVersions(force=True):
	initTitles()
	initFiles()

	i = 0
	for k, t in Titles.items():
		if force or t.version is None:
			if (t.isDLC or t.isUpdate or Config.download.base) and (not t.isDLC or Config.download.DLC) and (not t.isDemo or Config.download.demo) and (not t.isUpdate or Config.download.update) and (
					t.key or Config.download.sansTitleKey) and (len(Config.titleWhitelist) == 0 or t.id in Config.titleWhitelist) and t.id not in Config.titleBlacklist:
				v = t.lastestVersion(True)
				Print.info("%s[%s] v = %s" % (str(t.name), str(t.id), str(v)))

				i = i + 1
				if i % 20 == 0:
					Titles.save()

	for t in list(Titles.data().values()):
		if not t.isUpdate and not t.isDLC and t.updateId and t.updateId and not Titles.contains(t.updateId):
			u = Title.Title()
			u.setId(t.updateId)

			if u.lastestVersion():
				Titles.set(t.updateId, u)

				Print.info("%s[%s] FOUND" % (str(t.name), str(u.id)))

				i = i + 1
				if i % 20 == 0:
					Titles.save()

	Titles.save()
Esempio n. 5
0
def importRegion(region='US', language='en', save=True):
	if region not in Config.regionLanguages() or language not in Config.regionLanguages()[region]:
		Print.info('Could not locate %s/%s !' % (region, language))
		return False

	Hook.call("import.pre", region, language)
	regionLanguages = []

	for region2 in Config.regionLanguages():
		for language2 in Config.regionLanguages()[region2]:
			regionLanguages.append(RegionLanguage(region2, language2, region, language))

	for rl in sorted(regionLanguages):
		data = Titles.data(rl.region, rl.language)
		for nsuId in sorted(data.keys(), reverse=True):
			regionTitle = data[nsuId]
			if not regionTitle.id:
				continue

			try:
				for tid in regionTitle.ids:
					title = Titles.get(tid, None, None)
					title.importFrom(regionTitle, rl.region, rl.language, preferredRegion=region, preferredLanguage=language)
			except:
				title = Titles.get(regionTitle.id, None, None)
				title.importFrom(regionTitle, rl.region, rl.language, preferredRegion=region, preferredLanguage=language)

	Titles.loadTxtDatabases()
	Hook.call("import.post", region, language)
	if save:
		Titles.save()
Esempio n. 6
0
def organize():
    nut.initTitles()
    nut.initFiles()

    #scan()
    Print.info('organizing')
    for k, f in Nsps.files.items():
        #print('moving ' + f.path)
        #Print.info(str(f.hasValidTicket) +' = ' + f.path)
        f.move()

    for id, t in Titles.data().items():
        files = t.getFiles()
        if len(files) > 1:
            #Print.info("%d - %s - %s" % (len(files), t.id, t.name))
            latest = t.getLatestFile()

            if not latest:
                continue

            for f in files:
                if f.path != latest.path:
                    f.moveDupe()

    Print.info('removing empty directories')
    Nsps.removeEmptyDir('.', False)
    Nsps.save()
Esempio n. 7
0
    def title(self):
        if not self.titleId:
            raise IOError('NSP no titleId set')

        if self.titleId in Titles.keys():
            return Titles.get(self.titleId)

        t = Title.Title()
        t.setId(self.titleId)
        Titles.data()[self.titleId] = t
        return t
Esempio n. 8
0
def refreshRegions():
    for region in Config.regionLanguages():
        for language in Config.regionLanguages()[region]:
            for i in Titles.data(region, language):
                regionTitle = Titles.data(region, language)[i]

                if regionTitle.id:
                    title = Titles.get(regionTitle.id, None, None)

                    if not hasattr(title, 'regions') or not title.regions:
                        title.regions = []

                    if not hasattr(title, 'languages') or not title.languages:
                        title.languages = []

                    if not region in title.regions:
                        title.regions.append(region)

                    if not language in title.languages:
                        title.languages.append(language)
    Titles.save()
Esempio n. 9
0
def updateVersions(force=True):
    initTitles()
    initFiles()

    i = 0
    for k, t in tqdm(Titles.items()):
        if force or t.version is None:
            if t.isActive():
                v = t.lastestVersion(True)
                Print.info("%s[%s] v = %s" % (str(t.name), str(t.id), str(v)))

    for t in list(Titles.data().values()):
        if not t.isUpdate and not t.isDLC and t.updateId and t.updateId and not Titles.contains(
                t.updateId):
            u = Title.Title()
            u.setId(t.updateId)

            if u.lastestVersion():
                Titles.set(t.updateId, u)

                Print.info("%s[%s] FOUND" % (str(t.name), str(u.id)))

    Titles.save()
Esempio n. 10
0
def scrapeShogunUnnamed():
    initTitles()
    initFiles()

    result = {}

    for k, t in Titles.data().items():
        if not t.isDLC:
            continue

        if not t.name and t.baseId != '0100069000078000':
            result[t.baseId] = True

    if not Config.dryRun:
        for id, j in tqdm(result.items()):
            try:
                for region, languages in Config.regionLanguages().items():
                    for language in languages:
                        t = Titles.getTitleId(id, region, language)

                        if t:
                            s = cdn.Shogun.scrapeTitle(int(t.nsuId),
                                                       region=region,
                                                       language=language,
                                                       force=False)
                            #print(json.dumps(s.__dict__))
            except:
                pass

        for region, languages in Config.regionLanguages().items():
            for language in languages:
                Titles.saveRegion(region, language)

        Titles.save()
    else:
        print(result)
Esempio n. 11
0
def organize():
	initTitles()
	initFiles()

	# scan()
	Print.info('organizing')
	# for k, f in Nsps.files.items():
	#print('moving ' + f.path)
	#Print.info(str(f.hasValidTicket) +' = ' + f.path)
	#	f.move()

	for id, t in Titles.data().items():
		if not t.isActive(True):
			continue

		files = {}
		for f in t.getFiles():
			ext = f.path[-4:]
			if ext not in files:
				files[ext] = []

			files[ext].append(f)

		hasNsp = False

		if '.nsp' in files and len(files['.nsp']) > 0:
			latest = t.getLatestNsp()

			if latest:
				for f in files['.nsp']:
					if f.path != latest.path:
						f.moveDupe()

				hasNsp = True
				latest.move()

		if '.nsz' in files and len(files['.nsz']) > 0:
			latest = t.getLatestNsz()

			if latest:
				for f in files['.nsz']:
					if f.path != latest.path:
						f.moveDupe()

				hasNsp = True
				latest.move()

		if '.nsx' in files and len(files['.nsx']) > 0:
			latest = t.getLatestNsx()

			if latest:
				for f in files['.nsx']:
					if f.path != latest.path:
						f.moveDupe()

				if hasNsp:
					latest.moveDupe()
				else:
					latest.move()

		if '.xci' in files and len(files['.xci']) > 0:
			latest = t.getLatestXci()

			if latest:
				for f in files['.xci']:
					if f.path != latest.path:
						f.moveDupe()

				latest.move()

	Print.info('removing empty directories')
	Nsps.removeEmptyDir('.', False)
	Nsps.save()