Programmatically Untag FB Photos with Javascript
From DCoder, via Hacker News:
Using Firebug, FireQuery, jQuery no conflict as $jq, from inside a photo page (http://www.facebook.com/photo.php?pid=xxx&id=y) :
var loc = window.location.href.match(/pid=(\d+)&id=(\d+)/); var args = { pid: loc[1], // photo ID id: loc[2], // request sender id? photo owner id? not sure, haven't tested, but my user ID worked when trying to remove someone from a photo in my album subject: loc[2], // user ID to remove name: '', // not checked action: 'remove', __a: 1, fb_dtsg: $jq('input[name="fb_dtsg"]').val(), post_form_id: $jq('#post_form_id').val(), post_form_id_source: 'AsyncRequest' }; $jq.post('/ajax/photo_tagging_ajax.php', args);
It doesn't update the UI. The fb_dtsg and post_form_id are required and seem to be anti-CSRF tokens. Haven't experimented enough to know if they can be reused multiple times.
Since I'm not sure if you picked up my updated version at HN:
var loc = window.location.href.split('?')[1].split('#')[0].split('&'); var qs = {}; $jq.each(loc, function(ix, el) { var m = el.split('='), k = m[0], v = m[1]; qs[k] = v; }); var args = { pid: qs.pid, // photo ID id: qs.id, // photo owner ID subject: Env.user, // user ID to remove name: '', // not checked action: 'remove', __a: 1, fb_dtsg: Env.fb_dtsg, post_form_id: Env.post_form_id, post_form_id_source: 'AsyncRequest' }; $jq.post('/ajax/photo_tagging_ajax.php', args);
Chickenfoot http://groups.csail.mit.edu/uid/chickenfoot/ is a Firefox plugin that might be an alternative to using the Firebug console: you can write macros/scripts to automate repetitive tasks in your browser. The actions you code for are no different to you actually clicking, populating forms or whatever yourself. As far as I can remember there is a DOM interface for traversing html etc.