0) {
- $('#pd__central form').hide();
- $('#pd__central .processing').show();
- }
-
- if (pdApp.processInfo.submission_pages > 0) {
- pdApp.process.submissions.init();
- } else if (pdApp.processInfo.comment_pages > 0) {
- pdApp.process.comments.init();
+ localStorage.setItem('pd_storage',JSON.stringify($('#pd__form').serializeArray()));
} else {
- alert('Well, there\'s nothing to do, so I guess we\'re done? Try enabling one of the actions next time!');
+ localStorage.removeItem('pd_storage');
}
},
+ },
+ actions: {
+ getPage: function () {
+ pdApp.ui.updateDisplay();
+ pdApp.process.pageCalls ++;
+
+ if (pdApp.process.sectionsRemaining.length > 0) {
+ $('#pd__central h2').first().text('Power Delete Suite v'+pdApp.version+' - '+pdApp.process.sectionsRemaining[0]);
+ $.ajax({
+ url: pdApp.endpoints[pdApp.process.sectionsRemaining[0]],
+ data: {
+ q: pdApp.process.sectionsRemaining[0] == 'search' ?
+ 'author%3A'+pdApp.config.user + (! pdApp.process.isRemovingPosts ? '%20self%3A1' : '') :
+ null,
+ after: pdApp.process.after.length > 0 ? pdApp.process.after : null
+ }
+ }).then(function(resp) {
+ pdApp.process.donePages ++;
+ if (resp.data.children.length > 0) {
+ pdApp.process.numPages ++;
+ pdApp.process.doneItems = 0;
+ pdApp.process.numItems = resp.data.children.length;
+ pdApp.process.items = resp.data.children;
+ pdApp.actions.processItems();
+ } else {
+ pdApp.process.after = '';
+ pdApp.process.sectionsRemaining.splice(0,1);
+ pdApp.actions.getPage();
+ }
+ }, function(resp) {
+ pdApp.process.errors++;
+ console.error(resp);
+ if (! confirm('Error getting '+pdApp.process.sectionsRemaining[0]+' page. Would you like to retry?')) {
+ pdApp.process.sectionsRemaining.splice(0,1);
+ }
+ pdApp.actions.getPage();
+ });
+ } else {
+ pdApp.ui.done();
+ }
+ },
+ processItems: function () {
+ pdApp.ui.updateDisplay();
+ if (pdApp.process.items.length > 0) {
+ pdApp.actions.processItem(pdApp.process.items[0]);
+ } else {
+ pdApp.actions.getPage();
+ }
+ },
+ processItem: function (item) {
+ if (pdApp.helpers.filterCheck(item)) {
+ if ((item.data.is_self || item.kind == 't1') && pdApp.process.isEditing && ! item.pdEdited) {
+ pdApp.actions.edit(item);
+ } else if ((item.kind == 't3' && pdApp.process.isRemovingPosts) || (item.kind == 't1' && pdApp.process.isRemovingComments)) {
+ pdApp.actions.delete(item);
+ } else {
+ pdApp.process.doneItems ++;
+ pdApp.process.after = item.data.name;
+ pdApp.ignore.push(item.data.name);
+ pdApp.process.items.splice(0,1);
+ pdApp.actions.processItems();
+ }
+ } else {
+ pdApp.process.doneItems ++;
+ if (pdApp.ignore.indexOf(item.data.name) == -1) {
+ pdApp.process.ignored ++;
+ }
+ pdApp.process.after = item.data.name;
+ pdApp.ignore.push(item.data.name);
+ pdApp.process.items.splice(0,1);
+ pdApp.actions.processItems();
+ }
+ },
+ delete: function (item) {
+ $.ajax({
+ url: 'https://www.reddit.com/api/del',
+ method: 'post',
+ data: {
+ thing_id: item.data.name,
+ text: pdApp.process.editText,
+ id: '#form-'+item.data.name,
+ r: item.data.subreddit,
+ uh: pdApp.config.uh,
+ renderstyle: 'html'
+ }
+ }).then(function() {
+ pdApp.process.deleted ++;
+ pdApp.process.doneItems ++;
+ pdApp.ignore.push(item.data.name);
+ pdApp.process.items.splice(0,1);
+ pdApp.actions.processItems();
+ }, function () {
+ pdApp.process.errors++;
+ if (confirm('Error deleting '+(item.kind == 't3' ? 'post':'comment')+', would you like to retry?')) {
+ pdApp.actions.processItem(item);
+ } else {
+ pdApp.ignore.push(item.data.name);
+ pdApp.process.items.splice(0,1);
+ pdApp.actions.processItems();
+ }
+ });
+ },
+ edit: function (item) {
+ $.ajax({
+ url: 'https://www.reddit.com/api/editusertext',
+ method: 'post',
+ data: {
+ thing_id: item.data.name,
+ text: pdApp.process.editText,
+ id: '#form-'+item.data.name,
+ r: item.data.subreddit,
+ uh: pdApp.config.uh,
+ renderstyle: 'html'
+ }
+ }).then(function() {
+ pdApp.process.edited ++;
+ item.pdEdited = true;
+ pdApp.actions.processItem(item);
+ }, function () {
+ pdApp.process.errors++;
+ if (! confirm('Error editing '+(item.kind == 't3' ? 'post':'comment')+', would you like to retry?')) {
+ item.pdEdited = true;
+ }
+ pdApp.actions.processItem(item);
+ });
+ },
+ },
+ ui: {
updateDisplay: function () {
- if (pdApp.processInfo.num_pages<=pdApp.processInfo.done_pages) {
- pdApp.processInfo.num_pages = pdApp.processInfo.done_pages + 1;
+ $('#pd__form').hide().next().show();
+ $('#progress_page .bar').css('width',(Math.round(1000*pdApp.process.donePages/pdApp.process.numPages)/10)+'%');
+ $('#progress_page .text').text(pdApp.process.donePages + ' / ' + pdApp.process.numPages);
+ if (pdApp.process.numItems > 0) {
+ $('#progress_item .bar').css('width',(Math.round(1000*pdApp.process.doneItems/pdApp.process.numItems)/10)+'%');
+ $('#progress_item .text').text(pdApp.process.doneItems + ' / ' + pdApp.process.numItems);
}
- $('#progress_page .bar').css('width',(Math.round(1000*pdApp.processInfo.done_pages/pdApp.processInfo.num_pages)/10)+'%');
- $('#progress_page .text').text(pdApp.processInfo.done_pages + ' / ' + pdApp.processInfo.num_pages);
- if (pdApp.processInfo.num_individual > 0) {
- pdApp.processInfo.num_individual = Math.max(pdApp.processInfo.done_individual, pdApp.processInfo.num_individual);
- $('#progress_item .bar').css('width',(Math.round(1000*pdApp.processInfo.done_individual/pdApp.processInfo.num_individual)/10)+'%');
- $('#progress_item .text').text(pdApp.processInfo.done_individual + ' / ' + pdApp.processInfo.num_individual);
- }
-
- var main_percent = pdApp.processInfo.done_pages/pdApp.processInfo.num_pages,
- main_diff = (pdApp.processInfo.done_pages+1)/pdApp.processInfo.num_pages - main_percent,
- sub_percent = pdApp.processInfo.num_individual > 0 ? main_diff*(pdApp.processInfo.done_individual/(pdApp.processInfo.num_individual+1)) : 0;
-
- main_percent += sub_percent;
- document.title = pdApp.config.user + ' | ' + pdApp.processInfo.ajax_calls;
+ $('#progress_desc').html(
+ (pdApp.process.edited > 0 ? ''+pdApp.process.edited + ' edited
' : '')+
+ (pdApp.process.deleted > 0 ? ''+pdApp.process.deleted + ' deleted
' : '')+
+ (pdApp.process.ignored > 0 ? ''+pdApp.process.ignored + ' ignored
' : '')+
+ (pdApp.process.errors > 0 ? ''+pdApp.process.errors + ' errors
' : '')
+ );
+ pdApp.process.ajaxCalls = pdApp.process.edited + pdApp.process.deleted + pdApp.process.pageCalls;
+ document.title = pdApp.config.user + ' | ' + pdApp.process.ajaxCalls;
},
- submissions: {
- init: function () {
- if (pdApp.processInfo.checkSubmitted !== false) {
- pdApp.process.submissions.checkSubmitted();
- } else {
- pdApp.process.submissions.checkSearch();
- }
- },
- checkSubmitted: function () {
- pdApp.process.updateDisplay();
- pdApp.processInfo.ajax_calls ++;
- $.ajax({
- url: 'https://www.reddit.com/user/'+pdApp.config.user+'/submitted/.json'+(pdApp.processInfo.after ? '?after='+pdApp.processInfo.after : '')
- }).then(function(resp) {
- pdApp.processInfo.done_pages ++;
- if (resp.data.children.length > 0) {
- pdApp.processInfo.num_pages ++;
- pdApp.process.handle.items(resp.data.children);
- } else {
- pdApp.processInfo.after = false;
- pdApp.processInfo.checkSubmitted = false;
- pdApp.process.submissions.checkSearch();
- }
- }, function(resp) {
- console.error(resp);
- });
- },
- checkSearch: function () {
- pdApp.process.updateDisplay();
- pdApp.processInfo.ajax_calls ++;
- $.ajax({
- url: 'https://www.reddit.com/search.json?q=author%3A'+pdApp.config.user+(pdApp.processInfo.after ? '&after='+pdApp.processInfo.after : '')
- }).then(function(resp) {
- pdApp.processInfo.done_pages ++;
- if (resp.data.children.length > 0) {
- pdApp.processInfo.num_pages ++;
- pdApp.process.handle.items(resp.data.children);
- } else {
- pdApp.processInfo.after = false;
- pdApp.processInfo.checkSearch = false;
- pdApp.process.comments.init();
- }
- }, function(resp) {
- console.error(resp);
- pdApp.processInfo.done_pages ++;
- alert('Reddit search is down at the moment, so the script may not catch every submission. You may want to rerun the script after at a later time when Reddit isn\'t under so much load.');
- pdApp.processInfo.after = false;
- pdApp.processInfo.checkSearch = false;
- pdApp.process.comments.init();
- });
- }
- },
- comments: {
- init: function () {
- pdApp.process.comments.checkComments();
- },
- checkComments: function () {
- pdApp.process.updateDisplay();
- pdApp.processInfo.ajax_calls ++;
- $.ajax({
- url: 'https://www.reddit.com/user/'+pdApp.config.user+'/comments/.json'+(pdApp.processInfo.after ? '?after='+pdApp.processInfo.after : '')
- }).then(function(resp) {
- pdApp.processInfo.done_pages ++;
- if (resp.data.children.length > 0) {
- pdApp.processInfo.num_pages ++;
- pdApp.process.handle.items(resp.data.children);
- } else {
- pdApp.processInfo.after = false;
- pdApp.processInfo.checkComments = false;
- pdApp.done();
- }
- }, function(resp) {
- console.error(resp);
- });
- }
- },
- handle: {
- items: function (data) {
- pdApp.process.updateDisplay();
- pdApp.processInfo.done_individual = 0;
- pdApp.processInfo.num_individual = data.length;
- pdApp.processInfo.pageSize = data.length;
- pdApp.process.handle.item(data, false);
- },
- next: function (items,edited) {
- pdApp.processInfo.done_individual++;
- pdApp.process.updateDisplay();
- pdApp.processInfo.after = items[0].data.name;
- if (edited === false) {
- items.shift();
- }
- if (items.length > 0) {
- pdApp.process.handle.item(items,edited);
- } else {
- pdApp.process.updateDisplay();
- if (pdApp.processInfo.checkSubmitted !== false) {
- pdApp.process.submissions.checkSubmitted();
- } else if (pdApp.processInfo.checkSearch !== false) {
- pdApp.process.submissions.checkSearch();
- } else if (pdApp.processInfo.checkComments !== false) {
- pdApp.process.comments.checkComments();
- } else {
- pdApp.done();
- }
- }
- },
- item : function (items,edited) {
- var settings = pdApp.config.settings,
- item = items[0];
-
- if (!settings.subreddits || (settings.subfilters.indexOf(item.data.subreddit) >= 0)) {
- if (!settings.gilded || item.data.gilded === 0) {
- if (!settings.saved || item.data.saved === false) {
- if (!settings.mod || !item.data.distinguished) {
- if ((edited === false && settings['comments-edit']) && (item.kind === 't1' || item.data.is_self)) {
- pdApp.processInfo.ajax_calls ++;
- $.ajax({
- url: 'https://www.reddit.com/api/editusertext',
- method: 'post',
- data: {
- thing_id: item.data.name,
- text: settings['comments-edit-text'],
- id: '#form-'+item.data.name,
- r: item.data.subreddit,
- uh: pdApp.config.uh,
- renderstyle: 'html'
- }
- }).then(function() {
- if (settings['comments'] || settings['submissions']) {
- pdApp.process.handle.next(items,true);
- } else {
- pdApp.process.handle.next(items,false);
- }
- }, function (resp) {
- console.error(resp);
- if (confirm('Error editing item. Retry?')) {
- pdApp.process.handle.item(items,edited);
- } else {
- pdApp.process.handle.next(items,false);
- }
- });
- } else if (settings['comments'] || settings['submissions']) {
- pdApp.processInfo.ajax_calls ++;
- $.ajax({
- url: 'https://www.reddit.com/api/del',
- method: 'post',
- data: {
- id: item.data.name,
- executed: 'deleted',
- uh: pdApp.config.uh,
- renderstyle: 'html'
- }
- }).then(function() {
- pdApp.process.handle.next(items,false);
- }, function (resp) {
- console.error(resp);
- if (confirm('Error deleting item. Retry?')) {
- pdApp.process.handle.item(items,edited);
- } else {
- pdApp.process.handle.next(items,false);
- }
- });
- pdApp.process.handle.next(items,false);
- } else {
- pdApp.process.handle.next(items,false);
- }
- } else {
- pdApp.process.handle.next(items,false);
- }
- } else {
- pdApp.process.handle.next(items,false);
- }
- } else {
- pdApp.process.handle.next(items,false);
- }
- } else {
- pdApp.process.handle.next(items,false);
- }
- }
+ done: function () {
+ window.pd_processing = false;
+ $('#pd__central h2').first().text('Power Delete Suite v'+pdApp.version);
+ $('#pd__central .processing').html(
+ 'Completed after making '+pdApp.process.ajaxCalls+' calls to the reddit servers.
'+
+ (pdApp.process.edited > 0 ? ''+pdApp.process.edited + ' edited
' : '')+
+ (pdApp.process.deleted > 0 ? ''+pdApp.process.deleted + ' deleted
' : '')+
+ (pdApp.process.ignored > 0 ? ''+pdApp.process.ignored + ' ignored
' : '')+
+ (pdApp.process.errors > 0 ? ''+pdApp.process.errors + ' errors
' : '')+
+ 'If you need to re run the script, just click the bookmarklet again!
'
+ );
+ document.title = $('#header-bottom-right .user a').first().text()+' | Power Delete Suite';
}
},
- done: function () {
- window.pd_processing = false;
- $('#pd__central .processing').html('');
- $('#pd__central .processing').append('Completed after making '+pdApp.processInfo.ajax_calls+' calls to the reddit servers.
');
- $('#pd__central .processing').append('If you need to re run the script, just click the bookmarklet again!
');
- document.title = $('#header-bottom-right .user a').first().text()+' | Power Delete Suite';
- }
+ filters: {},
+ ignore: [] /* list of items we've already done */
};
pdApp.init();