ChaosKing
19th February 2013, 02:18
Hi,
I've been thinking lately about how cool it would be, if Avisynth/Vapoursynth would have its own package management system.
Or more precisely a downloader which also downloads all necessary dependencies for you. Like apt-get etc, but far more simple like the downloader in megui, only better :D
I already done some testing and my current "solution" would look like this:
- A package.json file (structure would be similar to package.json files from https://npmjs.org/). This file holds all information about the author, maintaner, dependencies...
An example {
"filtername": "flash3kyuu_deband", // I like your filter :)
"version": "1.5",
"category": "Restoration Filters",
"sub-category": "Debanding",
"filetype": "dll",
"platform": "x86",
"usesGPU": "false",
"description": "This avisynth plugin debands the video by replacing banded pixels with average value of referenced pixels, and optionally add grain (random dithering) to them.",
"mediawiki": "http://avisynth.org/mediawiki/flash3kyuu_deband",
"homepage": "http://forum.doom9.org/showthread.php?t=161411",
"doomX-link": "http://forum.doom9.org/showthread.php?t=161411",
"keywords": [],
"plugin-author": {
"name": "SAPikachu",
"email": "idk@somefantasymail.com",
"url": "http://www.google.com"
},
"package-maintainer": {
"name": "ChaosKing",
"email": "thechaoscoder@gmail.com",
"url": "http://chaosking.de/avisynth-filter-db"
},
"dependencies": { // I know flash3kyuu_deband doesn't have any dependencies :P
"Fastlinedarkenmod": "1.3",
"sangnom": "1.0"
}
}
- The filter itself + doc ( + maybe source code too) will be compressed with zip/7zip to keep the file size small.
/bin/filter.dll
/doc/{filtername}/filter.html
/src/{filtername}/[sourcecode]
/some other folder/
- The package will be uploaded to a website, where the package information will be stored in a mysql database. (but the package.json will stay in the package). You can search online ...
- An update file will be generated which holds the download url, filter name and version of every uploaded package, so the desktop app knows that to download.
- The desktop app downloads all necessary packages, extracts them and save them in a folder of your choice (my filters are not stored in the avisynth folder)
Structure:
/[filters]
/doc/{filtername}/doc.html, txt ... package.json
/src/{filtername}/[source code]
Basically it consists of two parts. The desktop app (downloads/extracts/updates your files) and a web server + db with all packages + an generated update file.
So, that do you think of this idea. Is it a good idea or waste of time? :D
I'm open to all suggestions.
Problems:
- Not every filter has a version number. Some uses date, some nothing :O
- How can I trust a package or verify its creator? (signing files with gpg + list of trust?)
- much work xD
// Interesting Sites
coapp.org (THE apt-get for windows, but still alpha/beta)
chocolatey.org
npmjs.org <-- seems to be a good solution, but needs a CouchDB and other stuff
I've been thinking lately about how cool it would be, if Avisynth/Vapoursynth would have its own package management system.
Or more precisely a downloader which also downloads all necessary dependencies for you. Like apt-get etc, but far more simple like the downloader in megui, only better :D
I already done some testing and my current "solution" would look like this:
- A package.json file (structure would be similar to package.json files from https://npmjs.org/). This file holds all information about the author, maintaner, dependencies...
An example {
"filtername": "flash3kyuu_deband", // I like your filter :)
"version": "1.5",
"category": "Restoration Filters",
"sub-category": "Debanding",
"filetype": "dll",
"platform": "x86",
"usesGPU": "false",
"description": "This avisynth plugin debands the video by replacing banded pixels with average value of referenced pixels, and optionally add grain (random dithering) to them.",
"mediawiki": "http://avisynth.org/mediawiki/flash3kyuu_deband",
"homepage": "http://forum.doom9.org/showthread.php?t=161411",
"doomX-link": "http://forum.doom9.org/showthread.php?t=161411",
"keywords": [],
"plugin-author": {
"name": "SAPikachu",
"email": "idk@somefantasymail.com",
"url": "http://www.google.com"
},
"package-maintainer": {
"name": "ChaosKing",
"email": "thechaoscoder@gmail.com",
"url": "http://chaosking.de/avisynth-filter-db"
},
"dependencies": { // I know flash3kyuu_deband doesn't have any dependencies :P
"Fastlinedarkenmod": "1.3",
"sangnom": "1.0"
}
}
- The filter itself + doc ( + maybe source code too) will be compressed with zip/7zip to keep the file size small.
/bin/filter.dll
/doc/{filtername}/filter.html
/src/{filtername}/[sourcecode]
/some other folder/
- The package will be uploaded to a website, where the package information will be stored in a mysql database. (but the package.json will stay in the package). You can search online ...
- An update file will be generated which holds the download url, filter name and version of every uploaded package, so the desktop app knows that to download.
- The desktop app downloads all necessary packages, extracts them and save them in a folder of your choice (my filters are not stored in the avisynth folder)
Structure:
/[filters]
/doc/{filtername}/doc.html, txt ... package.json
/src/{filtername}/[source code]
Basically it consists of two parts. The desktop app (downloads/extracts/updates your files) and a web server + db with all packages + an generated update file.
So, that do you think of this idea. Is it a good idea or waste of time? :D
I'm open to all suggestions.
Problems:
- Not every filter has a version number. Some uses date, some nothing :O
- How can I trust a package or verify its creator? (signing files with gpg + list of trust?)
- much work xD
// Interesting Sites
coapp.org (THE apt-get for windows, but still alpha/beta)
chocolatey.org
npmjs.org <-- seems to be a good solution, but needs a CouchDB and other stuff