Wykop Spam Cleaner

08 lipca, 2007

Ostatnio pisałem co sądzę o tym co się dzieje na Wykopie. Ponieważ działa to na mnie strasznie irytująco postanowiłem działać. Stworzyłem prosty UserJS - Wykop Spam Cleaner (v.0.1 beta), który pozwala pozbyć się badziewia z Wykopu. Na wstępie muszę powiedzieć, że skrypt działa tylko na Firefoksie z rozszerzeniem Greasemonkey i może nie jest userfriendly, ale za to ma myślę spore możliwości jak na swój rozmiar (~2kB).

Co umożliwia ten skrypt ? Pozwala na ukrycie wpisów ze stron Wykopu według podanych ustawień. Możemy tworzyć reguły zarówno do usuwania wpisów użytkowników jak i reguły do usuwania określonych linków. Samo "usuwanie" może działać w trzech trybach - rzeczywiste usunięcie danego wpisu z DOM, dodanie ustalonego opacity do danego wpisu i wreszcie dodanie określonego obramowania do danego wpisu. Każdy niechciany link/użytkownik ma indywidualne ustawienia typu usuwania/ukrywania i parametrów z tym związanych.

Dodatkowo skrypt w pasku nawigacji umieszcza informację o ilości usuniętych/ukrytych na danej stronie Wykopu linków.

Jak to działa ?

Jak już wspominałem - skrypt nie jest zbyt userfriendly, wymaga pewnej ingerencji w sam skrypt o czym zaraz, ale najpierw dlaczego tak, a nie inaczej:

  • niedługo ponoć ma się pojawić nowy Wykop więc chcę uniknąć sytuacji, że ja się napracuję nad jakimś interfejsem do obsługi skryptu, a na drugi dzień się okaże, że nowy Wykop udostępnia takie opcje domyślnie.
  • najważniejszy powód - brak czasu (to samo dotyczy wersji na Operę - oczywiście jeżeli ktoś z operowców ma czas i ochotę to śmiało można taką wersję tworzyć w oparciu o mój kod, nie widzę żadnych przeciwwskazań, a nawet bym się ucieszył bo sam czasami korzystam z Wykopu na Operze ).
  • nie chciałem zaśmiecać przeglądarki danymi skryptu.
  • w obecnej sytuacji można łatwo dzielić się ustawieniami skryptu z innymi (wystarczy przesłać sobie obiekt userR).

Zatem jak stworzyć zestaw własnych ustawień dla skryptu ?

Skrypt zawiera w kodzie taki oto obiekt:

var userR = {
users: [
      {
         user: 'username',
         type: type of removing as integer,
         opacity: opacity value as float,
         border: 'border style'
      }
   ],
links: [
      {
         link: 'link',
         type: type of removing as integer,
         opacity: opacity value as float,
         border: 'border style'
      }
   ]
};

gdzie kod:

users: [
      {
         user: 'username',
         type: type of removing as integer,
         opacity: opacity value as float,
         border: 'border style'
      }
   ],

Przechowuje dane o niepożądanych użytkownikach, a kod:

links: [
      {
         link: 'link',
         type: type of removing as integer,
         opacity: opacity value as float,
         border: 'border style'
      }
   ]

Przechowuje dane o regułach akceptacji linków. Dodanie nowej reguły polega na dodaniu obiektu postaci:

{
   user: 'username',
   type: type of removing as integer,
   opacity: opacity value as float,
   border: 'border style'
}

w tabeli pola users. Gdzie pole user to nazwa użytkownika bądź wyrażenie regularne opisujące parametry według których mają być akceptowani użytkownicy. Pole type to typ usuwania / ukrywania linka - podajemy tutaj jedną z trzech liczb : 1, 2 lub 3 gdzie:

  • 1 - usuwanie danego wpisu
  • 0 - nadanie wpisowi opacity równego polu opacity (liczba zmiennoprzecinkowa)
  • 2 - dodanie do wpisu obramowania (według wartości pola border np.: '1px solid #F00');

Z obiektem linków jest podobnie tylko tam jest pole link, zamiast user - i ono określa, jakie wpisy (z jakimi linkami) będą akceptowane.

To może przykładowy obiekt. Ja na przykład chciałbym aby wszystkie linki z youtube miały opacity 25%, do tego nie chcę widzieć w ogóle (chcę usunąć) wszystkie linki użytkownika farass (swoją drogą to on skłonił mnie do napisania tego skryptu :P ) i nadać obramowanie wszystkim linkom z serwisu wiadomosci24. Obiekt będzie wyglądał następująco:

var userR = {
users: [
      {
         user: 'farass',
         type: 1,
         opacity: 0,
         border: ''
      }
   ],
links: [
      {
         link: '.youtube',
         type: 0,
         opacity: 0.25,
         border: ''
      },
      {
         link: 'wiadomosci24',
         type: 2,
         opacity: 0,
         border: '10px dashed #EEE'
      }
   ]
};

Link do skryptu - http://userscripts.org/scripts/show/10552

Jeśli ktoś zauważy błędy w działaniu to oczywiście czekam na informacje. Mam nadzieję, że znajdę czas na poprawki ;]

Komentarze do wpisu "Wykop Spam Cleaner":

1. Dziudek napisał(a):
08 lipca 2007, 19:41:37

Jako, że userscripts.org raczyło akurat paść link do skryptu: dziudek.jogger.pl/files/wykopSpamCleaner.js

2. DrLex napisał(a):
09 lipca 2007, 08:45:23

Wydaje się to sprzeczne z ideą tego serwisu. To chyba społeczność decyduje co jest spamem, a co nie.

3. marines napisał(a):
09 lipca 2007, 09:39:18

@DrLex: to znaczy, że wykop ma spaczoną społeczność o.0 bo ostatnio wykopywane są same badziewne i kretyńskie wpisy typu „Super Mario Bros extreme”, „Toaleta za 19mln” etc. dno :/

4. Bigismall napisał(a):
09 lipca 2007, 10:07:33

Riddle, też napisał coś podobnego swego czasu. Wg mnie bardzo przydatne. Społeczność bowiem nadal może decydować co jej sie podoba a co nie. To co zaś serwuję sobie, to już moja sprawa.

5. Dziudek napisał(a):
09 lipca 2007, 13:27:15

Drlex – niestety funkcja zakop już dawno przestała być przydatna – trzeba się przed badziewiem bronić samemu…

6. pzt napisał(a):
10 lipca 2007, 10:05:03

fajny skrypt mam tylko jedno zastrzeżenie – przy zaznaczeniu w skrypcie linków youtube „wykaszane” są też wpisy, które tylko o youtube wspominają (w opisie) tak jak ten http://www.wykop.pl/link/21243/uwazaj-co-grasz-na-gitarze-piracie-jeden.html

7. Dziudek napisał(a):
10 lipca 2007, 10:13:11

@pzt – obejrzyj mój obiekt userR jaki prezentuję w miniblogu – zamiast youtube zastosowałem wyrażenie regularne pl.youtube|youtube.com i nie mam takiego problemu ;]

Dodaj komentarz:

Textile Lite włączony ( szczegółowy opis znaczników ):
*strong* | # lista numerowana | * lista wypunktowana | _em_ | __italic__ | "link":http:// | bq. cytat.