Eztabaida:George Cukor

Latest comment: duela 20 egun by Ksarasola

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 += '{{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("|}")

Ksarasola (eztabaida) 11:02, 27 maiatza 2024 (CEST)Reply

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)Reply
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)Reply
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)
:# -*- 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("------------------------")
:
Ksarasola (eztabaida) 13:04, 4 ekaina 2024 (CEST)Reply
"George Cukor" orrira bueltatu.