Utente:Alex brollo/Upload massivo di immagini modificate

Da Wikisource.
Jump to navigation Jump to search

Passo 1[modifica]

  • Ottenere una galleria delle immagini (tipo Utente:Alex brollo/gallery 1). Produrre un file txt (utf-8) con l'elencodei nomi file (senza estensione).

Passo 2[modifica]

Scaricare le immagini in un folder locale via bot. Routine essenziali:

#!/usr/bin/python
# -*- coding: utf-8  -*-
import pywikibot as bot
from os import listdir,system
from urllib import FancyURLopener
class MyOpener(FancyURLopener):
    version = version = 'User-Agent: Alex (+http://it.wikisource.org/wiki/Utente:Alex_brollo)'

opener=MyOpener()
commons=bot.Site("commons","commons")

# ......
# scarica nella cartella folder (default jpg/) il file di Commons
def grabCommons(nomePagina,folder="jpg/"):
    if not nomePagina.startswith("File:"):
        nomePagina="File:"+nomePagina
    pagina=bot.FilePage(commons,nomePagina)
    url=pagina.fileUrl()
    
    f=opener.open(url).read()
    
    open(folder+pagina.title().replace("File:",""),"wb").write(f)
    print pagina.title(),len(f)
    return

# legge il file elenco nomi file, e invia il nome uno a uno a grabCommons
def gcl(f="text.txt"):
    l=unicode(open(f).read(),"utf-8").split("\n")
    for p in l:
        p=p.strip()
        if not p=="":
            grabCommons(p)
    return

Passo 3[modifica]

Usando qualsiasi programma di editing immagini modificare appropriatamente le immagini scaricate in locale senza modificarne il nome; cancellare le immagini di cui non serve alcuna modifica. Le modifiche più comuni sono la correzione dello skewing (rotazione di qualche grado), la conversione in scala di grigi e la modifica dei livelli (per ottenere sfondo bianco e immagine in scala di grigi normalizzata)

Passo 4[modifica]

Via bot ottenere dalla cartella l'elenco dei nomi file e caricare su Commons come nuove versioni.

##def upload(self, filepage, source_filename=None, source_url=None,
##               comment=None, text=None, watch=False, ignore_warnings=False,
##               chunk_size=0, _file_key=None, _offset=0, _verify_stash=None,
##               report_success=None):
##        """

def fixImages(folder="jpg"):
    listaImmagini=listdir("jpg")
    for imm in listaImmagini[1:]:
        pagina=bot.FilePage(commons,"File:"+imm)
        commento="Gray conversion, background fixing"
        if imm.endswith(".jpg") and pagina.exists():
            commons.upload(pagina,source_filename="jpg/"+imm,ignore_warnings=True, comment=commento)
        
    return