#-*- coding:utf8 -*-
"""
Script que recull l'ús i abús d'imatges amb drets d'autor.
Usuari:TronaBot/log:Imatges no lliures en més d'un article
Usuari:TronaBot/log:Imatges no usades
Usuari:TronaBot/log:Imatges no lliures en espais inapropiats
"""
import argparse, codecs as file, json, os, re, sys
sys.path.append("E:/Never Share/my Python scripts/pywikilib/")
import catlib, wikipedia as pywikibot
from query import GetData as api
def colored(text, color="lightblue"):
return u"\03{%s}%s\03{default}" % (color, text)
class File(object):
def __init__(self, filename):
self.filename = os.path.join(os.getcwd(), "logs", "%s.log" % filename)
def write_mode(self):
return file.open(self.filename, "w", "utf8")
def save(self, data):
json.dump(data, self.write_mode(), encoding="utf8", indent=4)
def read_mode(self):
file.open(self.filename, "r", "utf8")
def read(self):
return json.load(self.read_mode())
def file_usage_in_ns(page_title, ns=0):
params ={
"action": "query",
"list": "imageusage",
"iutitle": page_title,
"iunamespace": ns,
"iulimit": "max"
}
data = api(params)
pages = data['query']['imageusage']
return len(pages)
def file_usage(page_title):
params ={
"action": "query",
"generator": "imageusage",
"giutitle": page_title,
"giulimit": "max",
"indexpageids":""
}
q = api(params)
pages = q['query']['pages']
pageids = q['query']['pageids']
unapropiate_ns=articles=all_pages=[]
for pageid in pageids:
page = pages[pageid]['title']
all_pages.append(page)
if pages[pageid]["ns"] == 0:
articles.append(page)
if pages[pageid]["ns"] != 0:
unapropiate_ns.append(page)
return {"all": all_pages, "art": articles, "alt": unapropiate_ns}
def categories():
categories = (
u"Categoria:Imatges d'ús legítim",
u"Categoria:Imatges amb llicència d'ús amb restriccions comercials",
u"Categoria:Imatges amb informació desconeguda"
)
for category in categories:
category = catlib.Category(site, category)
for image in category.articlesList(recurse=True):
if image.namespace() != 6: continue
yield pywikibot.ImagePage(site, image.title())
def scan_files():
user = site.loggedInAs()
page_title = u"Usuari:%s/log:Imatges no usades" % user
not_used = set()
excess_usage = unapropiate = {}
images=0
#mode de recerca recursiu per analitzar cada imatge
for image in categories():
pywikibot.output(u"%s" % colored(image.title(asLink=True)), newline=False)
images+=1
usage = file_usage(image.title())
if len(usage['all']) == 0:
not_used.add(image.title())
if len(usage['art']) > 1:
excess_usage.update({image.title(): usage['art']})
if len(usage['alt']) > 0:
unapropiate.update({image.title(): usage['alt']})
pywikibot.output(" %i [%i] [%i] [%i]" % (
len(usage['all']),
len(not_used),
len(excess_usage),
len(unapropiate)
)
)
unused_log = File("fitxers_no_usats")
unused_log.save(not_used)
excess_log = File("fitxers_amb_mes_d_un_article")
excess_log.save(excess_usage)
unapropiate_log = File("espai_inapropiat")
unapropiate_log.save(unapropiate)
if __name__ == '__main__':
site = pywikibot.getSite()
args = argparse.ArgumentParser()
args.add_argument("-s", "--scan", action="store_true", dest="scanfiles")
params = args.parse_args()
if params.scanfiles:
scan_files()
pywikibot.stopme()