Merge branch 'master' into switching_hebrew

This commit is contained in:
Dima-1 2020-07-09 12:47:09 +03:00
commit 9b9a203136
17 changed files with 240 additions and 18 deletions

View file

@ -38,6 +38,7 @@ public class Amenity extends MapObject {
public static final String COLLECTION_TIMES = "collection_times";
public static final String CONTENT = "content";
public static final String CUISINE = "cuisine";
public static final String WIKIDATA = "wikidata";
public static final String DISH = "dish";
public static final String REF = "ref";
public static final String OSM_DELETE_VALUE = "delete";

View file

@ -3170,7 +3170,7 @@
<string name="map_during_navigation">خريطة أثناء التنقل</string>
<string name="shared_string_other">أخرى</string>
<string name="vehicle_parameters_descr">الوزن ، الارتفاع ، السرعة</string>
<string name="vehicle_parameters">معلمات السيارة</string>
<string name="vehicle_parameters">معلمات المركبات</string>
<string name="voice_announces_info">الإعلامات الصوتية تحدث فقط أثناء التنقل.</string>
<string name="voice_announces_descr">إرشادات التنقل والإعلامات</string>
<string name="voice_announces">المطالبات الصوتية</string>
@ -3212,7 +3212,7 @@
<string name="default_speed_setting_title">السرعة الافتراضية</string>
<string name="default_speed_setting_descr">تغيير إعدادات السرعة الافتراضية</string>
<string name="minmax_speed_dialog_title">تعيين حد السرعة الأدنى/الأعلى</string>
<string name="new_profile">وضع جديد</string>
<string name="new_profile">ملف تعريف جديد</string>
<string name="shared_string_crash">خروج مفاجئ</string>
<string name="last_launch_crashed">فشل العملية الأخيرة لأوسماند. الرجاء مساعدتنا في التحسين من خلال مشاركة رسالة الخطأ.</string>
<string name="release_3_4">• أوضاع التطبيق: قم بإنشاء وضع مخصص لاحتياجاتك الخاصة ، باستخدام رمز ولون مخصصين
@ -3398,7 +3398,7 @@
<string name="select_map_icon">حدد أيقونه الخريطة</string>
<string name="delete_profiles_descr">بعد النقر فوق \"تطبيق\" ، سيتم فقد الأوضاع المحذوفة بالكامل.</string>
<string name="master_profile">الوضع الرئيسي</string>
<string name="select_color">اختر اللون</string>
<string name="select_color"></string>
<string name="edit_profiles_descr">لا يمكنك حذف أوضاع أوسماند الافتراضية ، ولكن يمكنك تعطيلها في الشاشة السابقة ، أو نقلها إلى الأسفل.</string>
<string name="edit_profiles">تحرير الأوضاع</string>
<string name="select_nav_profile_dialog_message">يؤثر نوع التنقل على قواعد حسابات المسار.</string>
@ -3805,4 +3805,6 @@
<string name="quick_action_remove_next_destination_descr">سيتم حذف نقطة الوجهة الحالية على المسار. إذا كانت هي الوجهة، سوف تتوقف الملاحة.</string>
<string name="search_download_wikipedia_maps">تنزيل بيانات ويكيبيديا</string>
<string name="plugin_wikipedia_description">الحصول على معلومات حول النقاط المثيرة للاهتمام من ويكيبيديا. إنه دليلك غير المتصل بجيبك - ما عليك سوى تمكين المكون الإضافي ويكبيديا والاستمتاع بمقالات حول الكائنات من حولك.</string>
<string name="app_mode_enduro_motorcycle">دراجة نارية</string>
<string name="app_mode_motor_scooter">سكوتر موتور</string>
</resources>

View file

@ -2766,7 +2766,7 @@
<string name="poi_toilets_disposal_pitlatrine">Toilettenspülung: Plumpsklo</string>
<string name="poi_wiki_link">Wikipedia</string>
<string name="poi_spices">Gewürzgeschäft</string>
<string name="poi_fuel_type">Kraftstoffart</string>
<string name="poi_fuel_type">Kraftstoffsorte</string>
<string name="poi_payment_type">Zahlungsart</string>
<string name="poi_additional_type">Zusätzlich</string>
<string name="poi_service_bicycle_charging_yes">Ladestation: ja</string>

View file

@ -3822,4 +3822,6 @@
<string name="quick_action_remove_next_destination_descr">Der aktuelle Punkt auf der Route wird gelöscht. Wenn es das Ziel ist, wird die Navigation gestoppt.</string>
<string name="search_download_wikipedia_maps">Wikipedia-Karten herunterladen</string>
<string name="plugin_wikipedia_description">Informationen über Sehenswürdigkeiten erhalten Sie bei Wikipedia. Es ist Ihr Offline-Wegweiser für die Hosentasche - aktivieren Sie einfach das Wikipedia-Modul und genießen Sie Artikel über Objekte in Ihrer Umgebung.</string>
<string name="app_mode_enduro_motorcycle">Enduro</string>
<string name="app_mode_motor_scooter">Motorroller</string>
</resources>

View file

@ -3797,4 +3797,6 @@
<string name="please_provide_point_name_error">Merci de renseigner un nom pour le point</string>
<string name="plugin_wikipedia_description">Utilisez un guide de poche hors ligne grâce à Wikipédia. Activez le plugin Wikipédia : des points d\'intérêt seront affichés, ils vous permettrons d\'obtenir des informations sur les lieux qui vous entourent.</string>
<string name="search_download_wikipedia_maps">Télécharger les cartes Wikipédia</string>
<string name="app_mode_motor_scooter">Scooter</string>
<string name="app_mode_enduro_motorcycle">Moto enduro</string>
</resources>

View file

@ -3823,4 +3823,6 @@
<string name="quick_action_remove_next_destination_descr">נקודת היעד הנוכחית במסלול תימחק. אם זה יהיה היעד, הניווט ייעצר.</string>
<string name="search_download_wikipedia_maps">הורדת מפות ויקיפדיה</string>
<string name="plugin_wikipedia_description">קבלת מידע על נקודות עניין מוויקיפדיה. מדריך הכיס הפרטי שלך - עליך פשוט להפעיל את התוסף של ויקיפדיה וליהנות מערכים על מה שסביבך.</string>
<string name="app_mode_enduro_motorcycle">אופנוע שטח</string>
<string name="app_mode_motor_scooter">טוסטוס</string>
</resources>

View file

@ -3251,7 +3251,7 @@
<string name="general_settings_profile_descr">Wybiera styl aplikacji, jednostki, region</string>
<string name="osmand_settings">Ustawienia OsmAnd</string>
<string name="copy_from_other_profile">Skopiuj z innego profilu</string>
<string name="vehicle_parameters_descr">Ciężar, wysokość, prędkość</string>
<string name="vehicle_parameters_descr">Waga, wysokość, długość, prędkość</string>
<string name="vehicle_parameters">Parametry pojazdu</string>
<string name="voice_announces_info">Komunikaty głosowe są odtwarzane tylko podczas nawigacji.</string>
<string name="voice_announces">Komunikaty głosowe</string>
@ -3463,12 +3463,12 @@
<string name="monitoring_min_speed_descr_side_effect">Efekt uboczny: trasa nie będzie zawierała sekcji, w których nie zostało spełnione kryterium minimalnej prędkości (np. podczas pchania roweru pod strome wzgórze). Nie będzie również zawierała informacji o czasach odpoczynku, np. przerwach. Ma to wpływ na analizę i przetwarzanie końcowe, np. przy próbie określenia całkowitej długości trasy, czasu w ruchu lub średniej prędkości.</string>
<string name="rearrange_categories">Zmień układ kategorii</string>
<string name="create_custom_categories_list_promo">Zmień kolejność sortowania listy, ukryj niepotrzebne kategorie. Wszystkie zmiany można importować lub eksportować za pomocą profili.</string>
<string name="add_new_custom_category_button_promo">Można dodać nową, niestandardową kategorię wybierając jedną lub kilka potrzebnych kategorii.</string>
<string name="add_new_custom_category_button_promo">Można dodać nową, niestandardową kategorię wybierając jedną lub kilka kategorii.</string>
<string name="shared_string_available">Dostępne</string>
<string name="add_custom_category">Dodaj niestandardową kategorię</string>
<string name="rendering_attr_streetLightingNight_name">Wyświetlaj tylko w nocy</string>
<string name="plugin_prefs_reset_successful">Ustawienia wtyczek przywrócone do stanu domyślnego.</string>
<string name="profile_prefs_reset_successful">Ustawienia profili przywrócone do stanu domyślnego.</string>
<string name="plugin_prefs_reset_successful">Ustawienia wtyczek przywrócone do domyślnych.</string>
<string name="profile_prefs_reset_successful">Ustawienia profili przywrócone do domyślnych.</string>
<string name="ltr_or_rtl_combine_via_slash">%1$s/%2$s</string>
<string name="sunset_at">Zachód słońca o %1$s</string>
<string name="sunrise_at">Wschód słońca o %1$s</string>
@ -3480,7 +3480,7 @@
<string name="multimedia_use_system_camera">Użyj aplikacji systemowej</string>
<string name="multimedia_photo_play_sound">Dźwięk migawki aparatu</string>
<string name="reset_to_default_category_button_promo">Przywrócenie domyślnej kolejności sortowania spowoduje przywrócenie porządku sortowania do stanu domyślnego po instalacji.</string>
<string name="accessibility_mode_disabled">Tryb ułatwień dostępu wyłączony w twoim systemie.</string>
<string name="accessibility_mode_disabled">Tryb ułatwień jest dostępu wyłączony w twoim systemie.</string>
<string name="use_system_screen_timeout">Wygaś ekran zgodnie z ustawieniami systemu</string>
<string name="clear_recorded_data">Wyczyść zarejestrowane dane</string>
<string name="release_3_6">- Profile: teraz można zmienić kolejność, ustawić ikonę dla mapy, zmienić wszystkie ustawienia dla profili bazowych i przywrócić je do domyślnych ustawień.
@ -3523,7 +3523,7 @@
<string name="navigation_notification_desc">Pokaż powiadomienia systemowe podczas nawigacji z instrukcjami nawigacji.</string>
<string name="navigation_notification">Powiadomienie nawigacyjne</string>
<string name="shared_string_app_default_w_val">Domyślnie (%s)</string>
<string name="no_recalculation_setting">Wyłączenie ponownego obliczania</string>
<string name="no_recalculation_setting">Bez ponownego obliczania</string>
<string name="route_recalculation_dist_title">Minimalna odległość do ponownego wyznaczenia trasy</string>
<string name="route_recalculation_dist_descr">Wyznacza ponownie trasę, jeśli odległość do trasy jest dłuższa niż określony parametr</string>
<string name="tracks_view_descr">Twoje nagrane ślady są w %1$s lub w folderze OsmAnd.</string>
@ -3588,7 +3588,7 @@
<string name="quick_action_terrain_descr">Przycisk do wyświetlania lub ukrywania warstwy terenu na mapie.</string>
<string name="quick_action_terrain_show">Pokaż teren</string>
<string name="quick_action_terrain_hide">Ukryj teren</string>
<string name="quick_action_show_hide_terrain">Pokaż/ukryj teren</string>
<string name="quick_action_show_hide_terrain">Pokaż / ukryj teren</string>
<string name="download_slope_maps">Nachylenie</string>
<string name="terrain_empty_state_text">Włącz, aby wyświetlić cieniowanie wzniesień lub stoków. Możesz przeczytać więcej o tego rodzaju mapach na naszej stronie.</string>
<string name="shared_string_legend">Legenda</string>
@ -3630,7 +3630,7 @@
<string name="shared_string_hidden">Ukryte</string>
<string name="hidden_items_descr">Te elementy są ukryte w menu, jednak reprezentowane opcje i wtyczki będą wciąż działać.</string>
<string name="reset_items_descr">Ukrycie ustawień resetuje je do pierwotnego stanu.</string>
<string name="main_actions_descr">\"Główne czynności\" zawierają tylko 4 przyciski.</string>
<string name="main_actions_descr">Mieści tylko 4 przyciski.</string>
<string name="main_actions">Główne działania</string>
<string name="move_inside_category">Możesz przemieszczać elementy tylko wewnątrz tej kategorii.</string>
<string name="developer_plugin">Wtyczka deweloperska</string>
@ -3719,7 +3719,7 @@
<string name="quick_action_transport_hide">Ukryj transport publiczny</string>
<string name="quick_action_transport_show">Pokaż transport publiczny</string>
<string name="quick_action_show_hide_transport">Pokaż/ukryj transport publiczny</string>
<string name="create_edit_poi">Utwórz / Edytuj POI</string>
<string name="create_edit_poi">Utwórz / Edytuj użyteczne miejsce</string>
<string name="add_edit_favorite">Dodaj / Edytuj Ulubione</string>
<string name="quick_action_switch_profile_descr">Naciśnięcie przycisku akcji powoduje przełączanie między wybranymi profilami.</string>
<string name="shared_string_add_profile">Dodaj profil</string>

View file

@ -1120,7 +1120,7 @@
<string name="map_widget_renderer">Стиль карты</string>
<string name="email">Эл. почта</string>
<string name="day_night_info">Восход/закат</string>
<string name="osmand_short_description_80_chars">Мобильный просмотр и навигация по онлайн и локальным картам OSM всего мира</string>
<string name="osmand_short_description_80_chars">Мобильные карты и навигация по всему миру для локальных и онлайн-карт OSM</string>
<string name="osmand_long_description_1000_chars">OsmAnd (Open Street Maps Automated Navigation Directions)
\n
\n OsmAnd — это навигационное приложение с открытым исходным кодом и доступом к картам и данным на основе OSM. Все данные карт (векторные или растровые) могут быть сохранены на карту памяти устройства для использования без подключения к интернету. OsmAnd также предоставляет локальные и онлайн-средства построения маршрута, включая голосовые инструкции по маршруту.
@ -2414,7 +2414,7 @@
<string name="marker_moved_to_active">Маркер перемещён в действующие</string>
<string name="show_direction">Указатель расстояния</string>
<string name="show_map">Показать карту</string>
<string name="plan_route_no_markers_toast">Для использования этой функции вы должны добавить хотя бы один маркер.</string>
<string name="plan_route_no_markers_toast">Для использования этой функции нужно добавить хотя бы один маркер.</string>
<string name="osn_modify_dialog_error">Не удалось изменить заметку.</string>
<string name="shared_string_road">Дорога</string>
<string name="show_guide_line">Показывать направляющие линии</string>

View file

@ -3812,4 +3812,6 @@
<string name="quick_action_remove_next_destination_descr">Тренутна одредишна тачка биће уклоњена. Ако је она одредишна, стопираће се навигација.</string>
<string name="search_download_wikipedia_maps">Преузмите мапе Википедије</string>
<string name="plugin_wikipedia_description">Информације о тачкама од интереса потражите од Википедије. То је ваш џепни ванмрежни водич - само омогућите додатак Википедиа и уживајте у чланцима о објектима око вас.</string>
<string name="app_mode_enduro_motorcycle">Ендуро скутер</string>
<string name="app_mode_motor_scooter">Скутер</string>
</resources>

View file

@ -1476,7 +1476,7 @@
<string name="poi_piste_difficulty_freeride">Serbest sürüş</string>
<string name="poi_piste_grooming_classic">Klasik</string>
<string name="poi_piste_grooming_classic_skating">Klasik+paten</string>
<string name="poi_piste_grooming_scooter">Scooter</string>
<string name="poi_piste_grooming_scooter">Mobilet</string>
<string name="poi_piste_grooming_skating">Paten</string>
<string name="poi_piste_grooming_no">Hayır</string>
<string name="poi_piste_grooming_mogul">Tümsek</string>
@ -2394,4 +2394,7 @@
<string name="poi_url">URL</string>
<string name="poi_traffic_signals_arrow">Ok</string>
<string name="poi_traffic_signals_vibration">Titreşim</string>
<string name="poi_scooter_no">Mobilet: hayır</string>
<string name="poi_scooter_yes">Mobilet: evet</string>
<string name="poi_motorcycle_type_scooter">Mobilet</string>
</resources>

View file

@ -2582,7 +2582,7 @@
<string name="new_profile">Yeni profil</string>
<string name="shared_string_crash">Çökme</string>
<string name="app_mode_personal_transporter">Kişisel taşıyıcı</string>
<string name="app_mode_scooter">Scooter</string>
<string name="app_mode_scooter">Mobilet</string>
<string name="day">Gün</string>
<string name="days_2_4">Günler</string>
<string name="days_5">Günler</string>
@ -3770,4 +3770,6 @@
<string name="use_volume_buttons_as_zoom">Yakınlaştırma için ses seviyesi düğmeleri</string>
<string name="search_download_wikipedia_maps">Wikipedia haritalarını indir</string>
<string name="plugin_wikipedia_description">Wikipedia\'dan ilgi çekici yerler hakkında bilgi alın. Bu sizin çevrim dışı cep rehberinizdir - sadece Wikipedia eklentisini etkinleştirin ve etrafınızdaki nesneler hakkında makalelerin tadını çıkarın.</string>
<string name="app_mode_enduro_motorcycle">Enduro motosiklet</string>
<string name="app_mode_motor_scooter">Küçük motosiklet</string>
</resources>

View file

@ -3810,4 +3810,6 @@
<string name="quick_action_remove_next_destination_descr">目前路徑上的目的地點將會被刪除。如果其將為目的地,導航就會停止。</string>
<string name="search_download_wikipedia_maps">下載維基百科地圖</string>
<string name="plugin_wikipedia_description">從維基百科取得關於興趣點的資訊。這是您的離線口袋指南 ── 只要啟用維基百科外掛程式並享受有關於您周圍景點的文章。</string>
<string name="app_mode_enduro_motorcycle">耐力賽摩托車</string>
<string name="app_mode_motor_scooter">小型摩托車</string>
</resources>

View file

@ -471,7 +471,7 @@ public class AmenityMenuBuilder extends MenuBuilder {
}
textPrefix = app.getString(R.string.poi_cuisine);
vl = sb.toString();
} else if (key.contains(Amenity.ROUTE)) {
} else if (key.contains(Amenity.ROUTE) || key.equals(Amenity.WIKIDATA)) {
continue;
} else {
if (key.contains(Amenity.DESCRIPTION)) {
@ -784,12 +784,16 @@ public class AmenityMenuBuilder extends MenuBuilder {
Map<String, String> additionalInfo = amenity.getAdditionalInfo();
String imageValue = additionalInfo.get("image");
String mapillaryValue = additionalInfo.get("mapillary");
String wikidataValue = additionalInfo.get("wikidata");
if (!Algorithms.isEmpty(imageValue)) {
params.put("osm_image", imageValue);
}
if (!Algorithms.isEmpty(mapillaryValue)) {
params.put("osm_mapillary_key", mapillaryValue);
}
if (!Algorithms.isEmpty(wikidataValue)) {
params.put("wikidata_id", wikidataValue);
}
return params;
}

View file

@ -25,6 +25,7 @@ import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.mapcontextmenu.MenuBuilder;
import net.osmand.plus.mapillary.MapillaryContributeCard;
import net.osmand.plus.mapillary.MapillaryImageCard;
import net.osmand.plus.wikimedia.WikiImageHelper;
import net.osmand.util.Algorithms;
import org.json.JSONArray;
@ -437,6 +438,11 @@ public abstract class ImageCard extends AbstractCard {
pms.put("lang", preferredLang);
}
if (this.params != null) {
String wikidataId = this.params.get("wikidata_id");
if (wikidataId != null) {
this.params.remove("wikidata_id");
WikiImageHelper.fillWikiMediaCards(mapActivity, wikidataId, result);
}
pms.putAll(this.params);
}
String response = AndroidNetworkUtils.sendRequest(app, "https://osmand.net/api/cm_place", pms,

View file

@ -0,0 +1,28 @@
package net.osmand.plus.wikimedia;
public class WikiImage {
private String imageName;
private String imageStubUrl;
private String imageHiResUrl;
public WikiImage(String imageName, String imageStubUrl,
String imageHiResUrl) {
this.imageName = imageName;
this.imageStubUrl = imageStubUrl;
this.imageHiResUrl = imageHiResUrl;
}
public String getImageName() {
return imageName;
}
public String getImageStubUrl() {
return imageStubUrl;
}
public String getImageHiResUrl() {
return imageHiResUrl;
}
}

View file

@ -0,0 +1,40 @@
package net.osmand.plus.wikimedia;
import android.view.View;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard;
import net.osmand.util.Algorithms;
public class WikiImageCard extends ImageCard {
public WikiImageCard(final MapActivity mapActivity,
final WikiImage wikiImage) {
super(mapActivity, null);
if (topIconId == 0) {
topIconId = R.drawable.ic_logo_wikimedia;
}
this.imageUrl = wikiImage.getImageStubUrl();
this.title = wikiImage.getImageName();
this.url = this.imageUrl;
View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
openUrl(getMapActivity(), getMyApplication(), getTitle(), wikiImage.getImageHiResUrl(),
isExternalLink() || Algorithms.isEmpty(getImageHiresUrl()),
!Algorithms.isEmpty(getImageHiresUrl()));
}
};
if (!Algorithms.isEmpty(buttonText)) {
this.onButtonClickListener = onClickListener;
} else {
this.onClickListener = onClickListener;
}
}
}

View file

@ -0,0 +1,126 @@
package net.osmand.plus.wikimedia;
import androidx.annotation.NonNull;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import net.osmand.PlatformUtil;
import net.osmand.osm.io.NetworkUtils;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.logging.Log;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
public class WikiImageHelper {
private static final String WIKIDATA_API_ENDPOINT = "https://www.wikidata.org/w/api.php";
private static final String ACTION = "?action=wbgetclaims&property=P18&entity=";
private static final String FORMAT_JSON = "&format=json";
private static final String IMAGE_BASE_URL = "https://upload.wikimedia.org/wikipedia/commons/";
private static final String WIKIDATA_PREFIX = "Q";
private static final int THUMB_SIZE = 500;
private static final Log LOG = PlatformUtil.getLog(WikiImageHelper.class);
public static void fillWikiMediaCards(@NonNull MapActivity mapActivity, @NonNull String wikidata,
List<ImageCard> images) {
if (wikidata.startsWith(WIKIDATA_PREFIX)) {
StringBuilder rawResponse = new StringBuilder();
String url = WIKIDATA_API_ENDPOINT + ACTION + wikidata + FORMAT_JSON;
String error = NetworkUtils.sendGetRequest(url, null, rawResponse);
if (error == null) {
try {
Gson gson = new Gson();
WikipediaResponse response = gson.fromJson(rawResponse.toString(), WikipediaResponse.class);
for (WikiImage img : getImageData(response)) {
images.add(new WikiImageCard(mapActivity, img));
}
return;
} catch (JsonSyntaxException e) {
error = e.getLocalizedMessage();
}
}
LOG.error(error);
} else {
LOG.error("Wrong WikiMedia ID");
}
}
private static List<WikiImage> getImageData(WikipediaResponse response) {
List<WikiImage> images = new ArrayList<>();
for (P18 p18 : response.claims.p18) {
String imageFileName = p18.mainsnak.datavalue.value;
if (imageFileName != null) {
try {
String imageName = URLDecoder.decode(imageFileName, "UTF-8");
imageFileName = imageName.replace(" ", "_");
imageName = imageName.substring(0, imageName.lastIndexOf("."));
String[] urlHashParts = getHash(imageFileName);
String imageHiResUrl = IMAGE_BASE_URL +
urlHashParts[0] + "/" + urlHashParts[1] + "/" +
imageFileName;
String imageStubUrl = IMAGE_BASE_URL + "thumb/" +
urlHashParts[0] + "/" + urlHashParts[1] + "/" +
imageFileName + "/" + THUMB_SIZE + "px-" +
imageFileName;
images.add(new WikiImage(imageName, imageStubUrl, imageHiResUrl));
} catch (UnsupportedEncodingException e) {
LOG.error(e.getLocalizedMessage());
}
}
}
return images;
}
@NonNull
private static String[] getHash(@NonNull String s) {
String md5 = new String(Hex.encodeHex(DigestUtils.md5(s)));
return new String[]{md5.substring(0, 1), md5.substring(0, 2)};
}
private static class Claims {
@SerializedName("P18")
@Expose
private List<P18> p18 = null;
}
private static class Datavalue {
@SerializedName("value")
@Expose
private String value;
@SerializedName("type")
@Expose
private String type;
}
private static class Mainsnak {
@SerializedName("datavalue")
@Expose
private Datavalue datavalue;
@SerializedName("datatype")
@Expose
private String datatype;
}
private static class P18 {
@SerializedName("mainsnak")
@Expose
private Mainsnak mainsnak;
}
private static class WikipediaResponse {
@SerializedName("claims")
@Expose
private Claims claims;
}
}