1
0

Initial Commit

This commit is contained in:
Liza 2023-07-30 23:24:53 +02:00
commit 7e08d9e05c
Signed by: liza
GPG Key ID: 7199F8D727D55F67
6 changed files with 188 additions and 0 deletions

31
README.md Normal file
View File

@ -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)

BIN
dist/FishNotify.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
dist/Palace Pal.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
dist/SliceIsRight.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

84
dist/pluginmaster.json vendored Normal file
View File

@ -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
}
]

73
generate_pluginmaster.py Normal file
View File

@ -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)