• 1
  • 8
  • 9
  • 10(current)
  • 11
  • 12
  • 25
Advanced Kodi Launcher - Game and Emulators frontend for Kodi
(2023-01-23, 04:46)rmtonin Wrote: Hello, thanks for the awesome plugin.

I'm a bit confused, I have installed the Arctic Zephyr Reloaded skin but I'm getting only list and thumbnail views. Am I doing something wrong?
This might be because you opened up AKL from program addons instead from Games. Perhaps you need to add a menu link to Games through the skin settings. If done or already there, then when opening up the Games section you will have the option to go to 'Game add-ons'. There it should show AKL. If you open up AKL like this, then you should be able to choose more Views.
Reply
hi @chrisism ,

regarding 1)
skin issue is really not a problem, it was just for info, do not worry about it...

regarding 2)
this is a link to the gamelist.xml
link
i didn't modify the frontend parameters so Skyscraper should have used the standard output suitable for EmulationStation
i saw that with Skyscraper i could change the output to better fit to a different frontend, but i have not played with it (Skyscraper Frontend)

my coding skills are limited, but if you want i could try to see if i can generate a bash script that takes the above gamelist and converts it into something that is ok for AKL (i never used xml as output, i would feel more comfortable with json... but i could try ;-) no promises though...)
can you maybe give me an example of the nfo structure that needs to be respected?

thanks a lot

M
Reply
(2023-01-23, 12:43)mcarni Wrote: hi @chrisism ,

regarding 1)
skin issue is really not a problem, it was just for info, do not worry about it...

regarding 2)
this is a link to the gamelist.xml
link
i didn't modify the frontend parameters so Skyscraper should have used the standard output suitable for EmulationStation
i saw that with Skyscraper i could change the output to better fit to a different frontend, but i have not played with it (Skyscraper Frontend)

my coding skills are limited, but if you want i could try to see if i can generate a bash script that takes the above gamelist and converts it into something that is ok for AKL (i never used xml as output, i would feel more comfortable with json... but i could try ;-) no promises though...)
can you maybe give me an example of the nfo structure that needs to be respected?

thanks a lot

M

For the asset directories you can have a look at https://github.com/chrisism/plugin.progr...KINNING.md
For a NFO file example check: https://github.com/chrisism/plugin.progr..._mario.nfo
Do mind it is limited.
Reply
UPDATE: Release 1.3.0

Version 1.3.0 of AKL has been released and is now available on the stable repository.
Changelog:
  • Added new 'View ROM' details page. 
  • Updated dependencies.
  • Separated overwriting of existing metadata and assets with scraping.
  • Fixes for deleting categories.
  • Small database fixes.

The View Rom page can be the default action when you execute a library item (ROM/Game). Alternative option is directly launching the specific title. You can change between the two in the addon settings. After switching you will need to rebuild your views to apply the change.
Reply
i put together a little bash script that takes a gamelist.xml (at the moment it is hardcoded but i can make it accept different input files...)

basically it goes through the file, saves the different xml tags into variables and uses these variable to generate 1 nfo file per game (i didn't know if we needed 1 big nfo file or 1 per game...)

i was also not sure of what to do with asset labels, do i need a second nfo file to collect this info?
for the moment the script is outputting only some of the metadata labels...

I guess i could generate 2 folders, one with all metadata nfo files and one with all labels

it is for sure ugly, inefficient, just an attempt i wanted to try.
please feel free to take a look and comment:

edited 20230124 - moved comments out of echo loop
bash:
#! /bin/bash

# for the moment we hardcode the name of the gamelist
#gameList=$PWD"testGamelist.xml"
gameList="testGamelist.xml";

# Skyscraper standard output fields, initialise them as empty arrays
declare -a path;
declare -a name;
declare -a thumbnail;
declare -a image;
declare -a marquee;
declare -a video;
declare -a rating;
declare -a desc;
declare -a releasedate;
declare -a developer;
declare -a publisher;
declare -a genre;
declare -a players;
declare -a kidgame;

# based on https://stackoverflow.com/questions/8935...ml-in-bash
# let's define a function that will parse the xml file and
# assign ENTITY and CONTENT to anything between > and <
# i.e. in <tag>value</tag> --> ENTITY=tag and CONTENT=value
read_dom () {
    local IFS=\>
    read -d \< ENTITY CONTENT
}


while read_dom; do
    case "$ENTITY" in
        "path")         path+=("$CONTENT") ;;
        "name")         name+=("$CONTENT") ;;
        "thumbnail")    thumbnail+=("$CONTENT") ;;
        "image")        image+=("$CONTENT") ;;
        "marquee")      marquee+=("$CONTENT") ;;
        "video")        video+=("$CONTENT") ;;
        "rating")       rating+=("$CONTENT") ;;
        "desc")         desc+=("$CONTENT") ;;
        "releasedate")  releasedate+=("$CONTENT") ;;
        "developer")    developer+=("$CONTENT") ;;
        "publisher")    publisher+=("$CONTENT") ;;
        "genre")        genre+=("$CONTENT") ;;
        "players")      players+=("$CONTENT") ;;
        "kidsgame")     kidsgame+=("$CONTENT") ;;
    esac
done < $gameList

gameQty=${#path[@]};
echo "processed gamelist contains: ""$gameQty"" game(s)"

# change from full release date (in the original xml) to only year (as in the .nfo file)
declare -a year;
for (( i=0 ; i<=($gameQty-1) ; i++ )); do
    temp=${releasedate[$i]};
    year=${temp:0:4};
done
# something similar needs to be done for the rating...
# not sure if skyscraper uses x/10 or /20 or whatever


# this is currently using the structure of the dr_mario.nfo example, can be suited to what is needed

# implement some checks not to overwrite existing files
# if "${name[$i]}".nfo already exists (2 game with the same name) don't overwrite them

# maybe get the platform from the folder location i.e. atari2600/roms --> platform = atari2600

# marquees saved under clearlogos?
# image (screenshot) saved under fanart?
# better change the asset location in AKL ?

for (( i=0 ; i<=($gameQty-1) ; i++ )); do
    echo "game"$(($i+1))": "${name[$i]}" generating nfo file";
    echo "<?xml version="'"1.0"'" encoding="'"utf-8"'" standalone="'"yes"?>' $'\n'\
'<game>' $'\n'\
  '<title>'"${name[$i]}"'</title>' $'\n'\
  '<year>'"${year[$i]}"'</year>' $'\n'\
  '<genre>'"${genre[$i]}"'</genre>' $'\n'\
  '<publisher>'"${publisher[$i]}"'</publisher>' $'\n'\
  '<rating>'"${rating[$i]}"'</rating>' $'\n'\
  '<plot>'"${desc[$i]}"'</plot>' $'\n'\
'</game>' $'\n'\
> "${name[$i]}".nfo
done

i don't mind working a bit more on it if it can be of help

thanks a lot

m
Reply
@chrisism ,

just a quick message to let you know that the script worked...
i am amazed it did, but it actually worked...
i took the generated nfo files and moved them where the roms are ( can make this automatic... shouldn't be difficult)
then asked AKL to scan local file and by magic atari2600 roms have some metadata
for the moment I have:   <title>; <year>; <genre>; <publisher>; <rating>; <plot>

I need to convert ratings from whatever format screensaver is using to AKL standard

and I need to understand how to do the same with assets.
(i probably need also to understand what is what, skyscraper uses covers, marquees, screenshots and wheels...)
but if all fails i can always point AKL to the right folder

anyway, that's it for this quick update

thanks a lot for your work

m
Reply
(2023-01-26, 13:20)mcarni Wrote: @chrisism ,

just a quick message to let you know that the script worked...
i am amazed it did, but it actually worked...
i took the generated nfo files and moved them where the roms are ( can make this automatic... shouldn't be difficult)
then asked AKL to scan local file and by magic atari2600 roms have some metadata
for the moment I have:   <title>; <year>; <genre>; <publisher>; <rating>; <plot>

I need to convert ratings from whatever format screensaver is using to AKL standard

and I need to understand how to do the same with assets.
(i probably need also to understand what is what, skyscraper uses covers, marquees, screenshots and wheels...)
but if all fails i can always point AKL to the right folder

anyway, that's it for this quick update

thanks a lot for your work

m
Good work, nice to see. 
I will see if I can do something for it from within AKL, in the mean time they can use your script.
Reply
(2023-01-23, 11:44)chrisism Wrote:
(2023-01-21, 14:25)Juppstein Wrote:  
And with existing games it did get and download the files etc?
Can you try again with both AKL and MobyGames plugin set on Debug level? Then share the logs again with me. Double check the logs to see if now it is still the HTTP 401 issue or simply not finding the game at MobyGames. Sometimes it is strict with the search input. I haven't encountered this before and I am not aware of maybe some special permissions settings at MobyGames. In the past I have encountered this when I didnt enter my API key completely, missed out a '='. Sensitive data can be shared through private message of course, but the logs itself should be clean.

Not sure if you did something in a recent update but the error message is gone now when scraping with MobyGames. Looking at the log it just says that it did not find a match.So now when I try to scrape a new game it will always fail to find a match without a message or a comment from the scraper. Not sure if MobyGames is extra picky there or whatever. What I have to do then is go to Edit ROM and then select either Edit Metadata or Edit Assets and try to scrape from there. Then the scraper will give me a form where I can edit the search term for MobyGames. Given a good name it will find the game and then will ask for the different entries if there are multiple files, in the case for assets, for it.  Same for metadata. The tedious part here is that you basically have to scrape a game twice before a data set is complete. Would be more convenient if there would be a separate search where you can alter the search terms before the search is triggered. If someone has a few hundred games to scrape like that, the above method would take quite the time to complete.

Edit: Oh, and is there a setting that would allow deleting an entry from the database, including the actual game files on disk?
AMD Ryzen 7 7800X3D | AsRock B650I | Geforce RTX 4070 
Ubuntu 24.04 LTS | Kernel 6.10 | Nvidia blob drivers | Kodi v22
Reply
Wink 
Thanks a lot for your support! I'll try this workaround. Thanks!
Reply
@chrisism  and guys,

in case it can be of some help, i can bring some feedback on my script to parse xml gamelist and AKL in general.

I stumbled upon a couple of cases where my script would struggle.
I guess this was mainly when in the name or in the path of the games there were special characters like *./|\ etc...
I tried to fight this but in the end i changed strategy and followed what one of the guys on the original SO thread said:
Quote:"Just because you can write your own parser, doesn't mean you should. – Stephen Niedzielski"

So I installed xmlstarlet and rewrote my script so that it uses xmlstartlet instead of trying to read the xml gamelist with IFS and read.

I tested it with atari2600, atari 5200, megadrive, gameboy (original + color + advance), nes, snes, nintendo 64, mame and fba and it works.
Generating nfo files became much slower but it works definitvely better, if anyone want to take a look you can find it here

thanks a lot to @chrisism , the addon works very well.
I have an issue only with c64, for some reason it cannot scan existing roms. (d64 files)
I says critical error and it stops, it is quite peculiar since it seems to me that i have done exactly the same that I have done for the other roms...

I also noticed that on my raspberrypi the scraping of my local nfo files failed for some platforms.
I could not find any special difference with the other platforms where it worked, apart from being the platforms with the highest quantity of roms (mame, nes etc)
So i proceeded to split the roms in 2 (in order to have approx. max. 2000 roms per folder) and after that the scraping worked fine.
I am not sure if this is a limitation of the raspberrypi or of the addon, anyhow i thought it might have helped to highlight it.

thanks a lot

M
Reply
Hello.  I'm trying to setup AKL to launch standalone games from within Kodi.  That is, launching native Linux games directly from Kodi/AKL, not running various ROMs and whatnot through an emulator.  If I understand correctly, I should be able to add a standalone game by select "Add new ROM (Standalone)", selecting Yes to the file based question (?? not actually sure of this step), then selecting the executable and giving it a name.  When I do that, though, I get an error message.  This is what shows up in the log:
 
Code:
2023-02-11 22:29:59.561 T:2488     INFO <general>: [plugin.program.akl] resources.lib.repositories: Inserting new ROM 'ChainedEchoes'
2023-02-11 22:29:59.562 T:2488    ERROR <general>: [plugin.program.akl] resources.lib.repositories: type: <class 'AttributeError'> value: module 'resources.lib.queries' has no attribute 'INSERT_ROM_IN_ROOTCATEGORY'
2023-02-11 22:29:59.563 T:2488    FATAL <general>: [plugin.program.akl] resources.lib.commands.mediator: Failure processing command "ADD_STANDALONE_ROM"
                                                   Traceback (most recent call last):
                                                     File "/home/media/.kodi/addons/plugin.program.akl/resources/lib/commands/mediator.py", line 34, in sync_cmd
                                                       return a_command(args)
                                                     File "/home/media/.kodi/addons/plugin.program.akl/resources/lib/commands/rom_commands.py", line 711, in cmd_add_rom
                                                       category_repository.add_rom_to_category(parent_category.get_id(), rom_obj.get_id())
                                                     File "/home/media/.kodi/addons/plugin.program.akl/resources/lib/repositories.py", line 576, in add_rom_to_category
                                                       self._uow.execute(qry.INSERT_ROM_IN_ROOTCATEGORY, rom_id)
                                                   AttributeError: module 'resources.lib.queries' has no attribute 'INSERT_ROM_IN_ROOTCATEGORY'

I don't know what to do about that missing attribute error.  Seems like either I'm missing some dependency or possibly running into a bug.  or completely failing to understand how to add a standalone launcher.  Any suggestions on how to resolve?  This is with AKL 1.3.0 on Kodi 19.5.  The only additional AKL package I have installed is the default plugins, version 1.0.2.

Thanks.
Reply
Hi, I'm setting up a new kodi instance running version 20 (Nexus). In the past I have used advanced emulator launcher for games and browsers but being that there isn't a release for the latest version of Kodi I've decided to try AKL.

Today I have managed to setup all my games to run with the Arctic Zephyr reloaded skin and the retroplayer emulator which I am happy to report all works well. However when trying to launch the firefox browser to a specific website I am at a bit of a loss.

How does one setup a launcher to acheive this? I am sure it is the Rom Collection (standalone option) but I can't work it out. Once upon a time I used to create a shortcut file to the browsers .exe file then include the url in the shortcuts target and then link AEL to that file.
Reply
(2023-02-12, 07:20)ippytick Wrote: Hi, I'm setting up a new kodi instance running version 20 (Nexus). In the past I have used advanced emulator launcher for games and browsers but being that there isn't a release for the latest version of Kodi I've decided to try AKL.

Today I have managed to setup all my games to run with the Arctic Zephyr reloaded skin and the retroplayer emulator which I am happy to report all works well. However when trying to launch the firefox browser to a specific website I am at a bit of a loss.

How does one setup a launcher to acheive this? I am sure it is the Rom Collection (standalone option) but I can't work it out. Once upon a time I used to create a shortcut file to the browsers .exe file then include the url in the shortcuts target and then link AEL to that file.
Ok I was an idiot but I’ve worked it out now. To start firefox at a particular website I had to
  1. Add new ROM (Standalone)
  2. Select the appropriate category
  3. Answer “No” to is it a file based ROM/executable
  4. Write the name for the launcher “Firefox”
  5. Go into the context menu of the newly created launcher
  6. Edit ROM
  7. Add new launcher to ROM
  8. Select Application launcher
  9. Find and select the firefox.exe
  10. In the Application arguments enter the website I wanted firefox to open to “www.example.com”
  11. Edit metadata/assets as appropriate

I must say I really love AKL it seems to work better than AEL just had to get used to the few differences.

I do have a couple more questions though that I can’t seem to find a solution too.

Firstly, whenever I run a game or application several notifications for Advanced Kodi Launcher popup in the right hand side of the screen e.g Rendering virtual collection, most played ROMS views reached, most played ROMS view rendered, etc. Is there a way to hide these notifications?

Secondly, when I go to AKL settings > Display > Special Categories/Launchers > and toggle the hide option for any of the Favorites, ROM Collections, Browse by, etc. an error appears after I rebuild the views and AKL immediately crashes. WhenI try to open it again it displays an error everytime I try, the error displayed is “Failed to execute route or command”. The only way I can fix this error is to uninstall the addon and reinstall it again.
Reply
(2023-02-03, 10:15)Juppstein Wrote:
(2023-01-23, 11:44)chrisism Wrote:
(2023-01-21, 14:25)Juppstein Wrote:  
And with existing games it did get and download the files etc?
Can you try again with both AKL and MobyGames plugin set on Debug level? Then share the logs again with me. Double check the logs to see if now it is still the HTTP 401 issue or simply not finding the game at MobyGames. Sometimes it is strict with the search input. I haven't encountered this before and I am not aware of maybe some special permissions settings at MobyGames. In the past I have encountered this when I didnt enter my API key completely, missed out a '='. Sensitive data can be shared through private message of course, but the logs itself should be clean.

Not sure if you did something in a recent update but the error message is gone now when scraping with MobyGames. Looking at the log it just says that it did not find a match.So now when I try to scrape a new game it will always fail to find a match without a message or a comment from the scraper. Not sure if MobyGames is extra picky there or whatever. What I have to do then is go to Edit ROM and then select either Edit Metadata or Edit Assets and try to scrape from there. Then the scraper will give me a form where I can edit the search term for MobyGames. Given a good name it will find the game and then will ask for the different entries if there are multiple files, in the case for assets, for it.  Same for metadata. The tedious part here is that you basically have to scrape a game twice before a data set is complete. Would be more convenient if there would be a separate search where you can alter the search terms before the search is triggered. If someone has a few hundred games to scrape like that, the above method would take quite the time to complete.

Edit: Oh, and is there a setting that would allow deleting an entry from the database, including the actual game files on disk?
Yes I know, indeed MobyGames is picky and wants to have an exact name. In general I use MobyGames more as an extra step to make everything perfect. Actually, because of MobyGames I added the option to alter the search input when scraping. I have to think about how to add that option when you are scraping a whole collection. You don't want to be spammed with constant dialogs to enter the title. One way would be by only asking it if the scraper doesn't find results. One thing to take in consideration is that it might take a lot of the request credits / throttling for those websites. 
Will be looking at it.

And no, there is no direct connection between deleting entries from the database and on disk. I want to be very careful with that because I don't want to be responsible for deleting somebody's complete ROM collection. So I am not planning to implement that. However, I have been busy a little bit with creating reports about files that are missing or not connected and deleting redundant artwork. Check the 'Utilities' menu option. It is still a bit work-in-progress.
Reply
(2023-02-07, 20:06)mcarni Wrote: @chrisism  and guys,

in case it can be of some help, i can bring some feedback on my script to parse xml gamelist and AKL in general.

I stumbled upon a couple of cases where my script would struggle.
I guess this was mainly when in the name or in the path of the games there were special characters like *./|\ etc...
I tried to fight this but in the end i changed strategy and followed what one of the guys on the original SO thread said:
Quote:"Just because you can write your own parser, doesn't mean you should. – Stephen Niedzielski"

So I installed xmlstarlet and rewrote my script so that it uses xmlstartlet instead of trying to read the xml gamelist with IFS and read.

I tested it with atari2600, atari 5200, megadrive, gameboy (original + color + advance), nes, snes, nintendo 64, mame and fba and it works.
Generating nfo files became much slower but it works definitvely better, if anyone want to take a look you can find it here

thanks a lot to @chrisism , the addon works very well.
I have an issue only with c64, for some reason it cannot scan existing roms. (d64 files)
I says critical error and it stops, it is quite peculiar since it seems to me that i have done exactly the same that I have done for the other roms...

I also noticed that on my raspberrypi the scraping of my local nfo files failed for some platforms.
I could not find any special difference with the other platforms where it worked, apart from being the platforms with the highest quantity of roms (mame, nes etc)
So i proceeded to split the roms in 2 (in order to have approx. max. 2000 roms per folder) and after that the scraping worked fine.
I am not sure if this is a limitation of the raspberrypi or of the addon, anyhow i thought it might have helped to highlight it.

thanks a lot

M
Don't forget to share logs when you encounter issues with the addon. That can help in finding the solutions. It might be some memory limitations the script is hitting and have to be a little bit more aware of.
Another tip about setting up things correctly and getting the right info, is to read up about it in the AEL thread on this forum. Since AKL is simply an enhanced version of AEL many of the basic principles that apply to AEL also apply to AKL.
Reply
  • 1
  • 8
  • 9
  • 10(current)
  • 11
  • 12
  • 25

Logout Mark Read Team Forum Stats Members Help
Advanced Kodi Launcher - Game and Emulators frontend for Kodi0
This forum uses Lukasz Tkacz MyBB addons.