@@ -1060,5 +1060,26 @@ | |||||
"vcvUrl": "https://library.vcvrack.com/NANOModules/BLANK2Hp", | "vcvUrl": "https://library.vcvrack.com/NANOModules/BLANK2Hp", | ||||
"mgUrl": "https://www.modulargrid.net/e/nano-modules-blank-2hp", | "mgUrl": "https://www.modulargrid.net/e/nano-modules-blank-2hp", | ||||
"mgModuleId": 25227 | "mgModuleId": 25227 | ||||
}, | |||||
{ | |||||
"pluginSlug": "Starling_Via", | |||||
"moduleSlug": "ATSR", | |||||
"vcvUrl": "https://library.vcvrack.com/Starling_Via/ATSR", | |||||
"mgUrl": "https://www.modulargrid.net/e/starling-via-atsr-", | |||||
"mgModuleId": 26726 | |||||
}, | |||||
{ | |||||
"pluginSlug": "Starling_Via", | |||||
"moduleSlug": "OSC3", | |||||
"vcvUrl": "https://library.vcvrack.com/Starling_Via/OSC3", | |||||
"mgUrl": "https://www.modulargrid.net/e/starling-via-osc3-", | |||||
"mgModuleId": 26727 | |||||
}, | |||||
{ | |||||
"pluginSlug": "Starling_Via", | |||||
"moduleSlug": "SYNC3", | |||||
"vcvUrl": "https://library.vcvrack.com/Starling_Via/SYNC3", | |||||
"mgUrl": "https://www.modulargrid.net/e/starling-via-sync3-", | |||||
"mgModuleId": 26728 | |||||
} | } | ||||
] | ] |
@@ -1,58 +0,0 @@ | |||||
import sys | |||||
import os | |||||
import glob | |||||
import json | |||||
import re | |||||
import requests | |||||
# Load existing dataset | |||||
mg_filename = "ModularGrid-VCVLibrary.json" | |||||
with open(mg_filename) as f: | |||||
mg = json.load(f) | |||||
# Iterate plugins | |||||
for manifest_filename in glob.glob('manifests/*.json'): | |||||
with open(manifest_filename) as f: | |||||
plugin = json.load(f) | |||||
plugin_slug = plugin['slug'] | |||||
# Iterate modules in plugin | |||||
for module in plugin.get('modules', []): | |||||
module_slug = module['slug'] | |||||
mg_url = module.get('modularGridUrl') | |||||
if not mg_url: | |||||
continue | |||||
if [x for x in mg if x.get('mgUrl') == mg_url]: | |||||
continue | |||||
mg_data = {} | |||||
mg_data['pluginSlug'] = plugin_slug | |||||
mg_data['moduleSlug'] = module_slug | |||||
mg_data['vcvUrl'] = f"https://library.vcvrack.com/{plugin_slug}/{module_slug}" | |||||
mg_data['mgUrl'] = mg_url | |||||
mg.append(mg_data) | |||||
print(mg_data) | |||||
# Iterate dataset | |||||
for mg_data in mg: | |||||
if mg_data.get('mgModuleId'): | |||||
continue | |||||
# Scrape ModularGrid website for ID | |||||
mg_url = mg_data['mgUrl'] | |||||
r = requests.get(mg_url) | |||||
m = re.search(r'data-module-id = "(\d+)"', r.text) | |||||
mg_id = m.group(1) | |||||
if not mg_id: | |||||
print(f"No ModularGrid ID found for {plugin_slug} {module_slug}") | |||||
continue | |||||
mg_id = int(mg_id) | |||||
mg_data['mgModuleId'] = mg_id | |||||
print(mg_data) | |||||
with open(mg_filename, 'w') as f: | |||||
json.dump(mg, f, indent=2) |
@@ -3,10 +3,12 @@ import os | |||||
import glob | import glob | ||||
import json | import json | ||||
import time | import time | ||||
import build | |||||
import zipfile | import zipfile | ||||
import re | import re | ||||
import build | |||||
import update_modulargrid | |||||
PACKAGES_DIR = "../packages" | PACKAGES_DIR = "../packages" | ||||
SCREENSHOTS_DIR = "../screenshots" | SCREENSHOTS_DIR = "../screenshots" | ||||
@@ -79,7 +81,7 @@ for plugin_filename in plugin_filenames: | |||||
build.delete_stage() | build.delete_stage() | ||||
build.build(plugin_filename) | build.build(plugin_filename) | ||||
build.system(f'cp -vi stage/* "{PACKAGES_DIR}"') | build.system(f'cp -vi stage/* "{PACKAGES_DIR}"') | ||||
build.system(f'cp -vi stage/* "{RACK_USER_PLUGIN_DIR}"') | |||||
build.system(f'cp -vi stage/*-lin.zip "{RACK_USER_PLUGIN_DIR}"') | |||||
except Exception as e: | except Exception as e: | ||||
print(e) | print(e) | ||||
print(f"{slug} build failed") | print(f"{slug} build failed") | ||||
@@ -89,7 +91,7 @@ for plugin_filename in plugin_filenames: | |||||
build.delete_stage() | build.delete_stage() | ||||
# Open plugin issue thread | # Open plugin issue thread | ||||
os.system(f"qutebrowser 'https://github.com/VCVRack/library/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+in%3Atitle+{slug}' &") | |||||
os.system(f"xdg-open 'https://github.com/VCVRack/library/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+in%3Atitle+{slug}' &") | |||||
elif plugin_ext == ".zip": | elif plugin_ext == ".zip": | ||||
# Review manifest for errors | # Review manifest for errors | ||||
@@ -119,6 +121,10 @@ if not updated_slugs: | |||||
print("Nothing to build") | print("Nothing to build") | ||||
exit(0) | exit(0) | ||||
update_modulargrid.update() | |||||
# Upload data | |||||
built_slugs_str = ", ".join(updated_slugs) | built_slugs_str = ", ".join(updated_slugs) | ||||
print() | print() | ||||
@@ -0,0 +1,64 @@ | |||||
import sys | |||||
import os | |||||
import glob | |||||
import json | |||||
import re | |||||
import requests | |||||
def update(): | |||||
# Load existing dataset | |||||
mg_filename = "ModularGrid-VCVLibrary.json" | |||||
with open(mg_filename) as f: | |||||
mg = json.load(f) | |||||
# Iterate plugins | |||||
for manifest_filename in glob.glob('manifests/*.json'): | |||||
with open(manifest_filename) as f: | |||||
plugin = json.load(f) | |||||
plugin_slug = plugin['slug'] | |||||
# Iterate modules in plugin | |||||
for module in plugin.get('modules', []): | |||||
module_slug = module['slug'] | |||||
mg_url = module.get('modularGridUrl') | |||||
if not mg_url: | |||||
continue | |||||
if [x for x in mg if x.get('mgUrl') == mg_url]: | |||||
continue | |||||
mg_data = {} | |||||
mg_data['pluginSlug'] = plugin_slug | |||||
mg_data['moduleSlug'] = module_slug | |||||
mg_data['vcvUrl'] = f"https://library.vcvrack.com/{plugin_slug}/{module_slug}" | |||||
mg_data['mgUrl'] = mg_url | |||||
mg.append(mg_data) | |||||
print(mg_data) | |||||
# Iterate dataset | |||||
for mg_data in mg: | |||||
if mg_data.get('mgModuleId'): | |||||
continue | |||||
# Scrape ModularGrid website for ID | |||||
mg_url = mg_data['mgUrl'] | |||||
r = requests.get(mg_url) | |||||
m = re.search(r'data-module-id = "(\d+)"', r.text) | |||||
mg_id = m.group(1) | |||||
if not mg_id: | |||||
print(f"No ModularGrid ID found for {plugin_slug} {module_slug}") | |||||
continue | |||||
mg_id = int(mg_id) | |||||
mg_data['mgModuleId'] = mg_id | |||||
print(mg_data) | |||||
with open(mg_filename, 'w') as f: | |||||
json.dump(mg, f, indent=2) | |||||
if __name__ == "__main__": | |||||
update() | |||||