commit 7e08d9e05ce4ba4df0dc1965df0d26c25f9edac8 Author: Liza Carvelli Date: Sun Jul 30 23:24:53 2023 +0200 Initial Commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..a201eb8 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +## Installation + +Under + +- `Dalamud Settings` +- `Experimental` +- `Custom Plugin Repositories` + +add the following as new entry: + +``` +https://plugins.carvel.li +``` + +After that, all plugins listed (Palace Pal, Slice is Right, Fish Notify) +should appear as installable plugins. + +## Licensing + +Please do NOT include any plugins from this repository as part of other +dalamud plugin repositories. + +You are welcome to fork any of the plugins listed here (please check individual +repositories for their license) and distribute your own forks freely, this is +only a kind request not to include this repository to build your own +"mega-repo" by including this JSON file elsewhere. + + +## Icons + +[Horror](https://icons8.com/icon/kYhYEg0FYTPv/horror), [Bamboo](https://icons8.com/icon/tMwju5pp4cWb/bamboo), [Fish](https://icons8.com/icon/Z2NYk2SJACYj/fish) icons by [Icons8](https://icons8.com) diff --git a/dist/FishNotify.png b/dist/FishNotify.png new file mode 100644 index 0000000..c6c6726 Binary files /dev/null and b/dist/FishNotify.png differ diff --git a/dist/Palace Pal.png b/dist/Palace Pal.png new file mode 100644 index 0000000..ab747b8 Binary files /dev/null and b/dist/Palace Pal.png differ diff --git a/dist/SliceIsRight.png b/dist/SliceIsRight.png new file mode 100644 index 0000000..2459ea4 Binary files /dev/null and b/dist/SliceIsRight.png differ diff --git a/dist/pluginmaster.json b/dist/pluginmaster.json new file mode 100644 index 0000000..cb3de9a --- /dev/null +++ b/dist/pluginmaster.json @@ -0,0 +1,84 @@ +[ + { + "Author": "Liza Carvelli", + "Name": "Slice is Right", + "InternalName": "SliceIsRight", + "AssemblyVersion": "6.1", + "Description": "Shows where Bamboo falls.", + "ApplicableVersion": "any", + "RepoUrl": "https://git.carvel.li/liza/SliceIsRight", + "Tags": [ + "gold saucer", + "yojimbo" + ], + "DalamudApiLevel": 8, + "LoadRequiredState": 0, + "LoadSync": false, + "LoadPriority": 0, + "IconUrl": "https://git.carvel.li/liza/plugin-repo/raw/branch/master/dist/SliceIsRight.png", + "Punchline": "Shows where Bamboo falls.", + "AcceptsFeedback": true, + "DownloadCount": 13433, + "LastUpdate": 1675714523, + "DownloadLinkInstall": "https://git.carvel.li/liza/SliceIsRight/releases/download/v6.1/SliceIsRight-6.1.zip", + "DownloadLinkUpdate": "https://git.carvel.li/liza/SliceIsRight/releases/download/v6.1/SliceIsRight-6.1.zip", + "Changelog": "v6.1 (2023-02-06)\n- Fix AoE markers generating new entries in dalamudUI.ini\n\nv6.0 (2023-01-11)\n- Dalamud API 8 update", + "IsHide": false, + "IsTestingExclusive": false + }, + { + "Author": "Liza Carvelli", + "Name": "Fish Notify", + "InternalName": "FishNotify", + "AssemblyVersion": "5.0", + "Description": "Plays a sound when a fish is caught, depending on tug-strength", + "ApplicableVersion": "any", + "RepoUrl": "https://git.carvel.li/liza/FishNotify", + "Tags": [ + "fishing" + ], + "DalamudApiLevel": 8, + "LoadRequiredState": 0, + "LoadSync": false, + "LoadPriority": 0, + "IconUrl": "https://git.carvel.li/liza/plugin-repo/raw/branch/master/dist/FishNotify.png", + "Punchline": "Plays a sound when a fish is caught", + "AcceptsFeedback": true, + "DownloadCount": 0, + "LastUpdate": 1673460497, + "DownloadLinkInstall": "https://git.carvel.li/liza/FishNotify/releases/download/v5.0/FishNotify-5.0.zip", + "DownloadLinkUpdate": "https://git.carvel.li/liza/FishNotify/releases/download/v5.0/FishNotify-5.0.zip", + "IsHide": false, + "IsTestingExclusive": false + }, + { + "Author": "Liza Carvelli", + "Name": "Palace Pal", + "InternalName": "Palace Pal", + "AssemblyVersion": "4.6", + "Description": "Shows possible trap & hoard coffer locations in Palace of the Dead & Heaven on High.\n\nThe default configuration requires Splatoon to be installed. If you do not wish to install Splatoon, you can switch to the experimental 'Simple' renderer in the configuration.", + "ApplicableVersion": "any", + "RepoUrl": "https://git.carvel.li/liza/PalacePal", + "Tags": [ + "potd", + "palace", + "hoh", + "splatoon" + ], + "DalamudApiLevel": 8, + "LoadRequiredState": 0, + "LoadSync": false, + "CanUnloadAsync": false, + "LoadPriority": 0, + "IconUrl": "https://git.carvel.li/liza/plugin-repo/raw/branch/master/dist/Palace%20Pal.png", + "Punchline": "Shows possible trap & hoard coffer locations in Palace of the Dead & Heaven on High.", + "AcceptsFeedback": true, + "DownloadCount": 45082, + "LastUpdate": 1690749171, + "DownloadLinkInstall": "https://git.carvel.li/liza/PalacePal/releases/download/v4.6/Palace%20Pal-4.6.zip", + "DownloadLinkUpdate": "https://git.carvel.li/liza/PalacePal/releases/download/v4.6/Palace%20Pal-4.6.zip", + "Changelog": "v4.6 (2023-07-30)\n- Update sever url\r\n- Cleanup\n\nv4.5 (2023-04-13)\n- Fix floor change regex (#18) not working anymore; the state of pomanders of sight/safety now gets updated properly again\r\n- Code cleanup\r\n- Server side optimizations\n\nv4.4 (2023-03-26)\n- Dependency Updates\n\nv4.3 (2023-03-25)\n- Update DE localization\r\n- Fix server logic for duplicate seen traps\n\nv4.2 (2023-03-11)\n- Improve error handling\r\n- Update dependencies", + "IsHide": false, + "IsTestingExclusive": false + } +] \ No newline at end of file diff --git a/generate_pluginmaster.py b/generate_pluginmaster.py new file mode 100644 index 0000000..d67f893 --- /dev/null +++ b/generate_pluginmaster.py @@ -0,0 +1,73 @@ +import datetime +import json +import os +from zipfile import ZipFile +import requests + +plugin_names = [ + # [path, internal name, github repo] + ["../SliceIsRight", "SliceIsRight", "SliceIsRight"], + ["../FishNotify", "FishNotify", "FishNotify"], + ["../Pal/Pal.Client", "Palace Pal", "PalacePal"] +] + +def extract_manifests(): + manifests = [] + for plugin_name in plugin_names: + path = f"{plugin_name[0]}/dist/{plugin_name[1]}" + for filename in [item for item in os.listdir(path) if item.endswith(".zip") ]: + print(f"== {filename} ==") + with ZipFile(f"{path}/{filename}", "r") as z: + manifest = json.loads(z.read(f"{plugin_name[1]}.json").decode()) + manifest['InternalName'] = plugin_name[1] + + releases = requests.get(f"https://git.carvel.li/api/v1/repos/liza/{plugin_name[2]}/releases?limit=1000").json() + manifest['DownloadCount'] = 0 + manifest['LastUpdate'] = int(datetime.datetime.fromisoformat(releases[0].get('published_at').replace('Z', '+00:00')).timestamp()) + + changelog_counter = 0 + changelog = '' + for release in releases: + for asset in release.get('assets'): + if asset.get('name').endswith('.zip'): + manifest['DownloadCount'] += asset.get('download_count') + + if 'DownloadLinkInstall' not in manifest: + manifest["DownloadLinkInstall"] = manifest["DownloadLinkUpdate"] = asset.get('browser_download_url') + + if changelog_counter < 5 and release.get('body'): + changelog_counter += 1 + changelog += f"{release.get('tag_name')} ({datetime.datetime.fromisoformat(release.get('published_at').replace('Z', '+00:00')).date()})\n{release.get('body')}\n\n" + + changelog = changelog.strip() + if changelog: + manifest['Changelog'] = changelog + print(changelog) + + manifests.append(manifest) + + return manifests + +def add_extra_fields(manifests): + DEFAULTS = { + "IsHide": False, + "IsTestingExclusive": False, + "ApplicableVersion": "any", + } + + for manifest in manifests: + for k, v in DEFAULTS.items(): + if k not in manifest: + manifest[k] = v + +def dump_master(manifests): + with open(f"dist/pluginmaster.json", "w") as f: + json.dump(manifests, f, indent=4) + + +if __name__ == "__main__": + manifests = extract_manifests() + + add_extra_fields(manifests) + + dump_master(manifests) \ No newline at end of file