Differences between versions

ItemVersion from 19:47, 6 April 2024 by Suffusion of YellowVersion from 20:06, 6 April 2024 by Suffusion of Yellow
Filter conditions
Conditions:
( documentation)
sus := "(?x)\b(?:
sus := "(?x)\b(?:
     #Common words
     #Common words
     anal
     anal
     |ass+
     |ass+
     |balls
     |balls
     |booty
     |booty
     |bum
     |bum
     |butt
     |butt
     |caca
     |caca
     |cool(?:est)?
     |cool(?:est)?
     |cum
     |cum
     |daddy
     |daddy
     |fart(?:ed|ing|s)?
     |fart(?:ed|ing|s)?
     |fat
     |fat
     |gay(?:est|s)?
     |gay(?:est|s)?
     |hello
     |hello
     |(?<!\S)hi(?!\S)
     |(?<!\S)hi(?!\S)
     |i[ ](?:like|hate)
     |i[ ](?:like|hate)
     |idk
     |idk
     |is[ ]fake
     |is[ ]fake
     |is[ ]the[ ](?:best|worst)
     |is[ ]the[ ](?:best|worst)
     |m[ou]m(?:my)?
     |m[ou]m(?:my)?
     |moron
     |moron
     |nonces?
     |nonces?
     |poo+
     |poo+
     |porno?
     |porno?
     |racists?
     |racists?
     |sexy?
     |sexy?
     |smell[ys]  
     |smell[ys]  
     |stink[ys]
     |stink[ys]
     |stupid
     |stupid
     |suck(?:ed|ing|s)?
     |suck(?:ed|ing|s)?
     |vaginas?
     |vaginas?
      
      
     #Button pushing
     #Button pushing
     |bold[ ]text
     |bold[ ]text
     |italic[ ]text
     |italic[ ]text
     |ref></ref
     |ref></ref
      
      
     #Memes
     #Memes
     |fortnite
     |fortnite
     |goat
     |goat
     |ronaldo
     |ronaldo
     |sigmas?
     |sigmas?
)\b";
)\b";


page_namespace == 0 &
page_namespace == 0 &
!("confirmed" in user_groups) &
!("confirmed" in user_groups) &
edit_delta < 1000 &
(
(
     match := get_matches("(?i)" + sus, added_lines)[0];
     match := get_matches("(?i)" + sus, added_lines)[0];
     match & (
     match & (
         escaped_match := "(?:\b" + rescape(match) + "\b)";
         escaped_match := "(?:\b" + rescape(match) + "\b)";
         !(removed_lines irlike sus) &
         !(removed_lines irlike sus) &
         !(old_wikitext irlike escaped_match)
         !((old_wikitext + added_links) irlike escaped_match)
     )
     )
) & (
) & (
     /* Baseline AGF */
     /* Baseline AGF */
     score := 1.0;
     score := 1.0;


     /* More AGF on "sweary" pages */
     /* More AGF on "sweary" pages */
     score := score + 0.25 * rcount("(?i)" + sus, old_wikitext);
     score := score + 0.25 * rcount("(?i)" + sus, old_wikitext);


     /* More AGF on fiction or music related pages */
     /* More AGF on fiction or music related pages */
     score := score + 2.0 * (new_wikitext irlike "(?x)
     score := score + 2.0 * (new_wikitext irlike "(?x)
         category:.*(?:films|shows|books|episodes|bands|musical[ ]groups|albums|songs)
         category:.*(?:films|shows|books|episodes|bands|musical[ ]groups|albums|songs)
         |discography
         |discography
         |filmography
         |filmography
     ");  
     ");  
 
   
     /* Added references */
     /* Added references */
     ref_cnt := (count("<ref", added_lines) - count("<ref", removed_lines));
     ref_cnt := (count("<ref", added_lines) - count("<ref", removed_lines));
     clamped_ref_cnt := ref_cnt < -1 ? -1 : ref_cnt;
     clamped_ref_cnt := ref_cnt < -1 ? -1 : ref_cnt;
     score := score + 2.0 * clamped_ref_cnt;
     score := score + 2.0 * clamped_ref_cnt;


     /* Added markup */
     /* Added markup */
     markup_cnt := (rcount("[[\]{}|*#=]", added_lines)) - (rcount("[[\]{}|*#=]", removed_lines));
     markup_cnt := (rcount("[[\]{}|*#=]", added_lines)) - (rcount("[[\]{}|*#=]", removed_lines));
     clamped_markup_cnt := markup_cnt < -10 ? -10 : markup_cnt;
     clamped_markup_cnt := markup_cnt < -10 ? -10 : markup_cnt;
     score := score + 0.1 * clamped_markup_cnt;
     score := score + 0.1 * clamped_markup_cnt;


     /* Added quotes or italics */
     /* Added quotes or italics */
     quote_cnt := (rcount("(?<!')''(?!')|\"", added_lines)) - rcount("(?<!')''(?!')|\"", removed_lines);
     quote_cnt := (rcount("(?<!')''(?!')|\"", added_lines)) - rcount("(?<!')''(?!')|\"", removed_lines);
     clamped_quote_cnt := quote_cnt < 0 ? 0 : quote_cnt;
     clamped_quote_cnt := quote_cnt < 0 ? 0 : quote_cnt;
     score := score + 0.5 * clamped_quote_cnt;
     score := score + 0.5 * clamped_quote_cnt;


     /* Unenclopedic language */
     /* Unenclopedic language */
     bonus_words := "\b(?:i|me|my|your?)\b";
     bonus_words := "\b(?:i|me|my|your?)\b";
     score := score - 0.5 * (
     score := score - 0.5 * (
         added_lines irlike bonus_words &  
         added_lines irlike bonus_words &  
         !(removed_lines irlike bonus_words) &
         !(removed_lines irlike bonus_words) &
         !(match irlike bonus_words) /* Avoid double-counting "i like", etc. */
         !(match irlike bonus_words) /* Avoid double-counting "i like", etc. */
     );
     );


     /* No summary */
     /* No summary */
     score := score - 0.5 * (summary irlike "^(?:/\*.*?\*/)?\s*$");
     score := score - 0.5 * (summary irlike "^(?:/\*.*?\*/)?\s*$");


     /* Did they add these words and do nothing else except adjust whitespace and punctuation? */
     /* Did they add these words and do nothing else except adjust whitespace and punctuation? */
     score := score - 2.0 * (norm(str_replace_regexp(added_lines, sus, "")) == norm(removed_lines));
     score := score - 2.0 * (norm(str_replace_regexp(added_lines, sus, "")) == norm(removed_lines));


     /* Multiple bad words */
     /* Multiple bad words */
     extra_cnt := rcount("(?i)" + sus, added_lines) - 1;
     extra_cnt := rcount("(?i)" + sus, added_lines) - 1;
     clamped_extra_cnt := extra_cnt > 10 ? 10 : extra_cnt;
     clamped_extra_cnt := extra_cnt > 4 ? 4 : extra_cnt;
     score := score - 0.5 * clamped_extra_cnt;
     score := score - 0.5 * clamped_extra_cnt;
      
      
     /* Back-to-back bad words */
     /* Back-to-back bad words */
     score := score - 2.0 * (added_lines irlike ("(?:(?:" + sus + ")\W*){2}"));
     score := score - 2.0 * (added_lines irlike ("(?:(?:" + sus + ")\W*){2}"));


     /* If the word count is exactly the same, that probably means they just swapped out one word, or did a search-and-replace */
     /* If the word count is exactly the same, that probably means they just swapped out one word, or did a search-and-replace */
     score := score - 1.0 * (rcount("\w+", added_lines) == rcount("\w+", removed_lines));
     score := score - 1.0 * (rcount("\w+", added_lines) == rcount("\w+", removed_lines));


     /* Anything in all caps, not necessarily these words */
     /* Anything in all caps, not necessarily these words */
     score := score - 1.0 * (rcount("[A-Z]{4,}", added_lines) > rcount("[A-Z]{4,}", removed_lines));
     score := score - 1.0 * (rcount("[A-Z]{4,}", added_lines) > rcount("[A-Z]{4,}", removed_lines));


     if !quote_cnt & !ref_cnt & !markup_cnt then (
     if (!quote_cnt & !ref_cnt & !markup_cnt) then (
         /* Added plain text to the end of a single line */
         /* Added plain text to the end of a single line */
         score := score - 1.0 * (
         score := score - 1.0 * (
                 strpos(rmwhitespace(added_lines), rmwhitespace(removed_lines)) == 0 &
                 strpos(rmwhitespace(added_lines), rmwhitespace(removed_lines)) == 0 &
                 length(added_lines) == length(removed_lines)
                 length(added_lines) == length(removed_lines)
         );
         );


         /* Added plain text to the start or end of the page */
         /* Added plain text to the start or end of the page */
         score := score - 2.0 * (strpos(rmwhitespace(new_wikitext), rmwhitespace(old_wikitext)) != -1);
         score := score - 2.0 * (strpos(rmwhitespace(new_wikitext), rmwhitespace(old_wikitext)) != -1);
     ) end;
     ) end;
      
      
     /* No changes at all to punctuation or markup */
     /* No changes at all to punctuation or markup */
     score := score - 2.0 * (str_replace_regexp(added_lines, "[\w\s]", "") == str_replace_regexp(removed_lines, "[\w\s]", ""));
     score := score - 2.0 * (str_replace_regexp(added_lines, "[\w\s]", "") == str_replace_regexp(removed_lines, "[\w\s]", ""));
      
      
     /* Not much use of the shift key */
     /* Not much use of the shift key */
     score := score - 1.0 * (rcount('[A-Z]', added_lines) == rcount('[A-Z]', removed_lines));
     score := score - 1.0 * (rcount('[A-Z]', added_lines) == rcount('[A-Z]', removed_lines));
      
      
     /* Red link containing the specific word they added */
     /* Red link containing the specific word they added */
     score := score - 2.0 * (new_html irlike ('class="new" title="[^"]*' + escaped_match));
     score := score - 2.0 * (new_html irlike ('class="new" title="[^"]*' + escaped_match));


     score < 0
     score < 0
)
)

Differences between versions

ItemVersion from 19:47, 6 April 2024 by Suffusion of YellowVersion from 20:06, 6 April 2024 by Suffusion of Yellow
Filter conditions
Conditions:
( documentation)
sus := "(?x)\b(?:
sus := "(?x)\b(?:
     #Common words
     #Common words
     anal
     anal
     |ass+
     |ass+
     |balls
     |balls
     |booty
     |booty
     |bum
     |bum
     |butt
     |butt
     |caca
     |caca
     |cool(?:est)?
     |cool(?:est)?
     |cum
     |cum
     |daddy
     |daddy
     |fart(?:ed|ing|s)?
     |fart(?:ed|ing|s)?
     |fat
     |fat
     |gay(?:est|s)?
     |gay(?:est|s)?
     |hello
     |hello
     |(?<!\S)hi(?!\S)
     |(?<!\S)hi(?!\S)
     |i[ ](?:like|hate)
     |i[ ](?:like|hate)
     |idk
     |idk
     |is[ ]fake
     |is[ ]fake
     |is[ ]the[ ](?:best|worst)
     |is[ ]the[ ](?:best|worst)
     |m[ou]m(?:my)?
     |m[ou]m(?:my)?
     |moron
     |moron
     |nonces?
     |nonces?
     |poo+
     |poo+
     |porno?
     |porno?
     |racists?
     |racists?
     |sexy?
     |sexy?
     |smell[ys]  
     |smell[ys]  
     |stink[ys]
     |stink[ys]
     |stupid
     |stupid
     |suck(?:ed|ing|s)?
     |suck(?:ed|ing|s)?
     |vaginas?
     |vaginas?
      
      
     #Button pushing
     #Button pushing
     |bold[ ]text
     |bold[ ]text
     |italic[ ]text
     |italic[ ]text
     |ref></ref
     |ref></ref
      
      
     #Memes
     #Memes
     |fortnite
     |fortnite
     |goat
     |goat
     |ronaldo
     |ronaldo
     |sigmas?
     |sigmas?
)\b";
)\b";


page_namespace == 0 &
page_namespace == 0 &
!("confirmed" in user_groups) &
!("confirmed" in user_groups) &
edit_delta < 1000 &
(
(
     match := get_matches("(?i)" + sus, added_lines)[0];
     match := get_matches("(?i)" + sus, added_lines)[0];
     match & (
     match & (
         escaped_match := "(?:\b" + rescape(match) + "\b)";
         escaped_match := "(?:\b" + rescape(match) + "\b)";
         !(removed_lines irlike sus) &
         !(removed_lines irlike sus) &
         !(old_wikitext irlike escaped_match)
         !((old_wikitext + added_links) irlike escaped_match)
     )
     )
) & (
) & (
     /* Baseline AGF */
     /* Baseline AGF */
     score := 1.0;
     score := 1.0;


     /* More AGF on "sweary" pages */
     /* More AGF on "sweary" pages */
     score := score + 0.25 * rcount("(?i)" + sus, old_wikitext);
     score := score + 0.25 * rcount("(?i)" + sus, old_wikitext);


     /* More AGF on fiction or music related pages */
     /* More AGF on fiction or music related pages */
     score := score + 2.0 * (new_wikitext irlike "(?x)
     score := score + 2.0 * (new_wikitext irlike "(?x)
         category:.*(?:films|shows|books|episodes|bands|musical[ ]groups|albums|songs)
         category:.*(?:films|shows|books|episodes|bands|musical[ ]groups|albums|songs)
         |discography
         |discography
         |filmography
         |filmography
     ");  
     ");  
 
   
     /* Added references */
     /* Added references */
     ref_cnt := (count("<ref", added_lines) - count("<ref", removed_lines));
     ref_cnt := (count("<ref", added_lines) - count("<ref", removed_lines));
     clamped_ref_cnt := ref_cnt < -1 ? -1 : ref_cnt;
     clamped_ref_cnt := ref_cnt < -1 ? -1 : ref_cnt;
     score := score + 2.0 * clamped_ref_cnt;
     score := score + 2.0 * clamped_ref_cnt;


     /* Added markup */
     /* Added markup */
     markup_cnt := (rcount("[[\]{}|*#=]", added_lines)) - (rcount("[[\]{}|*#=]", removed_lines));
     markup_cnt := (rcount("[[\]{}|*#=]", added_lines)) - (rcount("[[\]{}|*#=]", removed_lines));
     clamped_markup_cnt := markup_cnt < -10 ? -10 : markup_cnt;
     clamped_markup_cnt := markup_cnt < -10 ? -10 : markup_cnt;
     score := score + 0.1 * clamped_markup_cnt;
     score := score + 0.1 * clamped_markup_cnt;


     /* Added quotes or italics */
     /* Added quotes or italics */
     quote_cnt := (rcount("(?<!')''(?!')|\"", added_lines)) - rcount("(?<!')''(?!')|\"", removed_lines);
     quote_cnt := (rcount("(?<!')''(?!')|\"", added_lines)) - rcount("(?<!')''(?!')|\"", removed_lines);
     clamped_quote_cnt := quote_cnt < 0 ? 0 : quote_cnt;
     clamped_quote_cnt := quote_cnt < 0 ? 0 : quote_cnt;
     score := score + 0.5 * clamped_quote_cnt;
     score := score + 0.5 * clamped_quote_cnt;


     /* Unenclopedic language */
     /* Unenclopedic language */
     bonus_words := "\b(?:i|me|my|your?)\b";
     bonus_words := "\b(?:i|me|my|your?)\b";
     score := score - 0.5 * (
     score := score - 0.5 * (
         added_lines irlike bonus_words &  
         added_lines irlike bonus_words &  
         !(removed_lines irlike bonus_words) &
         !(removed_lines irlike bonus_words) &
         !(match irlike bonus_words) /* Avoid double-counting "i like", etc. */
         !(match irlike bonus_words) /* Avoid double-counting "i like", etc. */
     );
     );


     /* No summary */
     /* No summary */
     score := score - 0.5 * (summary irlike "^(?:/\*.*?\*/)?\s*$");
     score := score - 0.5 * (summary irlike "^(?:/\*.*?\*/)?\s*$");


     /* Did they add these words and do nothing else except adjust whitespace and punctuation? */
     /* Did they add these words and do nothing else except adjust whitespace and punctuation? */
     score := score - 2.0 * (norm(str_replace_regexp(added_lines, sus, "")) == norm(removed_lines));
     score := score - 2.0 * (norm(str_replace_regexp(added_lines, sus, "")) == norm(removed_lines));


     /* Multiple bad words */
     /* Multiple bad words */
     extra_cnt := rcount("(?i)" + sus, added_lines) - 1;
     extra_cnt := rcount("(?i)" + sus, added_lines) - 1;
     clamped_extra_cnt := extra_cnt > 10 ? 10 : extra_cnt;
     clamped_extra_cnt := extra_cnt > 4 ? 4 : extra_cnt;
     score := score - 0.5 * clamped_extra_cnt;
     score := score - 0.5 * clamped_extra_cnt;
      
      
     /* Back-to-back bad words */
     /* Back-to-back bad words */
     score := score - 2.0 * (added_lines irlike ("(?:(?:" + sus + ")\W*){2}"));
     score := score - 2.0 * (added_lines irlike ("(?:(?:" + sus + ")\W*){2}"));


     /* If the word count is exactly the same, that probably means they just swapped out one word, or did a search-and-replace */
     /* If the word count is exactly the same, that probably means they just swapped out one word, or did a search-and-replace */
     score := score - 1.0 * (rcount("\w+", added_lines) == rcount("\w+", removed_lines));
     score := score - 1.0 * (rcount("\w+", added_lines) == rcount("\w+", removed_lines));


     /* Anything in all caps, not necessarily these words */
     /* Anything in all caps, not necessarily these words */
     score := score - 1.0 * (rcount("[A-Z]{4,}", added_lines) > rcount("[A-Z]{4,}", removed_lines));
     score := score - 1.0 * (rcount("[A-Z]{4,}", added_lines) > rcount("[A-Z]{4,}", removed_lines));


     if !quote_cnt & !ref_cnt & !markup_cnt then (
     if (!quote_cnt & !ref_cnt & !markup_cnt) then (
         /* Added plain text to the end of a single line */
         /* Added plain text to the end of a single line */
         score := score - 1.0 * (
         score := score - 1.0 * (
                 strpos(rmwhitespace(added_lines), rmwhitespace(removed_lines)) == 0 &
                 strpos(rmwhitespace(added_lines), rmwhitespace(removed_lines)) == 0 &
                 length(added_lines) == length(removed_lines)
                 length(added_lines) == length(removed_lines)
         );
         );


         /* Added plain text to the start or end of the page */
         /* Added plain text to the start or end of the page */
         score := score - 2.0 * (strpos(rmwhitespace(new_wikitext), rmwhitespace(old_wikitext)) != -1);
         score := score - 2.0 * (strpos(rmwhitespace(new_wikitext), rmwhitespace(old_wikitext)) != -1);
     ) end;
     ) end;
      
      
     /* No changes at all to punctuation or markup */
     /* No changes at all to punctuation or markup */
     score := score - 2.0 * (str_replace_regexp(added_lines, "[\w\s]", "") == str_replace_regexp(removed_lines, "[\w\s]", ""));
     score := score - 2.0 * (str_replace_regexp(added_lines, "[\w\s]", "") == str_replace_regexp(removed_lines, "[\w\s]", ""));
      
      
     /* Not much use of the shift key */
     /* Not much use of the shift key */
     score := score - 1.0 * (rcount('[A-Z]', added_lines) == rcount('[A-Z]', removed_lines));
     score := score - 1.0 * (rcount('[A-Z]', added_lines) == rcount('[A-Z]', removed_lines));
      
      
     /* Red link containing the specific word they added */
     /* Red link containing the specific word they added */
     score := score - 2.0 * (new_html irlike ('class="new" title="[^"]*' + escaped_match));
     score := score - 2.0 * (new_html irlike ('class="new" title="[^"]*' + escaped_match));


     score < 0
     score < 0
)
)

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook