<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.eagle-network.eu/wiki/index.php?action=history&amp;feed=atom&amp;title=Draft_Workflow%2Fscript</id>
	<title>Draft Workflow/script - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.eagle-network.eu/wiki/index.php?action=history&amp;feed=atom&amp;title=Draft_Workflow%2Fscript"/>
	<link rel="alternate" type="text/html" href="https://wiki.eagle-network.eu/wiki/index.php?title=Draft_Workflow/script&amp;action=history"/>
	<updated>2026-05-25T07:06:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>https://wiki.eagle-network.eu/wiki/index.php?title=Draft_Workflow/script&amp;diff=379&amp;oldid=prev</id>
		<title>Sannita at 16:49, 9 September 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.eagle-network.eu/wiki/index.php?title=Draft_Workflow/script&amp;diff=379&amp;oldid=prev"/>
		<updated>2013-09-09T16:49:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 16:49, 9 September 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Cosa fa ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Questo è uno script che utilizzo su Wikidata per inserire su item già esistenti delle dichiarazioni (ossia: &quot;P:1&quot; = &quot;valore&quot;). L'autore è ValterVB.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ogni volta, mi creo un file di testo e su ogni riga imposto una riga di codice come segue:&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;id elemento&amp;gt; | &amp;lt;id proprietà&amp;gt; | &amp;lt;valore proprietà&amp;gt; | &amp;lt;id proprietà fonte&amp;gt; | &amp;lt;valore fonte&amp;gt; | &amp;lt;valore unico (0) o no (1)&amp;gt; | &amp;lt;tipo (s = stringa, i = item)&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Esempio:&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Q16181|p150|Q116370|p143|q11920|1|'i'&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Q95052|p806|A057|p143|q11920|0|'s'&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lo script in Python legge in maniera continua la presenza di questi file nella directory indicata nello script, quando ne trova uno lo legge. Per ogni riga verifica se esiste già la proprietà ed agisce a seconda del parametro Unico (0 o 1). Quando ha letto tutto il file lo copia in una directory di archivio definita all'interno dello script, e lo cancella dalla directory di lavoro.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Note ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Note ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Le directory indicate più sotto, ossia:&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Le directory indicate più sotto, ossia:&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:wikidiff2:1.12:old-367:rev-379:1.5.1 --&gt;
&lt;/table&gt;</summary>
		<author><name>Sannita</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eagle-network.eu/wiki/index.php?title=Draft_Workflow/script&amp;diff=367&amp;oldid=prev</id>
		<title>Sannita: Created page with &quot;== Note == Le directory indicate più sotto, ossia:  * path = r&quot;C:\pywikipediacore\lavoro\fare&quot; #Directory da cui leggere i file * pathCopy = 'C:\pywikipediacore\lavoro\fatto'...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.eagle-network.eu/wiki/index.php?title=Draft_Workflow/script&amp;diff=367&amp;oldid=prev"/>
		<updated>2013-09-09T15:35:19Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Note == Le directory indicate più sotto, ossia:  * path = r&amp;quot;C:\pywikipediacore\lavoro\fare&amp;quot; #Directory da cui leggere i file * pathCopy = &amp;#039;C:\pywikipediacore\lavoro\fatto&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Note ==&lt;br /&gt;
Le directory indicate più sotto, ossia:&lt;br /&gt;
&lt;br /&gt;
* path = r&amp;quot;C:\pywikipediacore\lavoro\fare&amp;quot; #Directory da cui leggere i file&lt;br /&gt;
* pathCopy = 'C:\pywikipediacore\lavoro\fatto' #Directory su cui archiviare i file&lt;br /&gt;
&lt;br /&gt;
si possono cambiare.&lt;br /&gt;
&lt;br /&gt;
== Script ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
import pywikibot&lt;br /&gt;
import os&lt;br /&gt;
import time&lt;br /&gt;
import shutil&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
#Restituisce vero se la proprietà con quel valore esiste&lt;br /&gt;
def ExistPropertyValue(value,claim):&lt;br /&gt;
    for p in claim:&lt;br /&gt;
        tmp = str(p.getTarget()).replace(&amp;quot;[[&amp;quot;,&amp;quot;&amp;quot;).replace(&amp;quot;]]&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
        if 'wikidata' in tmp: # Il valore è un item&lt;br /&gt;
            dati=tmp.split(':')&lt;br /&gt;
            dato=dati[1]&lt;br /&gt;
            if dato == value.title():&lt;br /&gt;
                return True&lt;br /&gt;
        else: # Il valore è una stringa (da verificare su funziona con il tipo Commons)&lt;br /&gt;
            dato=tmp&lt;br /&gt;
            if dato == value:&lt;br /&gt;
                return True&lt;br /&gt;
&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
loop = True&lt;br /&gt;
path = r&amp;quot;C:\pywikipediacore\lavoro\fare&amp;quot; #Directory da cui leggere i file&lt;br /&gt;
pathCopy = 'C:\pywikipediacore\lavoro\fatto' #Directory su cui archiviare i file&lt;br /&gt;
wd = pywikibot.Site('wikidata','wikidata').data_repository()&lt;br /&gt;
&lt;br /&gt;
while loop: #Ciclo infinito di lettura della directory&lt;br /&gt;
    try:&lt;br /&gt;
        listing = os.listdir(path)&lt;br /&gt;
        count = len([f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))])&lt;br /&gt;
        if count == 0:&lt;br /&gt;
            print &amp;quot;Nessun file, pausa 2 secondi&amp;quot;&lt;br /&gt;
            time.sleep(2)&lt;br /&gt;
        else:&lt;br /&gt;
            for infile in listing: #Loop sui file nella directory&lt;br /&gt;
                f = open(path + &amp;quot;\\&amp;quot; + infile)&lt;br /&gt;
                f.readline()&lt;br /&gt;
                for line in iter(f):&lt;br /&gt;
                    line = line.rstrip('\r\n')&lt;br /&gt;
                    data=line.split('|')&lt;br /&gt;
                    id = data[0]&lt;br /&gt;
                    print id&lt;br /&gt;
                    proprieta = data[1]&lt;br /&gt;
                    valore = data[2]&lt;br /&gt;
                    prop_fonte = data[3]&lt;br /&gt;
                    val_fonte = data[4]&lt;br /&gt;
                    singolo = data[5] # se 0 valore singolo, se 1 valore multiplo&lt;br /&gt;
                    tipo = data[6]&lt;br /&gt;
                    data = pywikibot.ItemPage(wd,id) #Carico l'item da Wikidata&lt;br /&gt;
                    data.get() #Carico i dati&lt;br /&gt;
                    if proprieta in data.claims: #controlla se esiste già la proprietà&lt;br /&gt;
                        if singolo == '0':&lt;br /&gt;
                            pass #Da fare: verificare se è uguale&lt;br /&gt;
                        else:&lt;br /&gt;
                            if ExistPropertyValue(valore,data.claims[proprieta]): #Controlla se la proprietà con quel valore esiste già&lt;br /&gt;
                                pass&lt;br /&gt;
                            else: # proprietà multipla&lt;br /&gt;
                                if tipo == &amp;quot;'s'&amp;quot;: #Stringa&lt;br /&gt;
                                    claim = pywikibot.Claim(wd,proprieta) # Proprietà&lt;br /&gt;
                                    claim.setTarget(valore) # Valore proprietà&lt;br /&gt;
                                    data.addClaim(claim) # add claim&lt;br /&gt;
                                else: #Item&lt;br /&gt;
                                    claim = pywikibot.Claim(wd,proprieta) # Proprietà&lt;br /&gt;
                                    claim.setTarget(pywikibot.ItemPage(wd,valore)) # Valore proprietà&lt;br /&gt;
                                    data.addClaim(claim) # add claim&lt;br /&gt;
                                if val_fonte:&lt;br /&gt;
                                    reference=pywikibot.Claim(wd,prop_fonte) # Fonte&lt;br /&gt;
                                    reference.setTarget(pywikibot.ItemPage(wd,val_fonte)) # Valore fonte&lt;br /&gt;
                                    claim.addSource(reference) # add source&lt;br /&gt;
                    else:&lt;br /&gt;
                        if tipo == &amp;quot;'s'&amp;quot;:&lt;br /&gt;
                            claim = pywikibot.Claim(wd,proprieta) # Proprietà&lt;br /&gt;
                            claim.setTarget(valore) # Valore proprietà&lt;br /&gt;
                            data.addClaim(claim) # add claim&lt;br /&gt;
                        else:&lt;br /&gt;
                            claim = pywikibot.Claim(wd,proprieta) # Proprietà&lt;br /&gt;
                            claim.setTarget(pywikibot.ItemPage(wd,valore)) # Valore proprietà&lt;br /&gt;
                            data.addClaim(claim) # add claim&lt;br /&gt;
                        if val_fonte:&lt;br /&gt;
                            reference=pywikibot.Claim(wd,prop_fonte) # Fonte&lt;br /&gt;
                            reference.setTarget(pywikibot.ItemPage(wd,val_fonte)) # Valore fonte&lt;br /&gt;
                            claim.addSource(reference) # add source&lt;br /&gt;
                f.close&lt;br /&gt;
                print &amp;quot;Fine del file. Item: &amp;quot; + id&lt;br /&gt;
                f = None&lt;br /&gt;
                shutil.copy2(path + &amp;quot;\\&amp;quot; + infile, pathCopy + &amp;quot;\\&amp;quot; + infile)&lt;br /&gt;
                os.remove(path + &amp;quot;\\&amp;quot; + infile)&lt;br /&gt;
    except Exception:&lt;br /&gt;
        print &amp;quot;Errore: su &amp;quot; + id, proprieta, valore&lt;br /&gt;
        print &amp;quot;Unexpected error:&amp;quot;, sys.exc_info()[0]&lt;br /&gt;
        time.sleep(5) #Pausa 5 secondi&lt;br /&gt;
        pass&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sannita</name></author>
		
	</entry>
</feed>