[WS] Metal Archives

Thanks @anton , Iโ€™m gonna check it tomorrow and Iโ€™ll let you know how it works :slight_smile:

PS: btw, itโ€™s necesary to run both scripts everytime is needed to?

Hey, good day/night

With latest changes that I made, you just need to run the setup once, and then just use run every time that you need to use the proxy.

Previous issues were tied to how one of the components was being configured and used in setup and run (respectively), so recent changes were aimed to fix that

Nonetheless, please let me know if you have any issues.

Regards.

Hi @anton, tomorrow Iโ€™ll be testing the scripts, Iโ€™ve been dealing with a massive crash and data loss in my computer (corrupted HDD :confused: ). Best regards!

Oh no! Thatโ€™s awful mate :frowning: Iโ€™m so sorry, and hope that you can recover most, if not all of lost data.

1 Like

Luckily, I could fully recover all my data, only the OS partition was damaged so it was a close call. Anyway, Iโ€™ll have to buy an SSD to upgrade my 10-year HDD hahaha

I tried the new script, but it gave me this error:

I tried both with VPN and without VPN, and the result it was the same. Any clue?

Best regards.

A very close one indeedโ€ฆ I know that youโ€™ve upgraded your old HDD (and almost as old as a couple that I have since at least 2007 / 2012 lol), but maybe you would like to consider get a 2nd HDD/SSD for your data (or backup). That strategy has saved me a couple of times heh

Ok, letโ€™s go to the topic at hand

QQ: When running the proxy does it show a message that says:

Proxy MA with Playwright available at http://localhost:5000

or

Success! Preload completed in XXX seconds (XXX can be any number)?

I saw that message a couple of times when I ran MP3Tag and proxy wasnโ€™t working (by whatever reason).

Hi again! Well, I made my tests. Using the cmd file the script finally worked, for some reason the python file it didnโ€™t for me, but anyway:

โ€œSearch by bandโ€, โ€œSearch by albumโ€ and โ€œSearch band + albumโ€ scripts gave this error:

If this was reported earlier by you, my bad, it didnโ€™t know.

In the other hand, the remaining scripts are working smooth and fine.

For me, this is a banger!

PS: is it a way for โ€œcustomizeโ€ the script like the old one using the "setโ€ command like?

I detected a bug: the function โ€œThis album on The metal archivesโ€ it redirects to a different page:

Hi,

Let me go issue by issue:

These are the โ€œproxyโ€ versions (that have โ€œ(Proxy)โ€ on their name), or the regular ones?

Could you please expand more about these? I am not quite following you at the moment (I blame how my day was at office lol).

Ah, the proxy version gave that error. At least for me, only 2 scripts are working.

The second issue, is just a recalling with a function present in the code of the older scripts, when you write SET โ€œfieldโ€ to let out from the query that field. But Iโ€™ve digging in the code, and well, the same result it can achieved with deleting the โ€œunwantedโ€ fields for the user.

The third issue is the link in the lower left aside with the โ€œUtilsโ€ button: in the older script, that link redirects directly into the page album in MA; in the new script, it shows a page like the one I sent early in the screenshot.

Thatโ€™s for the moment.

Ah, one more thing, the new script it doesnโ€™t call a list with all the versions of the release, like the old โ€œSearch by band + album (advanced)โ€ and โ€œSearch by band + album (advanced by format)โ€, maybe in a future release it can be added?

Thatโ€™s for now, if I find something else, Iโ€™ll report it. And congratulations again, youโ€™ve made a great work with this upgraded version of an nearly 20-years script :saluting_face:

Weird, Iโ€™ll check if not today, before Saturday (long weekend for me and Iโ€™ll be offline).

Maybe I am wrong, but I believe that maybe youโ€™re thinking on โ€œoutputto" and "sayrest" functions, as "SET" is/was only used while getting the Disc Number. Those are also used on Proxy versions, although logic if quite different with code in-between those two (thanks to JSON).

Ok, you got me with that one lol

Being honest, in all those years using MP3Tag (you can see when my first post here was, and go back a year or so lol) Iโ€™ve never noticed, nor used that link :sweat_smile:

But yeah, as far as I can tell, that link uses the source from where the data is coming from, and considering that data is coming from Proxy, thatโ€™s what is being shown.

Honestly, I donโ€™t know if that can be changed/configured, but I could take a look at it.

Thatโ€™s something that Iโ€™ve in my mind/my goals since the beginning, but I want to make sure that current implementation works as expected before going into that task - specially since advanced search works a little bit different than the regular search.

Moreover, next weeks will be very annoying due to โ€œend of yearโ€ activities on my workplace, as well holidays and what not, so I canโ€™t compromise with having those scripts doneโ€ฆ Yetโ€ฆ Nonetheless, once I figure out whatโ€™s going on with your case Iโ€™ll take a look at โ€œadvanced searchโ€ scripts whenever I have a chance.

Thank you for the kind words, although I like to think that it has been a team effort (starting with dano, and including all of you) :slight_smile: nonetheless, I appreciate your words :smiley:

2 Likes

I have created an extension to the Metal Archives web source to capture artist genres, along with some additional artist data.

The original script retrieves data from the album page, which prevents it from fetching the band's genre. This script scrapes the artist page directly to capture the genre along with other specific band details.

Captured Metadata

The following data points are scraped and saved to their own custom metadata fields:

  • METAL ARCHIVES GENRE

  • METAL ARCHIVES FORMED IN

  • METAL ARCHIVES STATUS

  • METAL ARCHIVES LOCATION

  • METAL ARCHIVES COUNTRY

  • METAL ARCHIVES THEMES

  • METAL ARCHIVES BAND URL

Configurable Settings

The script includes a built-in settings page to adjust the output format:

  • Keep era descriptions: Toggle historical era brackets in the genre list (e.g., '(early)', '(mid)').

  • Deduplicate genre list: Toggle the removal of repeating genres.

  • Genre Separator: Select the character used to separate multiple genres (Options: ; , /, /, , , \\).

  • Write dedicated band tags: Toggle writing the band info to the specific custom fields listed above.

  • Write band info to Comment tag: Toggle writing the Country, Location, Status, Formed In, and Themes directly into the standard Comment field.

  • Custom Genre Replacements
    The script code includes a CUSTOM GENRE REPLACEMENTS section. The current replacements reflect my personal tagging preferences. You can add, edit, or remove these lines to match your own standards using the format replace "Original Text" "Replacement Text".

Let me know if anyone is interested in testing this or integrating it into the main script.

Script - Metallum Genres#S - Metallum Genres.src

#                                โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
#โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค     W E B  S O U R C E    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
#โ”‚                               โ•ฐโ”€โ”€โ”€โ•ฎ   โ€ขโ”€โ”€โ”€โ”€ ๎ฉฆ  โ”€โ”€โ”€โ”€โ€ข  โ•ญโ”€โ”€โ”€โ•ฏ                               โ”‚
#โ”‚        โ€ขโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ€ขโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ€ขโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ€ข  โ”‚    M P 3 T A G    โ”‚  โ€ขโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ€ขโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ€ขโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ€ข        โ”‚
#โ”‚                                   โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ                                   โ”‚
#โ”‚                                                                                           โ”‚
#โ”‚           โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•—     โ–ˆโ–ˆโ•—     โ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ–ˆโ•—        โ”‚
#โ”‚           โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ•šโ•โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ•‘        โ”‚
#โ”‚           โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—     โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•‘        โ”‚
#โ”‚           โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•     โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘        โ”‚
#โ”‚           โ–ˆโ–ˆโ•‘ โ•šโ•โ• โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘ โ•šโ•โ• โ–ˆโ–ˆโ•‘        โ”‚
#โ”‚           โ•šโ•โ•     โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•   โ•šโ•โ•   โ•šโ•โ•  โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•     โ•šโ•โ•        โ”‚
#โ”‚                    โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—                     โ”‚
#โ”‚                   โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ• โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•                     โ”‚
#โ”‚                   โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—                     โ”‚
#โ”‚                   โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•  โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ•  โ•šโ•โ•โ•โ•โ–ˆโ–ˆโ•‘                     โ”‚
#โ”‚                   โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘ โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘                     โ”‚
#โ”‚                    โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ•  โ•šโ•โ•โ•โ•โ•šโ•โ•  โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•                     โ”‚
#โ”‚                                                                                           โ”‚
#โ”‚                            https://github.com/deathrashed/mp3tag                          โ”‚
#โ”‚                                                                                           โ”‚
#โ”‚                   Native Metal Archives genre tagging script for Mp3tag                   โ”‚
#โ”‚    โ€ขโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ€ข    โ”‚
#โ”‚     custom replacements โ€ข deduplication โ€ข era descriptions โ€ข band info โ€ข comment tags     โ”‚
#โ”‚                                                                                           โ”‚
#โ”‚                                 โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ                                โ”‚
#โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค L A S T  U P D A T E D โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
#                                  โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โšกโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
#                                        July 18, 2026

# Mp3tag Web Source for Metal Archives band genres.
# Uses Metal Archives directly; no local server required.

[Name]=Metallum Genres
[BasedOn]=www.metal-archives.com
[IndexUrl]=https://www.metal-archives.com/search/ajax-band-search/?field=name&query=%s
[AlbumUrl]=
[WordSeperator]=+
[IndexFormat]=%_url%|%Artist%|%Genre%|%Metal Archives Country%
[SearchBy]=%artist%
[Encoding]=utf-8
[Settings]=Metallum Genres#Settingsโ€ฆ.settings

#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
#  INDEX PARSER
#   - Searches Metal Archives for bands matching the artist name.
#   - Returns: Band URL, Artist, Genre, Country
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
[ParserScriptIndex]=...
findline "<a href=\\\""
do
    # Band URL
    findinline "<a href=\\\""
    sayuntil "\\\""
    say "|"

    # Artist
    findinline "\\\">"
    sayuntil "<"
    say "|"

    # Genre
    moveline 1
    replace "\"" ""
    replace "," ""
    IfVar "keepEraDescriptions" "false"
        regexpreplace "\s*\([^)]*\)" ""
    EndIf
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
# ๎ซ“ CUSTOM GENRE REPLACEMENTS
#   - Customize genre mappings by adding, editing, or removing "replace" lines below.
#   - Format: replace "Original Text" "Replacement Text"
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
    replace "Progressive Death/Thrash Metal" "Progressive Death/Thrash; Progressive Metal; Death Metal; Thrash Metal"
    replace "Blackened Death/Thrash Metal" "Blackened Death/Thrash; Black Metal; Death Metal; Thrash Metal"
    replace "Death/Thrash Metal" "Death/Thrash; Death Metal; Thrash Metal"
    replace "Thrash/Death Metal" "Thrash/Death; Thrash Metal; Death Metal"
    replace "Black/Death Metal" "Black/Death; Black Metal; Death Metal"
    replace "Death/Black Metal" "Death/Black; Death Metal; Black Metal"
    replace "Black/Thrash Metal" "Black/Thrash; Black Metal; Thrash Metal"
    replace "Thrash/Black Metal" "Thrash/Black; Thrash Metal; Black Metal"
    replace "Death/Doom Metal" "Death/Doom; Death Metal; Doom Metal"
    replace "Doom/Death Metal" "Doom/Death; Doom Metal; Death Metal"
    replace "Death/Grind Metal" "Deathgrind; Death Metal; Grindcore"
    replace "Death/Grind" "Deathgrind; Death Metal; Grindcore"
    replace "Grind/Death Metal" "Deathgrind; Grindcore; Death Metal"
    replace "Grind/Death" "Deathgrind; Grindcore; Death Metal"
    replace "Death Metal/Grindcore" "Deathgrind; Death Metal; Grindcore"
    replace "Grindcore/Death Metal" "Deathgrind; Grindcore; Death Metal"
    replace "Death/Hardcore" "Deathcore; Death Metal; Hardcore"
    replace "Black/Grind" "Blackgrind; Black Metal; Grindcore"
    replace "Heavy/Power Metal" "Heavy Metal; Power Metal"
    replace "Power/Heavy Metal" "Power Metal; Heavy Metal"
    replace "Heavy/Thrash Metal" "Heavy Metal; Thrash Metal"
    replace "Thrash/Heavy Metal" "Thrash Metal; Heavy Metal"
    replace "Speed/Thrash Metal" "Speed Metal; Thrash Metal"
    replace "Thrash/Speed Metal" "Thrash Metal; Speed Metal"
    replace "Raw Black Metal" "Black Metal"
    replace "Epic Doom Metal" "Doom Metal"
    replace "Avant-Garde" "Avantgarde"
    replace "/" "; "
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
#  GENRE PROCESSING & DEDUPLICATION
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
    IfVar "deduplicateGenres" "true"
        regexpreplace "(?i)\b([^;]+);\s*\1\b" "$1"
        regexpreplace "(?i)\b([^;]+);\s*([^;]+(;\s*[^;]+)*);\s*\1\b" "$1; $2"
        regexpreplace "(?i)\b([^;]+);\s*\1\b" "$1"
        regexpreplace "(?i)\b([^;]+);\s*([^;]+(;\s*[^;]+)*);\s*\1\b" "$1; $2"
        regexpreplace "^\s*;\s*|\s*;\s*$" ""
        regexpreplace "\s*;\s*" "; "
    EndIf
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
#  GENRE SEPARATOR
#   - Controls how multiple genres are joined in the output field.
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
    IfVar "genreSeparator" "/"
        replace "; " "/"
    EndIf
    IfVar "genreSeparator" " / "
        replace "; " " / "
    EndIf
    IfVar "genreSeparator" ", "
        replace "; " ", "
    EndIf
    IfVar "genreSeparator" "\\"
        replace "; " "\\"
    EndIf
    sayrest
    say "|"

    # Country
    moveline 1
    replace "\"" ""
    replace "," ""
    sayrest
    saynewline

    findline "<a href=\\\"" 1 1
    unspace
while "\"<a href" 500

#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
#  ALBUM PARSER
#   - Fetches the full band page for a selected result.
#   - Returns: Artist, Genre, Composer, dedicated tags, Comment, Publisher
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
[ParserScriptAlbum]=...
findline "id=\"band_stats\""

#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
#  ARTIST
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
outputto "Artist"
gotoline 1
findline "<h1 class=\"band_name\">"
regexpreplace "<[^>]+>" ""
sayrest

#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
#  GENRE
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
outputto "Genre"
findline "<dt>Genre:</dt>"
moveline 1 1
regexpreplace "<[^>]+>" ""
IfVar "keepEraDescriptions" "false"
    regexpreplace "\s*\([^)]*\)" ""
EndIf
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
#  CUSTOM GENRE REPLACEMENTS
#   - Customize genre mappings by adding, editing, or removing "replace" lines below.
#   - Format: replace "Original Text" "Replacement Text"
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
replace "Progressive Death/Thrash Metal" "Progressive Death/Thrash; Progressive Metal; Death Metal; Thrash Metal"
replace "Blackened Death/Thrash Metal" "Blackened Death/Thrash; Black Metal; Death Metal; Thrash Metal"
replace "Death/Thrash Metal" "Death/Thrash; Death Metal; Thrash Metal"
replace "Thrash/Death Metal" "Thrash/Death; Thrash Metal; Death Metal"
replace "Black/Death Metal" "Black/Death; Black Metal; Death Metal"
replace "Death/Black Metal" "Death/Black; Death Metal; Black Metal"
replace "Black/Thrash Metal" "Black/Thrash; Black Metal; Thrash Metal"
replace "Thrash/Black Metal" "Thrash/Black; Thrash Metal; Black Metal"
replace "Death/Doom Metal" "Death/Doom; Death Metal; Doom Metal"
replace "Doom/Death Metal" "Doom/Death; Doom Metal; Death Metal"
replace "Death/Grind Metal" "Deathgrind; Death Metal; Grindcore"
replace "Death/Grind" "Deathgrind; Death Metal; Grindcore"
replace "Grind/Death Metal" "Deathgrind; Grindcore; Death Metal"
replace "Grind/Death" "Deathgrind; Grindcore; Death Metal"
replace "Death Metal/Grindcore" "Deathgrind; Death Metal; Grindcore"
replace "Grindcore/Death Metal" "Deathgrind; Grindcore; Death Metal"
replace "Death/Hardcore" "Deathcore; Death Metal; Hardcore"
replace "Black/Grind" "Blackgrind; Black Metal; Grindcore"
replace "Heavy/Power Metal" "Heavy Metal; Power Metal"
replace "Power/Heavy Metal" "Power Metal; Heavy Metal"
replace "Heavy/Thrash Metal" "Heavy Metal; Thrash Metal"
replace "Thrash/Heavy Metal" "Thrash Metal; Heavy Metal"
replace "Speed/Thrash Metal" "Speed Metal; Thrash Metal"
replace "Thrash/Speed Metal" "Thrash Metal; Speed Metal"
replace "Raw Black Metal" "Black Metal"
replace "Epic Doom Metal" "Doom Metal"
replace "Avant-Garde" "Avantgarde"
replace "/" "; "
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
#  GENRE PROCESSING & DEDUPLICATION
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
regexpreplace "\s*;\s*" "; "
IfVar "deduplicateGenres" "true"
    regexpreplace "(?i)\b([^;]+);\s*\1\b" "$1"
    regexpreplace "(?i)\b([^;]+);\s*([^;]+(;\s*[^;]+)*);\s*\1\b" "$1; $2"
    regexpreplace "(?i)\b([^;]+);\s*\1\b" "$1"
    regexpreplace "(?i)\b([^;]+);\s*([^;]+(;\s*[^;]+)*);\s*\1\b" "$1; $2"
    regexpreplace "^\s*;\s*|\s*;\s*$" ""
    regexpreplace "\s*;\s*" "; "
EndIf
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
#  GENRE SEPARATOR
#   - Controls how multiple genres are joined in the output field.
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
IfVar "genreSeparator" "/"
    replace "; " "/"
EndIf
IfVar "genreSeparator" " / "
    replace "; " " / "
EndIf
IfVar "genreSeparator" ", "
    replace "; " ", "
EndIf
IfVar "genreSeparator" "\\"
    replace "; " "\\"
EndIf
sayrest

#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
#  COMPOSER  (current lineup)
#   - Writes "Name - Role" pairs separated by semicolons.
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
# Current lineup -> Composer
outputto "Composer"
gotoline 1
findline "id=\"band_tab_members_current\"" 1 1
if "id=\"band_tab_members_current\""
    findline "class=\"lineupRow\"" 1 1
    do
        findline "class=\"bold\"" 1 1
        regexpreplace "<[^>]+>" ""
        regexpreplace "\s+" " "
        sayrest
        say " - "
        findline "<td>" 1 1
        moveline 1 1
        replace "&nbsp;" " "
        regexpreplace "<[^>]+>" ""
        regexpreplace "\s+" " "
        sayrest
        findline "class=\"lineupRow\"" 1 1
        if "class=\"lineupRow\""
            say "; "
        endif
    while "class=\"lineupRow\"" 20
endif

#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
#  DEDICATED TAGS  (Country, Location, Status, Formed, Themes, Band URL)
#   - Toggle with "Write dedicated Metal Archives tags" in Settings.
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
IfVar "writeDedicatedTags" "true"
    # Country
    outputto "Metal Archives Country"
    gotoline 1
    findline "<dt>Country of origin:</dt>"
    moveline 1 1
    regexpreplace "<[^>]+>" ""
    sayrest

    # Location
    outputto "Metal Archives Location"
    gotoline 1
    findline "<dt>Location:</dt>"
    moveline 1 1
    regexpreplace "<[^>]+>" ""
    sayrest

    # Status
    outputto "Metal Archives Status"
    gotoline 1
    findline "<dt>Status:</dt>"
    moveline 1 1
    regexpreplace "<[^>]+>" ""
    sayrest

    # Formed in
    outputto "Metal Archives Formed"
    gotoline 1
    findline "<dt>Formed in:</dt>"
    moveline 1 1
    regexpreplace "<[^>]+>" ""
    sayrest

    # Themes
    outputto "Metal Archives Themes"
    gotoline 1
    findline "<dt>Themes:</dt>"
    moveline 1 1
    regexpreplace "<[^>]+>" ""
    sayrest

    # Band URL
    outputto "METAL ARCHIVES BAND URL"
    sayoutput "CurrentUrl"
EndIf

#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
#  COMMENT FIELD
#   - Toggle with "Write band info to Comment tag" in Settings.
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
IfVar "writeCommentField" "true"
    outputto "Comment"
    gotoline 1
    findline "<dt>Country of origin:</dt>"
    moveline 1 1
    regexpreplace "<[^>]+>" ""
    say "Country: "
    sayrest
    saynewline

    findline "<dt>Location:</dt>"
    moveline 1 1
    regexpreplace "<[^>]+>" ""
    say "Location: "
    sayrest
    saynewline

    findline "<dt>Status:</dt>"
    moveline 1 1
    regexpreplace "<[^>]+>" ""
    say "Status: "
    sayrest
    saynewline

    findline "<dt>Formed in:</dt>"
    moveline 1 1
    regexpreplace "<[^>]+>" ""
    say "Formed in: "
    sayrest
    saynewline

    findline "<dt>Themes:</dt>"
    moveline 1 1
    regexpreplace "<[^>]+>" ""
    say "Themes: "
    sayrest
    saynewline

    say "Metal Archives Band URL: "
    sayoutput "CurrentUrl"
EndIf

#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
#  PUBLISHER  (record label โ€” always written)
#โ€ขโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ€ข
# Publisher (always write, standard tag)
outputto "Publisher"
gotoline 1
findline "label:</dt>"
moveline 1 1
regexpreplace "<[^>]+>" ""
sayrest

Settings - Metallum Genres#Settingsโ€ฆ.settings

{
  "key": "metallumgenres",
  "title": "Metallum Genres Settings",
  "settings": [
    {
      "type": "bool",
      "key": "keepEraDescriptions",
      "title": "Keep era descriptions (e.g. '(early)', '(mid)')",
      "description": "If enabled, historical era brackets will be preserved in the genre list.",
      "default": false
    },
    {
      "type": "bool",
      "key": "deduplicateGenres",
      "title": "Deduplicate genre list",
      "description": "Remove repeating genres from the list.",
      "default": true
    },
    {
      "type": "string",
      "key": "genreSeparator",
      "title": "Genre Separator",
      "description": "Character used to separate multiple genres.",
      "choices": [
        "; ",
        "/",
        " / ",
        ", ",
        "\\\\"
      ],
      "default": "; "
    },
    {
      "type": "bool",
      "key": "writeCommentField",
      "title": "Write band info to Comment tag",
      "description": "Write Country, Location, Status, Formed In, and Themes into the Comment field.",
      "default": true
    },
    {
      "type": "bool",
      "key": "writeDedicatedTags",
      "title": "Write dedicated band tags",
      "description": "Write Country, Location, Status, Formed In, and Themes into separate tags.",
      "default": true
    }
  ]
}

2 Likes

Hi!

Let me say that this is awesome! It's impressive and I really love how you structured/developed it.

I'll give a try, and specially I'll take a deep dive into the settings file as it is something that I am still don't know how it works.

That being said, life has been kinda unforgiving in the last year, so I don't think that I'll get back to you soon enough (maybe next week or so), but be sure that I'll come back with some doubts lol.

Once again that's a impressive piece of work, hats off, and thank you so much for such contribution to the community.

Best regards!

EDIT: Forgot to mention but I REALLY, REALLY LOVE the ASCII ART on it, it brings memories back from my learning days on MS-DOS

2 Likes