Wikibooks
euwikibooks
https://eu.wikibooks.org/wiki/Azala
MediaWiki 1.45.0-wmf.9
first-letter
Media
Berezi
Eztabaida
Lankide
Lankide eztabaida
Wikibooks
Wikibooks eztabaida
Fitxategi
Fitxategi eztabaida
MediaWiki
MediaWiki eztabaida
Txantiloi
Txantiloi eztabaida
Laguntza
Laguntza eztabaida
Kategoria
Kategoria eztabaida
TimedText
TimedText talk
Modulu
Modulu eztabaida
PYTHON liburua
0
6785
42025
42024
2025-07-08T23:09:44Z
Ksarasola
1603
42025
wikitext
text/x-wiki
# [[/Sarrera/]]
# [[/Lehen programak eta oinarrizko datu-motak/]]
# [[/Eragileak eta espresioak/]]
# [[/Kontrol-egiturak/]]
# [[/Funtzioak, klaseak eta metodoak/]]
# [[/Ohiko datu-egiturak eta dagozkien metodoak/]]
# [[/Sarrera/Irteera. Internet/]]
# [[/Klase berriak eta ohikoenak/]]
# [[/Sistemaren gaineko aukerak/]]
# [[/Aplikazioak I: Internet/]]
::10.1. ARIKETA: WIKINEWS-ETIK BERRIEN IZENBURUAK ERAUZTEA
::10.2. ARIKETA: EUSKAL HERRIKO FUTBOL-SELEKZIOKO JOKALARIEN ESTEKA WIKIPEDIAN
::10.3. ARIKETA: EUSKAL HERRIKO FUTBOL-SELEKZIOKO JOKALARIEN IBILBIDEA ERAUZTEA WIKIPEDIATIK
::10.4. ARIKETA: JOKALARIEN IBILBIDEAREN WEB ORRIA SORTZEA
::10.5. ARIKETA: TWITTERREKO TRAOLA BATEN JARRAIPENA EGITEA
::10.6. PROPOSATUTAKO ARIKETAK
:11. [[/Aplikazioak II: argazkien tratamendua eta jokoak/]]
::11.1. ARGAZKIEN TRATAMENDUA
::: 11.1.1. Instalazioa
::: 11.1.2. Ariketa: Argazkiei logo bat itsatsi nahian
::: 11.1.3. Proposatutako hobekuntzak
::11.2. JOKOAK
::: 11.2.1. Hiru lerroan jokoa (lehen hurbilpena)
::: 11.2.2. Hiru lerroan jokoa (bigarren hurbilpena)
::: 11.2.3. Mahai-tenisa (ping-pong)
::: 11.2.4. Proposatutako hobekuntzak
:12. [[/Aplikazioak III: Testuak lantzen/]]
::12.1. TESTUAK INTERNETETIK ESKURATZEA
::12.2. NLTK TRESNAK
::: 12.2.1. Instalazioa eta baliabideen deskarga
::: 12.2.2. Ariketa: Corpusak, zenbaketak eta stopword-ak
::: 12.2.3. Ariketa: Lemak eta kategoriak
::: 12.2.4. Ariketa: antzeko hitzak lortzen
::12.3. NLTK GURE TESTUEKIN ERABILTZEA
::: 12.3.1. Ariketa: euskarazko n-gramen maiztasunak
::: 12.3.2. Ariketa: Zuzentzaile ortografiko sinple bat
::: 12.3.3. Ariketa: Zuzentzaile ortografiko oso bat integratzen
::12.4 PROPOSATUTAKO ARIKETAK
:13. [[Aplikazioa IV: Wikipedian, Wikidatan eta Wikimedia Commonsen/]]
== Liburuaren jatorria ==
[[Fitxategi:Python euskaraz.jpg|thumb|alt=PYTHON programazio-lengoaia: oinarriak eta aplikazioak |PYTHON programazio-lengoaia: oinarriak eta aplikazioak (UEU-EHU, 2016).]]
Wikiliburu honek UEUko liburu bat izan du abiapuntua:
* [https://www.ueu.eus/argitaletxea/liburuak/python-programazio-lengoaia-oinarriak-eta-aplikazioak PYTHON programazio-lengoaia: oinarriak eta aplikazioak] (2016). Iñaki Alegria; Olatz Perez de Viñaspre; Kepa Sarasola. Hizkuntza zuzenketen arduraduna: Ander Altuna Gabiola, Azalaren diseinua: Igor Markaida Uriagereka. [http://www.ueu.eushttps://www.ueu.eus/argitaletxea/liburuak/python-programazio-lengoaia-oinarriak-eta-aplikazioak www.ueu.eus] (Udako Euskal Unibertsitatea) ISBN 978-84-8438-595-0. (Noiz kontsultatua: 2024-02-09).
* [http://www.unibertsitatea.net/blogak/python/ PYTHON programazio-lengoaia: oinarriak eta aplikazioak] liburuko hainbat programaren kodea libreki deskargatzeko gunea
* 2016ko bertsioa Notebook formatuan ([https://drive.google.com/drive/folders/19qY19B38cj8C11qBz9AAGJdOqD5Bq1_v?usp=sharng ColaboratePYTHON_UEU_21])
== Kanpo estekak ==
* {{en}} [http://www.python.org/ Python lengoaiaren web gune ofiziala]
* [https://eibar.org/blogak/e-gorblog/sudokuak-ebazteko-programa Sudokuak ebazteko gai den Python programa bat] ([[Igor Leturia]], [[Eibar.org]])
pv8319igyf256s9hb08x74swn20w7p0
42026
42025
2025-07-08T23:10:39Z
Ksarasola
1603
42026
wikitext
text/x-wiki
# [[/Sarrera/]]
# [[/Lehen programak eta oinarrizko datu-motak/]]
# [[/Eragileak eta espresioak/]]
# [[/Kontrol-egiturak/]]
# [[/Funtzioak, klaseak eta metodoak/]]
# [[/Ohiko datu-egiturak eta dagozkien metodoak/]]
# [[/Sarrera/Irteera. Internet/]]
# [[/Klase berriak eta ohikoenak/]]
# [[/Sistemaren gaineko aukerak/]]
# [[/Aplikazioak I: Internet/]]
::10.1. ARIKETA: WIKINEWS-ETIK BERRIEN IZENBURUAK ERAUZTEA
::10.2. ARIKETA: EUSKAL HERRIKO FUTBOL-SELEKZIOKO JOKALARIEN ESTEKA WIKIPEDIAN
::10.3. ARIKETA: EUSKAL HERRIKO FUTBOL-SELEKZIOKO JOKALARIEN IBILBIDEA ERAUZTEA WIKIPEDIATIK
::10.4. ARIKETA: JOKALARIEN IBILBIDEAREN WEB ORRIA SORTZEA
::10.5. ARIKETA: TWITTERREKO TRAOLA BATEN JARRAIPENA EGITEA
::10.6. PROPOSATUTAKO ARIKETAK
:11. [[/Aplikazioak II: argazkien tratamendua eta jokoak/]]
::11.1. ARGAZKIEN TRATAMENDUA
::: 11.1.1. Instalazioa
::: 11.1.2. Ariketa: Argazkiei logo bat itsatsi nahian
::: 11.1.3. Proposatutako hobekuntzak
::11.2. JOKOAK
::: 11.2.1. Hiru lerroan jokoa (lehen hurbilpena)
::: 11.2.2. Hiru lerroan jokoa (bigarren hurbilpena)
::: 11.2.3. Mahai-tenisa (ping-pong)
::: 11.2.4. Proposatutako hobekuntzak
:12. [[/Aplikazioak III: Testuak lantzen/]]
::12.1. TESTUAK INTERNETETIK ESKURATZEA
::12.2. NLTK TRESNAK
::: 12.2.1. Instalazioa eta baliabideen deskarga
::: 12.2.2. Ariketa: Corpusak, zenbaketak eta stopword-ak
::: 12.2.3. Ariketa: Lemak eta kategoriak
::: 12.2.4. Ariketa: antzeko hitzak lortzen
::12.3. NLTK GURE TESTUEKIN ERABILTZEA
::: 12.3.1. Ariketa: euskarazko n-gramen maiztasunak
::: 12.3.2. Ariketa: Zuzentzaile ortografiko sinple bat
::: 12.3.3. Ariketa: Zuzentzaile ortografiko oso bat integratzen
::12.4 PROPOSATUTAKO ARIKETAK
:13. [[/Aplikazioa IV: Wikipedian, Wikidatan eta Wikimedia Commonsen/]]
== Liburuaren jatorria ==
[[Fitxategi:Python euskaraz.jpg|thumb|alt=PYTHON programazio-lengoaia: oinarriak eta aplikazioak |PYTHON programazio-lengoaia: oinarriak eta aplikazioak (UEU-EHU, 2016).]]
Wikiliburu honek UEUko liburu bat izan du abiapuntua:
* [https://www.ueu.eus/argitaletxea/liburuak/python-programazio-lengoaia-oinarriak-eta-aplikazioak PYTHON programazio-lengoaia: oinarriak eta aplikazioak] (2016). Iñaki Alegria; Olatz Perez de Viñaspre; Kepa Sarasola. Hizkuntza zuzenketen arduraduna: Ander Altuna Gabiola, Azalaren diseinua: Igor Markaida Uriagereka. [http://www.ueu.eushttps://www.ueu.eus/argitaletxea/liburuak/python-programazio-lengoaia-oinarriak-eta-aplikazioak www.ueu.eus] (Udako Euskal Unibertsitatea) ISBN 978-84-8438-595-0. (Noiz kontsultatua: 2024-02-09).
* [http://www.unibertsitatea.net/blogak/python/ PYTHON programazio-lengoaia: oinarriak eta aplikazioak] liburuko hainbat programaren kodea libreki deskargatzeko gunea
* 2016ko bertsioa Notebook formatuan ([https://drive.google.com/drive/folders/19qY19B38cj8C11qBz9AAGJdOqD5Bq1_v?usp=sharng ColaboratePYTHON_UEU_21])
== Kanpo estekak ==
* {{en}} [http://www.python.org/ Python lengoaiaren web gune ofiziala]
* [https://eibar.org/blogak/e-gorblog/sudokuak-ebazteko-programa Sudokuak ebazteko gai den Python programa bat] ([[Igor Leturia]], [[Eibar.org]])
q9shs74wizkpho0k9qgboczlqez80rx
42028
42026
2025-07-09T07:43:46Z
Ksarasola
1603
42028
wikitext
text/x-wiki
# [[/Sarrera/]]
# [[/Lehen programak eta oinarrizko datu-motak/]]
# [[/Eragileak eta espresioak/]]
# [[/Kontrol-egiturak/]]
# [[/Funtzioak, klaseak eta metodoak/]]
# [[/Ohiko datu-egiturak eta dagozkien metodoak/]]
# [[/Sarrera/Irteera. Internet/]]
# [[/Klase berriak eta ohikoenak/]]
# [[/Sistemaren gaineko aukerak/]]
# [[/Aplikazioak I: Internet/]]
::10.1. ARIKETA: WIKINEWS-ETIK BERRIEN IZENBURUAK ERAUZTEA
::10.2. ARIKETA: EUSKAL HERRIKO FUTBOL-SELEKZIOKO JOKALARIEN ESTEKA WIKIPEDIAN
::10.3. ARIKETA: EUSKAL HERRIKO FUTBOL-SELEKZIOKO JOKALARIEN IBILBIDEA ERAUZTEA WIKIPEDIATIK
::10.4. ARIKETA: JOKALARIEN IBILBIDEAREN WEB ORRIA SORTZEA
::10.5. ARIKETA: TWITTERREKO TRAOLA BATEN JARRAIPENA EGITEA
::10.6. PROPOSATUTAKO ARIKETAK
:11. [[/Aplikazioak II: argazkien tratamendua eta jokoak/]]
::11.1. ARGAZKIEN TRATAMENDUA
::: 11.1.1. Instalazioa
::: 11.1.2. Ariketa: Argazkiei logo bat itsatsi nahian
::: 11.1.3. Proposatutako hobekuntzak
::11.2. JOKOAK
::: 11.2.1. Hiru lerroan jokoa (lehen hurbilpena)
::: 11.2.2. Hiru lerroan jokoa (bigarren hurbilpena)
::: 11.2.3. Mahai-tenisa (ping-pong)
::: 11.2.4. Proposatutako hobekuntzak
:12. [[/Aplikazioak III: Testuak lantzen/]]
::12.1. TESTUAK INTERNETETIK ESKURATZEA
::12.2. NLTK TRESNAK
::: 12.2.1. Instalazioa eta baliabideen deskarga
::: 12.2.2. Ariketa: Corpusak, zenbaketak eta stopword-ak
::: 12.2.3. Ariketa: Lemak eta kategoriak
::: 12.2.4. Ariketa: antzeko hitzak lortzen
::12.3. NLTK GURE TESTUEKIN ERABILTZEA
::: 12.3.1. Ariketa: euskarazko n-gramen maiztasunak
::: 12.3.2. Ariketa: Zuzentzaile ortografiko sinple bat
::: 12.3.3. Ariketa: Zuzentzaile ortografiko oso bat integratzen
::12.4 PROPOSATUTAKO ARIKETAK
:13. [[/Aplikazioa IV: Wikipedian, Wikidatan eta Wikimedia Commonsen/]] (LANEAN)
== Liburuaren jatorria ==
[[Fitxategi:Python euskaraz.jpg|thumb|alt=PYTHON programazio-lengoaia: oinarriak eta aplikazioak |PYTHON programazio-lengoaia: oinarriak eta aplikazioak (UEU-EHU, 2016).]]
Wikiliburu honek UEUko liburu bat izan du abiapuntua:
* [https://www.ueu.eus/argitaletxea/liburuak/python-programazio-lengoaia-oinarriak-eta-aplikazioak PYTHON programazio-lengoaia: oinarriak eta aplikazioak] (2016). Iñaki Alegria; Olatz Perez de Viñaspre; Kepa Sarasola. Hizkuntza zuzenketen arduraduna: Ander Altuna Gabiola, Azalaren diseinua: Igor Markaida Uriagereka. [http://www.ueu.eushttps://www.ueu.eus/argitaletxea/liburuak/python-programazio-lengoaia-oinarriak-eta-aplikazioak www.ueu.eus] (Udako Euskal Unibertsitatea) ISBN 978-84-8438-595-0. (Noiz kontsultatua: 2024-02-09).
* [http://www.unibertsitatea.net/blogak/python/ PYTHON programazio-lengoaia: oinarriak eta aplikazioak] liburuko hainbat programaren kodea libreki deskargatzeko gunea
* 2016ko bertsioa Notebook formatuan ([https://drive.google.com/drive/folders/19qY19B38cj8C11qBz9AAGJdOqD5Bq1_v?usp=sharng ColaboratePYTHON_UEU_21])
== Kanpo estekak ==
* {{en}} [http://www.python.org/ Python lengoaiaren web gune ofiziala]
* [https://eibar.org/blogak/e-gorblog/sudokuak-ebazteko-programa Sudokuak ebazteko gai den Python programa bat] ([[Igor Leturia]], [[Eibar.org]])
gds3aeal6nfcy3uslzolgd6q00isf19
PYTHON liburua/Aplikazioa IV: Wikipedian, Wikidatan eta Wikimedia Commonsen
0
7070
42027
2025-07-08T23:13:29Z
Ksarasola
1603
lehen zirriborroa
42027
wikitext
text/x-wiki
{{lanean}}
== 13. Aplikazioa IV: Wikipedian, Wikidatan eta Wikimedia Commonsen ==
Kapitulu honetan Wikipedian, Wikidatan edota Wikimedia Commons-en aritzeko programa batzuk landuko ditugu. Datu libre eta ugari dituzten hiru zerbitzu horiek aukera handiak eskaintzen dituzte programazio-ariketak egiteko. Noski, hasi baino lehenago wikipediako kontu bat eduki beharko dugu ariketa horiek egin ahal izateko.
Programak idatzi egokitu eta korritzeko bi aukera izango ditugu:
* Norberaren konputagailuan: [[Anaconda (Python banaketa)|Anaconda]] edo [[Idle]] bezalako programazio-ingurune baten Pywikibot erabiltzea
* Internet bidez Wikimedia Cloud Services baliatzea. Wikimediaren hodeiko zerbitzuetako "notebook" batean '''[https://hub-paws.wmcloud.org/) PAWS: A Web Shell (PAWS)]''' erabiltzea
Kapitulu azken urteetan erabilitako zenbait programa erakutsiko ditugu.
=== 13.1. Bilaketak eta ordezpenak Wikipediako orrien testuan. Espresio erregularren erabilera ===
UEUko liburu bat deskargatzeko esteka duten Euskal Wikipediako artikuluak<syntaxhighlight lang="linux-config">
pwb.py listpages -lang:eu -weblink:"www.ueu.eus/download/"
</syntaxhighlight>
pwb.py listpages -lang:eu -weblink:"www.ueu.eus/download/"
1 Urtar
2 Primitibo flandestar
3 An13sa
4 Jabier Agirre
5 Martinellok ez du kukurik entzuten
6 Errando
[...]
72 Goi Paleolitoa Euskal Herrian
72 read operations
Execution time:
Read operation time: 0.0 seconds
Script terminated successfully.
UEUko liburu bat deskargatzeko esteka duten Euskal Wikipediako artikuluak<syntaxhighlight lang="linux-config">
pwb.py listpages -lang:eu -weblink:"inguma.eus/"
</syntaxhighlight><syntaxhighlight lang="linux-config">
1 Javier Torrealdea
2 Jose Maria Pitarke
3 Eugenio Arraiza
4 Javier Duoandikoetxea
5 Joseba Agirreazkuenaga
6 Karlos del Olmo
[...]
296 Patxi Angulo Martin
297 Aitzpea Leizaola
297 read operations
Execution time:
Read operation time: 0.0 seconds
Script terminated successfully.
</syntaxhighlight>
=== 13.2. Wikipediako hainbat artikulu sortzea Wikidatako hainbat itemen oinarrizko datuekin ===
2025eko udaberrian [[Wikiproiektu:Euskal Etxeak Munduan Zehar|Euskal Etxeak Munduan Zehar]] wikiproiektuaren barruan Euskal Wikipedian falta ziren 140 euskaletxeen artikuluak programa bidez automatikoki sortu genituen bakoitza oinarrizko datu batzuekin.
Aldez aurretik oinarrizko datu horiek ''euskaletxeak.eus'' webgunetik Wikidatara gehitu genituen (ikus hemen: [https://drive.google.com/drive/folders/1cqDvjqWTvxZ1GYVJ2TUp-5LwlBb4YLRB Zelan igo datu asko Wikidatara? Gidoia eta ariketak egiteko datuak])
.
=== 13.3. Wikipediako hainbat artikuluen artean etiketa-aldaketak eta birzuzenketak moldatzea ===
2025 martxoan [[Wikiproiektu:Hegaztien euskarazko izenak|Hegaztien_euskarazko_izenak]] wikiproiektuan '''hegaztien euskarazko izenak''' egoki erabiltzeko moldaketak egin genituen Wikipedian eta Wikidatan. Python programak erabili dira [[Euskal Batzorde Ornitologikoa|Euskal Batzorde Ornitologikoak]] izen horiekin egin duen eguneraketak Euskal Wikipedian integratzeko. Taula handi bat zegoen ordura arteko espezie izen onartua (ez du zertan bat etorri behar Euskal Wikipedia zeukanarekin) eta euskarazko izena agertuzen zen. Ziurtatu behar genuen euskarazko izena zela artikuluaren benetako izena, eta ez birzuzenketa bat. Lagungarri, beste hizkuntza batzuetako izenak ere eskaintzen ziren, bilaketa egin behar izatekotan. Egitekoak hauek ziren
* Espezie izenaren zutabean dauden guztiak horiz markatuta agertu behar dira, birzuzenketa bat eginez euskarazko izena duen artikulura.
* Euskarazko izenera mugitu behar diren artikulu guztiak mugitu. Artikulu horietan erreferentzia gisa txoriak.eus zein ornitho.eus gehitu daitezke. <code><nowiki>{{</nowiki>[[Txantiloi:Txoriak|txoriak]]<nowiki>}}</nowiki></code> erabil dezakezu, izen zientifikoa jarrita, lotura sortzeko. Adibidez, <code><nowiki>{{</nowiki>[[Txantiloi:Txoriak|txoriak]]<nowiki>|Pandion-haliaetus}}</nowiki></code>; [[Arrano arrantzale|Arrano arrantzalea]] artikulua horrela hasten da: "'''Arrano arrantzalea''' (''Pandion haliaetus'')...". Izenburu etzana ere kendu behar zaio artikuluari, baldin badu.
* Hegaztietako batzuk beste izen zientifiko bat duen artikulu batean ditugu, zaharkituta geratu dena. Horrelakoetan taulako izen zientifikoarekin ere sortu beharko da artikulu bat, euskarazko izena duen artikulura daraman birzuzenketa moduan.
=== 13.4. Zinema-zuzendari baten filmen taula bat sortzea izenburua hainbat hizkuntzatan emanda ===
Sortu dugu Python programa bat zuzendari baten filmen izenburuak gure inguruko hizkuntzatan ere erakusteko (en, es, fr, eu, ca. gl). Python programak wikikodea sortzen du, taula bat da eta artikuluan sartu behar da gero, eskuz. Gero artikuluan filmen taula ordenatu daiteke ekoizlearen arabera edo izenburuaren arabera ere.<ref>{{Erreferentzia|izenburua=Eztabaida:George Cukor|hizkuntza=eu|data=2024-06-04|url=https://eu.wikipedia.org/w/index.php?title=Eztabaida:George_Cukor&oldid=9812871|sartze-data=2025-07-08|encyclopedia=Wikipedia, entziklopedia askea.}}</ref>
Baten bat animatzen bada, Python programaren kodea erabil dezakezue PAWS tresnarekin interneten bidez (https://hub-paws.wmcloud.org/), baita beste aktore batekin (ordeztu wikidata identifikadorea "Q56014' George Cuckorrena da, hori aldatu)
Beste bertsio bat egin dut zinema-aktoreentzat. (https://eu.wikipedia.org/wiki/Eztabaida:Jack_Nicholson).<syntaxhighlight lang="python">
# -*- coding: utf-8 -*-
import pandas as pd
import pywikibot
import datetime
from pywikibot import pagegenerators
"""
Ingelesezko zuzendari baten filmekin wititaula bat sortu.
Pelikula bakoitzean datua hauek: urtea, zuzendaria eta izenburu desberdinak zenbait hizkuntzatan.
Iterate over a query given in a string using page generators.
"""
#Sortu lista bat pelikula guztien wikidata-identifikadoreekin
QUERY = """
#
SELECT ?item WHERE {
?item (wdt:P31/(wdt:P279*)) wd:Q11424;
wdt:P57 wd:Q56014.
}
LIMIT 500
"""
site = pywikibot.Site("wikidata", "wikidata")
repo = site.data_repository()
generator = pagegenerators.PreloadingEntityGenerator(pagegenerators.WikidataSPARQLPageGenerator(QUERY,site=repo))
#Sortu Data-frame bat (Kaljulu-orri bat) pelikula bakoitzaren datuekin
header = ['Urtea', 'Filma', 'Antzezleak', 'Ekoizlea', 'Hizkuntzak']
data = {}
data = pd.DataFrame(data, columns=header)
for item in generator:
print (item)
h1 = item.get()
#print(h1)
#print (h1['claims'])
if 'P577' in item.claims: # urtea
date = item.claims['P577'][0].getTarget()
urte = date.year
else:
urte = 0
if 'en' in item.labels:
film = item.labels['en']
else:
film = '--'
if 'P161' in item.claims: # antzezle
if len(item.claims['P161']) > 1:
antzezle1 = item.claims['P161'][0].getTarget()
antzezle2 = item.claims['P161'][1].getTarget()
antzezleak = "[["+antzezle1.labels['en']+"]], [["+antzezle2.labels['en']+"]]"
else:
antzezle1 = item.claims['P161'][0].getTarget()
antzezleak = "[["+antzezle1.labels['en']+"]]"
else:
antzezleak = "--"
if 'P272' in item.claims: # ekoizlea
ekoizle1 = item.claims['P272'][0].getTarget()
ekoizle = "|[["+ekoizle1.labels['en']+"]]"
else:
ekoizle = "--"
hizkuntzak =""
if 'es' in item.labels:
if item.labels['es'] != item.labels['en']:
hizkuntzak += '{{Lang-es|'+item.labels['es']+'}} '
if 'fr' in item.labels:
if item.labels['fr'] != item.labels['en']:
hizkuntzak += '{{Lang-fr|'+item.labels['fr']+'}} '
if 'eu' in item.labels:
if item.labels['eu'] != item.labels['en']:
hizkuntzak += '{{Lang-eu|'+item.labels['eu']+'}} '
if 'ca' in item.labels:
if item.labels['ca'] != item.labels['en']:
hizkuntzak += '{{Lang-ca|'+item.labels['ca']+'}} '
if 'gl' in item.labels:
if item.labels['gl'] != item.labels['en']:
hizkuntzak += '{{Lang-gl|'+item.labels['gl']+'}} '
new_row = {'Urtea': urte, 'Filma': film, 'Antzezleak': antzezleak, 'Ekoizlea': ekoizle, 'Hizkuntzak': hizkuntzak}
data.loc[len(data)] = new_row
#Ordenatu filmak argitaratu ziren urtearen arabera
sorted_df = data.sort_values(by=["Urtea"], ascending=True)
#Taularen wikilodea idaztea
print ("""== Zuzendutako filmen aktoreak, ekoizlea eta izenburuak ==
Taula honetan ikus daitezke filmaren bi aktore, enpresa ekoizlea eta beste izenburuak beste hizkuntza batera itzuli bada (gaztelania, frantsesa, euskara, katalana edo galiziera):
{| class="wikitable sortable"
! Urtea
! Filma
! Antzezleak
! Ekoizlea
! Hizkuntzak """)
for index, lerroa in sorted_df.iterrows():
print("|-")
print("| ", lerroa['Urtea'])
print("| [["+lerroa['Filma']+"]]")
print("| "+lerroa['Antzezleak'])
print("| "+lerroa['Ekoizlea'])
print("| "+lerroa['Hizkuntzak'])
print("|}")
</syntaxhighlight>
Hona hemen zinema-zuzendarien taula hobeto ateratzeko beste bertsio bat.
Ingelesezkoaren gain gaztelaniazko eta frantsesezko izenburuak bakarrik erakusten dira (wikidatako Labels etiketan dagoena) eta pelikulen euskarazko artikuluaren esteka hobeto adierazten da ("item.getSitelink('euwiki')" eta ez "item.labels['en']" erabilita).
Programa hau hainbat artikulutan erabili zen, horien artean daude oscar sari bat jaso duten zuzendari gehienetan.
Antzeko taula bat gehitu da Oscar saria irabazi duten aktoreekin.
<syntaxhighlight lang="python">
# -*- coding: utf-8 -*-
import pandas as pd
import pywikibot
import datetime
from pywikibot import pagegenerators
"""
Ingelesezko zuzendari baten filmekin wititaula bat sortu.
Pelikula bakoitzean datu hauek: urtea, izenburua ingelesez, bi aktore, ekoizlea eta izenburua espainieraz eta frantsesez ingelesezkoa ez badira.
Iterate over a query given in a string using page generators.
"""
#Sortu lista bat pelikula guztien wikidata-identifikadoreekin
# wdt:P57 wd:Q51525 lerroan Q51525 identifikadorea Milos Forman zuzendariarena da.
#Ikus Wikidatan: https://www.wikidata.org/wiki/Q51525
# Query honetan Q51525 identifikadorea ordez beste zuzendari batena jarriz gero beste zuzendari horren taula lortuko da
QUERY = """
#
SELECT ?item WHERE {
?item (wdt:P31/(wdt:P279*)) wd:Q11424;
wdt:P57 wd:Q56014.
}
LIMIT 500
"""
site = pywikibot.Site("wikidata", "wikidata")
repo = site.data_repository()
generator = pagegenerators.PreloadingEntityGenerator(pagegenerators.WikidataSPARQLPageGenerator(QUERY,site=repo))
#Sortu Ddta-frame bat (Kalkulu-orri bat) pelikula bakoitzaren datuekin
header = ['Urtea', 'Filma', 'Antzezleak', 'Ekoizlea', 'Hizkuntzak']
data = {}
data = pd.DataFrame(data, columns=header)
for item in generator:
print (item)
h1 = item.get()
#print(h1)
#print (h1['claims'])
if 'P577' in item.claims: # urtea
date = item.claims['P577'][0].getTarget()
urte = date.year
else:
urte = 0
if 'en' in item.labels:
film = '[['+item.labels['en']+']]'
if 'euwiki' in h1['sitelinks']:
print ('euwiki: '+item.getSitelink('euwiki'))
if item.getSitelink('euwiki') != item.labels['en']:
film = '[['+item.getSitelink('euwiki')+'|'+item.labels['en']+']]'
"""
print ('enlabel: '+item.labels['en'])
print ('enwiki: '+item.getSitelink('enwiki'))
print ('euwiki: '+item.getSitelink('euwiki'))
"""
else:
film = '--'
if 'eu' in item.labels:
print('eu_Label:', item.labels['eu'])
if 'P161' in item.claims: # antzezle
if len(item.claims['P161']) > 1:
antzezle1 = item.claims['P161'][0].getTarget()
antzezle2 = item.claims['P161'][1].getTarget()
antzezleak = "[["+antzezle1.labels['en']+"]], [["+antzezle2.labels['en']+"]]"
else:
antzezle1 = item.claims['P161'][0].getTarget()
antzezleak = "[["+antzezle1.labels['en']+"]]"
else:
antzezleak = "--"
if 'P272' in item.claims: # ekoizlea
ekoizle1 = item.claims['P272'][0].getTarget()
ekoizle = "|[["+ekoizle1.labels['en']+"]]"
else:
ekoizle = "--"
hizkuntzak =""
if 'es' in item.labels:
if item.labels['es'] != item.labels['en']:
hizkuntzak += '{{Lang-es|'+item.labels['es']+'}} '
if 'fr' in item.labels:
if item.labels['fr'] != item.labels['en']:
hizkuntzak += '{{Lang-fr|'+item.labels['fr']+'}} '
"""
if 'eu' in item.labels:
if item.labels['eu'] != item.labels['en']:
hizkuntzak += '{{Lang-eu|'+item.labels['eu']+'}} '
if 'ca' in item.labels:
if item.labels['ca'] != item.labels['en']:
hizkuntzak += '{{Lang-ca|'+item.labels['ca']+'}} '
if 'gl' in item.labels:
if item.labels['gl'] != item.labels['en']:
hizkuntzak += '{{Lang-gl|'+item.labels['gl']+'}} '
"""
new_row = {'Urtea': urte, 'Filma': film, 'Antzezleak': antzezleak, 'Ekoizlea': ekoizle, 'Hizkuntzak': hizkuntzak}
data.loc[len(data)] = new_row
#Ordenatu filmak argitaratu ziren urtearen arabera
sorted_df = data.sort_values(by=["Urtea"], ascending=True)
#Taularen wikilodea idaztea
print ("""== Filmografia ==
Taula honetan ikus daitezke zuzendutako filma bakoitzaren bi aktore, enpresa ekoizlea eta beste izenburuak (gaztelaniaz, frantsesez):
{| class="wikitable sortable"
! Urtea
! Filma
! Aktoreak
! Ekoizlea
! Izenburuak (es,fr)""")
for index, lerroa in sorted_df.iterrows():
print("|-")
print("| ", lerroa['Urtea'])
print("| "+lerroa['Filma'])
print("| "+lerroa['Antzezleak'])
print("| "+lerroa['Ekoizlea'])
print("| "+lerroa['Hizkuntzak'])
print("|}")
print("------------------------")
</syntaxhighlight>
==== 13.5. Proposatutako hobekuntzak ====
= Erreferentziak =
{{erreferentzia zerrenda}}
ppzvnmtrfhkud5flzj3zpgoict5ufzs
42029
42027
2025-07-09T10:20:03Z
81.9.242.50
pywikibot
42029
wikitext
text/x-wiki
{{lanean}}
== 13. Aplikazioa IV: Wikipedian, Wikidatan eta Wikimedia Commonsen ==
Kapitulu honetan Wikipedian, Wikidatan edota Wikimedia Commons-en aritzeko programa batzuk landuko ditugu. Datu libre eta ugari dituzten hiru zerbitzu horiek aukera handiak eskaintzen dituzte programazio-ariketak egiteko. Noski, hasi baino lehenago wikipediako kontu bat eduki beharko dugu ariketa horiek egin ahal izateko.
Programak idatzi egokitu eta korritzeko bi aukera izango ditugu:
* Norberaren konputagailuan: [[Anaconda (Python banaketa)|Anaconda]] edo [[Idle]] bezalako programazio-ingurune baten Pywikibot erabiltzea
* Internet bidez Wikimedia Cloud Services baliatzea. Wikimediaren hodeiko zerbitzuetako "notebook" batean '''[https://hub-paws.wmcloud.org/) PAWS: A Web Shell (PAWS)]''' erabiltzea
Kapitulu azken urteetan erabilitako zenbait programa erakutsiko ditugu.
=== 13.1. Pywikibot liburutegia. Bilaketak eta ordezpenak Wikipediako orrien testuan. ===
[[Wikipedia:Pywikibot|Pywikibot]] tresna bilduma da, [[MediaWiki]] guneetan lanak automatizatzeko [[Python (informatika)|Python]] liburutegia da. Hasieran Pywikibot Wikipedian lan egiteko sortu bazen ere, gaur egun [[Wikimedia Fundazioa|Wikimedia Foundationeko]] hainbat proiektutan erabiltzen da eta hainbat wikitan, besteak beste [[Wikipedia|Wikipedian]], [[Wikidata|Wikidatan]] eta [[Wikimedia Commons|Commonsen]]).
Pywikibot liburutegi horretan Python-programa ugari eskaintzen dira script moduan erabil daitezkeenak. Esaterako, horien artean oso praktikoak dira ''listpages'' eta ''replace'' scriptak Wikipediako orrien testuan bilaketak eta ordezpenak egiteko erabil ditzakegunak.
Adibidez, UEUko liburu bat deskargatzeko esteka ("www.ueu.eus/download/") duten Euskal Wikipediako artikuluak bilatu nahi baditugu honako komandoa erabil ditzakegu terminal batean:<syntaxhighlight lang="linux-config">pwb.py listpages -lang:eu -weblink:"www.ueu.eus/download/"</syntaxhighlight>
Eta emaitzan ikusiko dugu 72 artikulu hauetan agertzen dela horrelako esteka bat:
1 Urtar
2 Primitibo flandestar
3 An13sa
4 Jabier Agirre
5 Martinellok ez du kukurik entzuten
6 Errando
[...]
72 Goi Paleolitoa Euskal Herrian
72 read operations
Execution time:
Read operation time: 0.0 seconds
Script terminated successfully.
Beste adibide bat, [[Inguma (datu-basea)|Inguma]] datu-baseko esteka duten Euskal Wikipediako artikuluak:<syntaxhighlight lang="linux-config">
pwb.py listpages -lang:eu -weblink:"inguma.eus/"
</syntaxhighlight>Komando hori esekutatuz gero 297 artikulu lortzen dira:<syntaxhighlight lang="linux-config">
1 Javier Torrealdea
2 Jose Maria Pitarke
3 Eugenio Arraiza
4 Javier Duoandikoetxea
5 Joseba Agirreazkuenaga
6 Karlos del Olmo
[...]
296 Patxi Angulo Martin
297 Aitzpea Leizaola
297 read operations
Execution time:
Read operation time: 0.0 seconds
Script terminated successfully.
</syntaxhighlight>
=== 13.2. Wikipediako hainbat artikulu sortzea Wikidatako hainbat itemen oinarrizko datuekin ===
2025eko udaberrian [[Wikiproiektu:Euskal Etxeak Munduan Zehar|Euskal Etxeak Munduan Zehar]] wikiproiektuaren barruan Euskal Wikipedian falta ziren 140 euskaletxeen artikuluak programa bidez automatikoki sortu genituen bakoitza oinarrizko datu batzuekin.
Aldez aurretik oinarrizko datu horiek ''euskaletxeak.eus'' webgunetik Wikidatara gehitu genituen (ikus hemen: [https://drive.google.com/drive/folders/1cqDvjqWTvxZ1GYVJ2TUp-5LwlBb4YLRB Zelan igo datu asko Wikidatara? Gidoia eta ariketak egiteko datuak])
.
=== 13.3. Wikipediako hainbat artikuluen artean etiketa-aldaketak eta birzuzenketak moldatzea ===
2025 martxoan [[Wikiproiektu:Hegaztien euskarazko izenak|Hegaztien_euskarazko_izenak]] wikiproiektuan '''hegaztien euskarazko izenak''' egoki erabiltzeko moldaketak egin genituen Wikipedian eta Wikidatan. Python programak erabili dira [[Euskal Batzorde Ornitologikoa|Euskal Batzorde Ornitologikoak]] izen horiekin egin duen eguneraketak Euskal Wikipedian integratzeko. Taula handi bat zegoen ordura arteko espezie izen onartua (ez du zertan bat etorri behar Euskal Wikipedia zeukanarekin) eta euskarazko izena agertuzen zen. Ziurtatu behar genuen euskarazko izena zela artikuluaren benetako izena, eta ez birzuzenketa bat. Lagungarri, beste hizkuntza batzuetako izenak ere eskaintzen ziren, bilaketa egin behar izatekotan. Egitekoak hauek ziren
* Espezie izenaren zutabean dauden guztiak horiz markatuta agertu behar dira, birzuzenketa bat eginez euskarazko izena duen artikulura.
* Euskarazko izenera mugitu behar diren artikulu guztiak mugitu. Artikulu horietan erreferentzia gisa txoriak.eus zein ornitho.eus gehitu daitezke. <code><nowiki>{{</nowiki>[[Txantiloi:Txoriak|txoriak]]<nowiki>}}</nowiki></code> erabil dezakezu, izen zientifikoa jarrita, lotura sortzeko. Adibidez, <code><nowiki>{{</nowiki>[[Txantiloi:Txoriak|txoriak]]<nowiki>|Pandion-haliaetus}}</nowiki></code>; [[Arrano arrantzale|Arrano arrantzalea]] artikulua horrela hasten da: "'''Arrano arrantzalea''' (''Pandion haliaetus'')...". Izenburu etzana ere kendu behar zaio artikuluari, baldin badu.
* Hegaztietako batzuk beste izen zientifiko bat duen artikulu batean ditugu, zaharkituta geratu dena. Horrelakoetan taulako izen zientifikoarekin ere sortu beharko da artikulu bat, euskarazko izena duen artikulura daraman birzuzenketa moduan.
=== 13.4. Zinema-zuzendari baten filmen taula bat sortzea izenburua hainbat hizkuntzatan emanda ===
Sortu dugu Python programa bat zuzendari baten filmen izenburuak gure inguruko hizkuntzatan ere erakusteko (en, es, fr, eu, ca. gl). Python programak wikikodea sortzen du, taula bat da eta artikuluan sartu behar da gero, eskuz. Gero artikuluan filmen taula ordenatu daiteke ekoizlearen arabera edo izenburuaren arabera ere.<ref>{{Erreferentzia|izenburua=Eztabaida:George Cukor|hizkuntza=eu|data=2024-06-04|url=https://eu.wikipedia.org/w/index.php?title=Eztabaida:George_Cukor&oldid=9812871|sartze-data=2025-07-08|encyclopedia=Wikipedia, entziklopedia askea.}}</ref>
Baten bat animatzen bada, Python programaren kodea erabil dezakezue PAWS tresnarekin interneten bidez (https://hub-paws.wmcloud.org/), baita beste aktore batekin (ordeztu wikidata identifikadorea "Q56014' George Cuckorrena da, hori aldatu)
Beste bertsio bat egin dut zinema-aktoreentzat. (https://eu.wikipedia.org/wiki/Eztabaida:Jack_Nicholson).<syntaxhighlight lang="python">
# -*- coding: utf-8 -*-
import pandas as pd
import pywikibot
import datetime
from pywikibot import pagegenerators
"""
Ingelesezko zuzendari baten filmekin wititaula bat sortu.
Pelikula bakoitzean datua hauek: urtea, zuzendaria eta izenburu desberdinak zenbait hizkuntzatan.
Iterate over a query given in a string using page generators.
"""
#Sortu lista bat pelikula guztien wikidata-identifikadoreekin
QUERY = """
#
SELECT ?item WHERE {
?item (wdt:P31/(wdt:P279*)) wd:Q11424;
wdt:P57 wd:Q56014.
}
LIMIT 500
"""
site = pywikibot.Site("wikidata", "wikidata")
repo = site.data_repository()
generator = pagegenerators.PreloadingEntityGenerator(pagegenerators.WikidataSPARQLPageGenerator(QUERY,site=repo))
#Sortu Data-frame bat (Kaljulu-orri bat) pelikula bakoitzaren datuekin
header = ['Urtea', 'Filma', 'Antzezleak', 'Ekoizlea', 'Hizkuntzak']
data = {}
data = pd.DataFrame(data, columns=header)
for item in generator:
print (item)
h1 = item.get()
#print(h1)
#print (h1['claims'])
if 'P577' in item.claims: # urtea
date = item.claims['P577'][0].getTarget()
urte = date.year
else:
urte = 0
if 'en' in item.labels:
film = item.labels['en']
else:
film = '--'
if 'P161' in item.claims: # antzezle
if len(item.claims['P161']) > 1:
antzezle1 = item.claims['P161'][0].getTarget()
antzezle2 = item.claims['P161'][1].getTarget()
antzezleak = "[["+antzezle1.labels['en']+"]], [["+antzezle2.labels['en']+"]]"
else:
antzezle1 = item.claims['P161'][0].getTarget()
antzezleak = "[["+antzezle1.labels['en']+"]]"
else:
antzezleak = "--"
if 'P272' in item.claims: # ekoizlea
ekoizle1 = item.claims['P272'][0].getTarget()
ekoizle = "|[["+ekoizle1.labels['en']+"]]"
else:
ekoizle = "--"
hizkuntzak =""
if 'es' in item.labels:
if item.labels['es'] != item.labels['en']:
hizkuntzak += '{{Lang-es|'+item.labels['es']+'}} '
if 'fr' in item.labels:
if item.labels['fr'] != item.labels['en']:
hizkuntzak += '{{Lang-fr|'+item.labels['fr']+'}} '
if 'eu' in item.labels:
if item.labels['eu'] != item.labels['en']:
hizkuntzak += '{{Lang-eu|'+item.labels['eu']+'}} '
if 'ca' in item.labels:
if item.labels['ca'] != item.labels['en']:
hizkuntzak += '{{Lang-ca|'+item.labels['ca']+'}} '
if 'gl' in item.labels:
if item.labels['gl'] != item.labels['en']:
hizkuntzak += '{{Lang-gl|'+item.labels['gl']+'}} '
new_row = {'Urtea': urte, 'Filma': film, 'Antzezleak': antzezleak, 'Ekoizlea': ekoizle, 'Hizkuntzak': hizkuntzak}
data.loc[len(data)] = new_row
#Ordenatu filmak argitaratu ziren urtearen arabera
sorted_df = data.sort_values(by=["Urtea"], ascending=True)
#Taularen wikilodea idaztea
print ("""== Zuzendutako filmen aktoreak, ekoizlea eta izenburuak ==
Taula honetan ikus daitezke filmaren bi aktore, enpresa ekoizlea eta beste izenburuak beste hizkuntza batera itzuli bada (gaztelania, frantsesa, euskara, katalana edo galiziera):
{| class="wikitable sortable"
! Urtea
! Filma
! Antzezleak
! Ekoizlea
! Hizkuntzak """)
for index, lerroa in sorted_df.iterrows():
print("|-")
print("| ", lerroa['Urtea'])
print("| [["+lerroa['Filma']+"]]")
print("| "+lerroa['Antzezleak'])
print("| "+lerroa['Ekoizlea'])
print("| "+lerroa['Hizkuntzak'])
print("|}")
</syntaxhighlight>
Hona hemen zinema-zuzendarien taula hobeto ateratzeko beste bertsio bat.
Ingelesezkoaren gain gaztelaniazko eta frantsesezko izenburuak bakarrik erakusten dira (wikidatako Labels etiketan dagoena) eta pelikulen euskarazko artikuluaren esteka hobeto adierazten da ("item.getSitelink('euwiki')" eta ez "item.labels['en']" erabilita).
Programa hau hainbat artikulutan erabili zen, horien artean daude oscar sari bat jaso duten zuzendari gehienetan.
Antzeko taula bat gehitu da Oscar saria irabazi duten aktoreekin.
<syntaxhighlight lang="python">
# -*- coding: utf-8 -*-
import pandas as pd
import pywikibot
import datetime
from pywikibot import pagegenerators
"""
Ingelesezko zuzendari baten filmekin wititaula bat sortu.
Pelikula bakoitzean datu hauek: urtea, izenburua ingelesez, bi aktore, ekoizlea eta izenburua espainieraz eta frantsesez ingelesezkoa ez badira.
Iterate over a query given in a string using page generators.
"""
#Sortu lista bat pelikula guztien wikidata-identifikadoreekin
# wdt:P57 wd:Q51525 lerroan Q51525 identifikadorea Milos Forman zuzendariarena da.
#Ikus Wikidatan: https://www.wikidata.org/wiki/Q51525
# Query honetan Q51525 identifikadorea ordez beste zuzendari batena jarriz gero beste zuzendari horren taula lortuko da
QUERY = """
#
SELECT ?item WHERE {
?item (wdt:P31/(wdt:P279*)) wd:Q11424;
wdt:P57 wd:Q56014.
}
LIMIT 500
"""
site = pywikibot.Site("wikidata", "wikidata")
repo = site.data_repository()
generator = pagegenerators.PreloadingEntityGenerator(pagegenerators.WikidataSPARQLPageGenerator(QUERY,site=repo))
#Sortu Ddta-frame bat (Kalkulu-orri bat) pelikula bakoitzaren datuekin
header = ['Urtea', 'Filma', 'Antzezleak', 'Ekoizlea', 'Hizkuntzak']
data = {}
data = pd.DataFrame(data, columns=header)
for item in generator:
print (item)
h1 = item.get()
#print(h1)
#print (h1['claims'])
if 'P577' in item.claims: # urtea
date = item.claims['P577'][0].getTarget()
urte = date.year
else:
urte = 0
if 'en' in item.labels:
film = '[['+item.labels['en']+']]'
if 'euwiki' in h1['sitelinks']:
print ('euwiki: '+item.getSitelink('euwiki'))
if item.getSitelink('euwiki') != item.labels['en']:
film = '[['+item.getSitelink('euwiki')+'|'+item.labels['en']+']]'
"""
print ('enlabel: '+item.labels['en'])
print ('enwiki: '+item.getSitelink('enwiki'))
print ('euwiki: '+item.getSitelink('euwiki'))
"""
else:
film = '--'
if 'eu' in item.labels:
print('eu_Label:', item.labels['eu'])
if 'P161' in item.claims: # antzezle
if len(item.claims['P161']) > 1:
antzezle1 = item.claims['P161'][0].getTarget()
antzezle2 = item.claims['P161'][1].getTarget()
antzezleak = "[["+antzezle1.labels['en']+"]], [["+antzezle2.labels['en']+"]]"
else:
antzezle1 = item.claims['P161'][0].getTarget()
antzezleak = "[["+antzezle1.labels['en']+"]]"
else:
antzezleak = "--"
if 'P272' in item.claims: # ekoizlea
ekoizle1 = item.claims['P272'][0].getTarget()
ekoizle = "|[["+ekoizle1.labels['en']+"]]"
else:
ekoizle = "--"
hizkuntzak =""
if 'es' in item.labels:
if item.labels['es'] != item.labels['en']:
hizkuntzak += '{{Lang-es|'+item.labels['es']+'}} '
if 'fr' in item.labels:
if item.labels['fr'] != item.labels['en']:
hizkuntzak += '{{Lang-fr|'+item.labels['fr']+'}} '
"""
if 'eu' in item.labels:
if item.labels['eu'] != item.labels['en']:
hizkuntzak += '{{Lang-eu|'+item.labels['eu']+'}} '
if 'ca' in item.labels:
if item.labels['ca'] != item.labels['en']:
hizkuntzak += '{{Lang-ca|'+item.labels['ca']+'}} '
if 'gl' in item.labels:
if item.labels['gl'] != item.labels['en']:
hizkuntzak += '{{Lang-gl|'+item.labels['gl']+'}} '
"""
new_row = {'Urtea': urte, 'Filma': film, 'Antzezleak': antzezleak, 'Ekoizlea': ekoizle, 'Hizkuntzak': hizkuntzak}
data.loc[len(data)] = new_row
#Ordenatu filmak argitaratu ziren urtearen arabera
sorted_df = data.sort_values(by=["Urtea"], ascending=True)
#Taularen wikilodea idaztea
print ("""== Filmografia ==
Taula honetan ikus daitezke zuzendutako filma bakoitzaren bi aktore, enpresa ekoizlea eta beste izenburuak (gaztelaniaz, frantsesez):
{| class="wikitable sortable"
! Urtea
! Filma
! Aktoreak
! Ekoizlea
! Izenburuak (es,fr)""")
for index, lerroa in sorted_df.iterrows():
print("|-")
print("| ", lerroa['Urtea'])
print("| "+lerroa['Filma'])
print("| "+lerroa['Antzezleak'])
print("| "+lerroa['Ekoizlea'])
print("| "+lerroa['Hizkuntzak'])
print("|}")
print("------------------------")
</syntaxhighlight>
==== 13.5. Proposatutako hobekuntzak ====
lu27e3lxmqu6cuouk0drreysxvmiilo
42030
42029
2025-07-09T10:44:19Z
81.9.242.50
42030
wikitext
text/x-wiki
{{lanean}}
== 13. Aplikazioa IV: Wikipedian, Wikidatan eta Wikimedia Commonsen ==
Kapitulu honetan Wikipedian, Wikidatan edota Wikimedia Commons-en aritzeko programa batzuk landuko ditugu. Datu libre eta ugari dituzten hiru zerbitzu horiek aukera handiak eskaintzen dituzte programazio-ariketak egiteko. Noski, hasi baino lehenago wikipediako kontu bat eduki beharko dugu ariketa horiek egin ahal izateko.
Programak idatzi egokitu eta korritzeko bi aukera izango ditugu:
* Norberaren konputagailuan: [[Anaconda (Python banaketa)|Anaconda]] edo [[Idle]] bezalako programazio-ingurune baten Pywikibot erabiltzea
* Internet bidez Wikimedia Cloud Services baliatzea. Wikimediaren hodeiko zerbitzuetako "notebook" batean '''[https://hub-paws.wmcloud.org/) PAWS: A Web Shell (PAWS)]''' erabiltzea
Kapitulu honetan azken urteetan erabilitako zenbait programa prktiko erakutsiko ditugu.
=== 13.1. Pywikibot liburutegia. Bilaketak eta ordezpenak Wikipediako orrien testuan. ===
[[Wikipedia:Pywikibot|Pywikibot]] tresna bilduma da, [[MediaWiki]] guneetan lanak automatizatzeko [[Python (informatika)|Python]] liburutegia da. Hasieran Pywikibot Wikipedian lan egiteko sortu bazen ere, gaur egun [[Wikimedia Fundazioa|Wikimedia Foundationeko]] hainbat proiektutan erabiltzen da eta hainbat wikitan, besteak beste [[Wikipedia|Wikipedian]], [[Wikidata|Wikidatan]] eta [[Wikimedia Commons|Commonsen]]).
Pywikibot liburutegi horretan Python-programa ugari eskaintzen dira script moduan erabil daitezkeenak. Esaterako, horien artean oso praktikoak dira ''listpages'' eta ''replace'' scriptak Wikipediako orrien testuan bilaketak eta ordezpenak egiteko erabil ditzakegunak.
Adibidez, UEUko liburu bat deskargatzeko esteka ("www.ueu.eus/download/") duten Euskal Wikipediako artikuluak bilatu nahi baditugu honako komandoa erabil ditzakegu terminal batean:<syntaxhighlight lang="linux-config">pwb.py listpages -lang:eu -weblink:"www.ueu.eus/download/"</syntaxhighlight>
Eta emaitzan ikusiko dugu 72 artikulu hauetan agertzen dela horrelako esteka bat:
1 Urtar
2 Primitibo flandestar
3 An13sa
4 Jabier Agirre
5 Martinellok ez du kukurik entzuten
6 Errando
[...]
72 Goi Paleolitoa Euskal Herrian
72 read operations
Execution time:
Read operation time: 0.0 seconds
Script terminated successfully.
Beste adibide bat, [[Inguma (datu-basea)|Inguma]] datu-baseko esteka duten Euskal Wikipediako artikuluak:<syntaxhighlight lang="linux-config">
pwb.py listpages -lang:eu -weblink:"inguma.eus/"
</syntaxhighlight>Komando hori esekutatuz gero 297 artikulu lortzen dira:<syntaxhighlight lang="linux-config">
1 Javier Torrealdea
2 Jose Maria Pitarke
3 Eugenio Arraiza
4 Javier Duoandikoetxea
5 Joseba Agirreazkuenaga
6 Karlos del Olmo
[...]
296 Patxi Angulo Martin
297 Aitzpea Leizaola
297 read operations
Execution time:
Read operation time: 0.0 seconds
Script terminated successfully.
</syntaxhighlight>
=== 13.2. Wikipediako hainbat artikulu sortzea Wikidatako hainbat itemen oinarrizko datuekin ===
2025eko udaberrian [[Wikiproiektu:Euskal Etxeak Munduan Zehar|Euskal Etxeak Munduan Zehar]] wikiproiektuaren barruan Euskal Wikipedian falta ziren 140 euskaletxeen artikuluak programa bidez automatikoki sortu genituen bakoitza oinarrizko datu batzuekin.
Aldez aurretik oinarrizko datu horiek ''euskaletxeak.eus'' webgunetik Wikidatara gehitu genituen (ikus hemen: [https://drive.google.com/drive/folders/1cqDvjqWTvxZ1GYVJ2TUp-5LwlBb4YLRB Zelan igo datu asko Wikidatara? Gidoia eta ariketak egiteko datuak])
.
=== 13.3. Wikipediako hainbat artikuluen artean etiketa-aldaketak eta birzuzenketak moldatzea ===
2025 martxoan [[Wikiproiektu:Hegaztien euskarazko izenak|Hegaztien_euskarazko_izenak]] wikiproiektuan '''hegaztien euskarazko izenak''' egoki erabiltzeko moldaketak egin genituen Wikipedian eta Wikidatan. Python programak erabili dira [[Euskal Batzorde Ornitologikoa|Euskal Batzorde Ornitologikoak]] izen horiekin egin duen eguneraketak Euskal Wikipedian integratzeko. Taula handi bat zegoen ordura arteko espezie izen onartua (ez du zertan bat etorri behar Euskal Wikipedia zeukanarekin) eta euskarazko izena agertuzen zen. Ziurtatu behar genuen euskarazko izena zela artikuluaren benetako izena, eta ez birzuzenketa bat. Lagungarri, beste hizkuntza batzuetako izenak ere eskaintzen ziren, bilaketa egin behar izatekotan. Egitekoak hauek ziren
* Espezie izenaren zutabean dauden guztiak horiz markatuta agertu behar dira, birzuzenketa bat eginez euskarazko izena duen artikulura.
* Euskarazko izenera mugitu behar diren artikulu guztiak mugitu. Artikulu horietan erreferentzia gisa txoriak.eus zein ornitho.eus gehitu daitezke. <code><nowiki>{{</nowiki>[[Txantiloi:Txoriak|txoriak]]<nowiki>}}</nowiki></code> erabil dezakezu, izen zientifikoa jarrita, lotura sortzeko. Adibidez, <code><nowiki>{{</nowiki>[[Txantiloi:Txoriak|txoriak]]<nowiki>|Pandion-haliaetus}}</nowiki></code>; [[Arrano arrantzale|Arrano arrantzalea]] artikulua horrela hasten da: "'''Arrano arrantzalea''' (''Pandion haliaetus'')...". Izenburu etzana ere kendu behar zaio artikuluari, baldin badu.
* Hegaztietako batzuk beste izen zientifiko bat duen artikulu batean ditugu, zaharkituta geratu dena. Horrelakoetan taulako izen zientifikoarekin ere sortu beharko da artikulu bat, euskarazko izena duen artikulura daraman birzuzenketa moduan.
=== 13.4. Zinema-zuzendari baten filmen taula bat sortzea izenburua hainbat hizkuntzatan emanda ===
Sortu dugu Python programa bat zuzendari baten filmen izenburuak gure inguruko hizkuntzatan ere erakusteko (en, es, fr, eu, ca. gl). Python programak wikikodea sortzen du, taula bat da eta artikuluan sartu behar da gero, eskuz. Gero artikuluan filmen taula ordenatu daiteke ekoizlearen arabera edo izenburuaren arabera ere.<ref>{{Erreferentzia|izenburua=Eztabaida:George Cukor|hizkuntza=eu|data=2024-06-04|url=https://eu.wikipedia.org/w/index.php?title=Eztabaida:George_Cukor&oldid=9812871|sartze-data=2025-07-08|encyclopedia=Wikipedia, entziklopedia askea.}}</ref>
Baten bat animatzen bada, Python programaren kodea erabil dezakezue PAWS tresnarekin interneten bidez (https://hub-paws.wmcloud.org/), baita beste aktore batekin (ordeztu wikidata identifikadorea "Q56014' George Cuckorrena da, hori aldatu)
Beste bertsio bat egin dut zinema-aktoreentzat. (https://eu.wikipedia.org/wiki/Eztabaida:Jack_Nicholson).<syntaxhighlight lang="python">
# -*- coding: utf-8 -*-
import pandas as pd
import pywikibot
import datetime
from pywikibot import pagegenerators
"""
Ingelesezko zuzendari baten filmekin wititaula bat sortu.
Pelikula bakoitzean datua hauek: urtea, zuzendaria eta izenburu desberdinak zenbait hizkuntzatan.
Iterate over a query given in a string using page generators.
"""
#Sortu lista bat pelikula guztien wikidata-identifikadoreekin
QUERY = """
#
SELECT ?item WHERE {
?item (wdt:P31/(wdt:P279*)) wd:Q11424;
wdt:P57 wd:Q56014.
}
LIMIT 500
"""
site = pywikibot.Site("wikidata", "wikidata")
repo = site.data_repository()
generator = pagegenerators.PreloadingEntityGenerator(pagegenerators.WikidataSPARQLPageGenerator(QUERY,site=repo))
#Sortu Data-frame bat (Kaljulu-orri bat) pelikula bakoitzaren datuekin
header = ['Urtea', 'Filma', 'Antzezleak', 'Ekoizlea', 'Hizkuntzak']
data = {}
data = pd.DataFrame(data, columns=header)
for item in generator:
print (item)
h1 = item.get()
#print(h1)
#print (h1['claims'])
if 'P577' in item.claims: # urtea
date = item.claims['P577'][0].getTarget()
urte = date.year
else:
urte = 0
if 'en' in item.labels:
film = item.labels['en']
else:
film = '--'
if 'P161' in item.claims: # antzezle
if len(item.claims['P161']) > 1:
antzezle1 = item.claims['P161'][0].getTarget()
antzezle2 = item.claims['P161'][1].getTarget()
antzezleak = "[["+antzezle1.labels['en']+"]], [["+antzezle2.labels['en']+"]]"
else:
antzezle1 = item.claims['P161'][0].getTarget()
antzezleak = "[["+antzezle1.labels['en']+"]]"
else:
antzezleak = "--"
if 'P272' in item.claims: # ekoizlea
ekoizle1 = item.claims['P272'][0].getTarget()
ekoizle = "|[["+ekoizle1.labels['en']+"]]"
else:
ekoizle = "--"
hizkuntzak =""
if 'es' in item.labels:
if item.labels['es'] != item.labels['en']:
hizkuntzak += '{{Lang-es|'+item.labels['es']+'}} '
if 'fr' in item.labels:
if item.labels['fr'] != item.labels['en']:
hizkuntzak += '{{Lang-fr|'+item.labels['fr']+'}} '
if 'eu' in item.labels:
if item.labels['eu'] != item.labels['en']:
hizkuntzak += '{{Lang-eu|'+item.labels['eu']+'}} '
if 'ca' in item.labels:
if item.labels['ca'] != item.labels['en']:
hizkuntzak += '{{Lang-ca|'+item.labels['ca']+'}} '
if 'gl' in item.labels:
if item.labels['gl'] != item.labels['en']:
hizkuntzak += '{{Lang-gl|'+item.labels['gl']+'}} '
new_row = {'Urtea': urte, 'Filma': film, 'Antzezleak': antzezleak, 'Ekoizlea': ekoizle, 'Hizkuntzak': hizkuntzak}
data.loc[len(data)] = new_row
#Ordenatu filmak argitaratu ziren urtearen arabera
sorted_df = data.sort_values(by=["Urtea"], ascending=True)
#Taularen wikilodea idaztea
print ("""== Zuzendutako filmen aktoreak, ekoizlea eta izenburuak ==
Taula honetan ikus daitezke filmaren bi aktore, enpresa ekoizlea eta beste izenburuak beste hizkuntza batera itzuli bada (gaztelania, frantsesa, euskara, katalana edo galiziera):
{| class="wikitable sortable"
! Urtea
! Filma
! Antzezleak
! Ekoizlea
! Hizkuntzak """)
for index, lerroa in sorted_df.iterrows():
print("|-")
print("| ", lerroa['Urtea'])
print("| [["+lerroa['Filma']+"]]")
print("| "+lerroa['Antzezleak'])
print("| "+lerroa['Ekoizlea'])
print("| "+lerroa['Hizkuntzak'])
print("|}")
</syntaxhighlight>
Hona hemen zinema-zuzendarien taula hobeto ateratzeko beste bertsio bat.
Ingelesezkoaren gain gaztelaniazko eta frantsesezko izenburuak bakarrik erakusten dira (wikidatako Labels etiketan dagoena) eta pelikulen euskarazko artikuluaren esteka hobeto adierazten da ("item.getSitelink('euwiki')" eta ez "item.labels['en']" erabilita).
Programa hau hainbat artikulutan erabili zen, horien artean daude oscar sari bat jaso duten zuzendari gehienetan.
Antzeko taula bat gehitu da Oscar saria irabazi duten aktoreekin.
<syntaxhighlight lang="python">
# -*- coding: utf-8 -*-
import pandas as pd
import pywikibot
import datetime
from pywikibot import pagegenerators
"""
Ingelesezko zuzendari baten filmekin wititaula bat sortu.
Pelikula bakoitzean datu hauek: urtea, izenburua ingelesez, bi aktore, ekoizlea eta izenburua espainieraz eta frantsesez ingelesezkoa ez badira.
Iterate over a query given in a string using page generators.
"""
#Sortu lista bat pelikula guztien wikidata-identifikadoreekin
# wdt:P57 wd:Q51525 lerroan Q51525 identifikadorea Milos Forman zuzendariarena da.
#Ikus Wikidatan: https://www.wikidata.org/wiki/Q51525
# Query honetan Q51525 identifikadorea ordez beste zuzendari batena jarriz gero beste zuzendari horren taula lortuko da
QUERY = """
#
SELECT ?item WHERE {
?item (wdt:P31/(wdt:P279*)) wd:Q11424;
wdt:P57 wd:Q56014.
}
LIMIT 500
"""
site = pywikibot.Site("wikidata", "wikidata")
repo = site.data_repository()
generator = pagegenerators.PreloadingEntityGenerator(pagegenerators.WikidataSPARQLPageGenerator(QUERY,site=repo))
#Sortu Ddta-frame bat (Kalkulu-orri bat) pelikula bakoitzaren datuekin
header = ['Urtea', 'Filma', 'Antzezleak', 'Ekoizlea', 'Hizkuntzak']
data = {}
data = pd.DataFrame(data, columns=header)
for item in generator:
print (item)
h1 = item.get()
#print(h1)
#print (h1['claims'])
if 'P577' in item.claims: # urtea
date = item.claims['P577'][0].getTarget()
urte = date.year
else:
urte = 0
if 'en' in item.labels:
film = '[['+item.labels['en']+']]'
if 'euwiki' in h1['sitelinks']:
print ('euwiki: '+item.getSitelink('euwiki'))
if item.getSitelink('euwiki') != item.labels['en']:
film = '[['+item.getSitelink('euwiki')+'|'+item.labels['en']+']]'
"""
print ('enlabel: '+item.labels['en'])
print ('enwiki: '+item.getSitelink('enwiki'))
print ('euwiki: '+item.getSitelink('euwiki'))
"""
else:
film = '--'
if 'eu' in item.labels:
print('eu_Label:', item.labels['eu'])
if 'P161' in item.claims: # antzezle
if len(item.claims['P161']) > 1:
antzezle1 = item.claims['P161'][0].getTarget()
antzezle2 = item.claims['P161'][1].getTarget()
antzezleak = "[["+antzezle1.labels['en']+"]], [["+antzezle2.labels['en']+"]]"
else:
antzezle1 = item.claims['P161'][0].getTarget()
antzezleak = "[["+antzezle1.labels['en']+"]]"
else:
antzezleak = "--"
if 'P272' in item.claims: # ekoizlea
ekoizle1 = item.claims['P272'][0].getTarget()
ekoizle = "|[["+ekoizle1.labels['en']+"]]"
else:
ekoizle = "--"
hizkuntzak =""
if 'es' in item.labels:
if item.labels['es'] != item.labels['en']:
hizkuntzak += '{{Lang-es|'+item.labels['es']+'}} '
if 'fr' in item.labels:
if item.labels['fr'] != item.labels['en']:
hizkuntzak += '{{Lang-fr|'+item.labels['fr']+'}} '
"""
if 'eu' in item.labels:
if item.labels['eu'] != item.labels['en']:
hizkuntzak += '{{Lang-eu|'+item.labels['eu']+'}} '
if 'ca' in item.labels:
if item.labels['ca'] != item.labels['en']:
hizkuntzak += '{{Lang-ca|'+item.labels['ca']+'}} '
if 'gl' in item.labels:
if item.labels['gl'] != item.labels['en']:
hizkuntzak += '{{Lang-gl|'+item.labels['gl']+'}} '
"""
new_row = {'Urtea': urte, 'Filma': film, 'Antzezleak': antzezleak, 'Ekoizlea': ekoizle, 'Hizkuntzak': hizkuntzak}
data.loc[len(data)] = new_row
#Ordenatu filmak argitaratu ziren urtearen arabera
sorted_df = data.sort_values(by=["Urtea"], ascending=True)
#Taularen wikilodea idaztea
print ("""== Filmografia ==
Taula honetan ikus daitezke zuzendutako filma bakoitzaren bi aktore, enpresa ekoizlea eta beste izenburuak (gaztelaniaz, frantsesez):
{| class="wikitable sortable"
! Urtea
! Filma
! Aktoreak
! Ekoizlea
! Izenburuak (es,fr)""")
for index, lerroa in sorted_df.iterrows():
print("|-")
print("| ", lerroa['Urtea'])
print("| "+lerroa['Filma'])
print("| "+lerroa['Antzezleak'])
print("| "+lerroa['Ekoizlea'])
print("| "+lerroa['Hizkuntzak'])
print("|}")
print("------------------------")
</syntaxhighlight>
==== 13.5. Proposatutako hobekuntzak ====
ql6hdqhhjlb58rdglxbwb494yy4u3di