コード例 #1
0
 def fix(item: model.television.TvBase) -> Iterable[api.Fix]:
     title = None
     # For logging only
     _src, _src_key = None, None
     # Lookup IMDB
     if title is None:
         imdb_id = item.first_claim(wp.IMDB_ID.pid)
         title = imdb_title(imdb_id)
         _src, _src_key = "IMDB", imdb_id
     # Lookup tv.com
     if title is None:
         tv_com_id = item.first_claim(wp.TV_COM_ID.pid)
         title = tv_com_title(tv_com_id)
         _src, _src_key = "TV.com", tv_com_id
     # Lookup label
     if title is None:
         title = item.label
         _src, _src_key = "label", "en"
     # Did not find a title from any source
     if title is None:
         return []
     print(f"Fetched title='{title}' from {_src} using {_src_key}")
     new_claim = Claim(item.repo, wp.TITLE.pid)
     new_claim.setTarget(WbMonolingualText(title, "en"))
     summary = f"Setting {wp.TITLE} to {title}"
     return [api.ClaimFix(new_claim, summary, item.itempage)]
コード例 #2
0
    def fix(item: model.television.Series) -> Iterable[api.ClaimFix]:
        if wp.IMDB_ID.pid not in item.claims:
            return []

        number_of_episodes = no_of_episodes(item.first_claim(wp.IMDB_ID.pid))
        if number_of_episodes is None:
            return []

        claim = Claim(item.repo, wp.NUMBER_OF_EPISODES.pid)
        claim.setTarget(WbQuantity(number_of_episodes, site=item.repo))
        summary = f"Setting {wp.NUMBER_OF_EPISODES} to {number_of_episodes}"

        return [api.ClaimFix(claim, summary=summary, itempage=item.itempage)]
コード例 #3
0
    def fix(item: model.television.Season) -> Iterable[api.Fix]:
        claim_fixes = []

        for ordinal, episode in item.parts:
            qualifier = Claim(item.repo, wp.SERIES_ORDINAL.pid)
            qualifier.setTarget(str(ordinal))

            new_claim = Claim(item.repo, wp.HAS_PART.pid)
            new_claim.setTarget(episode.itempage)
            new_claim.addQualifier(qualifier)
            summary = f"Adding {episode.qid} to {wp.HAS_PART.pid} ({wp.HAS_PART.name})"
            claim_fixes.append(api.ClaimFix(new_claim, summary, item.itempage))

        return claim_fixes
コード例 #4
0
ファイル: utils.py プロジェクト: saikirankv/wikidata-toolkit
def copy_delayed(
    src_item: ItemPage, dest_item: ItemPage, props: Iterable[wp.WikidataProperty]
) -> Iterable[api.Fix]:
    repo = Site().data_repository()

    src_item.get()
    dest_item.get()

    claims = []

    for prop in props:
        src_claims = src_item.claims.get(prop.pid, [])

        if len(src_claims) > 1:
            print(
                f"Cannot copy {prop} from {format(src_item)} to {format(dest_item)}. Only scalar properties can be copied"
            )
            continue

        if prop.pid in dest_item.claims:
            print(f"{prop} already has a value in {format(dest_item)}")
            continue

        targets = [claim.getTarget() for claim in src_claims]

        for target in targets:
            target.get()

            target_str = printable_target_value(target)

            print(
                f"Creating claim to copy {prop}={target_str} from {format(src_item)} to {format(dest_item)}"
            )

            new_claim = Claim(repo, prop.pid)
            new_claim.setTarget(target)
            summary = f"Setting {prop.pid} ({prop.name})"
            claims.append(api.ClaimFix(new_claim, summary, dest_item))
    return claims