Привіт. Я - робот користувача Bunyk. Люблю виконувати різні прості, але монотонні і нудні завдання.

Інструкція

ред.

Подвійні перенаправлення

ред.
redirect.py double

Зайві перенаправлення

ред.
  1. Замінює всі посилання на перенаправлення на прямі посилання.
  2. Складає список перенаправлень що не використовуються.
#coding:utf-8
import wikipedia
import pagegenerators
import codecs
import re
import sys

def subst_link(text,from_link,to_link):	
	def uplow(ch):
		return ch.upper()+ch.lower()
	if from_link:
		from_link = re.sub(r'([\[\]\(\)\?\*\$\^\\])',r'\\\1',from_link) # escape []()\
		print from_link
		fl = '['+uplow(from_link[0])+u']'
		if len(from_link)>1:
			from_link = fl + from_link[1:]
		else:
			from_link = fl
		from_link = re.sub('\ ','[_ ]',from_link)
	text = re.sub(r'\[\['+from_link+r'\]\]',r'[['+to_link+r']]',text)
	text = re.sub(r'\[\['+from_link+r'([\|#][^\]]*)\]\]',r'[['+to_link+r'\1]]',text)
	return text


def make_links_not_to_redirects():
	gen = pagegenerators.AllpagesPageGenerator(includeredirects='only')
	for page in gen:
		title = page.title()
		print title
		target = page.getRedirectTarget().title()
		for ref in page.getReferences():
			if ref.isRedirectPage():
				continue
			print '\033[91mReplace',title,'to',target,'in',ref.title(),'\033[0m'
			text = ref.get()
			changed = subst_link(text,title,target)
			wikipedia.showDiff(text,changed)
			ref.put(changed,comment = u'Будемо посилатись прямо на статтю' )

def list_links_to_remove(fn):	
	f = codecs.open(fn,'a','utf-8')
	gen = pagegenerators.AllpagesPageGenerator(includeredirects='only')
	for page in gen:
		refs = list(page.getReferences())
		if len(refs)==0:
			f.write('# [['+page.title()+']]\n')
	f.close()

def list_pages():
	gen = pagegenerators.AllpagesPageGenerator(includeredirects=True)
	for page in gen:
		print page.title()


if __name__=="__main__":
	list_pages()
	sys.exit()
	list_links_to_remove("/home/bunyk/Desktop/list.txt")
	make_links_not_to_redirects()
	wikipedia.stopme()
	sys.exit()
	text = u"""[[1#sdf|asdf]]
# [[Руська мова?#Заууаги шодо прауописа|Заууаги шодо]]
	* [[Пошук істини (основи філософії)]] [[Файл:00%.png]]
	[[1#sdf]]
	[[1|asdf]]
	"""
	changed = subst_link(text, u"Руська мова?", "12")
	wikipedia.showDiff(text,changed)

Перейменовує категорії

ред.
category.py move

Запитують стару назву категорії, а потім нову назву.