Commit graph

492 commits

Author SHA1 Message Date
4604aae270 renamed "multiplayer_use_default_track_if" to "multiplayer_disable_if" 2022-07-21 16:02:42 +02:00
2bb04dd97c added a point that could help for track file format that could have the same name but with a suffix 2022-07-21 15:53:36 +02:00
66ced040d7 implemented "multiplayer_use_default_track_if" 2022-07-21 15:07:11 +02:00
c5e254cc7d rearranged operators because some couldn't be accessed otherwise 2022-07-21 14:06:32 +02:00
15d84f757c simplified safe_eval by removing extra_token_map because env do the same thing but better and by making patch.safe_eval more similar to the normal safe_eval 2022-07-21 01:24:24 +02:00
448170dad9 simplified cat_data to use list instead of dict 2022-07-21 00:33:38 +02:00
150f0d6e60 added FormatOriginalTrackLayer, allowing for patching originals tracks name like the custom tracks (with tags name, ...) 2022-07-20 23:47:28 +02:00
1d88f89f3d patch_data have been renamed cat_data and can both patch and filters a bmg file 2022-07-20 23:27:02 +02:00
5d448369ee added color to prefix and suffix 2022-07-20 12:19:35 +02:00
aa6eeb2e49 implemented MKWColor for easier naming of BMG color 2022-07-20 10:30:37 +02:00
9a97453a20 added a todo 2022-07-20 10:30:03 +02:00
19ded49c27 added type hint for pycharm 2022-07-19 22:36:25 +02:00
8d30d1238a added CTFileLayer (allow for patching a bmg file with the ctfile with all the tracks name) 2022-07-19 18:23:41 +02:00
47f191c9be moved isinstance and issubclass to the start of operator because they were being overwritten "by" is and "in" 2022-07-19 18:14:57 +02:00
5207e18928 get_ctfile now have a template option for the track name 2022-07-19 15:39:55 +02:00
db87f6cdd7 added LECODE patching (the installer can now output a working game) 2022-07-19 13:42:49 +02:00
ea35b09f44 implemented patch function in lec 2022-07-18 23:58:39 +02:00
92ea7be730 normalizing tracks now use threads 2022-07-18 23:16:50 +02:00
39bd521511 threaded decorator now return the thread 2022-07-18 19:51:20 +02:00
186aa55f4a custom tracks are now converted into szs in the cache 2022-07-18 19:11:11 +02:00
63cbe06bf3 original tracks are now moved to original-tracks in the .cache 2022-07-18 13:18:18 +02:00
8d0544a084 in order to stay constitent with the operation style, bmg-edit have been splitted into bmg-decode, bmg-encode and bmgtxt-edit. This will also allow more possibility. 2022-07-16 22:48:17 +02:00
43018abdca fixed an issue where a .d directory in a Patch would not get his .szs equivalent extracted if the subfile where all at the root level (causing an issue with the MKWF Font patch) 2022-07-16 22:17:56 +02:00
f8c04f62a4 renamed event to plugins 2022-07-16 21:43:18 +02:00
4ede6f0b6b renamed img-generator to img-edit, split PatchOperation.py into a whole module 2022-07-16 01:18:58 +02:00
de52540735 added overwrite mode for PatchFile (write only if already existing) and shortened the writing code to the write_patch function 2022-07-16 00:01:15 +02:00
04268a17a1 added seek(0) before writing a PatchFile 2022-07-15 20:25:04 +02:00
7463e9f10b fixed an issue where 2 lines of wiimm's tools where getting into the file content data 2022-07-15 17:25:22 +02:00
e87f3dacef ct_icons was generated horizontally instead of vertically 2022-07-15 17:24:34 +02:00
d7a8e3c40b changed stderr from PIPE to DEVNULL (debug data was getting written to stdout) 2022-07-15 16:42:28 +02:00
22adc6e29e removed a TODO 2022-07-15 16:41:52 +02:00
db9d32a450 removed useless condition where .exe was added to the tools_path if it was a windows system 2022-07-15 16:41:42 +02:00
5aeb864ef7 added a TODO about using regex to speed up the patch of bmg-edit 2022-07-15 00:31:28 +02:00
06a557dac7 removed unused argument documentation 2022-07-15 00:30:22 +02:00
4d071e190f extracted szs directory will now be repacked into szs files 2022-07-15 00:28:04 +02:00
7f5e709aec started implementing main.dol and StaticR.rel patching 2022-07-15 00:05:54 +02:00
ea79f49121 set stderr to subprocess.PIPE to hide it from the shell 2022-07-14 22:26:07 +02:00
1881d579c9 removed unused import 2022-07-14 22:13:16 +02:00
ebb74a61df implemented decode_data in img (tpl -> png) and added img-decode operation (useful if a texture modification need the original game image as a base) 2022-07-14 18:30:06 +02:00
5ddae33393 added main.dol patch for lecode, and optionnally region, server url and section (cheat code) 2022-07-14 17:06:59 +02:00
ce30419f8c added patch_data to str.py, allowing for main.dol modification 2022-07-14 16:41:05 +02:00
f11c8a5de2 added rename operation 2022-07-14 16:15:41 +02:00
ea4a1d293e fixed an issue where ImageFont couldn't read directly from a Path object, and set CT_ICON_SIZE constant to 128 instead of hardcoding 128 2022-07-14 15:49:03 +02:00
2f71615ef3 removed a already implemented example and a todo 2022-07-14 15:48:06 +02:00
fbdd207c52 added special operation, allowing for replacing a file_content with a precalculated file, useful for ct_icons.tpl for example 2022-07-14 15:47:35 +02:00
cab9b7745d added bmg regex operation support + decoding and encoding are now only done at the start and end of a whole operation instead at every Layer 2022-07-12 22:42:41 +02:00
efd314fb9a patch.multiple_safe_eval and patch.safe_eval are now the safe function with a multiple parameter 2022-07-12 20:57:11 +02:00
4c1c8833b1 moved multiple safe eval from Track.py to safe_eval.py 2022-07-12 20:56:20 +02:00
cb38bf3ae5 Patch.safe_eval now have a env parameter where any variable can be used for the safe_eval 2022-07-12 20:31:47 +02:00
cb069fe240 safe_eval now has mod_config in the environnement 2022-07-12 20:02:03 +02:00
cf0f61d8ee implemented bmg patch operation by id 2022-07-11 23:46:48 +02:00
823dc4cc44 implemented decode_data, encode_data and patch_data 2022-07-11 23:09:04 +02:00
d9ec57a04c compacted _tools_run, _tools_run_popen and _tools_run_dict by creating a get function returning the shortcut function for every module from the tools_path 2022-07-11 00:16:03 +02:00
804c9f38f6 removed the need of temporary file by using stdin as input data 2022-07-10 23:56:57 +02:00
d456430714 made universal_newlines parameter in _run_popen optional 2022-07-10 23:56:10 +02:00
4cb2aa7379 added stdin support to _run_popen 2022-07-10 23:36:50 +02:00
803e9603e7 moved _run, _run_popen and _run_dict out of the class to make _tools_run, _tools_run_popen and _tools_run_dict for the whole module 2022-07-10 23:32:58 +02:00
69aa29c630 fixed untouched patched file content being erased if the mode was set to "edit" 2022-07-10 22:54:26 +02:00
e403d1dce1 added Layer, AbstractLayer, IDLayer and RegexLayer for bmg patch operation (unimplemented) 2022-07-09 23:08:08 +02:00
dde5a134a5 preparing bmg patch 2022-07-09 22:09:07 +02:00
093319eece fixed the ImageLayer Operation that was not pasting the image of top of the other correctly 2022-07-07 23:35:44 +02:00
6831b18c0a fixed image patch operation of type "image" that would not affect the final image 2022-07-05 23:25:42 +02:00
ca833eca2a fixed img-generate in the Patch and some other minor issue 2022-07-05 22:34:10 +02:00
90ab49aa29 splitted Patch.py into a package 2022-07-04 22:51:40 +02:00
cd064556b0 the file were not seeked to 0 after writing, causing a file set on match mode to only copy the first matched file, and then write empty file on the others 2022-07-03 23:45:06 +02:00
3eef32e202 bad stream were returned by the patch method 2022-07-03 23:34:07 +02:00
1cade9fa6f fixed ImageGenerator (ImageFont not imported, missing image variable in a method call) 2022-07-03 23:29:13 +02:00
d509567848 match type operation where not copied to the correct path 2022-07-03 23:27:40 +02:00
32dcefefc9 removed some match that return a subclass by a for loop on all the subclasses, checking for a property named type instead. 2022-07-02 11:14:39 +02:00
81c8ee18cd directory-archive are no longer represented by .szs directory in the patch but by .d directory for code simplicity. szs extraction are now implemented 2022-06-29 19:43:09 +02:00
40de14d201 fixed safe_eval for the Patch, and the region condition in the MKWF patch 2022-06-29 11:55:47 +02:00
5481b75cbf added Patch prototype implementation (untested and unfinished) 2022-06-28 23:43:27 +02:00
b34833397d moved ExtractedGame to a new file, changed the patch to fit the new syntax of the Patch system 2022-06-25 18:48:30 +02:00
4db2d9ee3a restructuring pack (part 4) 2022-06-15 17:18:51 +02:00
d5ef16611d started restructuring pack (part 3), added ct_icons generation, added ExtractedGame class alongside Game, started install_all_patch function 2022-06-14 14:27:48 +02:00
3402a9b26c started restructuring pack (part 2) 2022-06-13 22:40:13 +02:00
3932716227 added get_ctfile to Track, and implemented autoadd extraction 2022-06-13 22:18:08 +02:00
70ade3dc67 moved safe_eval from Track.py to safe_eval.py, allowed getattr with no function limitation, added track_formatting to mod_config.json to customize the track text format for the menu, the race and the filename. Added a Combobox on the install menu for the extension 2022-06-12 23:21:09 +02:00
31a28c3cf1 implemented user options and made translation capable of changing language 2022-06-11 22:38:53 +02:00
541a1b0689 selecting a mod now work, extraction now have a progress bar, clicking on the install button will start the installation 2022-06-11 18:45:29 +02:00
753be7df0d when pressing the install button, everything but the help menu is disabled. Added progress_function to start a function that yield data about the installation to show it on the progress bar 2022-06-10 21:40:03 +02:00
f9db2e96ea wit module now can simulate FST if the game is a FST. Moved many function from game to wit, added exists method to szs 2022-06-10 15:54:08 +02:00
9d97326f4b started implementing Game and wit for the game file manipulation, and modifying ModConfig syntax 2022-06-09 22:47:13 +02:00
f0476381da updated szs and wit, and made the installer the correct file for linux or windows 2022-06-09 22:42:15 +02:00
a83ce2c9c1 implemented ModConfig (new version of CtConfig), Track and TrackGroup 2022-06-09 16:49:46 +02:00
a04f7286b6 started working on the szs and wit wrapper 2022-06-08 16:24:02 +02:00
8d6141703b added permissions check 2022-06-08 14:39:43 +02:00
2f7f0ad5bf implemented events that can be registered from the ./plugins/ directory 2022-06-08 10:18:14 +02:00
404111948d menu design + translation system 2022-06-08 00:23:08 +02:00
599b520780 deleted every files that are not resources for the rewrite
Signed-off-by: Faraphel <rc60650@hotmail.com>
2022-06-07 19:37:38 +02:00
1ef62c5284 updated scripts to create minimap and map image 2022-05-24 10:34:23 +02:00
409fa2d4e2 fixed an issue with a default argument being an int instead of a list 2022-02-10 18:33:40 +01:00
3286f7e070 removed mkwf sort for testing 2022-02-10 14:52:16 +01:00
8e5f690358 improved the behaviour of the installer when a Pack does not provide some value in file_process
Many "x[y] if y in x else d" have been replaced by "x.get(y, d)"
2022-02-10 09:22:03 +01:00
821ae77a22 improved some aspect of the pack extraction tools (error check, automatically select the mod after installing) 2022-02-10 08:35:35 +01:00
2e5c7ec773 added a button to extract modpack with the .mkwf.pack extension 2022-02-09 16:05:16 +01:00
5dfaa35595 game now support special message in multiplayer room 2022-02-09 11:31:28 +01:00
f47049eb55 arena retro track now have their prefix colored 2022-02-08 19:54:49 +01:00
2aa84b8fab arenas are now supported by the installer 2022-02-08 19:24:17 +01:00
cd0c59de38 track with a dolphin warning now will not be included in the random new track per default 2022-02-07 08:54:23 +01:00
44c2fbc9fc fixed disabling "keep_original_track" : bmg are now correct 2022-02-01 15:53:50 +01:00
438e303b3b added add_original_track_prefix, swap_original_order, enable_random_cup and keep_original_track option to the ct_config. The last one have bmg issue. 2022-02-01 00:19:50 +01:00
a55ed656d9 added a weight notion to track (a track with a weight of 4 will be duplicated 4 times) 2022-01-29 13:02:06 +01:00
7200e21927 changing number of conversion process now change it in live 2022-01-26 19:24:05 +01:00
eafb7a47e9 reformatted some minor thing, added a log_error 2022-01-26 09:37:28 +01:00
a82312aabf combobox are now readonly (you can only choose in the proposed values) 2022-01-26 09:21:20 +01:00
abce32c3c8 moved log_error into Error.py 2022-01-26 09:07:39 +01:00
b29a7d0dcf moved translate from gui to its own class (Translator), added missing translation 2022-01-26 08:54:26 +01:00
e5fefd0624 optimised get_track_possibilities and fixed some sorting issue ? 2022-01-26 00:11:07 +01:00
b5da151c73 fixed the track sorting, added a way to save and load track configuration, track configuration is now keeped when closing and reopening the track configuration menu 2022-01-25 19:45:46 +01:00
7b134a88a3 fixed the track sorting 2022-01-25 14:19:46 +01:00
4c5fa3f20e using a track filter will enable the cheat region 2022-01-25 13:42:07 +01:00
b3d5af63ed readded a better track selection filter (advanced menu), fixed an issue with tracks always renormalizing, added a default sort in ct_config, added a Common class to reunite all component with more readability and less weird code, splited the Gui into a directory 2022-01-25 12:59:51 +01:00
85e36c461c moved all error to Error.py 2022-01-21 22:41:45 +01:00
03e85fb442 Random track group are now supported in ct_config.json, cup icons can now be named by the cup name, custom track cup now start at 001 2022-01-21 16:39:29 +01:00
7986d9eef1 the code now support multiple Pack, allow a better image generator (used for the bootscreen image in MKWF), customisable directory for the generated ct_icons, patched bmg, directory with all the icons, directory with lecode. 2022-01-19 17:46:45 +01:00
6042ca441a implemented a very experimental function for packs 2022-01-18 14:04:51 +01:00
af68a17782 (not functionnal for now) moved some mod part into a Pack folder to allow multiple mod to be installed, track menu now allow almost all the possibility 2022-01-17 20:34:08 +01:00
50d0a00bff some error weren't stopping the installation 2022-01-17 13:57:46 +01:00
d049000b78 language were not correctly handled by patch_bmg, file_process now use game language identifiant (F, E, U, M, S, ...) instead of the installer language (fr, en, ge, ...) 2022-01-17 13:49:05 +01:00
98a0aed807 default name for a track is now a single space, nothing would be replaced by the sha1 2022-01-17 12:28:34 +01:00
d3673fb64d added and changed some translation, removed delete track after convertion and disable download option, remove track download code 2022-01-17 12:22:08 +01:00
b2bcffdb29 if there was no score given for a track, the star color was not ended 2022-01-17 09:51:22 +01:00
3f8fad07fd using load_from_json return self 2022-01-17 09:46:12 +01:00
2096b93540 default_track is now supported, color of the original track are now handled by the tags_color of the ct_config.json file 2022-01-17 09:43:42 +01:00
824281f5ab the program now use sha1 instead of prefix + name + suffix to find a tracks. Prefix, suffix and new have been replaced by tags (some part of the code need to be "cleaned") 2022-01-16 19:54:12 +01:00
56752f8f36 cup are now stored in a list instead of a dictionary with useless index, and random + original cup have been removed because useless 2022-01-13 16:25:51 +01:00
e81157c64e added a "force unofficial mode" button in the advanced menu 2022-01-13 15:21:51 +01:00
d4089e4120 author list name was not handled correctly 2022-01-13 14:14:13 +01:00
61b54936b3 custom region shoule now be supported by the installer 2022-01-13 13:40:57 +01:00
edb1c78658 authors are now stored as a list in ct_config.json 2022-01-12 09:10:34 +01:00
b7f87d6a31 removed some MKWFaraphel specific non-modulable text 2022-01-11 19:39:51 +01:00
1b8d7fa7fc Game text and translation are now handled by file_process.json by the patch_bmg function, allowing more possibility and functionality. 2022-01-11 19:32:52 +01:00
7852e1f7ea CT_Config now can have a name and a nickname for the mod 2022-01-11 18:09:35 +01:00
798791b526 renamed fs.json to file_structure.json and convert_file.json to file_process.json to make them clearer 2021-11-21 21:54:53 +01:00
80582311e1 fixed an issue with a non-existing button trying to be updated and an error with the returned value of get_next_available_dir 2021-11-21 00:27:13 +01:00
ec12374359 you can't change game path once the installation started 2021-11-20 19:32:20 +01:00
598c4a6bcb (get_next_available_dir) parent_dir was missing in the returned path 2021-11-20 19:31:42 +01:00
aace0e6ac0 removed "nothread" function to use normal one instead 2021-11-20 18:31:01 +01:00
6304a88d95 "do everything" button have been renamed to "install mod", removed the 3 steps button.
Fixed issue with "do everything" button not stopping when encountering an error
2021-11-20 18:28:22 +01:00
95f9e4b823 "do everything" button have been renamed to "install mod", removed the 3 steps button 2021-11-20 18:22:42 +01:00
8f525cbe5f add the name of the actual mod version at in the ROM name 2021-11-20 18:17:59 +01:00
0ff1d946b9 added a function that return a non-existing directory from a desired directory name 2021-11-20 18:16:27 +01:00
c923966c98 added newline to error to make it more readable 2021-11-20 18:03:23 +01:00
36773a71ea Merge remote-tracking branch 'origin/dev' into dev 2021-11-18 21:40:32 +01:00
7ac3eb8958 added an error if the select rom does not exists 2021-11-18 21:40:03 +01:00
c343d270e2 when the installation end, the gui will now automatically close 2021-11-15 22:46:38 +01:00
98d8947c55 select score options are now regrouped in Track Configuration -> Select Track -> Score menu, and highlight game version are now in the BETA submenu if they are older than v1.0.0 2021-11-14 13:41:53 +01:00
ff0fb9d71f star now go from 0 to 5 instead of 1 to 3, take less space in the menu since they are directly in the font 2021-11-14 10:46:35 +01:00
94c4a26646 fixed 5 incorrect sha1 + added debug message in Track when a sha1 is incorrect 2021-11-06 20:01:36 +01:00
aa341a9746 added Help menu to access the wiki or the discord 2021-11-06 14:03:45 +01:00
426961197a Removed other MyStuff type, because redondant with the normal MyStuff 2021-11-06 13:28:08 +01:00
b8aa333af5 MyStuff folder should now mimic the Wii MyStuff folder (mystuff files at the root replace all game files with the same name) 2021-11-06 11:47:28 +01:00
d825194ca6 added multiple button for other "type" of MyStuff directory 2021-11-01 11:25:33 +01:00
f7186b6abc separated install_mod function into multiple subfunction to be may more easier to understand 2021-10-31 22:36:42 +01:00
d65ef8c08f Added an experimental support for MyStuff 2021-10-29 16:15:13 +02:00
a3c31cad5b star can now be blue if the warning is level 4 (for Dolphin only tracks) 2021-10-28 12:17:43 +02:00
4d4c2ff2bb If an error is raised with wiimm's tools, a better error will be shown 2021-10-26 17:17:16 +02:00
cff27f6198 added a "custom" note on the main menu text if the configuration for the mod is not the default / official one 2021-10-25 22:37:53 +02:00
71ab9a0f92 Added a debug mode for performance monitoring and information like position, respawn, ... 2021-10-25 17:09:10 +02:00
944dd5f6e7 there was no code to color the star of a track with warning (???) 2021-10-25 12:55:17 +02:00
0f1e25d941 readded menu to sort by track, name, version, score and warning (removed because of a merge) 2021-10-25 12:51:51 +02:00
632fe34296 track.get doesn't exist, replaced by getattr(track, ..., ...) 2021-10-25 12:25:59 +02:00
69f4e7872b added a menu to sort tracks by name, author, score and version 2021-10-25 12:25:58 +02:00
95c5e225a3 Fixed an issue where descriptive image (image on the bootscreen) would not be converted to .png and cause the installer to stop (missing / in directory path) 2021-09-03 23:58:43 +02:00
0edd631008 replaced distutils version by the function get_version_from_string 2021-09-03 22:53:08 +02:00
337b4c0dfc by default, all tracks from the latest version will now be highlighted 2021-08-29 11:33:11 +02:00
531acf2d7d track conversion process now have a better display, version are now sorted in the good order 2021-08-29 11:21:04 +02:00
af27096ff3 fixed progress bar of tracks processing that wasn't updating, fixed exit that was catch by the try keyword 2021-08-28 22:02:51 +02:00
18cf984d86 finishing an installation will automatically stop the program 2021-08-28 18:51:03 +02:00
bb59d1dc18 removed a old useless condition stopping the patch_file process if patch_tracks failed (not return 0), which can't happen since patch_track could only return 0 2021-08-26 11:34:25 +02:00
4758e6ae88 added return when exception is raise in nothread_use_path so that "do everything" process stop when an error is occuring 2021-08-24 19:59:47 +02:00
cf8d1bb20e "do everything button" now use a single thread instead of 3 threads for the 3 parts, allowing the program to stop if an error is raised 2021-08-23 23:52:30 +02:00
a54d32f354 removed useless import 2021-08-17 18:12:59 +02:00
15b68bc713 removed patch_tracks_zip function because not worth it and not really working 2021-08-17 18:12:13 +02:00
8e06d46891 added a space between the name and the suffix 2021-08-15 23:10:15 +02:00
3d5372acc6 forgot to strip key in szs.analyze 2021-08-02 18:31:45 +02:00
352d77db6a added analyze function to wszst.szs 2021-08-02 18:06:48 +02:00
9673a63e4c created a new function "patch_all_tracks_zip" that download all tracks from a zip, then convert them to szs. Unused for now 2021-07-31 20:42:43 +02:00
3c291bb66f started implementation of a better function to download and patch tracks 2021-07-31 09:21:29 +02:00
95dae163d9 detailled log error with information about ./file/ directory and game information 2021-07-31 09:10:51 +02:00
7078db49df removed track sha1 check option, they will always be checked 2021-07-30 21:21:31 +02:00
5461c17217 simplified download code in Game.py 2021-07-28 21:41:12 +02:00
43e46008c7 added more sha1 check in download_wu8, and do 3 try before raising an exception 2021-07-28 21:40:35 +02:00
8caf3535d6 added a sha1 check before downloading, now exception are used when a error occur instead of a blurry negative number 2021-07-28 21:10:36 +02:00
599c6b604f added a devnull for bmg.cat because all call were showing not useful information 2021-07-28 20:54:21 +02:00
0f8a6d86ae renamed id to cup_id because of built-in function id 2021-07-28 20:47:26 +02:00
c9a8eb7cf4 renamed a keyword in docstring 2021-07-28 19:59:49 +02:00
f2807e6f58 renamed some parameter, all wszst call now have keyword argument only 2021-07-28 19:19:51 +02:00
2baf246599 edited default value 2021-07-27 21:33:02 +02:00
54b5dceb78 szs file where extracted in the local directory instead of the game directory 2021-07-27 21:32:26 +02:00
34ec530ddf wszst module wasn't working properly, removed wszst prefix when calling one of its submodule 2021-07-27 21:16:43 +02:00
742c1c3bfa moved NoGui to Game.py, moved restart from Gui.py to definition.py 2021-07-27 21:03:30 +02:00
1bb84fce32 removed temporary directory that were used with previous wszst subprocess call with cwd in the game path 2021-07-27 20:54:10 +02:00
ebca6c3335 next version will be 0.10.0, version will be checked with from distutils.version.StrictVersion, so that it is simpler to check. Also fix an issue where 0.10 is less than 0.9 2021-07-27 20:52:58 +02:00
738e0b101b Splitted wszst.py into a module, removed "utf-8 support for path" with cwd because wiimm's tools already support many non-ascii caracter, this simplify the code. 2021-07-26 22:57:45 +02:00
fc3030532b added doctype and type hint to all function, replaced copyfile function by shutil.copyfile 2021-07-25 17:53:29 +02:00
a6ec86c61d Added docstring and more type hint tp Game, Gui and Track to make the code more understandable 2021-07-25 14:55:19 +02:00
ee8fea9c5f reimplemented track selection by star 2021-07-23 21:30:56 +02:00
94b15f076d get_track_name function created bad track suffix 2021-07-22 23:49:17 +02:00