30 votes

Untag par programme Photos FB avec Javascript

J'ai passé les dernières heures à bidouiller sur ce: je veux écrire un Javscript routine pour en programmant le ganupt moi-même à partir de photos sur Facebook. Une fois que cela fonctionne, je vais l'exécuter dans la console de Firebug et le ganupt moi-même de tous les Facebook des photos (il n'y a aucun moyen de le faire par le biais de l'interface graphique).

Je voulais voir si vous avez quelques conseils à me faire sur mon voyage.

J'ai un peu de méthodes à l'esprit mais je n'ai pas été trop loin le long de tout à fait encore. J'ai essayé un AJAX approche par la création d'une nouvelle demande HTML et pointant vers le remove_tag URL, ce qui ressemble à quelque chose comme ceci:

/ajax/photo_tagging_ajax.le php?pid=(PICTURE_ID)&id=(PICTURE_OWNER_ID)&subject=(quelque CHOSE)&nom=(TA+NOM)&action=supprimer

Il n'est pas surprenant, cela ne fonctionne pas (encore). J'ai été vérifier la réponse HTTP dans Firebug et c'est tout à fait différent de celui où j'ai effectivement supprimer une image. Il n'est même pas de l'envoi d'une requête POST.

Juste pour préciser, j'ai aussi essayé de faire un getElementById sur "supprimer la balise" ancre", et ensuite de faire un document.emplacement switcharoo, mais qui ne fonctionne pas. Je ne peux pas faire une .cliquez sur() sur celui-ci.

Sera-ce encore possible ou suis-je en train de rêver? (il est presque 4H du matin)

7voto

Zachary Burt Points 1252

De DCoder, via Hacker News:

À l'aide de Firebug, FireQuery, jQuery aucun conflit $jq, à partir de l'intérieur d'une page de photos (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);

Il n'a pas de mise à jour de l'INTERFACE utilisateur. Le fb_dtsg et post_form_id sont nécessaires et semblent être anti-CSRF jetons. N'avez pas assez expérimenté pour savoir s'ils peuvent être réutilisés plusieurs fois.

3voto

DCoder Points 46

Depuis que je ne suis pas sûr si vous avez pris ma version mise à jour chez 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);
 

1voto

Richard H Points 11693

Chickenfoot http://groups.csail.mit.edu/uid/chickenfoot/ est un plugin Firefox qui pourrait être une alternative à l'utilisation de la console Firebug: vous pouvez écrire des macros / scripts pour automatiser des tâches répétitives dans votre navigateur. Les actions pour lesquelles vous codez ne sont pas différentes de ce que vous cliquez, remplissez des formulaires ou quoi que vous fassiez. Autant que je me souvienne, il existe une interface DOM pour parcourir HTML, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X