Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.


Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Development

Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
Old 6th August 2007, 16:17   #1  |  Link
check's Avatar
Join Date: Sep 2005
Location: Western Australia
Posts: 1,692
Centralised avisynth plugin repository

Hi all, just wondering if there are any opinions on an idea for an avisynth utility I've been mulling over for the past few weeks. I've also actually built a functioning prototype in python too, it's linked at the end of this message.

In a nutshell, the program will be a specialised repository tool for avisynth, along the lines of programs such as apt-get and yum on linux.

So far, this is what my prototype can do. It provides five functions:
o update: download a fresh copy of the repository metadata file
C:\>avup.py update
Downloading latest repository file now...
Successfully downloaded an updated repository file!
o info: print info (ie, all the metadata) on a given plugin
C:\>avup.py info limitedsharpenfaster
Name: LimitedSharpenFaster
Version: 29 Oct 2005
Author: didee
Homepage: forum.doom9.org/showthread.php?t=84196
Description: None
Functions implemented: limitedsharpen
Requires Plugins: masktools2, removegrain, warpsharp
o list: glob match for package names (this is currently folded into the info command, if no exact match of the given name is found, it assumes the input was a glob pattern and filters it against the list of packages).
C:\>avup.py info removegrain*
No exact matches, checking for glob matches now...
Matches: removegrain, removegrain-SSE3, removegrain-SSE2
o whatprovides: given an avisynth function name (ie 'xsharpen'), search the repository for a package that provides that function.
C:\>avup.py whatprovides *sharp*
  removegrain: denoisesharpen, rsharpen
  limitedsharpenfaster: limitedsharpen
  warpsharp: warpsharp, xsharpen, unsharpmask
  removegrain-SSE3: denoisesharpen, rsharpen
  removegrain-SSE2: denoisesharpen, rsharpen
o download: download the given package.
C:\>avup.py download limitedsharpenfaster
Downloading limitedsharpenfaster now...
Successfully downloaded the plugin.
Successfully downloaded limitedsharpenfaster!

I was originally driven to write this program to help for two cases in particular:
o know a function, don't know the plugin it's part of. Useful when searching back through the doom9 archives and looking at ancient scripts in particular, but would be also useful for the many who won't remember that warpsharp contains xsharpen.
o know a plugin, don't know the latest version. Some plugins, like limitedsharpen, mvbob, removegrain are perenially asked after for the latest version, and different people have different versions. Some sort of central version control / download system would make much of this problem dissappear.

I am less interested in creating a high level package management system, which handles installation, package tracking and dependancies. Installing avisynth plugins is easy enough to do by hand, I just want a tool to make it easier to *get* these files. The true strength of a program like this would be in the above two cases.

Some issues that this program will run into:
o needs maintainers! Package management tools need people to create the packages. This is almost certainly the biggest potential problem, so I've tried to create a system which is extremely easy to use. The YAML repository metadata file is dead simple to manually edit, and the zip files just need a standardised name and that's it. The only hard part is needing to keep the repository in sync with multiple people changing it, but a basic system like svn + patches would be fine.
o needs servers & bandwidth! Probably not a real problem. I couldn't see this utility using more than 50gb/month for a long time, and I can happily donate that myself. A mirror system would be easy to implement though, and I'm sure volunteers could be found.
o People need python installed! Lies, you can pack up the script and the interpreter w/ required modules into a single executable as per AvsP. The only catch is that the interpreter + modules add up to around 2mb, which is a lot compared to the 2kb script.
o People need a GUI! That's not a problem to create at all, it would be trivial to adapt the current prototype to run with a GUI.
o ???

Sorry for the longpost, Here is the prototype, written in pure python. It works on windows and unix (whyever you'd want to run it on that..., but that's what I developed it on), and requires python 2.5 to be installed (should run with earlier versions, just with peculiar exception handling (such as keyboard interrupts not working)) along with PyYAML. Note that the repository and packages currently in there (all 5ish of them) are samples, but should be complete (apart from fft3dfilter, which is missing the library it requires).

Feedback welcome and requested
check is offline   Reply With Quote

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT +1. The time now is 11:38.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, vBulletin Solutions Inc.