Отыскиваем дубликаты, в ответ на письмо Шаттера

Jul 01, 2016 11:02




Вы могли получить письмо вроде такого:

"Dear ...,

We have become aware that your portfolio now includes titles with spammy repetitive words or phrases. Repetitive titles like “orange, orange, orange” and “icon arrow, icon arrow, icon arrow” create a poor customer experience, and are prohibited under our metadata guidelines. These titles are considered spam and are not accepted for publishing during the review process. Editing them in this manner after your content has been published is not allowed.

You are now required to edit these titles to bring them back into compliance. In the coming weeks, we will review our collection again. If you do not correct your titles, or you continue to create repetitive or spammy titles, your account may be suspended.

To learn more about title spamming, please read How is Title Spamming Defined."



Для того чтобы хоть как-то исправить ситуацию можно пробежаться по своему портфолио и исправить тайтлы(дескрипшены) в базе Шаттера, хотелось бы чтобы у Шаттера был некий функционал, котороый поможет делу. На помощь приходят так называемые UserScript-ы, которые можно писать на Javascript-е. Они запускаются на странице определенной и делают что-то со страницей.

Для некоторых это может быть уже не в диковинку, если они пробовали установить скрипт, который показывает более детально места продаж своих картинок. Поэтому для фокуса такого нам тоже понадобится установка расширения для запуска пользовательских скриптов:Чтобы устанавливать Userscripts (пользовательские скрипты) сначала нужно установить расширение в браузер:
GreaseMonkey расширение для Mozilla Firefox
TamperMonkey расширение для Google Chrome
ViolentMonkey Opera расширение

Вот текст скрипта:

// ==UserScript==
// @name         find word dublicates
// @namespace    http://boluko.livejournal.com/
// @version      0.7
// @description  find sympthohms of ban
// @author       Bogdan Tymofiienko
// @match        http://submit.shutterstock.com/darkroom/gallery.mhtml*
// @grant        none
// @require      https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js
// ==/UserScript==
jQuery.noConflict();
jQuery(document).ready(function ($) {
// Code that uses jQuery's $ can follow here.
//PART 1
jQuery('#stats_table tr:odd td:last-child').parent().each(function (index) {
jQuery(this).append("<== Искали тут версией 0.7");
});
jQuery('head').append('');
jQuery('#stats_table tr:odd p:first-of-type').css('background', '#FDF');
jQuery('#stats_table tr:odd p:first-of-type').each(function () {
////////////////////////////////////////////
var re, i, dublicates_warning = 0, dublicates_strong = 0;
var Text = jQuery(this).text(),
  text = Text.toLowerCase();
////////////////////////////////////////////
//NEW .5+ VERSION
////////////////////////////////////////////
console.log('NEW .5+ VERSION');
re = /\s*[ ,\.\!"]\s*/;
var words2 = text.split(re),
  Words2 = Text.split(re),
  sortedWords2 = words2.slice(0).sort(),
  duplicateWords2 = [],
  highlighted2 = [],
  warning_words = ["a", "an", "of", "for", "and", "or", "with", "the", "on", "at", "in"];
if (sortedWords2[0] === "")
  sortedWords2.shift();
if (sortedWords2[0] === "")
  sortedWords2.shift();
//console.log(words2);
//console.log(sortedWords2);
for (i = 0; i < sortedWords2.length - 1; i++) {
  //var r1 = new RegExp('^' + sortedWords[i + 1] + '(\\.?)$'),
  //r2 = new RegExp('^' + sortedWords[i] + '(\\.?)$');
  if (sortedWords2[i] == sortedWords2[i + 1]) {
      duplicateWords2.push(sortedWords2[i].replace(String.fromCharCode(8629), ''));
  }
}
duplicateWords2 = $.unique(duplicateWords2);
//console.log(duplicateWords2);
var words2_ = text.split(/([ ,\.\!"])/);
var Words2_ = Text.split(/([ ,\.\!"])/);
//console.log(words2_);
//console.log(Words2_);
//console.log('-------');
for (i = 0; i < words2_.length; i++) {
  var current_word = words2_[i].replace(String.fromCharCode(10), '');
  //console.log('[' + current_word + ']' + Codes(current_word));
  if (duplicateWords2.indexOf(current_word) != -1) {
      if (warning_words.indexOf(current_word) != -1) {
          highlighted2.push('' + Words2_[i] + '');
          dublicates_warning++;
      } else {
          highlighted2.push('' + Words2_[i] + '');
          dublicates_strong++;
      }
  } else {
      highlighted2.push(Words2_[i]);
  }
}
$(this).html(highlighted2.join(''));
if ((dublicates_warning + dublicates_strong) > 0) {
  $('.number_results').append('
');
  if (dublicates_warning > 0)
      $('.number_results').append('Warning,');
  if (dublicates_strong > 0)
      $('.number_results').append('Error,');
}
});
//END PART 1
//PART 2
jQuery('#stats_table tr:odd a.link:not(.keywords_message)').each(function () {
//console.log(jQuery(this).attr("href"));
var number = jQuery(this).attr("href").match("\\d+$");
jQuery(this).attr("href", "http://submit.shutterstock.com/edit_media.mhtml?id=" + number + "&type=photos&approved=1");
jQuery(this).addClass("edit");
jQuery(this).attr("target", "_blank");
});
//END PART 2
});
function Codes(xxx) {
//console.log('xxx=' + xxx);
var codes = '';
for (iii = 0; iii < xxx.length; iii++) {
//console.log('iii=' + iii + '::' + xxx.charCodeAt(iii));
codes += (xxx.charCodeAt(iii)) + ', ';
//console.log('codes=' + codes);
}
if (codes.length > 0) codes = codes.slice(0, -2);
//console.log('codes=' + codes);
return codes;
}
Итак:
1.  Для того чтобы заметить что-то интересное, нужно полистать у себя в Галлерее статистики изображений.
И вуаля если вы заметите как часть текста выделяется желтым маркером.
2. Более того чтобы побыстрячку исправить это в базе кликайте на ссылку, подчеркнутую типа такой Shutterstock ID: #########. В новом окошке(вкладке) откроется страница для редактирования, разве что обновление в базе будет происходить не настолько быстро как хотелось. После внесения исправлений Несколько раз можно нажать кропку "SUBMIT & SAVE".

И повторять действия сии до конца пока не просмотрите в галлерее все свои изображения.
Жду отзывов и пожеланий.

UPDATE (version 0.2): исправил баг с неразличением регистра букв (добавил другой: теперь текст отображается в нижнем регистре, но для проверки это не критично)

UPDATE (version 0.3): вроде исправил баг с тем, что на некоторых страницах не работает При новых замечаниях указывайте свою версию скрипта, браузер, номер страницы и собственно сам тайтл где оно не работает

UPDATE (version 0.4): пока фиксил баг первый почему-то вернулся, а поэтому пофиксил оба сразу

UPDATE (version 0.5): приучили любить запятые и отсутствие пробелов, почти переписали логику на разделители: "(кавычка), запятая !(восклицательный знак) и .(точка)  ЖДЕМ ВАШИХ ПРЕДЛОЖЕНИЙ

UPDATE (version 0.6): косметические красивости и в начале страницы могут выскакивать Errors желтого цвета

UPDATE (version 0.7): приучали не дергаться на "a", "an", "of", "for", "and", "or", "with", "the", "on", "at", "in" ЖДЕМ ВАШИХ ПРЕДЛОЖЕНИЙ, теперь помимо ошибок в начале (на красном фоне белым) показываются упомянутые частички (на желтом фоне черным)

ОТДЕЛЬНЫЕ спасибы всем ребятам и дивчатам,
которые пробовали и отзывались
об ошибках и пожеланиях )

Ох уж этот шаттер:
В галлерее работ он каждый раз рандомно выдает картинки на некоторых страничках!
На какое мужество он обрекает людей, которые хотят все пройти, сколько итераций нужно сделать, чтобы сделать дело с заданной вероятностью, скажем 99%

shutterstock, скрипты, javascript, плагины браузера

Previous post Next post
Up