Playdar has an asynchronous cascading resolver pipeline. Resolvers with the highest weighting are queried first, and the search is quickly passed on to other resolvers in the chain until a match is found. As soon as a query is "solved", the pipeline is aborted.
Resolver plugins are loaded into the pipeline with a weight and target time. The weight is an int between 1-100, and dictates the order in which resolver plugins are queried. The most reliable and fastest resolver has a weight of 100 (ie the one that matches files on your hard disk).
The target time is a millisecond value that the resolver will probably have found results in, if any exist. If a query is still not solved after the target time has elapsed, the query is dispatched to the resolver with the next highest weight.
Results are still valid if reported after the targettime, it's simply used to decide when to hit up the next resolver. This helps cut down on spam. There's no point in querying the entire internet if you find a result on your hard disk.
Resolvers with equal weights are dispatched to in parallel, and the smallest targettime of resolvers at that weight is used to decide when to dispatch the query to the next resolver(s).
Currently the local-files resolver and the LAN resolver are fully supported and built by default. This allows you to find files on your hard disk, and from other machines running playdar on your home network.
There are other scripts and plugins available in the contrib/ directory. An example of an external resolver script (writen in PHP) is the magnatune resolver - this resolves against the free online record label magnatune.com. There is also a script that resolves against mp3tunes (an online music locker service), and many others.
To write additional resolvers that find content from other sources you have two options:
What other sources can you think of to resolve music from?
Here are some ideas: