Here is more info:
What it is
Pulsar is an torrent finding and streaming engine. It doesn't go on torrent websites for legal reasons. However, it calls specially crafted addons (called providers) that are installed separately. They are normal XBMC addons, and thus can be installed/updated/distributed just like any other addon.
Supported platforms
Windows
Linux 32/64 bits (starting Ubuntu 12.04)
Linux ARM (Raspberry Pi, Cubox i4pro etc...)
OS X 64 bits
How it works
Pulsar is an torrent finding and streaming engine. It doesn't go on torrent websites for legal reasons. However, it calls specially crafted addons (called providers) that are installed separately. They are normal XBMC addons, and thus can be installed/updated/distributed just like any other addon.
Pulsar is centred around media: it browses media from TheMovieDB and TVDB.
And so, when you decide you want to watch a media (i.e. given an IMDB or TVDB Id), here's what Pulsar does:
Enumerate the installed providers
Call each provider to find the media you want to watch (in parallel)
Each provider returns a list of BT links they found
Collects and de-duplicates all the links
Goes on the BitTorrent network to find out the number of seeds and peers in real time (i.e. not provided by the provider)
Finds out of which quality are the different links (thanks to their name)
Ranks the links by quality and availability (Pulsar privileges quality over availability, but it's not dumb. However, you can get a full list to choose from manually it you want)
Sends the chosen link to the BitTorrent streaming engine (brand new, and completely rewritten)
All of this is done in less than 1s. Pulsar is around 95% Go, and thus, it's fast. Very fast, actually.
The BitTorrent streaming engine is brand new and very resilient (or at least it's designed to be). It's built on top of the brand new libtorrent 1.0 (which had special patches for the streaming case). So it's very optimised, especially for low CPU machines. I have yet to find a media that doesn't play with the engine.
Providers
As said before, Pulsar relies on providers to find streams. Providers are easy to write, and average ~20 lines of Python. As they are normal XBMC addons, which can have their own configuration (although it is not recommended because it complicates things).
Sample Pulsar provider: (deleted)
Providers are given a max amount of time to run before Pulsar considers them to be too slow. The timeouts are as follow:
- 4 seconds on Intel CPUs
- 20 seconds on multicore ARM CPUs
- 30 seconds on single core ARM CPUs (RPi)
Please note that for legal reasons, I won't develop nor distribute any providers connecting to illegal sources. So there is no need to ask me.
While I can partake in general discussions regarding provider development, I won't do so for illegal sources specific problems.
FAQ
I can't code. How can I help?
Spread the word. Talk about it with your friends, show them, make videos, tutorials. Talk about it on social networks, blogs etc...
The plugin doesn't work, what can I do?
Put your xbmc.log on pastebin.
If you don't know how to do that, just follow the guide at: deleted
Can I seek in a video?
Yes, but it can fail.
What about seeding?
When watching a torrent, you will be seeding while you watch the stream.
Does it downloads the whole file? Do I need the space? Is it ever deleted?
Yes, yes and yes.
Can I keep the file after watching it?
Yes, change it in the addon settings.
Can I set it to download directly to my NAS?
Yes, but you need to mount your NAS via the OS, not via XBMC.
Provider X is blocked in my country/ISP, how can I set another domain?
Sorry, I won't comment of specific providers.
Will there be an Android version?
Yes. I have a working version right now, but it's not stable enough for release. Don't blame me, the Android ecosystem is pretty bad for that sort of thing.
Changelog
v0.5.0:
Trailer support
Boost magnets with default trackers
Multi-lang support for metadata
Add icons in menus
Added new default trackers
Update to go 1.4.2
Update to OpenSSL 1.0.2a
Update to libtorrent 1.0.4
v0.4.7:
Fix stalled buffering
Fix issue where Pulsar would enter a restart loop when cancelling a buffering
Handle Unicode paths
Switch to simplejson, as it is ~30% faster at loading JSON
v0.4.6:
Much better bandwidth allocation at the cost of slightly longer buffer times
v0.4.5:
Fix memory leak in bjsonrpc (would crash ARM devices)
Fix leaking goroutine during buffering
v0.4.4:
Fix a closure leak when the JSONRPC asks wether to serve or not
Set piece deadlines, and also when seeking
Limit DHT memory
Change settings regarding disk cache, atime, free hashes and ip overhead
v0.4.3:
Fix stalled buffering
v0.4.2:
Force downloading of pieces, even if dupes, should prevent the stalled buffering
Only match on %02d for absolute numbers episode filters
Display when we are unable to resolve a .torrent file
Fix episode filtering for "1x02" episode numbering
v0.4.1:
Update to libtorrent 1.0.3 (should fix speed issues)
New buffering method (slower, but more reliable)
Filter irrevelant items for episode search
Better support for anime detection
Make normalization better
Filter irrelevant links when searching for episodes
v0.4.0:
Subtitles support via OpenSubtitles
Better BitTorrent performances (upgrade to libtorrent pre-1.0.3)
Prevent empty movies from showing/crashing
v0.3.2:
Auto updates with auto repository
Add Most Voted movies
Add IMDB Top 250
Add TV Shows Genres
Migrate TV Shows from Trakt.tv to TMDB and TVDB
Notify when no providers are installed
Add clear cache command
Faster displaying of results
Massive performance improvements
Check for sufficient space before starting the download
Use GZIP for cache storage
Enable TVDB caching
Enable Absolute Numbering for TV Shows
Use TMDB's Serie's name when searching for an episode
Fix (get/set)_setting
Fix raw search to a string, not an object
Explicitely accept GZIP payloads when performing HTTP requests
Change pulsard and jsonrpc host to 65251 and 65252
Ensure we don't hang XBMC when closing
Unlock files on BSD/Darwin systems (could prevent playback of OSX)
Change provider timeout to 30s on single core linux arm (Raspberry Pi)