Utente:JDDBot/itPediaQuote

Il sorgente qui riportato crea un modello di base per le citazioni di film prelevando le informazioni per la tabella film dalla pagina corrispondente su it.wikipedia. Essendo pubblicato qui, è liberamente modificabile e riutilizzabile, ma sarei pregato chiunque dovesse apportare miglioramenti di contattarmi, così da poter migliorare il bot stesso!

#!/usr/bin/python
# -*- coding: latin-1  -*-

import wikipedia, re

PageTitles = []

#for arg in wikipedia.handleArgs():
#	if arg.startswith('-page'):
#		PageTitles = arg[6:]

PageTitles = []

JDDBotPage = wikipedia.Page(wikipedia.getSite(), 'UTENTE:JDDBot').get()
listaFilm = re.compile('==Lista Film==\n[^=]*', re.I).search(JDDBotPage).group()
listaFilm = re.compile('==Lista Film==\n').sub('', listaFilm)

PageTitles = listaFilm.rsplit ('* ')


for i in range (1, 5):
	PageTitles[i] = re.compile('[\]\[\n]+').sub('', PageTitles[i])

pages = [wikipedia.Page(wikipedia.getSite(), PageTitle) for PageTitle in PageTitles]


for page in pages:
	if !(re.compile('[[Categoria:Film').search(page.get()) or re.compile('{{Film', re.IGNORE).search(page.get())):
		continue

	pediaPage = wikipedia.Page(wikipedia.getSite(None, 'wikipedia', 'Jodido'), page.title())

	if pediaPage.exists() == False:
		pediaPage = wikipedia.Page(wikipedia.getSite(None, 'wikipedia', 'Jodido'), page.title() + ' (film)')

	quoteTable = ''
	intro = ''
	text = ''
	outro = ''

	if page.exists() == True:
		text = page.get() 

	if page.exists() == False or re.compile('{{Film[\W\w]*}}').search(page.get()) == None:
		pediaTable = re.compile('{{Film[\W\w]*}}', re.I).search(pediaPage.get()).group()
		quoteTable = '{{Film\n'
		
		titolo = re.compile('\|[\s]*titoloitaliano[\s]*=[^\|]*').search(pediaTable).group()
		titolo = re.compile('\|[\s]*titoloitaliano[\s]*=[\s]*').sub('', titolo)

		quoteTable = quoteTable + '|titoloitaliano= ' + titolo + '\n'

		quoteTable = quoteTable + re.compile('\|[\s]*titolooriginale[\s]*=[^\|]*').search(pediaTable).group()
		quoteTable = quoteTable + re.compile('\|[\s]*nomepaese[\s]*=[^\|]*').search(pediaTable).group().replace('nome', '')
		
		annoProd = re.compile('\|[\s]*annoproduzione[\s]*=[^\|]*').search(pediaTable).group()
		annoProd = re.compile('\|[\s]*annoproduzione[\s]*=[\s]*\[*').sub('', annoProd)
		annoProd = re.compile('\]*').sub('', annoProd)
		quoteTable = quoteTable + '|anno= ' + annoProd + '\n'

		quoteTable = quoteTable + re.compile('\|[\s]*nomegenere[\s]*=[^\|]*').search(pediaTable).group().replace('nome', '')

		regista = re.compile('\|[\s]*nomeregista[\s]*=[^\|]*').search(pediaTable).group()
		regista = re.compile('\|[\s]*nomeregista[\s]*=[\s]*').sub('', regista)
		quoteTable = quoteTable + '|regista= ' + regista + '\n'

		quoteTable = quoteTable + re.compile('\|[\s]*nomesceneggiatore[\s]*=[^\|]*').search(pediaTable).group().replace('nome', '')
		quoteTable = quoteTable + re.compile('\|[\s]*nomeattori[\s]*=[^\|]*').search(pediaTable).group().replace('nome', '')
		
		quoteTable = quoteTable + '\n}}\n'

		if page.exists() == False or re.compile(u"è un film").search(page.get()) == None:
			intro = '\'\'\'' + re.compile('\n').sub('', titolo) + "\'\'\'" + u" è un film del " + re.compile('\n').sub('', annoProd) + ", diretto da " + re.compile ('[\s]*,[\s]*').sub (' e ', re.compile('\n').sub('', regista)) + "."

		outro = '\n\n==Frasi==\n\n\n==Dialoghi==\n\n\n==Altri progetti==\n{{interprogetto|w}}\n\n{{stub}}\n[[Categoria:Film]]'
	

	page.put (quoteTable + intro + text + outro)

wikipedia.stopme()