Eztabaida:George Cukor

message: Sortu dut 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.
Zelan ikusten duzue taula hori? Gehiegi konplikatzen du artikuluaren edukia? Izenburua hizkuntza gutxiagotan jarri beharko litzateke? 
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).
# -*- 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 += ' '
    if 'fr' in item.labels:
        if item.labels['fr'] != item.labels['en']:
                hizkuntzak += ' '
    if 'eu' in item.labels:
        if item.labels['eu'] != item.labels['en']:
                hizkuntzak += ' '
    if 'ca' in item.labels:
        if item.labels['ca'] != item.labels['en']:
                hizkuntzak += ' '
    if 'gl' in item.labels:
        if item.labels['gl'] != item.labels['en']:
                hizkuntzak += ' '
            
    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("|}")
 Ksarasola (eztabaida) 11:02, 27 maiatza 2024 (CEST)
replies: text: Ez dago gaizki, baina dagoeneko "Filmografia" atal bat dagoenez, hori ordezkatu beharko litzateke, ezta? Bestela bi aldiz dugu informazio berbera. Beno, berbera ez, zuk jarritakoa osatuagoa da bestea baino. Theklan (eztabaida) 11:14, 27 maiatza 2024 (CEST)
replies: text: :Bai, horixe egin dut gehienetan. Lehen zegoena ikus dezazuen utzi dut. Orain kenduko dut Filmografiako lista sinple hori. Eskerrik asko. Ksarasola (eztabaida) 11:44, 27 maiatza 2024 (CEST)

text: Hona hemen zinema-zuzendarien taula hobeto ateratzeko beste bertsio bat.

text: 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)

text: # -*- coding: utf-8  -*-

text: import pandas as pd

text: import pywikibot

text: import datetime

text: from pywikibot import pagegenerators

text: """

text: Ingelesezko zuzendari baten filmekin wititaula bat sortu.

text: Pelikula bakoitzean datu hauek: urtea, izenburua ingelesez, bi aktore, ekoizlea eta izenburua espainieraz eta frantsesez ingelesezkoa ez badira.

text: Iterate over a query given in a string using page generators.

text: """

text: #Sortu lista bat pelikula guztien wikidata-identifikadoreekin

text: #  wdt:P57 wd:Q51525  lerroan Q51525 identifikadorea Milos Forman zuzendariarena da.

text: #Ikus Wikidatan: https://www.wikidata.org/wiki/Q51525

text: # Query honetan Q51525 identifikadorea ordez beste zuzendari batena jarriz gero beste zuzendari horren taula lortuko da

text: QUERY = """

text: #

text: SELECT ?item WHERE {

text: ?item (wdt:P31/(wdt:P279*)) wd:Q11424;

text: wdt:P57 wd:Q56014.

text: }

text: LIMIT 500

text: """

text: site = pywikibot.Site("wikidata", "wikidata")

text: repo = site.data_repository()

text: generator = pagegenerators.PreloadingEntityGenerator(pagegenerators.WikidataSPARQLPageGenerator(QUERY,site=repo))

text: #Sortu Ddta-frame bat (Kalkulu-orri bat) pelikula bakoitzaren datuekin

text: header = ['Urtea', 'Filma', 'Antzezleak', 'Ekoizlea', 'Hizkuntzak']

text: data = {}

text: data = pd.DataFrame(data, columns=header)

text: for item in generator:

text: print (item)

text: h1 = item.get()

text: #print(h1)

text: #print (h1['claims'])

text: if 'P577' in item.claims: # urtea

text: date = item.claims['P577'][0].getTarget()

text: urte = date.year

text: else:

text: urte = 0

text: if 'en' in item.labels:

text: film = '[['+item.labels['en']+']]'

text: if 'euwiki' in h1['sitelinks']:

text: print ('euwiki:   '+item.getSitelink('euwiki'))

text: if item.getSitelink('euwiki') != item.labels['en']:

text: film = ''+item.labels['en']+''

text: """

text: print ('enlabel: '+item.labels['en'])

text: print ('enwiki:  '+item.getSitelink('enwiki'))

text: print ('euwiki:  '+item.getSitelink('euwiki'))

text: """

text: else:

text: film = '--'

text: if 'eu' in item.labels:

text: print('eu_Label:', item.labels['eu'])

text: if 'P161' in item.claims: # antzezle

text: if len(item.claims['P161']) > 1:

text: antzezle1 = item.claims['P161'][0].getTarget()

text: antzezle2 = item.claims['P161'][1].getTarget()

text: antzezleak = "[["+antzezle1.labels['en']+"]], [["+antzezle2.labels['en']+"]]"

text: else:

text: antzezle1 = item.claims['P161'][0].getTarget()

text: antzezleak = "[["+antzezle1.labels['en']+"]]"

text: else:

text: antzezleak = "--"

text: if 'P272' in item.claims: # ekoizlea

text: ekoizle1 = item.claims['P272'][0].getTarget()

text: ekoizle  = "|[["+ekoizle1.labels['en']+"]]"

text: else:

text: ekoizle  = "--"

text: hizkuntzak =""

text: if 'es' in item.labels:

text: if item.labels['es'] != item.labels['en']:

text: hizkuntzak += ' '

text: if 'fr' in item.labels:

text: if item.labels['fr'] != item.labels['en']:

text: hizkuntzak += ' '

text: """

text: if 'eu' in item.labels:

text: if item.labels['eu'] != item.labels['en']:

text: hizkuntzak += ' '

text: if 'ca' in item.labels:

text: if item.labels['ca'] != item.labels['en']:

text: hizkuntzak += ' '

text: if 'gl' in item.labels:

text: if item.labels['gl'] != item.labels['en']:

text: hizkuntzak += ' '

text: """

text: new_row = {'Urtea': urte, 'Filma': film, 'Antzezleak': antzezleak, 'Ekoizlea': ekoizle, 'Hizkuntzak': hizkuntzak}

text: data.loc[len(data)] = new_row

text: #Ordenatu filmak argitaratu ziren urtearen arabera

text: sorted_df = data.sort_values(by=["Urtea"], ascending=True)

text: #Taularen wikilodea idaztea

text: print ("""== Filmografia ==

text: Taula honetan ikus daitezke zuzendutako filma bakoitzaren bi aktore, enpresa ekoizlea eta beste izenburuak (gaztelaniaz, frantsesez):

text: {| class="wikitable sortable"

text: ! Urtea

text: ! Filma

text: ! Aktoreak

text: ! Ekoizlea

text: ! Izenburuak (es,fr)""")

text: for index, lerroa in sorted_df.iterrows():

text: print("|-")

text: print("| ", lerroa['Urtea'])

text: print("| "+lerroa['Filma'])

text: print("| "+lerroa['Antzezleak'])

text: print("| "+lerroa['Ekoizlea'])

text: print("| "+lerroa['Hizkuntzak'])

text: print("|}")

text: print("------------------------")

text: Ksarasola (eztabaida) 13:04, 4 ekaina 2024 (CEST)