Prefer wikipedia page titles over wikidata labels

Close #28
This commit is contained in:
Joshua Ramon Enslin 2025-02-13 21:38:13 +01:00
parent 39362f537a
commit 2f3bc5f2fa
Signed by: jrenslin
GPG Key ID: 46016F84501B70AE
2 changed files with 21 additions and 2 deletions

View File

@ -800,7 +800,9 @@ final class NodaWikidataFetcher {
$wikilink = $wikilinks[$lang];
if (!empty($contents[$lang])) {
$descFromWiki = json_decode($contents[$lang], true)['parse']['text']['*'];
$fromWikipedia = json_decode($contents[$lang], true)['parse'];
$titleFromWikipedia = $fromWikipedia['title'];
$descFromWiki = $fromWikipedia['text']['*'];
# Process data retrieved from wikipedia
@ -815,7 +817,7 @@ final class NodaWikidataFetcher {
if ($tDescription !== '' && !empty($desc_cleaned = self::_cleanWikidataInput($tDescription))) {
# $descs[$lang] = $tDescription;
$output[$lang] = [
'label' => self::_cleanWikidataInput((string)$data['labels'][$lang]['value']),
'label' => $titleFromWikipedia,
'description' => '"' . $desc_cleaned . '" - (' . $data['labels'][$lang]['language'] . '.wikipedia.org ' . date('d.m.Y') . ')',
'link' => $wikilink,
];

View File

@ -471,4 +471,21 @@ Transclusion expansion time report (%,ms,calls,template)
$mysqli->close();
}
/**
* Test that fetching translation from Wikidata returns the title of the wikipedia page,
* not the wikidata title.
*
* @return void
*/
public function testListTranslationsFromWikidataWikipediaReturnsWikipediaTitle():void {
$data = NodaWikidataFetcher::getWikidataEntity("Q33550");
$output = NodaWikidataFetcher::listTranslationsFromWikidataWikipedia(["de"], $data);
self::assertNotEmpty($output['de']);
self::assertEquals("Friedrich II. (Preußen)", $output['de']['label']);
}
}