software per recuperare la lista giochi di Teknoparrot

Problemi e soluzioni su configurazioni software, firmware
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4747
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

Re: software per recuperare la lista giochi di Teknoparrot

Messaggio da pucci »

Emu ha scritto: 03/12/2022, 19:44
pucci ha scritto: 01/12/2022, 16:51
Emu ha scritto: 22/11/2022, 1:02 Ciao Pucci
Negli ultimi anni ho latitato il forum per motivi personali, ma sperando di non fare un torto a Gothrek ho buttato giù uno script PowerShell che fa i check che hai chiesto, e volendo scarica pure le icone mancanti.
Per eseguirlo devi salvarlo come file di testo ed estensione .PS1, poi modifichi il path del tuo TecnoParrot e dovrrsti essere a posto. In alto ci sono alcune variabili che puoi modificare

[removed]
Spero ti possa essere utile.

Per questo genere di attività preferisco degli script, perchè si possono modificare al volo in caso di qualche aggiornamento, e ti puoi fare script nuovi per esigenze analoghe tra diversi emulatori.

Emu
grazie @Emu!
ci sarebbero alcune cose da perfezionare:
1) andrebbe aggiunta un ultima colonna con il nome "breve" del gioco (in pratica è il nome del file che viene letto), la colonna dovrebbe avere come titolo "FileName"
2) sembra esserci un problema con la colonna "HasIcon" perchè viene impostata a "No" su alcuni giochi che in realtà l'icona ce l'hanno, precisamente questi
GameName IconName
Akai Katana Shin for NESiCAxLive Icons\AkaiKatakanaShinNesica.png
Baseball Heroes 2 Icons\BaseballHeroes.png
Battle Climaxx! Icons\BattleClimax.png
Big Buck Hunter Pro Home Icons\BBHHome.png
Guilty Gear Xrd REV2 Icons\GGXrdREV2.png
Guilty Gear Xrd REV2 (APM3) Icons\GGXrdREV2.png
Harikiri Baseball Icons\Harikiri.png
Horse Riders 2 Icons\HorseRiders.png
Hot Wheels Icons\HotWheels.png
Infinity Blade FX Icons\InfinityBlade.png
Koihime Enbu Icons\KoihimeEnbu.png
Spiderman Icons\Spiderman.png
Super Street Fighter IV: Arcade Edition Icons\StreetFighterIVArcadeEdition.png
Super Street Fighter IV: Arcade Edition (Export) Icons\StreetFighterIVArcadeEditionEXP.png
Under Night In-Birth Exe:Late[st] Icons\UnderNightInBirthLatest.png
Ciao Pucci
Ti allego la versione con la colonna del FileName:

Check-TeknoParrot-Resources_v1.1.ps1

Codice: Seleziona tutto

#############################################################################
### VARIABILI PERSONALIZZABILI ###
#############################################################################

# Specificare di seguito la directory dove si trova TP, terminando la stringa con "\"
$TeknoParrotFolder = "E:\Emulator\Arcade\TeknoParrot\"

# Per abilitare/disabilitare l'esportazione su CSV
$ExportCSV = $true

# Nome file CSV di Export, creato nella directory di TecnoParrot
$CSVExportFile = "GamesList.csv"

# Delimitatore usato nell'esportazione in CSV
$CSVDelim = ";"

# Per abilitare il download delle icone mancanti
$DownloadMissingIcons = $true

#############################################################################
### COSTANTI - NON TOCCARE ###
#############################################################################

# Estensione dei files delle icone
$IconExtension = "png"

# Questo è l'URL base per scaricarsi le icone, se si abilita il download
$IconsBaseURL = "https://raw.githubusercontent.com/teknogods/TeknoParrotUIThumbnails/master/Icons/"

#############################################################################
### MAIN ###
#############################################################################

# Leggo i files XML dei GamesProfiles
Write-Host "Lettura files XML dei GamesProfiles in" $($TeknoParrotFolder + "GameProfiles\") -ForegroundColor Cyan
$GamesProfiles = Get-ChildItem $($TeknoParrotFolder + "GameProfiles\*.xml")

# Creo l'array vuoto di giochi
$Games = @()

# Processo tutti i files della directory GamesProfiles
Write-Host "Processo i files XML dei GamesProfiles..." -ForegroundColor Cyan
foreach ($GameProfile in $GamesProfiles){
    # Leggo il file XML
    [xml]$GP = Get-Content $GameProfile.PSPath

    # Controllo se esiste il file JSON corrispondente al file XML del GP
    $DescriptionFilePath = $TeknoParrotFolder + "Descriptions\" + $GameProfile.BaseName + ".json"
    if (Test-Path $DescriptionFilePath){
        # Leggo il file JSON corrispondente al file XML del GP
        $Json = Get-Content $DescriptionFilePath

        $Description = $JSON | ConvertFrom-Json
    } else {
        Write-Host ""
        Write-Host "ATTENZIONE: File $DescriptionFilePath non presente!" -ForegroundColor Yellow
        $Description = @{
            platform = ""
            release_year = ""
            nvidia = ""
            nvidia_issues = ""
            amd = ""
            amd_issues = ""
            intel = ""
            intel_issues = ""
            general_issues = ""
        }
    }

    # Verifico se c'è il file con l'icona
    if ($GP.GameProfile.IconName.Length -gt 1){
        #$IconFilePath = $TeknoParrotFolder + "Icons\" + $GameProfile.BaseName + "." + $IconExtension
        $IconFilePath = $TeknoParrotFolder + $GP.GameProfile.IconName
        if (Test-Path $IconFilePath){
            $HasIcon = "Yes"
        } else {
            $HasIcon = "No"
            if ($DownloadMissingIcons){
                $IconName = $GP.GameProfile.IconName.Replace("Icons\","")
                Write-Host
                Write-Host "Download icona mancante $IconName" -ForegroundColor Magenta
                $IconURL = $IconsBaseURL + $IconName
                try {
                    $resp = Invoke-WebRequest -Uri $IconURL -UseBasicParsing -OutFile $IconFilePath
                }
                catch {
                    if( $_.Exception.Response.StatusCode.Value__ -eq 200 ) {
                        #Write-Host "Download OK!"-ForegroundColor Green
                    } elseif( $_.Exception.Response.StatusCode.Value__ -eq 404 ) {
                        Write-Host "ERRORE: File non presente all'URL $IconURL"-ForegroundColor Yellow
                    } else {
                        Write-Host "WARNING: Errore download file da verificare manualmente" -ForegroundColor Red
                    }
                }
                if (Test-Path $IconFilePath){
                    $HasIcon = "Yes"
                }
            }
        }
    }

    # Estraggo i campi interessanti e me li salvo in un nuovo oggetto
    $Game = [PSCustomObject][ordered]@{
        FileName = $GameProfile.BaseName

        GameName = $GP.GameProfile.GameName
        GameGenre = $GP.GameProfile.GameGenre
        IconName = $GP.GameProfile.IconName
        EmulationProfile = $GP.GameProfile.EmulationProfile
        GameProfileRevision = $GP.GameProfile.GameProfileRevision
        Is64Bit = $GP.GameProfile.Is64Bit
        EmulatorType = $GP.GameProfile.EmulatorType
        DevOnly = $GP.GameProfile.DevOnly
        Patreon = $GP.GameProfile.Patreon
        ExecutableName = $GP.GameProfile.ExecutableName
        ExecutableName2 = $GP.GameProfile.ExecutableName2
        HasTwoExecutables = $GP.GameProfile.HasTwoExecutables

        platform = $Description.platform
        release_year = $Description.release_year
        nvidia = $Description.nvidia
        nvidia_issues = $Description.nvidia_issues
        amd = $Description.amd
        amd_issues = $Description.amd_issues
        intel = $Description.intel
        intel_issues = $Description.intel_issues
        general_issues = $Description.general_issues

        HasIcon = $HasIcon
    }

    # Aggiungo il record appena creato all'array
    $Games += $Game
    Write-Host "." -NoNewline
}

Write-Host
Write-Host

# Mostro i giochi a schermo
$Games | Out-GridView

# Esporto su CSV
if ($ExportCSV){
    Write-Host "Esportazione elenco giochi in" $($TeknoParrotFolder + $CSVExportFile) -ForegroundColor Cyan
    $Games | Export-Csv $($TeknoParrotFolder + $CSVExportFile) -Delimiter $CSVDelim -NoTypeInformation
}
Per quanto dici sulle icone mancanti, in realtà tutte quelle che hai indicato più anche Rambo a me sono indicate come mancanti, nel senso che NON le ho nella "TeknoParrot\Icons" e non ci sono, almeno con il nome esatto, all'URL https://github.com/teknogods/TeknoParro ... ster/Icons da dove vengono scaricate quelle mancanti (Se attiva l'opzione).

Ho verificato diversi files e posso dirti questo:
  • *Per quanto riguarda Rambo (Che tu però hai), il file indicato nell'XML è "Icons\RAMBO.png" (In maiuscolo) mentre su GitHub si chiama Rambo.png (Con solo la prima lettera minuscola), per questo non riesce a scaricarlo.
    *AkaiKatakanaShinNesica ha un typo nel campo IconName Icons\AkaiKatakanaShinNesica.png, quindi in base al nome del campo effettivamente il file che c'è su GitHub ha un nome differente
    * BaseballHeroes.png, BattleClimax.png, BBHHome.png, GGXrdREV2.png e Spiderman.png su GitHub non ci sono
    * SuperStreetFighterIVArcadeEdition ha come IconName Icons\StreetFighterIVArcadeEdition.png , questo forse è stato rinominato perchè su GitHub il file si chiama SuperStreetFighterIVArcadeEdition.png
Tieni presente che i files localmente sono case insensitive, cioè non distinguono miuscole e maiuscole, mentre per scaricarle da GitHub sono case sensitive, che vuol dire che RAMBO è diverso da Rambo.

Ora non ho tempo di controllarli tutti, ma ti chiedo: se controlli a mano i files che sono nella tua directory Icons, rispetto alla colonna IconName quelli indicati come mancanti ci sono? Da cosa dici che ci sono, hai visto il file o l'icona in TP?

Se effettivamente non hai i file con il nome esatto, visto il numero esiguo di files, io li sistemerei a mano uno per uno, poi rilanci lo script e verifichi se manca ancora qualcosa.

Se può aitare, posso scrivere a schermo l'elenco dei vari files mancanti (JSON e Icone) in due elenchi facilmente fruibili al termine dello script, senza dover aprire il CSV in Excel ed applicare filtri

Emu
si sarebbe utile questa cosa "Se può aitare, posso scrivere a schermo l'elenco dei vari files mancanti (JSON e Icone) in due elenchi facilmente fruibili al termine dello script"

per le icone non è che il tuo script non va a vedere quali icone sono presenti nella cartella Icons ma in realtà controlla solo il nome dell'icona nel file xml dentro la cartella GameProfile? perchè non tutti quei file XML hanno la riga realtiva alle icone
Avatar utente
Emu

Donatore
Affezionato
Affezionato
Messaggi: 264
Iscritto il: 30/11/2014, 13:00
Medaglie: 1
Città: ReggioEmilia

Re: software per recuperare la lista giochi di Teknoparrot

Messaggio da Emu »

pucci ha scritto: 08/12/2022, 11:14
Emu ha scritto: 03/12/2022, 19:44
Per quanto dici sulle icone mancanti, in realtà tutte quelle che hai indicato più anche Rambo a me sono indicate come mancanti, nel senso che NON le ho nella "TeknoParrot\Icons" e non ci sono, almeno con il nome esatto, all'URL https://github.com/teknogods/TeknoParro ... ster/Icons da dove vengono scaricate quelle mancanti (Se attiva l'opzione).

Ho verificato diversi files e posso dirti questo:
  • *Per quanto riguarda Rambo (Che tu però hai), il file indicato nell'XML è "Icons\RAMBO.png" (In maiuscolo) mentre su GitHub si chiama Rambo.png (Con solo la prima lettera minuscola), per questo non riesce a scaricarlo.
    *AkaiKatakanaShinNesica ha un typo nel campo IconName Icons\AkaiKatakanaShinNesica.png, quindi in base al nome del campo effettivamente il file che c'è su GitHub ha un nome differente
    * BaseballHeroes.png, BattleClimax.png, BBHHome.png, GGXrdREV2.png e Spiderman.png su GitHub non ci sono
    * SuperStreetFighterIVArcadeEdition ha come IconName Icons\StreetFighterIVArcadeEdition.png , questo forse è stato rinominato perchè su GitHub il file si chiama SuperStreetFighterIVArcadeEdition.png
Tieni presente che i files localmente sono case insensitive, cioè non distinguono miuscole e maiuscole, mentre per scaricarle da GitHub sono case sensitive, che vuol dire che RAMBO è diverso da Rambo.

Ora non ho tempo di controllarli tutti, ma ti chiedo: se controlli a mano i files che sono nella tua directory Icons, rispetto alla colonna IconName quelli indicati come mancanti ci sono? Da cosa dici che ci sono, hai visto il file o l'icona in TP?

Se effettivamente non hai i file con il nome esatto, visto il numero esiguo di files, io li sistemerei a mano uno per uno, poi rilanci lo script e verifichi se manca ancora qualcosa.

Se può aitare, posso scrivere a schermo l'elenco dei vari files mancanti (JSON e Icone) in due elenchi facilmente fruibili al termine dello script, senza dover aprire il CSV in Excel ed applicare filtri

Emu
si sarebbe utile questa cosa "Se può aitare, posso scrivere a schermo l'elenco dei vari files mancanti (JSON e Icone) in due elenchi facilmente fruibili al termine dello script"

per le icone non è che il tuo script non va a vedere quali icone sono presenti nella cartella Icons ma in realtà controlla solo il nome dell'icona nel file xml dentro la cartella GameProfile? perchè non tutti quei file XML hanno la riga realtiva alle icone
Ciao pucci
Ho fatto alcune modifiche:
1) Aggiunto in fondo l'elenco dei files mancanti
2) Aggiunto in fondo l'elenco dei files extra (Praticamente quelli che non sono referenziati da nessuna parte, quindi non servono o almeno non dovrebbero servire)
3) In caso di files icona mancante, ora se non trova il file con il nome corretto su GitHub, prova a scaricare anche l'icona con il nome del file XML (Poi lo salva con il nome indicato all'interno dell'XML)
4) In caso il file XML non abbia il campo IconName compilato, uso come nome file il nome del file XML (Opzione disattivabile con la variabile $GuessEmptyIcons)

Per quanto riguarda i files icona, ti confermo che verifico se all'interno della directory Icons c'è effettivamente il file indicato nell'XML. E' vero che non tutti hanno il campo compilato, ma quelli non compilati per ora li ignoro.

Ora questi sono i 10 files che a me mancano:
Icons\ActionDeka.png
Icons\BaseballHeroes.png
Icons\BattleClimax.png
Icons\BBHHome.png
Icons\Harikiri.png
Icons\HorseRiders.png
Icons\HotWheels.png
Icons\InfinityBlade.png
Icons\PointBlankX.png
Icons\Spiderman.png

Ma questi giochi non sono presenti neanche qui https://teknogods.github.io/compatibility.html , e nell'XML sono indicati quasi tutti come dev only e patreon. Tu hai qualcuno di questi giochi e funzionano?

Attualmente riesce a scaricare con successo 240 icone su un totale di 257 file XML.
14 giochi, a coppie, hanno la medesima icona (Cioè ad esempio Daytona3 e Daytona3NSE hanno entrambi l'icona Daytona3.png), per cui i files effettivamente mancanti sono i 10 indicati prima.

Come ultima cosa aggiungo che all'URL https://teknogods.github.io/compatibility.html ci sono anche informazioni che forse potrebbero essere utili allo scraper di Gothrek

Ecco l'ultima versione

Check-TeknoParrot-Resources_v1.2.ps1

Codice: Seleziona tutto

#############################################################################
### VARIABILI PERSONALIZZABILI ###
#############################################################################

# Specificare di seguito la directory dove si trova TP, terminando la stringa con "\"
$TeknoParrotFolder = "E:\Emulator\Arcade\TeknoParrot\"

# Per abilitare/disabilitare l'esportazione su CSV
$ExportCSV = $true

# Nome file CSV di Export, creato nella directory di TecnoParrot
$CSVExportFile = "GamesList.csv"

# Delimitatore usato nell'esportazione in CSV
$CSVDelim = ";"

# Per abilitare il download delle icone mancanti
$DownloadMissingIcons = $true

# Per scaricare le icone che non sono valorizzate nei file XML, usando come nome file il nome del file XML stesso
$GuessEmptyIcons = $true

#############################################################################
### COSTANTI - NON TOCCARE ###
#############################################################################

# Estensione dei files delle icone
$IconExtension = "png"

# Questo è l'URL base per scaricarsi le icone, se si abilita il download
$IconsBaseURL = "https://raw.githubusercontent.com/teknogods/TeknoParrotUIThumbnails/master/Icons/"

#############################################################################
### MAIN ###
#############################################################################

# Leggo i files XML dei GamesProfiles
Write-Host "Lettura files XML dei GamesProfiles in" $($TeknoParrotFolder + "GameProfiles\") -ForegroundColor Cyan
$GamesProfiles = Get-ChildItem $($TeknoParrotFolder + "GameProfiles\*.xml")

# Creo l'array vuoto di giochi
$Games = @()

# Creo gli array per l'elenco dei files mancanti JSON ed icone
$MissingJSONs = @()
$MissingIcons = @()

# Processo tutti i files della directory GamesProfiles
Write-Host "Processo i files XML dei GamesProfiles..." -ForegroundColor Cyan
foreach ($GameProfile in $GamesProfiles){
    # Leggo il file XML
    [xml]$GP = Get-Content $GameProfile.PSPath

    # Controllo se esiste il file JSON corrispondente al file XML del GP
    $DescriptionFilePath = $TeknoParrotFolder + "Descriptions\" + $GameProfile.BaseName + ".json"
    if (Test-Path $DescriptionFilePath){
        # Leggo il file JSON corrispondente al file XML del GP
        $Json = Get-Content $DescriptionFilePath

        $Description = $JSON | ConvertFrom-Json
    } else {
        Write-Host ""
        Write-Host "ATTENZIONE: File $DescriptionFilePath non presente!" -ForegroundColor Yellow
        $Description = @{
            platform = ""
            release_year = ""
            nvidia = ""
            nvidia_issues = ""
            amd = ""
            amd_issues = ""
            intel = ""
            intel_issues = ""
            general_issues = ""
        }
        # Aggiungo il file JSON mancante all'elenco dei files JSON MAncanti
        $MissingJSONs += $DescriptionFilePath.Replace($TeknoParrotFolder,"")
    }

    # Verifico se c'è il file con l'icona
    if ($GP.GameProfile.IconName.Length -gt 1){
        #$IconFilePath = $TeknoParrotFolder + "Icons\" + $GameProfile.BaseName + "." + $IconExtension
        $IconFilePath = $TeknoParrotFolder + $GP.GameProfile.IconName
    } else {
        if ($GuessEmptyIcons){
            Write-Host
            Write-Host "Il file XML non ha alcuna indicazione per l'icona del gioco $($GameProfile.BaseName), uso il nome del file XML come nome icona" -ForegroundColor Yellow
            $IconFilePath = $TeknoParrotFolder + "Icons\" + $GameProfile.BaseName + ".png"
        } else {
            $IconFilePath = ""
        }
    }

    if ($IconFilePath.Length -gt 1){
        if (Test-Path $IconFilePath){
            $HasIcon = "Yes"
        } else {
            # Il file non è presente nella sottocartella
            $HasIcon = "No"
            if ($DownloadMissingIcons){
                # Provo a scaricare le icone mancanti dal sito GitHub di TeknoParrot
                $IconName = $IconFilePath.Replace($TeknoParrotFolder + "Icons\","")
                Write-Host
                Write-Host "Download icona mancante $IconName" -ForegroundColor Magenta
                $IconURL = $IconsBaseURL + $IconName
                try {
                    $resp = Invoke-WebRequest -Uri $IconURL -UseBasicParsing -OutFile $IconFilePath
                }
                catch {
                    if( $_.Exception.Response.StatusCode.Value__ -eq 200 ) {
                        #Write-Host "Download OK!"-ForegroundColor Green
                    } elseif( $_.Exception.Response.StatusCode.Value__ -eq 404 ) {
                        Write-Host "ERRORE: File non presente all'URL $IconURL"-ForegroundColor Yellow
                    } else {
                        Write-Host "WARNING: Errore download file da verificare manualmente" -ForegroundColor Red
                    }
                }
                if (Test-Path $IconFilePath){
                    Write-Host "Scaricato con successo il file $IconURL" -ForegroundColor Green
                    $HasIcon = "Yes"
                } else {

                    $OLDIconURL = $IconURL
                    # Provo a scaricare le icone mancanti dal sito GitHub di TeknoParrot, ma usando cone nome file il nome gioco, non il nome indicato nell'XML
                    # Se presente poi lo salvo con il nome indicato nel file XML
                    $IconName = $GameProfile.BaseName + ".png"
                    $IconURL = $IconsBaseURL + $IconName
                    if ($IconURL -cne $OLDIconURL){
                        Write-Host "Il file icona ha un nome diverso dal file XML, provo a scaricare l'icona usando il nome del file XML" -ForegroundColor Yellow
                        try {
                            $resp = Invoke-WebRequest -Uri $IconURL -UseBasicParsing -OutFile $IconFilePath
                        }
                        catch {
                            if( $_.Exception.Response.StatusCode.Value__ -eq 200 ) {
                                #Write-Host "Download OK!"-ForegroundColor Green
                            } elseif( $_.Exception.Response.StatusCode.Value__ -eq 404 ) {
                                Write-Host "ERRORE: File non presente all'URL $IconURL"-ForegroundColor Yellow
                            } else {
                                Write-Host "WARNING: Errore download file da verificare manualmente" -ForegroundColor Red
                            }
                        }
                        if (Test-Path $IconFilePath){
                            Write-Host "Scaricato con successo il file $IconURL" -ForegroundColor Green
                            $HasIcon = "Yes"
                        }
                    }

                }
            }
            # Aggiungo il file PNG dell'icona mancante all'elenco dei files Icona MAncanti
            if ($HasIcon -eq "No"){
                $MissingIcons += $IconFilePath.Replace($TeknoParrotFolder,"")
            }
        }
    }

    # Estraggo i campi interessanti e me li salvo in un nuovo oggetto
    $Game = [PSCustomObject][ordered]@{
        FileName = $GameProfile.BaseName

        GameName = $GP.GameProfile.GameName
        GameGenre = $GP.GameProfile.GameGenre
        IconName = $GP.GameProfile.IconName
        EmulationProfile = $GP.GameProfile.EmulationProfile
        GameProfileRevision = $GP.GameProfile.GameProfileRevision
        Is64Bit = $GP.GameProfile.Is64Bit
        EmulatorType = $GP.GameProfile.EmulatorType
        DevOnly = $GP.GameProfile.DevOnly
        Patreon = $GP.GameProfile.Patreon
        ExecutableName = $GP.GameProfile.ExecutableName
        ExecutableName2 = $GP.GameProfile.ExecutableName2
        HasTwoExecutables = $GP.GameProfile.HasTwoExecutables

        platform = $Description.platform
        release_year = $Description.release_year
        nvidia = $Description.nvidia
        nvidia_issues = $Description.nvidia_issues
        amd = $Description.amd
        amd_issues = $Description.amd_issues
        intel = $Description.intel
        intel_issues = $Description.intel_issues
        general_issues = $Description.general_issues

        HasIcon = $HasIcon
    }

    # Aggiungo il record appena creato all'array
    $Games += $Game
    Write-Host "." -NoNewline
}

# Cerco i files JSON extra
$arrExtraJSONs = @()
$JSONs = Get-ChildItem $($TeknoParrotFolder + "Descriptions\*.json")
foreach ($JsonFile in $JSONs){
    if ($JsonFile.BaseName -notin $GamesProfiles.BaseName){
        $arrExtraJSONs += "Descriptions\" + $JsonFile.Name
    }
}

# Cerco le icone extra
$arrExtraIcons = @()
$Icons = Get-ChildItem $($TeknoParrotFolder + "Icons\*.png")
foreach ($IconFile in $Icons){
    $IconName = "Icons\" + $IconFile.BaseName + ".png"
    if ($IconName -notin $Games.IconName){
        if ($GuessEmptyIcons){
            if ($IconFile.BaseName -notin $GamesProfiles.BaseName){
                $arrExtraIcons += $IconName
            }
        } else {
            $arrExtraIcons += $IconName
        }
    }
}

Write-Host
Write-Host

# Mostro i giochi a schermo
$Games | Out-GridView -Title "TeknoParrot Games"

# Esporto su CSV
if ($ExportCSV){
    Write-Host "Esportazione elenco giochi in" $($TeknoParrotFolder + $CSVExportFile) -ForegroundColor Cyan
    $Games | Export-Csv $($TeknoParrotFolder + $CSVExportFile) -Delimiter $CSVDelim -NoTypeInformation
}

Write-Host
Write-Host "Files JSON non necessari ($($arrExtraJSONs.Count) files):" -ForegroundColor Yellow
$arrExtraJSONs

Write-Host
Write-Host "Files Icona non necessari ($($arrExtraIcons.Count) files):" -ForegroundColor Yellow
$arrExtraIcons


Write-Host
Write-Host "Files JSON MAncanti ($($MissingJSONs.Count) files):" -ForegroundColor Yellow
$MissingJSONs

Write-Host
Write-Host "Files Icona MAncanti  ($($MissingIcons.Count) files) (Files indicati nei file XML di ogni gioco, ma non presenti nella directory Icons):" -ForegroundColor Yellow
$MissingIcons

Emu
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4747
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

Re: software per recuperare la lista giochi di Teknoparrot

Messaggio da pucci »

purtroppo (o per fortuna) gli sviluppatori di TeknoParrotUI hanno fatto alcune modifiche alla schema di archiviazione dei file.
dico purtroppo perchè ora bisognerà fare delle piccole modifiche ai 2 fantastici programmi di questa discussione (@Gothrek @Emu)
dico per fortuna perchè finalmente hanno separato le informazioni tecniche da quelle descrittive del gioco (prima era un gran misto nei vari file) e questo è stato fatto dopo mia segnalazione (nella quale qualche testolina di c...o del loro Discord si divertiva pure a darmi contro: simpatici come un gattino attaccato ai maroni)

questo era il vecchio schema (in rosso ciò che andrà poi eliminato)

sottocartella "GameProfiles" (file XML)
<GameName>
<GameGenre>
<IconName>

<EmulationProfile>
<GameProfileRevision>
<Is64Bit>
<EmulatorType>
<DevOnly>
<Patreon>
<ExecutableName>
<ExecutableName2>
<HasTwoExecutables>

sottocartella "Descriptions" (file JSON)
"platform"
"release_year"
"nvidia"
"nvidia_issues"
"amd"
"amd_issues"
"intel"
"intel_issues"
"general_issues"

questo è il nuovo (in verde ciò che andrà aggiunto)

sottocartella "GameProfiles" (file XML)
<EmulationProfile>
<GameProfileRevision>
<Is64Bit>
<EmulatorType>
<DevOnly>
<Patreon>
<GunGame>
<ValidMd5>

<ExecutableName>
<ExecutableName2>
<HasTwoExecutables>

sottocartella "Metadata" (file JSON)
"game_name"
"game_genre"
"icon_name"

"platform"
"release_year"
"nvidia"
"nvidia_issues"
"amd"
"amd_issues"
"intel"
"intel_issues"
"general_issues"

visto che ci si mette mano, sarebbe possibile ordinare in questo modo l'elenco delle colonne?

[NOME DEL FILE GameProfiles.XML, ES: ArcanaHeart2Nesica.xml --> "ArcanaHeart2Nesica"]
"game_name"
"release_year"
"game_genre"
"platform"
<DevOnly>
<Patreon>
<GunGame>
<ValidMd5>
"icon_name"
<EmulatorType>
<EmulationProfile>
<Is64Bit>
<HasTwoExecutables>
<ExecutableName>
<ExecutableName2>
<GameProfileRevision>
"nvidia"
"nvidia_issues"
"amd"
"amd_issues"
"intel"
"intel_issues"
"general_issues"

NOTA: nel file XML troverete ancora questi TAG <GameName> <GameGenre> <IconName> ma ad oggi non vengono usati e sono stati lasciati solo per motivi di compatibilità con il passato
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4747
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

Re: software per recuperare la lista giochi di Teknoparrot

Messaggio da pucci »

pucci ha scritto: 05/11/2023, 10:26 NOTA: nel file XML troverete ancora questi TAG <GameName> <GameGenre> <IconName> ma ad oggi non vengono usati e sono stati lasciati solo per motivi di compatibilità con il passato
dopo l'ennesima segnalazione oggi hanno tolto questi TAG obsoleti e quando gli ho fatto presente, visto che ci stavano mettendo mano, che c'erano altri TAG da eliminare mi hanno dato una risposta che mi forse faceva riferimento ai vostri 2 utilissimi programmi:


Pucci — Oggi alle 10:32
given the recent changes to the UI, wouldn't it be appropriate to "sanitize" the Gameprofile.xml from the obsolete tags: <GameName> <GameGenre> <IconName> ?


PockyWitch — Oggi alle 11:00
changed


Pucci — Oggi alle 15:10
great!

perhaps it would also be an opportunity to sanitize other useless TAGS:
<Patreon>false</Patreon>
<DevOnly>false</DevOnly>


PockyWitch — Oggi alle 15:10
no
it's time to stop writing weird scrapers for the gameprofiles, or handle them properly
:)


Pucci — Oggi alle 15:17
I apologize but I didn't understand this answer


00C0FFEE — Oggi alle 16:44
These tags are not useless btw


Pucci — Oggi alle 19:06
ok, to understand how they work: why aren't they useless?
<Patreon>false</Patreon> is the same as no <Patreon> element
<DevOnly>false</DevOnly> is the same as no <DevOnly> element
Avatar utente
Gothrek
Moderatore
Moderatore
Messaggi: 4831
Iscritto il: 13/07/2017, 13:30
Città: Roma
Grazie Inviati: 17 volte
Grazie Ricevuti: 271 volte

Re: software per recuperare la lista giochi di Teknoparrot

Messaggio da Gothrek »

il tuo nuovo programma, di fatto è questo stesso con i campi per la spunta!!

Quindi ben vengano queste modifiche cosi che in un colpo solo consegno entrambi :D
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4747
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

Re: software per recuperare la lista giochi di Teknoparrot

Messaggio da pucci »

Gothrek ha scritto: 05/11/2023, 21:41 il tuo nuovo programma, di fatto è questo stesso con i campi per la spunta!!
in realtà Dat Workshop legge gli elementi MACHINE o GAME di un dat, mentre questo legge vari elementi XML e JSON da diversi file di un unico emulatore
Avatar utente
Gothrek
Moderatore
Moderatore
Messaggi: 4831
Iscritto il: 13/07/2017, 13:30
Città: Roma
Grazie Inviati: 17 volte
Grazie Ricevuti: 271 volte

Re: software per recuperare la lista giochi di Teknoparrot

Messaggio da Gothrek »

pucci ha scritto: 05/11/2023, 21:44
Gothrek ha scritto: 05/11/2023, 21:41 il tuo nuovo programma, di fatto è questo stesso con i campi per la spunta!!
in realtà Dat Workshop legge gli elementi MACHINE o GAME di un dat, mentre questo legge vari elementi XML e JSON da diversi file di un unico emulatore
si sono file diversi ovviamente ma li riconcilia con le eventuali info degli altri nel caso ci fossero, farai prima a vederlo che io a spiegarlo.
Avatar utente
Gothrek
Moderatore
Moderatore
Messaggi: 4831
Iscritto il: 13/07/2017, 13:30
Città: Roma
Grazie Inviati: 17 volte
Grazie Ricevuti: 271 volte

Re: software per recuperare la lista giochi di Teknoparrot

Messaggio da Gothrek »

@pucci
tu hai un nuovo zipponme da condividere per verificare il funzionamento?

Lato codice il mio è tutto autoreferenziante, quindi non avrei modifiche da fare, semplicemente troverà i nuovi campi e li metterà in tabella, volevo cmq fare un test.
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4747
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

Re: software per recuperare la lista giochi di Teknoparrot

Messaggio da pucci »

https://github.com/teknogods/TeknoParro ... master.zip

i file sono nelle cartelle:

TeknoParrotUi.Common/GameProfiles
TeknoParrotUi.Common/Metadata
Avatar utente
Gothrek
Moderatore
Moderatore
Messaggi: 4831
Iscritto il: 13/07/2017, 13:30
Città: Roma
Grazie Inviati: 17 volte
Grazie Ricevuti: 271 volte

Re: software per recuperare la lista giochi di Teknoparrot

Messaggio da Gothrek »

Rieccoci qui, questo fine settimana ti ho dedicato qualche ora :D

Changelog:
- Aggiunta compatibilità col nuovo formato xml mantenendo il vecchio
- Aggiunta possibilità di visualizza/modificare/spostare colonne a piacemento (dovrebbero restare salvate quando si esce dall'app)
2_ccolumns.png
- Se all'interno della struttura dei dati ' presente la cartella "Dats", ne chiede eventuale importazione
1_loadingdat.png
- Se la struttura del dat prevede nel campo "Name" il nome del gioco (e non la descrizione come nell'esempio che mi avevi fornito), associerà i dati di descrizione aggiungendoli ai presenti
2_loadingdat.png
- Aggiunta la possibilità di spuntare i giochi sulle righe per effettuare l'export in dat/xml
4_check.png
- Ora col bottone export verranno esportati automaticamente sia il csv che il dat (se ha dati spuntati). I dati saranno presenti nella solita cartella dei log.
5_export.png
6_exportfile.png
Questa la release per testarla.
GoThrEKnoList.zip
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Rispondi

Torna a “Miscellanea software”