Skip to content

Instantly share code, notes, and snippets.

@pwmckenna
pwmckenna / func.btapp.js
Created October 1, 2012 07:38
Wrap a potentially unavailable Btapp function to make it immediately callable
/**
Usage:
var add = btapp.func('add', 'torrent');
...or to provide a callback for dht activity, you might try the following:
var get_any_hash = btapp.func('dht', 'get_any_hash');
// While the function won't be available immediately, it is abstracted away,
// allowing you to treat the future function as immedidately callable
get_any_hash(function(hash) {
//Just saw a hash in the dht!
});
@pwmckenna
pwmckenna / Btapp.scrape.func.js
Created October 1, 2012 07:40
use Btapp.func and jQuery.Deferred objects to simplify tracker scraping
/**
Usage:
scrape(hash).then(function(infos) {
//we have the scrape info for our favorite trackers
});
**/
var btapp = new Btapp;
var scrape = (function() {
// First off get a function wrapper that we can call at any time
@pwmckenna
pwmckenna / resolve.btapp.js
Created October 23, 2012 19:30
resolve_torrent_metadata
Btapp.prototype.resolve_torrent_metadata = function(magnet_link) {
var magnet_identifier = 'magnet:?xt=urn:btih:';
if(magnet_link.indexOf(magnet_identifier) !== 0)
throw 'malformed magnet link';
var hash = magnet_link.substring(magnet_identifier.length).substr(0, 40);
console.log(hash);
if(!hash.match(/[a-zA-Z0-9]/))
throw 'only support hex encoded info hashes';
@pwmckenna
pwmckenna / add_torrent_callbacks.js
Created November 10, 2012 00:45
torque add torrent callback possibilities
var request = app.btapp.get('torrent').download({
url: 'magnet:?xt=urn:btih:D075D45EA1DA3E20BA148A08D984EFFC439273A4',
callback: function() {
// torrent has been added to the torrent list of the client.
// this is called immediately on magnet links,
// but might take a bit for http://*.torrent file urls
}
});
request.then(function(res) {
// the client has heard and acknowledged your request
@pwmckenna
pwmckenna / logging.js
Created November 10, 2012 19:47
soshare_logging_snippet.js
logger = function(ev) {
if(ev === 'client:connected') {
app.get('btapp').off('all', logger);
}
console.log(JSON.stringify(_.toArray(arguments), null, 4));
};
app.get('btapp').on('all', logger);
app.get('btapp').on('all', _.bind(console.log, console));
@pwmckenna
pwmckenna / build_number.js
Created November 16, 2012 21:48
retreiving client build number
app.btapp.on('pairing:found', function(info) {
var build_number = info.version.engine_version;
});
btapp.get('os').browse_for_files(function(files) {
console.log(JSON.stringify(files, null, 4));
/**
OLD RETURN VALUES
["/Users/pwmckenna/Documents/caitlin/humerus anteriorl view.jpg", ...]
NEW RETURN VALUES
[
{
"handle": 812535217,
btapp = new Btapp;
btapp.connect();
btapp.on('plugin:update_plugin', function(options) { options.update = false; });
@pwmckenna
pwmckenna / gist:4323827
Created December 18, 2012 00:35
liveOnce extension to backbrace.js's live function
(function() {
var liveOnceExtension = {
liveOnce: function(selectors, callback, context) {
var _this = this;
var wrapper = function() {
_this.die(selectors, wrapper, context);
callback.apply(this, arguments);
}
this.live(selectors, wrapper, context);
}