示例#1
0
def create_new():
    items = Knead(PATH + "/data/reliwiki/new-churches.csv",
                  has_header=True).data()
    CITY = "Amsterdam"

    for church in items:
        print()
        print(f"Creating new church", church)
        pageid = church["pageid"]

        # Last, final check if this church doesn't exist
        if claim_exists(Props.RELIWIKI, f'"{pageid}"'):
            print(f"This Reliwiki ID exists, skipping")
            continue

        name = church["name"]

        item = WikidataItem(
            summary=f"Creating new item for Dutch church with name {name}",
            labels={
                "en": name,
                "nl": name
            },
            descriptions={
                "de": f"Kirche in {CITY} (Niederlande)",
                "en": f"church in {CITY}, the Netherlands",
                "es": f"iglesia en {CITY} (Holanda)",
                "fr": f"Église d'{CITY} (Pays-Bas)",
                "nl": f"kerk in {CITY}"
            })

        item.add_item_claim(Props.INSTANCE_OF, Items.CHURCH_BUILDING)
        item.add_string_claim(Props.RELIWIKI, pageid)
        item.add_item_claim(Props.COUNTRY, Items.NETHERLANDS)
        item.add_item_claim(Props.LOCATED_IN, church["admin_qid"])

        if church["sonneveld"] != "":
            item.add_string_claim(Props.SONNEVELD,
                                  church["sonneveld"],
                                  references=get_refs(item, pageid))

        if church["coordinates"] != "":
            coord = church["coordinates"].split(",")
            item.add_coordinate(Props.COORDINATES,
                                coord,
                                references=get_refs(item, pageid))

        if church["zipcode"] != "":
            item.add_string_claim(Props.ZIP,
                                  church["zipcode"],
                                  references=get_refs(item, pageid))

        if church["address"] != "":
            item.add_monoling_claim(Props.STREET_ADDRESS,
                                    church["address"],
                                    "nl",
                                    references=get_refs(item, pageid))

        if church["denomination_qid"] != "":
            item.add_item_claim(Props.RELIGION,
                                church["denomination_qid"],
                                references=get_refs(item, pageid))

        if church["year_use"] != "":
            if "s" in church["year_use"]:
                decade = int(church["year_use"].replace("s", ""))
                time = WbTime(year=decade, precision="decade")
            else:
                time = WbTime(year=int(church["year_use"]))

            item.add_time_claim(Props.INCEPTION,
                                time,
                                references=get_refs(item, pageid))

        print()

        break
示例#2
0
def add_item(data, qid=None):
    name = data["name"]
    location = data["location"]

    desc = {
        "label_en": f"Stolperstein dedicated to {name}",
        "label_nl": f"Stolperstein ter herinnering aan {name}",
        "description_en": f"stumbling stone in {location}, the Netherlands",
        "description_nl": f"struikelsteen in {location}",
        "aliases_nl": [
            f"struikelsteen ter herinnering aan {name}",
        ]
    }

    print(desc)

    if qid:
        print("HAS QID")
        item = WikidataItem(qid)
    else:
        item = WikidataItem(
            summary=f"Creating new item for a Stolperstein for {name}",
            labels={
                "en": desc["label_en"],
                "nl": desc["label_nl"]
            },
            descriptions={
                "en": desc["description_en"],
                "nl": desc["description_nl"]
            },
            aliases={"nl": desc["aliases_nl"]})

    # These are the same for all stolpersteine
    # item.add_item_claim(Props.INSTANCE_OF, Items.STOLPERSTEIN)
    # item.add_item_claim(Props.PART_OF, Items. STOLPERSTEINE_PROJECT)
    # item.add_item_claim(Props.COUNTRY, Items.NETHERLANDS)
    # item.add_item_claim(Props.CREATOR, Items.GUNTER_DEMNIG)
    # item.add_item_claim(Props.MATERIAL_USED, Items.BRASS)

    # # These are not
    # item.add_commonsmedia(Props.IMAGE, data["image"])
    # item.add_item_claim(Props.LOCATED_IN, data["location_qid"])
    # item.add_coordinate(Props.COORDINATES, [data["lat"], data["lon"]])
    # item.add_monoling_claim(Props.INSCRIPTION, data["inscription"], "nl")

    # I hate this f*****g hack
    def get_ref():
        # Check if we have an url, that's a reference
        if data["url"]:
            return [
                item.get_claim(Props.RETRIEVED, wbtime_now()),
                item.get_url_claim(Props.REF_URL, data["url"]),
                item.get_item_claim(Props.LANGUAGE_WORK, Items.DUTCH)
            ]
        else:
            return None

    # Inception and opening
    date = partial_date_to_wbtime(data["inception"])
    item.add_time_claim(Props.INCEPTION, date, references=get_ref())

    item.add_item_claim(Props.SIG_EVENT,
                        Items.OPENING_CEREMONY,
                        qualifiers=[item.get_claim(Props.POINT_IN_TIME, date)],
                        references=get_ref())

    # Street as item
    item.add_item_claim(Props.LOCATED_ON_STREET,
                        data["street_qid"],
                        qualifiers=[
                            item.get_string_claim(Props.STREET_NUMBER,
                                                  data["street_nr"])
                        ])

    # Street as address
    address = data["street"] + " " + data["street_nr"] + ", " + data["location"]
    item.add_monoling_claim(Props.STREET_ADDRESS, address, "nl")

    item.add_item_claim(
        Props.COMMEMORATES,
        "somevalue",
        qualifiers=[item.get_monoling_claim(Props.NAME, name, "nl")])
示例#3
0
def match_seasons():
    PATH = str(Path(__file__).parent)
    seasons = Knead(PATH + "/data/zomergasten/seasons.csv").data()
    episodes = Knead(PATH + "/data/zomergasten/episodes.csv").data()
    skiplist = Skiplist(PATH + "/skiplists/zomergasten-seasons.txt")

    def get_season_by_year(year):
        for season in seasons:
            if season["year"] == year:
                return season

        return None

    prev_ep = None
    next_ep = None
    cur_year = "1988"
    ep_index = 1

    for index, episode in enumerate(episodes):
        ep_qid = episode["item"]
        ep_year = episode["year"]
        ep_title = episode["itemLabel"]
        season = get_season_by_year(ep_year)
        season_qid = season["item"]
        season_title = season["itemLabel"]

        if skiplist.has(ep_qid):
            print(f"{ep_qid} ({ep_title}) in skiplist, skipping")
            if season["year"] != cur_year:
                print("reset")
                ep_index = 1
                cur_year = season["year"]

            prev_ep = episode
            ep_index += 1

            continue

        if season["year"] != cur_year:
            ep_index = 1
            cur_year = season["year"]

        try:
            next_ep = episodes[index + 1]
        except:
            next_ep = None

        print("---" * 20)
        print(
            f"{ep_qid} - {ep_title} / #{ep_index} {season_qid} {season_title}")
        print(f"{prev_ep} / {next_ep}")
        print("---" * 20)
        print()

        item = WikidataItem(ep_qid)

        item.add_item_claim(Props.SEASON,
                            season_qid,
                            qualifiers=[
                                item.get_string_claim(Props.SERIES_ORDINAL,
                                                      str(ep_index))
                            ])

        if prev_ep:
            item.add_item_claim(Props.FOLLOWS, prev_ep["item"])

        if next_ep:
            item.add_item_claim(Props.FOLLOWED_BY, next_ep["item"])

        skiplist.add(ep_qid)

        prev_ep = episode
        ep_index += 1
示例#4
0
def create_episodes():
    PATH = str(Path(__file__).parent)
    seasons = Knead(PATH + "/data/zomergasten/zomergasten-2021.json").data()

    # Sort seasons by season_nr
    seasons.sort(key=lambda i: i["season_nr"])
    episode_nr = 176  # last episode of 2020

    for season in seasons:
        print()
        print(f"Handling season #{season['season_nr']}")

        year = season["year"]
        presenter_name = season["presenter"]["title"]
        presenter_qid = season["presenter"]["qid"]

        for guest in season["guests"]:
            episode_nr += 1
            guest_name = guest["guest"]["text"]
            guest_qid = guest["guest"]["qid"]
            print("----" * 20)
            print()
            print(f"Handling episode #{episode_nr}, guest {guest_name}")
            date = parse_isodate(guest["date_parsed"])

            if episode_nr < 8:
                print("Already handled, skipping")
                continue

            desc = {
                "label_en":
                f"Zomergasten with {guest_name} ({year})",
                "label_nl":
                f"Zomergasten met {guest_name} ({year})",
                "description_en":
                f"episode {episode_nr} of the Dutch talk show 'Zomergasten', as broadcasted by VPRO on {date['en']}",
                "description_nl":
                f"aflevering {episode_nr} van het VPRO-televisieprogramma 'Zomergasten', uitgezonden op {date['nl']}",
                "aliases_en": [
                    f"{presenter_name} with {guest_name}",
                    f"Zomergasten episode {episode_nr}"
                ],
                "aliases_nl": [
                    f"{presenter_name} met {guest_name}",
                    f"Zomergasten aflevering {episode_nr}"
                ]
            }

            if "qid" in guest:
                print(f"Getting a qid: {guest['qid']}")
                item = WikidataItem(guest["qid"])
            else:
                item = WikidataItem(
                    summary=
                    f"Creating new item for the Zomergasten episode with {guest_name}",
                    labels={
                        "en": desc["label_en"],
                        "nl": desc["label_nl"]
                    },
                    descriptions={
                        "en": desc["description_en"],
                        "nl": desc["description_nl"]
                    },
                    aliases={
                        "en": desc["aliases_en"],
                        "nl": desc["aliases_nl"]
                    })

            item.add_item_claim(Props.INSTANCE_OF, Items.TV_SERIES_EPISODE)
            item.add_item_claim(Props.PART_OF_SERIES,
                                Items.ZOMERGASTEN,
                                qualifiers=[
                                    item.get_string_claim(
                                        Props.SERIES_ORDINAL, str(episode_nr))
                                ])
            item.add_item_claim(Props.PRESENTER,
                                presenter_qid,
                                references=get_ref(item))
            item.add_time_claim(Props.PUB_DATE,
                                pywikibot.WbTime(year=date["year"],
                                                 month=date["month"],
                                                 day=date["day"]),
                                references=get_ref(item))
            item.add_item_claim(Props.TALK_SHOW_GUEST,
                                guest_qid,
                                references=get_ref(item))
            item.add_item_claim(Props.GENRE, Items.TALK_SHOW)
            item.add_item_claim(Props.ORIGINAL_BROADCASTER, Items.VPRO)
            item.add_item_claim(Props.COUNTRY_OF_ORIGIN, Items.NETHERLANDS)
            item.add_item_claim(Props.LANGUAGE_SHOW, Items.DUTCH)
            item.add_item_claim(Props.DISTRIBUTED_BY, Items.NPO)
示例#5
0
def create_seasons():
    PATH = str(Path(__file__).parent)
    seasons = Knead(PATH + "/data/zomergasten/zomergasten.json").data()

    # Sort seasons by season_nr
    seasons.sort(key=lambda i: i["season_nr"])

    for season in seasons:
        season_nr = season["season_nr"]
        print("----" * 20)
        print()
        print(f"Handling season #{season_nr}")

        year = season["year"]
        presenter_name = season["presenter"]["title"]
        presenter_qid = season["presenter"]["qid"]
        episodes_count = len(season["guests"])

        if season_nr < 4:
            print("Existing season, skipping")
            continue

        desc = {
            "label_en":
            f"Zomergasten season {season_nr} ({year})",
            "label_nl":
            f"Zomergasten seizoen {season_nr} ({year})",
            "description_en":
            f"Season {season_nr} of the Dutch talk show 'Zomergasten', as broadcasted by VPRO in {year}",
            "description_nl":
            f"Seizoen {season_nr} van het VPRO-televisieprogramma 'Zomergasten', uitgezonden in {year}",
            "aliases_en":
            [f"Zomergasten {year}", f"Zomergasten season {season_nr}"],
            "aliases_nl":
            [f"Zomergasten {year}", f"Zomergasten seizoen {season_nr}"]
        }

        item = WikidataItem(
            summary=f"Creating new item for the Zomergasten season {season_nr}",
            labels={
                "en": desc["label_en"],
                "nl": desc["label_nl"]
            },
            descriptions={
                "en": desc["description_en"],
                "nl": desc["description_nl"]
            },
            aliases={
                "en": desc["aliases_en"],
                "nl": desc["aliases_nl"]
            })

        item.add_item_claim(Props.INSTANCE_OF, Items.TV_SERIES_SEASON)
        item.add_item_claim(Props.PART_OF_SERIES,
                            Items.ZOMERGASTEN,
                            qualifiers=[
                                item.get_string_claim(Props.SERIES_ORDINAL,
                                                      str(season_nr))
                            ])
        item.add_item_claim(Props.PRESENTER,
                            presenter_qid,
                            references=get_ref(item))
        item.add_time_claim(Props.PUB_DATE,
                            pywikibot.WbTime(year=year),
                            references=get_ref(item))
        item.add_item_claim(Props.GENRE, Items.TALK_SHOW)
        item.add_item_claim(Props.ORIGINAL_BROADCASTER, Items.VPRO)
        item.add_item_claim(Props.COUNTRY_OF_ORIGIN, Items.NETHERLANDS)
        item.add_item_claim(Props.LANGUAGE_SHOW, Items.DUTCH)
        item.add_item_claim(Props.DISTRIBUTED_BY, Items.NPO)
        item.add_quantity_claim(Props.NR_OF_EPISODES,
                                episodes_count,
                                references=get_ref(item))
示例#6
0
def add_item(data):
    print("----" * 20)
    print()
    print(data)

    title = data["title"]
    url = data["url"]
    kid = data["id"]

    # if kid != "50":
    #     return

    print(f"Handling {title}")

    if skiplist.has(kid):
        print(f"In skiplist, skipping")
        return

    creator = data["creator"]

    if creator == "":
        desc_nl = "kunstwerk in de openbare ruimte te Nijmegen"
        desc_en = "public artwork in Nijmegen, the Netherlands"
    elif creator == "Onbekend":
        desc_nl = "kunstwerk in de openbare ruimte van een onbekende maker te Nijmegen"
        desc_en = "public artwork by an unknown artist in Nijmegen, the Netherlands"
    else:
        desc_nl = f"kunstwerk van {creator} in de openbare ruimte te Nijmegen"
        desc_en = f"public artwork by {creator} in Nijmegen, the Netherlands"

    item = WikidataItem(
        summary = f"public artwork '{title}' in Nijmegen, the Netherlands",
        labels = {
            "nl" : title
        }
    )

    item.edit_descriptions({
            "de" : f"Kunst im öffentlichen Raum in Nijmegen (Niederlande)",
            "en" : desc_en,
            "es" : f"arte público en Nijmegen (Holanda)",
            "fr" : f"art public à Nimègue (Pays-Bas)",
            "nl" : desc_nl
    })

    item.edit_aliases({
        "en" : title
    })

    # Basics
    item.add_item_claim(Props.INSTANCE_OF, Items.SCULPTURE)
    item.add_item_claim(Props.COUNTRY, Items.NETHERLANDS)
    item.add_item_claim(Props.LOCATED_IN_ADMIN, Items.NIJMEGEN_MUNIP)
    item.add_item_claim(Props.GENRE, Items.PUBLIC_ART)


    # Actual data
    coord = [data["lat"], data["lon"]]
    item.add_coordinate(
        Props.COORDINATES, coord, references = get_refs(item, url)
    )

    item.add_string_claim(
        Props.INVENTORY_NR, kid,
        qualifiers = [
            item.get_item_claim(Props.COLLECTION, Items.PUBLIC_ART_IN_NIJMEGEN)
        ],
        references = get_refs(item, url)
    )

    item.add_string_claim(
        Props.DESCRIBED_AT_URL,
        url,
        qualifiers = [
            item.get_item_claim(Props.LANGUAGE_WORK, Items.DUTCH)
        ]
    )

    if data["year"] != "":
        year = int(data["year"])
        item.add_time_claim(
            Props.INCEPTION, WbTime(year = year), references = get_refs(item, url)
        )

    if data["creator_qid"] != "":
        item.add_item_claim(
            Props.CREATOR, data["creator_qid"], references = get_refs(item, url)
        )
    elif data["creator"] == "Onbekend":
        item.add_item_claim(
            Props.CREATOR, "somevalue", references = get_refs(item, url)
        )

    if data["owner"] == "gemeente":
        item.add_item_claim(
            Props.COLLECTION, Items.NIJMEGEN_MUNIP, references = get_refs(item, url)
        )
    elif data["owner"] == "particulier":
        item.add_item_claim(
            Props.COLLECTION, Items.PRIVATE_COLLECTION, references = get_refs(item, url)
        )

    if data["location_clean"] != "":
        item.add_monoling_claim(
            Props.STREET_ADDRESS, data["location_clean"], "nl", references = get_refs(item, url)
        )

    skiplist.add(kid)