2010-12-22 11 views
8

मैं प्रत्येक पेज को एक निश्चित आईपी एड्रेस संपादित कर रहा हूं, और उनके द्वारा बनाए गए किसी भी पेज को हटाना चाहता हूं।मीडियाविकी रोलबैक बॉट (मास अंडो ट्रोल एक्शन!)

मैं इसे करने के लिए या तो एक बॉट या प्लगइन या यहां तक ​​कि डिफ़ॉल्ट कार्यक्षमता के साथ ऐसा कैसे कर सकता हूं? मुझे बॉट प्रलेखन (here) मिला है लेकिन उपयोगकर्ता योगदान प्राप्त करने और वापस रोलिंग के साथ कोई भी स्रोत कोड नहीं मिला है।

आपकी मदद के लिए धन्यवाद! यह प्राथमिक रूप से PHP में होना चाहिए।

+0

वे शायद 50 या उससे अधिक पृष्ठों की सामग्री बदल रहे हैं, और इससे पहले कि मैं उन्हें प्रतिबंधित कर सकूं 10-20 नए हो। मुझे पता है कि यह बहुत कुछ नहीं है, लेकिन इसे साफ करने के लिए परेशान हो जाता है। – Cyclone

+0

Ctrl + क्लिक इसके लिए एक अमूल्य उपकरण प्रतीत होता है, लेकिन यह अभी भी उनके द्वारा बनाए गए पृष्ठों को हटा नहीं रहा है। – Cyclone

+1

संबंधित: एक्सटेंशन: दुर्व्यवहार फ़िल्टर: http://www.mediawiki.org/wiki/Extension:AbuseFilter – Wikis

उत्तर

0

आप इसे करने के लिए pywikipediabot को निश्चित रूप से प्राप्त कर सकते हैं, बहुत कठिन नहीं होना चाहिए।

+0

मेरे पास pywikipediabot है, और इससे मुझे भी मदद मिल सकती है। आप इसे pywikipediabot के साथ कैसे कर सकते हैं? – pythonFoo

+0

मैंने इसे थोड़ी देर में उपयोग नहीं किया है, लेकिन आप केवल एक स्क्रिप्ट लिखते हैं जिसे आप उपयोगकर्ता नाम या आईपी इनपुट करते हैं, और फिर यह सभी संपादनों को वापस लाता है और उनके द्वारा बनाए गए सभी पृष्ठों को हटा देता है। स्क्रिप्ट लिखने पर ghelp के लिए pywikipediabot के लिए प्रलेखन देखें। मुझे लगता है कि आपको इसका उपयोग करने के लिए अजगर का कुछ ज्ञान होना होगा, लेकिन चूंकि आपका उपयोगकर्ता नाम पायथन फू है, मुझे लगता है कि आपको वह कवर मिला है। –

0

यदि आप बॉट के लिए कोड लिखना नहीं चाहते हैं, तो आप Navigation Popups का उपयोग कर सकते हैं, इसमें एक क्लिक वंडल रिवर्ट है, 50 संपादनों को वापस करने के लिए बहुत तेज़ होना चाहिए।

+0

क्या यह मीडियाविकी इंस्टॉलेशन से ऐसा करने योग्य है जो विकीमीडिया प्रोजेक्ट का हिस्सा नहीं है? – Cyclone

+0

हां: http://en.wikipedia.org/wiki/Wikipedia:Tools/Navigation_popups/FAQ# पोर्टेबिलिटी –

2

हमें एक ही समस्या थी और मैंने एक एसक्यूएल स्क्रिप्ट तैयार कर लिया। यहाँ देखें। मैंने इसे केवल दो बार कोशिश की और यह मेरे लिए काम किया। नीचे लिपि का लिंक है।

http://www.gc-k.org/index.php/Cleaning_up_after_Vandals_%28Media_Wiki_Mass_Rollback%29

और यहाँ स्क्रिप्ट ही है। इसका उपयोग करने से पहले डेटाबेस गुणों को बदलें। पहले कमांड लाइन तर्क उपयोगकर्ता का नाम या आईपी होना चाहिए।

echo off 
clear 
USER=$1 
DB_USR=XXX 
DB_PWD=XXX 
DB_NAME=XXX 

echo "For all pages affected by $USER activities set last revision to the last untouched one" 
mysql $DB_NAME --user=$DB_USR --password=$DB_PWD --execute="update page p set p.page_latest=(SELECT max(r.rev_id) FROM revision r WHERE r.rev_page=p.page_id and r.rev_user_text!='$USER') where p.page_id in (select distinct r2.rev_page from revision r2 where r2.rev_user_text='$USER')" 

echo "For all pages make sure that page len is set equal to revision len" 
mysql $DB_NAME --user=$DB_USR --password=$DB_PWD --execute="update page p set p.page_len=(SELECT r.rev_len FROM revision r WHERE r.rev_page=p.page_id and r.rev_id=p.page_latest)" 

echo "Delete revisions done by $USER" 
mysql $DB_NAME --user=$DB_USR --password=$DB_PWD --execute="delete from revision where rev_user_text='$USER'" 

echo Delete $USER from the recent changes 
mysql $DB_NAME --user=$DB_USR --password=$DB_PWD --execute="delete from recentchanges where rc_user_text='$USER'" 

# Optional - clear cache 
# mysql $DB_NAME --user=$DB_USR --password=$DB_PWD --execute="delete FROM `objectcache`" 
# mysql $DB_NAME --user=$DB_USR --password=$DB_PWD --execute="delete FROM `querycache`" 
# mysql $DB_NAME --user=$DB_USR --password=$DB_PWD --execute="delete FROM `querycachetwo`" 

स्क्रिप्ट चलाने के बाद आपको ब्राउज़र में पृष्ठ को फिर से लोड करते समय SHIFT कुंजी पकड़नी होगी। अन्यथा कैश किए गए संस्करण को प्रस्तुत किया जाएगा और आप देखेंगे कि रोलबैक वास्तव में हुआ था।

2

Extension:Nuke एक क्लिक में दिए गए उपयोगकर्ता द्वारा बनाए गए सभी पृष्ठों को हटाने के लिए स्पष्ट रूप से लिखा गया है।

मुझे नहीं लगता कि एक उपयोगकर्ता द्वारा किए गए सभी योगदानों को हटाने या वापस करने का कोई टूल है, लेकिन एक क्लिक के साथ rollback संपादन में स्क्रिप्ट हैं। Manual:Combating vandalism भी देखें।

1

स्टैन सोकोलोव द्वारा एसक्यूएल प्रश्नों के आधार पर, मैंने अपने विकी में एक भयानक गड़बड़ी को साफ करने में कामयाब रहा - मैंने इसे आधे साल तक निगरानी नहीं की है और यह स्पैम से भरा हुआ है। मुझे इसे विशिष्ट तारीख से साफ करना था।

यदि आप कोशिश करने जा रहे हैं, तो कृपया पहले बैकअप लें - उन एसक्यूएल प्रश्न आपकी विकी को नष्ट कर सकते हैं, बिल्ली के बच्चे को मार सकते हैं और गर्भावस्था का कारण बन सकते हैं।

इस उदाहरण में, "tr_" मेरा उपसर्ग है, "18 9" अंतिम अच्छा पृष्ठ आईडी है, "41" अंतिम अच्छी उपयोगकर्ता आईडी है, और "20130215152547" पहली स्पैम प्रविष्टि दिनांक है।

#Update page state to last good before the date 
UPDATE tr_page p SET p.page_latest=(SELECT MAX(r.rev_id) FROM tr_revision r 
WHERE r.rev_page=p.page_id 
AND rev_timestamp <20130215152547) WHERE p.page_id IN 
(SELECT r2.rev_page FROM tr_revision r2 WHERE rev_timestamp >=20130215152547); 

#Update page length to match actual 
UPDATE tr_page p SET p.page_len=(SELECT r.rev_len FROM tr_revision r WHERE 
r.rev_page=p.page_id AND r.rev_id=p.page_latest); 

#Clean up spam revisions 

DELETE FROM tr_revision WHERE rev_timestamp >=20130215152547; 

#Clear recent changes 

DELETE FROM tr_recentchanges WHERE rc_timestamp >=20130215152547; 

#Block all new bad users from ever entering wiki with this login 
UPDATE tr_user SET 
    user_password = '', 
    user_newpassword = '', 
    user_email  = '', 
    user_token  = '' 
WHERE user_id>41; 

#Delete pages, staring from the last good id 
DELETE FROM tr_page WHERE page_id>189; 

#Also, you will need TO clean TABLE tr_pagelinks. 
#You will have to do it manually. It's easy, use some editor 
#like PHPMyAdmin or SQLyog 

#Clean cache 

DELETE FROM `tr_objectcache`; 
DELETE FROM `tr_querycache`; 
DELETE FROM `tr_querycachetwo`; 
संबंधित मुद्दे