// ==UserScript== // @name Andrew's Facebook Tagged Photos Downloader // @include https://www.facebook.com/*/allactivity?privacy_source=activity_log&log_filter=cluster_200 // @require http://code.jquery.com/jquery-1.7.1.min.js // @grant none // @version 2.0 // @description Download all Facebook photos that you are tagged in. // @namespace https://greasyfork.org/users/36399 // @downloadURL none // ==/UserScript== /* * For jQuery Conflicts. */ this.$ = this.jQuery = jQuery.noConflict(true); // Variables var fbname = document.title; var firstrun = false; var retry = 0; var retries = 10; // Inject buttons into page $(document).ready(function() { $('#pagelet_main_column_personal div [class="_2o3t fixed_elem"] div[class="clearfix uiHeaderTop"]').append(''); $('#andrewfbdl').click(triggerdl); }); function triggerdl() { if (confirm('Are you sure you wish to continue? Chrome may tell you that this page is attempting to download multiple files: please click on Allow. After you do so, please avoid scrolling this page.')) { inited = false; firstrun = false; retry = 0; andrewhandler(); } } // Behold: the master function. function andrewhandler() { if (!firstrun) { scrollTo(0, 0); firstrun = true; } if (retry < retries) { scrollTo(0, $(document).scrollTop()+$(window).height()); if (!$("#fbTimelineLogBody div._5shk:not(.fbprocessed)").length) { if ($(window).scrollTop() + $(window).height() == $(document).height()) { retry++; console.log('Seems to be done. '+retry+'/'+retries); } setTimeout(function() { andrewhandler(); }, 2000); } else { retry = 0; contents = $("#fbTimelineLogBody div._5shk:not(.fbprocessed):first div._42ef").text(); if (contents.indexOf(fbname+' was tagged in') != -1 && contents.indexOf(' photo.') != -1) { dlphoto(); } else { //console.log('> Not a relevant activity, skipping.'); $("#fbTimelineLogBody div._5shk:not(.fbprocessed):first").addClass('fbprocessed'); andrewhandler(); } } } else { alert('Done scrolling! Please wait for all photos to be downloaded.'); } } function dlphoto() { setTimeout(andrewhandler, 2000); code = $("#fbTimelineLogBody div._5shk:not(.fbprocessed):first td._5ep6 a img").attr('src'); regexp = /\/[0-9]+_([0-9]+)_[0-9]+_/g; match = regexp.exec(code); if (match[1]) { $("body").append(""); } $("#fbTimelineLogBody div._5shk:not(.fbprocessed):first").addClass('fbprocessed'); }