diff --git a/app/build.gradle b/app/build.gradle index 1189a48610..86a656fdef 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,7 +16,6 @@ if (isRunningOnTravisAndIsNotPRBuild) { dependencies { - implementation project(':wikimedia-data-client') // Utils implementation 'in.yuvi:http.fluent:1.3' implementation 'com.google.code.gson:gson:2.8.5' diff --git a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java index 2bd18bc0dd..eeb7e0a932 100644 --- a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java +++ b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java @@ -59,7 +59,7 @@ import org.acra.annotation.AcraDialog; import org.acra.annotation.AcraMailSender; import org.acra.data.StringFormat; -import org.wikipedia.language.AppLanguageLookUpTable; +import fr.free.nrw.commons.language.AppLanguageLookUpTable; import timber.log.Timber; @AcraCore( diff --git a/app/src/main/java/fr/free/nrw/commons/Media.kt b/app/src/main/java/fr/free/nrw/commons/Media.kt index af78ae6dd8..7a80c55501 100644 --- a/app/src/main/java/fr/free/nrw/commons/Media.kt +++ b/app/src/main/java/fr/free/nrw/commons/Media.kt @@ -3,8 +3,7 @@ package fr.free.nrw.commons import android.os.Parcelable import fr.free.nrw.commons.location.LatLng import kotlinx.android.parcel.Parcelize -import org.wikipedia.dataclient.mwapi.MwQueryPage -import org.wikipedia.page.PageTitle +import fr.free.nrw.commons.wikidata.model.page.PageTitle import java.util.* @Parcelize diff --git a/app/src/main/java/fr/free/nrw/commons/OkHttpConnectionFactory.java b/app/src/main/java/fr/free/nrw/commons/OkHttpConnectionFactory.java index a750d789f0..89264f18d2 100644 --- a/app/src/main/java/fr/free/nrw/commons/OkHttpConnectionFactory.java +++ b/app/src/main/java/fr/free/nrw/commons/OkHttpConnectionFactory.java @@ -15,7 +15,6 @@ import okhttp3.ResponseBody; import okhttp3.logging.HttpLoggingInterceptor; import okhttp3.logging.HttpLoggingInterceptor.Level; -import org.wikipedia.dataclient.okhttp.HttpStatusException; import timber.log.Timber; public final class OkHttpConnectionFactory { @@ -110,4 +109,30 @@ private boolean isExcludedUrl(final Request request) { private OkHttpConnectionFactory() { } + + public static class HttpStatusException extends IOException { + private final int code; + private final String url; + public HttpStatusException(@NonNull Response rsp) { + this.code = rsp.code(); + this.url = rsp.request().url().uri().toString(); + try { + if (rsp.body() != null && rsp.body().contentType() != null + && rsp.body().contentType().toString().contains("json")) { + } + } catch (Exception e) { + // Log? + } + } + + public int code() { + return code; + } + + @Override + public String getMessage() { + String str = "Code: " + code + ", URL: " + url; + return str; + } + } } diff --git a/app/src/main/java/fr/free/nrw/commons/Utils.java b/app/src/main/java/fr/free/nrw/commons/Utils.java index df51f25711..d6efeeb6a4 100644 --- a/app/src/main/java/fr/free/nrw/commons/Utils.java +++ b/app/src/main/java/fr/free/nrw/commons/Utils.java @@ -20,8 +20,8 @@ import fr.free.nrw.commons.kvstore.JsonKvStore; import java.util.Calendar; import java.util.Date; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.page.PageTitle; +import fr.free.nrw.commons.wikidata.model.WikiSite; +import fr.free.nrw.commons.wikidata.model.page.PageTitle; import java.util.Locale; import java.util.regex.Pattern; diff --git a/app/src/main/java/fr/free/nrw/commons/actions/MwThankPostResponse.kt b/app/src/main/java/fr/free/nrw/commons/actions/MwThankPostResponse.kt index 3ba5ecc90e..f49dd77055 100644 --- a/app/src/main/java/fr/free/nrw/commons/actions/MwThankPostResponse.kt +++ b/app/src/main/java/fr/free/nrw/commons/actions/MwThankPostResponse.kt @@ -1,6 +1,6 @@ package fr.free.nrw.commons.actions -import org.wikipedia.dataclient.mwapi.MwResponse +import fr.free.nrw.commons.wikidata.mwapi.MwResponse /** * Response of the Thanks API. diff --git a/app/src/main/java/fr/free/nrw/commons/actions/PageEditInterface.kt b/app/src/main/java/fr/free/nrw/commons/actions/PageEditInterface.kt index 91462b2381..56f0bf6106 100644 --- a/app/src/main/java/fr/free/nrw/commons/actions/PageEditInterface.kt +++ b/app/src/main/java/fr/free/nrw/commons/actions/PageEditInterface.kt @@ -1,11 +1,11 @@ package fr.free.nrw.commons.actions import fr.free.nrw.commons.wikidata.WikidataConstants.MW_API_PREFIX +import fr.free.nrw.commons.wikidata.model.Entities +import fr.free.nrw.commons.wikidata.model.edit.Edit import io.reactivex.Observable import io.reactivex.Single -import org.wikipedia.dataclient.mwapi.MwQueryResponse -import org.wikipedia.edit.Edit -import org.wikipedia.wikidata.Entities +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse import retrofit2.http.* /** diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java index 40646bc357..7bb60fbd06 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java @@ -30,7 +30,7 @@ import fr.free.nrw.commons.databinding.ActivityLoginBinding; import fr.free.nrw.commons.utils.ActivityUtils; import java.util.Locale; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse; import fr.free.nrw.commons.auth.login.LoginCallback; import javax.inject.Inject; diff --git a/app/src/main/java/fr/free/nrw/commons/auth/csrf/CsrfTokenClient.kt b/app/src/main/java/fr/free/nrw/commons/auth/csrf/CsrfTokenClient.kt index 30f61ee926..423d9fb34b 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/csrf/CsrfTokenClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/auth/csrf/CsrfTokenClient.kt @@ -2,7 +2,7 @@ package fr.free.nrw.commons.auth.csrf import androidx.annotation.VisibleForTesting import fr.free.nrw.commons.auth.SessionManager -import org.wikipedia.dataclient.mwapi.MwQueryResponse +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse import fr.free.nrw.commons.auth.login.LoginClient import fr.free.nrw.commons.auth.login.LoginCallback import fr.free.nrw.commons.auth.login.LoginFailedException diff --git a/app/src/main/java/fr/free/nrw/commons/auth/csrf/CsrfTokenInterface.kt b/app/src/main/java/fr/free/nrw/commons/auth/csrf/CsrfTokenInterface.kt index b6f5055b9e..949f2dddbe 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/csrf/CsrfTokenInterface.kt +++ b/app/src/main/java/fr/free/nrw/commons/auth/csrf/CsrfTokenInterface.kt @@ -1,7 +1,7 @@ package fr.free.nrw.commons.auth.csrf import fr.free.nrw.commons.wikidata.WikidataConstants.MW_API_PREFIX -import org.wikipedia.dataclient.mwapi.MwQueryResponse +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse import retrofit2.Call import retrofit2.http.GET import retrofit2.http.Headers diff --git a/app/src/main/java/fr/free/nrw/commons/auth/login/LoginClient.kt b/app/src/main/java/fr/free/nrw/commons/auth/login/LoginClient.kt index b87d9d7bae..aa24e34d7d 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/login/LoginClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/auth/login/LoginClient.kt @@ -6,7 +6,7 @@ import fr.free.nrw.commons.auth.login.LoginResult.ResetPasswordResult import fr.free.nrw.commons.wikidata.WikidataConstants.WIKIPEDIA_URL import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers -import org.wikipedia.dataclient.mwapi.MwQueryResponse +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse import retrofit2.Call import retrofit2.Callback import retrofit2.Response diff --git a/app/src/main/java/fr/free/nrw/commons/auth/login/LoginInterface.kt b/app/src/main/java/fr/free/nrw/commons/auth/login/LoginInterface.kt index f94089ce2a..0502cf8c7f 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/login/LoginInterface.kt +++ b/app/src/main/java/fr/free/nrw/commons/auth/login/LoginInterface.kt @@ -2,7 +2,7 @@ package fr.free.nrw.commons.auth.login import fr.free.nrw.commons.wikidata.WikidataConstants.MW_API_PREFIX import io.reactivex.Observable -import org.wikipedia.dataclient.mwapi.MwQueryResponse +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse import retrofit2.Call import retrofit2.http.Field import retrofit2.http.FormUrlEncoded diff --git a/app/src/main/java/fr/free/nrw/commons/auth/login/LoginResponse.kt b/app/src/main/java/fr/free/nrw/commons/auth/login/LoginResponse.kt index fc4d9b206d..7e3a80c9ee 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/login/LoginResponse.kt +++ b/app/src/main/java/fr/free/nrw/commons/auth/login/LoginResponse.kt @@ -4,7 +4,7 @@ import com.google.gson.annotations.SerializedName import fr.free.nrw.commons.auth.login.LoginResult.OAuthResult import fr.free.nrw.commons.auth.login.LoginResult.ResetPasswordResult import fr.free.nrw.commons.auth.login.LoginResult.Result -import org.wikipedia.dataclient.mwapi.MwServiceError +import fr.free.nrw.commons.wikidata.mwapi.MwServiceError class LoginResponse { @SerializedName("error") diff --git a/app/src/main/java/fr/free/nrw/commons/campaigns/CampaignView.java b/app/src/main/java/fr/free/nrw/commons/campaigns/CampaignView.java index dac9934f53..8b00e90f9e 100644 --- a/app/src/main/java/fr/free/nrw/commons/campaigns/CampaignView.java +++ b/app/src/main/java/fr/free/nrw/commons/campaigns/CampaignView.java @@ -12,7 +12,7 @@ import fr.free.nrw.commons.campaigns.models.Campaign; import fr.free.nrw.commons.theme.BaseActivity; -import org.wikipedia.util.DateUtil; +import fr.free.nrw.commons.utils.DateUtil; import java.text.ParseException; import java.util.Date; diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryClient.kt b/app/src/main/java/fr/free/nrw/commons/category/CategoryClient.kt index 34af492c1f..49796b03a7 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryClient.kt @@ -1,7 +1,7 @@ package fr.free.nrw.commons.category import io.reactivex.Single -import org.wikipedia.dataclient.mwapi.MwQueryResponse +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java index 341d13f9f5..b5d13f4c7c 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java @@ -29,7 +29,7 @@ import fr.free.nrw.commons.theme.BaseActivity; import java.util.ArrayList; import java.util.List; -import org.wikipedia.page.PageTitle; +import fr.free.nrw.commons.wikidata.model.page.PageTitle; /** * This activity displays details of a particular category diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryInterface.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryInterface.java index 72db50e36f..232a60e23e 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryInterface.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryInterface.java @@ -2,7 +2,7 @@ import io.reactivex.Single; import java.util.Map; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse; import retrofit2.http.GET; import retrofit2.http.Query; import retrofit2.http.QueryMap; diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java index 20435da348..a0119258b7 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java @@ -52,7 +52,7 @@ import javax.inject.Inject; import javax.inject.Named; import org.apache.commons.lang3.StringUtils; -import org.wikipedia.dataclient.WikiSite; +import fr.free.nrw.commons.wikidata.model.WikiSite; /** diff --git a/app/src/main/java/fr/free/nrw/commons/delete/ReasonBuilder.java b/app/src/main/java/fr/free/nrw/commons/delete/ReasonBuilder.java index 715c83742f..35d6822488 100644 --- a/app/src/main/java/fr/free/nrw/commons/delete/ReasonBuilder.java +++ b/app/src/main/java/fr/free/nrw/commons/delete/ReasonBuilder.java @@ -2,7 +2,7 @@ import android.content.Context; -import org.wikipedia.util.DateUtil; +import fr.free.nrw.commons.utils.DateUtil; import java.util.Date; import java.util.Locale; diff --git a/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.java b/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.java index 00086e83e1..abf7c6fb1c 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.java +++ b/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.java @@ -41,7 +41,6 @@ import java.util.Objects; import javax.inject.Named; import javax.inject.Singleton; -import org.wikipedia.AppAdapter; /** * The Dependency Provider class for Commons Android. diff --git a/app/src/main/java/fr/free/nrw/commons/di/NetworkingModule.java b/app/src/main/java/fr/free/nrw/commons/di/NetworkingModule.java index dff0bb9c2a..61bd3b5356 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/NetworkingModule.java +++ b/app/src/main/java/fr/free/nrw/commons/di/NetworkingModule.java @@ -45,8 +45,8 @@ import okhttp3.OkHttpClient; import okhttp3.logging.HttpLoggingInterceptor; import okhttp3.logging.HttpLoggingInterceptor.Level; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.json.GsonUtil; +import fr.free.nrw.commons.wikidata.model.WikiSite; +import fr.free.nrw.commons.wikidata.GsonUtil; import timber.log.Timber; @Module diff --git a/app/src/main/java/fr/free/nrw/commons/explore/depictions/DepictsClient.kt b/app/src/main/java/fr/free/nrw/commons/explore/depictions/DepictsClient.kt index 931520e5bc..e01e12f55f 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/depictions/DepictsClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/explore/depictions/DepictsClient.kt @@ -7,11 +7,11 @@ import fr.free.nrw.commons.upload.depicts.DepictsInterface import fr.free.nrw.commons.upload.structure.depictions.DepictedItem import fr.free.nrw.commons.upload.structure.depictions.get import fr.free.nrw.commons.wikidata.WikidataProperties +import fr.free.nrw.commons.wikidata.model.DataValue import fr.free.nrw.commons.wikidata.model.DepictSearchItem +import fr.free.nrw.commons.wikidata.model.Entities +import fr.free.nrw.commons.wikidata.model.Statement_partial import io.reactivex.Single -import org.wikipedia.wikidata.DataValue -import org.wikipedia.wikidata.Entities -import org.wikipedia.wikidata.Statement_partial import java.util.* import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/fr/free/nrw/commons/explore/media/MediaConverter.kt b/app/src/main/java/fr/free/nrw/commons/explore/media/MediaConverter.kt index 11101db234..162cfa2f2b 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/media/MediaConverter.kt +++ b/app/src/main/java/fr/free/nrw/commons/explore/media/MediaConverter.kt @@ -6,12 +6,12 @@ import fr.free.nrw.commons.upload.structure.depictions.get import fr.free.nrw.commons.utils.CommonsDateUtil import fr.free.nrw.commons.utils.MediaDataExtractorUtil import fr.free.nrw.commons.wikidata.WikidataProperties +import fr.free.nrw.commons.wikidata.model.DataValue +import fr.free.nrw.commons.wikidata.model.Entities import org.apache.commons.lang3.StringUtils -import org.wikipedia.dataclient.mwapi.MwQueryPage -import org.wikipedia.gallery.ExtMetadata -import org.wikipedia.gallery.ImageInfo -import org.wikipedia.wikidata.DataValue -import org.wikipedia.wikidata.Entities +import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage +import fr.free.nrw.commons.wikidata.model.gallery.ExtMetadata +import fr.free.nrw.commons.wikidata.model.gallery.ImageInfo import java.text.ParseException import java.util.* import javax.inject.Inject diff --git a/data-client/src/main/java/org/wikipedia/language/AppLanguageLookUpTable.java b/app/src/main/java/fr/free/nrw/commons/language/AppLanguageLookUpTable.java similarity index 98% rename from data-client/src/main/java/org/wikipedia/language/AppLanguageLookUpTable.java rename to app/src/main/java/fr/free/nrw/commons/language/AppLanguageLookUpTable.java index e08f091300..a0286a7ef5 100644 --- a/data-client/src/main/java/org/wikipedia/language/AppLanguageLookUpTable.java +++ b/app/src/main/java/fr/free/nrw/commons/language/AppLanguageLookUpTable.java @@ -1,4 +1,4 @@ -package org.wikipedia.language; +package fr.free.nrw.commons.language; import android.content.Context; import android.content.res.Resources; @@ -8,8 +8,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import org.wikipedia.dataclient.R; - +import fr.free.nrw.commons.R; import java.lang.ref.SoftReference; import java.util.Arrays; import java.util.List; diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaClient.kt b/app/src/main/java/fr/free/nrw/commons/media/MediaClient.kt index 6a86bcdaf8..a348829222 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaClient.kt @@ -5,10 +5,10 @@ import fr.free.nrw.commons.Media import fr.free.nrw.commons.category.ContinuationClient import fr.free.nrw.commons.explore.media.MediaConverter import fr.free.nrw.commons.utils.CommonsDateUtil +import fr.free.nrw.commons.wikidata.model.Entities import io.reactivex.Single -import org.wikipedia.dataclient.mwapi.MwQueryPage -import org.wikipedia.dataclient.mwapi.MwQueryResponse -import org.wikipedia.wikidata.Entities +import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse import java.util.* import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index f91c1ec3d0..ee485fcf1e 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -115,9 +115,9 @@ import javax.inject.Inject; import javax.inject.Named; import org.apache.commons.lang3.StringUtils; -import org.wikipedia.dataclient.mwapi.MwQueryPage; -import org.wikipedia.language.AppLanguageLookUpTable; -import org.wikipedia.util.DateUtil; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage; +import fr.free.nrw.commons.language.AppLanguageLookUpTable; +import fr.free.nrw.commons.utils.DateUtil; import timber.log.Timber; public class MediaDetailFragment extends CommonsDaggerSupportFragment implements diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailInterface.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailInterface.java index cc6790319c..2a6fcd4371 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailInterface.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailInterface.java @@ -2,10 +2,10 @@ import static fr.free.nrw.commons.wikidata.WikidataConstants.MW_API_PREFIX; +import fr.free.nrw.commons.wikidata.model.Entities; import io.reactivex.Observable; import io.reactivex.Single; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; -import org.wikipedia.wikidata.Entities; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaInterface.java b/app/src/main/java/fr/free/nrw/commons/media/MediaInterface.java index ee66c41aee..058cb68ae6 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaInterface.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaInterface.java @@ -2,7 +2,7 @@ import io.reactivex.Single; import java.util.Map; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse; import retrofit2.http.GET; import retrofit2.http.Query; import retrofit2.http.QueryMap; diff --git a/app/src/main/java/fr/free/nrw/commons/media/MwParseResponse.java b/app/src/main/java/fr/free/nrw/commons/media/MwParseResponse.java index c658745328..28df3811a6 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MwParseResponse.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MwParseResponse.java @@ -3,7 +3,7 @@ import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; -import org.wikipedia.dataclient.mwapi.MwResponse; +import fr.free.nrw.commons.wikidata.mwapi.MwResponse; public class MwParseResponse extends MwResponse { @Nullable diff --git a/app/src/main/java/fr/free/nrw/commons/media/WikidataMediaClient.kt b/app/src/main/java/fr/free/nrw/commons/media/WikidataMediaClient.kt index d14123d217..9fb7284435 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/WikidataMediaClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/media/WikidataMediaClient.kt @@ -4,10 +4,10 @@ import fr.free.nrw.commons.BetaConstants import fr.free.nrw.commons.Media import fr.free.nrw.commons.category.ContinuationClient import fr.free.nrw.commons.explore.media.MediaConverter +import fr.free.nrw.commons.wikidata.model.Entities import io.reactivex.Single -import org.wikipedia.dataclient.mwapi.MwQueryPage -import org.wikipedia.dataclient.mwapi.MwQueryResponse -import org.wikipedia.wikidata.Entities +import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/fr/free/nrw/commons/media/WikidataMediaInterface.java b/app/src/main/java/fr/free/nrw/commons/media/WikidataMediaInterface.java index 62e270ab9f..cab214845d 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/WikidataMediaInterface.java +++ b/app/src/main/java/fr/free/nrw/commons/media/WikidataMediaInterface.java @@ -3,7 +3,7 @@ import static fr.free.nrw.commons.media.MediaInterface.MEDIA_PARAMS; import io.reactivex.Single; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/CategoryApi.java b/app/src/main/java/fr/free/nrw/commons/mwapi/CategoryApi.java index bf31b8a544..f810d0480f 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/CategoryApi.java +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/CategoryApi.java @@ -17,8 +17,8 @@ import okhttp3.Request; import okhttp3.Response; import okhttp3.ResponseBody; -import org.wikipedia.dataclient.mwapi.MwQueryPage; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse; import timber.log.Timber; /** diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/UserClient.java b/app/src/main/java/fr/free/nrw/commons/mwapi/UserClient.java index 8e88bb217f..8b5cfa72a0 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/UserClient.java +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/UserClient.java @@ -1,10 +1,9 @@ package fr.free.nrw.commons.mwapi; -import org.wikipedia.dataclient.mwapi.MwQueryLogEvent; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; -import org.wikipedia.dataclient.mwapi.MwQueryResult; -import org.wikipedia.dataclient.mwapi.UserInfo; -import org.wikipedia.util.DateUtil; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResult; +import fr.free.nrw.commons.wikidata.mwapi.UserInfo; +import fr.free.nrw.commons.utils.DateUtil; import java.util.Collections; import java.util.Date; @@ -44,16 +43,4 @@ else if ("infinite".equals(blockExpiry)) } }).single(false); } - - public Observable logEvents(String user) { - try { - return userInterface.getUserLogEvents(user, Collections.emptyMap()) - .map(MwQueryResponse::query) - .map(MwQueryResult::logevents) - .flatMap(Observable::fromIterable); - } catch (Throwable throwable) { - return Observable.empty(); - } - - } } diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/UserInterface.java b/app/src/main/java/fr/free/nrw/commons/mwapi/UserInterface.java index 34e86c0898..fb90749a84 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/UserInterface.java +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/UserInterface.java @@ -1,6 +1,6 @@ package fr.free.nrw.commons.mwapi; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse; import java.util.Map; diff --git a/app/src/main/java/fr/free/nrw/commons/navtab/NavTab.java b/app/src/main/java/fr/free/nrw/commons/navtab/NavTab.java index a71b187976..0a3123c1cd 100644 --- a/app/src/main/java/fr/free/nrw/commons/navtab/NavTab.java +++ b/app/src/main/java/fr/free/nrw/commons/navtab/NavTab.java @@ -9,8 +9,8 @@ import fr.free.nrw.commons.contributions.ContributionsFragment; import fr.free.nrw.commons.explore.ExploreFragment; import fr.free.nrw.commons.nearby.fragments.NearbyParentFragment; -import org.wikipedia.model.EnumCode; -import org.wikipedia.model.EnumCodeMap; +import fr.free.nrw.commons.wikidata.model.EnumCode; +import fr.free.nrw.commons.wikidata.model.EnumCodeMap; import fr.free.nrw.commons.R; diff --git a/app/src/main/java/fr/free/nrw/commons/navtab/NavTabLoggedOut.java b/app/src/main/java/fr/free/nrw/commons/navtab/NavTabLoggedOut.java index 41c5c67432..dc1c7ce6bd 100644 --- a/app/src/main/java/fr/free/nrw/commons/navtab/NavTabLoggedOut.java +++ b/app/src/main/java/fr/free/nrw/commons/navtab/NavTabLoggedOut.java @@ -7,8 +7,8 @@ import fr.free.nrw.commons.R; import fr.free.nrw.commons.bookmarks.BookmarkFragment; import fr.free.nrw.commons.explore.ExploreFragment; -import org.wikipedia.model.EnumCode; -import org.wikipedia.model.EnumCodeMap; +import fr.free.nrw.commons.wikidata.model.EnumCode; +import fr.free.nrw.commons.wikidata.model.EnumCodeMap; public enum NavTabLoggedOut implements EnumCode { diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationAdapterDelegates.kt b/app/src/main/java/fr/free/nrw/commons/notification/NotificationAdapterDelegates.kt index 34065791a7..7dedf1d55d 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/NotificationAdapterDelegates.kt +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationAdapterDelegates.kt @@ -3,7 +3,7 @@ package fr.free.nrw.commons.notification import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding import fr.free.nrw.commons.notification.models.Notification import fr.free.nrw.commons.databinding.ItemNotificationBinding -import org.wikipedia.util.StringUtil +import fr.free.nrw.commons.utils.StringUtil fun notificationDelegate(onNotificationClicked: (Notification) -> Unit) = diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationClient.kt b/app/src/main/java/fr/free/nrw/commons/notification/NotificationClient.kt index c12a74e029..399b5ae097 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/NotificationClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationClient.kt @@ -6,12 +6,12 @@ import fr.free.nrw.commons.notification.models.NotificationType import io.reactivex.Observable import io.reactivex.Single import fr.free.nrw.commons.auth.csrf.CsrfTokenClient -import org.wikipedia.dataclient.mwapi.MwQueryResponse -import org.wikipedia.util.DateUtil +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse +import fr.free.nrw.commons.utils.DateUtil import javax.inject.Inject import javax.inject.Named import javax.inject.Singleton -import org.wikipedia.notifications.Notification as WikimediaNotification +import fr.free.nrw.commons.wikidata.model.notifications.Notification as WikimediaNotification @Singleton class NotificationClient @Inject constructor( diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationInterface.kt b/app/src/main/java/fr/free/nrw/commons/notification/NotificationInterface.kt index ece055ea7c..0b9fab865d 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/NotificationInterface.kt +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationInterface.kt @@ -2,7 +2,7 @@ package fr.free.nrw.commons.notification import fr.free.nrw.commons.wikidata.WikidataConstants.MW_API_PREFIX import io.reactivex.Observable -import org.wikipedia.dataclient.mwapi.MwQueryResponse +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse import retrofit2.http.Field import retrofit2.http.FormUrlEncoded import retrofit2.http.GET diff --git a/app/src/main/java/fr/free/nrw/commons/review/ReviewController.java b/app/src/main/java/fr/free/nrw/commons/review/ReviewController.java index 1efef7aa8b..0aac8796f8 100644 --- a/app/src/main/java/fr/free/nrw/commons/review/ReviewController.java +++ b/app/src/main/java/fr/free/nrw/commons/review/ReviewController.java @@ -9,7 +9,7 @@ import androidx.annotation.Nullable; import androidx.core.app.NotificationCompat; -import org.wikipedia.dataclient.mwapi.MwQueryPage; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage; import java.util.ArrayList; import java.util.concurrent.Callable; diff --git a/app/src/main/java/fr/free/nrw/commons/review/ReviewHelper.java b/app/src/main/java/fr/free/nrw/commons/review/ReviewHelper.java index 0caaa3f9e8..4119a17514 100644 --- a/app/src/main/java/fr/free/nrw/commons/review/ReviewHelper.java +++ b/app/src/main/java/fr/free/nrw/commons/review/ReviewHelper.java @@ -13,7 +13,7 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.commons.lang3.StringUtils; -import org.wikipedia.dataclient.mwapi.MwQueryPage; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage; import timber.log.Timber; @Singleton diff --git a/app/src/main/java/fr/free/nrw/commons/review/ReviewInterface.java b/app/src/main/java/fr/free/nrw/commons/review/ReviewInterface.java index 14df42e6d5..a48bdd40d5 100644 --- a/app/src/main/java/fr/free/nrw/commons/review/ReviewInterface.java +++ b/app/src/main/java/fr/free/nrw/commons/review/ReviewInterface.java @@ -1,6 +1,6 @@ package fr.free.nrw.commons.review; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse; import io.reactivex.Observable; import retrofit2.http.GET; diff --git a/app/src/main/java/fr/free/nrw/commons/ui/widget/HtmlTextView.java b/app/src/main/java/fr/free/nrw/commons/ui/widget/HtmlTextView.java index 56be6557d9..21af5ee78d 100644 --- a/app/src/main/java/fr/free/nrw/commons/ui/widget/HtmlTextView.java +++ b/app/src/main/java/fr/free/nrw/commons/ui/widget/HtmlTextView.java @@ -6,7 +6,7 @@ import androidx.appcompat.widget.AppCompatTextView; -import org.wikipedia.util.StringUtil; +import fr.free.nrw.commons.utils.StringUtil; /** * An {@link AppCompatTextView} which formats the text to HTML displayable text and makes any diff --git a/app/src/main/java/fr/free/nrw/commons/upload/LanguagesAdapter.kt b/app/src/main/java/fr/free/nrw/commons/upload/LanguagesAdapter.kt index 85f71a3ffb..9037e8a991 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/LanguagesAdapter.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/LanguagesAdapter.kt @@ -11,7 +11,7 @@ import fr.free.nrw.commons.R import fr.free.nrw.commons.databinding.RowItemLanguagesSpinnerBinding import fr.free.nrw.commons.utils.LangCodeUtils import org.apache.commons.lang3.StringUtils -import org.wikipedia.language.AppLanguageLookUpTable +import fr.free.nrw.commons.language.AppLanguageLookUpTable import java.util.* /** @@ -39,7 +39,8 @@ class LanguagesAdapter constructor( private var languageNamesList: List private var languageCodesList: List - var language: AppLanguageLookUpTable = AppLanguageLookUpTable(context) + var language: AppLanguageLookUpTable = + AppLanguageLookUpTable(context) init { languageNamesList = language.localizedNames languageCodesList = language.codes diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadClient.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadClient.java index 51560c3127..fb633937a3 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadClient.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadClient.java @@ -27,7 +27,7 @@ import okhttp3.MultipartBody; import okhttp3.RequestBody; import fr.free.nrw.commons.auth.csrf.CsrfTokenClient; -import org.wikipedia.dataclient.mwapi.MwException; +import fr.free.nrw.commons.wikidata.mwapi.MwException; import timber.log.Timber; @Singleton diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadResult.kt b/app/src/main/java/fr/free/nrw/commons/upload/UploadResult.kt index 3ee2e04075..3f6d6d8180 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadResult.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadResult.kt @@ -2,7 +2,6 @@ package fr.free.nrw.commons.upload import android.os.Parcel import android.os.Parcelable -import org.wikipedia.gallery.ImageInfo private const val RESULT_SUCCESS = "Success" diff --git a/app/src/main/java/fr/free/nrw/commons/upload/WikiBaseInterface.java b/app/src/main/java/fr/free/nrw/commons/upload/WikiBaseInterface.java index 6ccfc44a57..8a0e8ec5d7 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/WikiBaseInterface.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/WikiBaseInterface.java @@ -4,8 +4,8 @@ import androidx.annotation.NonNull; import io.reactivex.Observable; -import org.wikipedia.dataclient.mwapi.MwPostResponse; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; +import fr.free.nrw.commons.wikidata.mwapi.MwPostResponse; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; diff --git a/app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsInterface.java b/app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsInterface.java index 00aa81287b..c7debff84a 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsInterface.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsInterface.java @@ -1,8 +1,8 @@ package fr.free.nrw.commons.upload.depicts; import fr.free.nrw.commons.wikidata.model.DepictSearchResponse; +import fr.free.nrw.commons.wikidata.model.Entities; import io.reactivex.Single; -import org.wikipedia.wikidata.Entities; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/fr/free/nrw/commons/upload/structure/depictions/DepictedItem.kt b/app/src/main/java/fr/free/nrw/commons/upload/structure/depictions/DepictedItem.kt index e0bb4e24f6..ab0fc4a1a9 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/structure/depictions/DepictedItem.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/structure/depictions/DepictedItem.kt @@ -8,10 +8,10 @@ import fr.free.nrw.commons.nearby.Place import fr.free.nrw.commons.upload.WikidataItem import fr.free.nrw.commons.wikidata.WikidataProperties import fr.free.nrw.commons.wikidata.WikidataProperties.* +import fr.free.nrw.commons.wikidata.model.DataValue +import fr.free.nrw.commons.wikidata.model.Entities +import fr.free.nrw.commons.wikidata.model.Statement_partial import kotlinx.android.parcel.Parcelize -import org.wikipedia.wikidata.DataValue -import org.wikipedia.wikidata.Entities -import org.wikipedia.wikidata.Statement_partial import java.math.BigInteger import java.security.MessageDigest import java.security.NoSuchAlgorithmException diff --git a/app/src/main/java/fr/free/nrw/commons/utils/DateUtil.java b/app/src/main/java/fr/free/nrw/commons/utils/DateUtil.java new file mode 100644 index 0000000000..1d2a8fdf7b --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/utils/DateUtil.java @@ -0,0 +1,53 @@ +package fr.free.nrw.commons.utils; + +import static android.text.format.DateFormat.getBestDateTimePattern; + +import androidx.annotation.NonNull; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.TimeZone; + +public final class DateUtil { + private static Map DATE_FORMATS = new HashMap<>(); + + // TODO: Switch to DateTimeFormatter when minSdk = 26. + + public static synchronized String iso8601DateFormat(Date date) { + return getCachedDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ROOT, true).format(date); + } + + public static synchronized Date iso8601DateParse(String date) throws ParseException { + return getCachedDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ROOT, true).parse(date); + } + + public static String getMonthOnlyDateString(@NonNull Date date) { + return getDateStringWithSkeletonPattern(date, "MMMM d"); + } + + public static String getExtraShortDateString(@NonNull Date date) { + return getDateStringWithSkeletonPattern(date, "MMM d"); + } + + public static synchronized String getDateStringWithSkeletonPattern(@NonNull Date date, @NonNull String pattern) { + return getCachedDateFormat(getBestDateTimePattern(Locale.getDefault(), pattern), Locale.getDefault(), false).format(date); + } + + private static SimpleDateFormat getCachedDateFormat(String pattern, Locale locale, boolean utc) { + if (!DATE_FORMATS.containsKey(pattern)) { + SimpleDateFormat df = new SimpleDateFormat(pattern, locale); + if (utc) { + df.setTimeZone(TimeZone.getTimeZone("UTC")); + } + DATE_FORMATS.put(pattern, df); + } + return DATE_FORMATS.get(pattern); + } + + private DateUtil() { + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/utils/StringUtil.java b/app/src/main/java/fr/free/nrw/commons/utils/StringUtil.java new file mode 100644 index 0000000000..a5bb6038e9 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/utils/StringUtil.java @@ -0,0 +1,38 @@ +package fr.free.nrw.commons.utils; + +import android.os.Build; +import android.text.Html; +import android.text.Spanned; +import android.text.SpannedString; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +public final class StringUtil { + + /** + * @param source String that may contain HTML tags. + * @return returned Spanned string that may contain spans parsed from the HTML source. + */ + @NonNull public static Spanned fromHtml(@Nullable String source) { + if (source == null) { + return new SpannedString(""); + } + if (!source.contains("<") && !source.contains("&")) { + // If the string doesn't contain any hints of HTML entities, then skip the expensive + // processing that fromHtml() performs. + return new SpannedString(source); + } + source = source.replaceAll("‎", "\u200E") + .replaceAll("‏", "\u200F") + .replaceAll("&", "&"); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + return Html.fromHtml(source, Html.FROM_HTML_MODE_LEGACY); + } else { + //noinspection deprecation + return Html.fromHtml(source); + } + } + + private StringUtil() { + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/CommonsServiceFactory.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/CommonsServiceFactory.kt index 8a46c5de38..ca8cef4238 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/CommonsServiceFactory.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/CommonsServiceFactory.kt @@ -1,7 +1,6 @@ package fr.free.nrw.commons.wikidata import okhttp3.OkHttpClient -import org.wikipedia.json.GsonUtil import retrofit2.Retrofit import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory import retrofit2.converter.gson.GsonConverterFactory diff --git a/data-client/src/main/java/org/wikipedia/json/GsonUtil.java b/app/src/main/java/fr/free/nrw/commons/wikidata/GsonUtil.java similarity index 65% rename from data-client/src/main/java/org/wikipedia/json/GsonUtil.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/GsonUtil.java index 6984af00a4..c9d37eda5c 100644 --- a/data-client/src/main/java/org/wikipedia/json/GsonUtil.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/GsonUtil.java @@ -1,13 +1,16 @@ -package org.wikipedia.json; +package fr.free.nrw.commons.wikidata; import android.net.Uri; -import androidx.annotation.VisibleForTesting; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import org.wikipedia.dataclient.SharedPreferenceCookieManager; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.page.Namespace; -import org.wikipedia.wikidata.DataValue; +import fr.free.nrw.commons.wikidata.json.RequiredFieldsCheckOnReadTypeAdapterFactory; +import fr.free.nrw.commons.wikidata.model.DataValue; +import fr.free.nrw.commons.wikidata.model.WikiSite; +import fr.free.nrw.commons.wikidata.json.NamespaceTypeAdapter; +import fr.free.nrw.commons.wikidata.json.PostProcessingTypeAdapter; +import fr.free.nrw.commons.wikidata.json.UriTypeAdapter; +import fr.free.nrw.commons.wikidata.json.WikiSiteTypeAdapter; +import fr.free.nrw.commons.wikidata.model.page.Namespace; public final class GsonUtil { private static final String DATE_FORMAT = "MMM dd, yyyy HH:mm:ss"; @@ -18,7 +21,6 @@ public final class GsonUtil { .registerTypeHierarchyAdapter(Uri.class, new UriTypeAdapter().nullSafe()) .registerTypeHierarchyAdapter(Namespace.class, new NamespaceTypeAdapter().nullSafe()) .registerTypeAdapter(WikiSite.class, new WikiSiteTypeAdapter().nullSafe()) - .registerTypeAdapter(SharedPreferenceCookieManager.class, new CookieManagerTypeAdapter().nullSafe()) .registerTypeAdapterFactory(new RequiredFieldsCheckOnReadTypeAdapterFactory()) .registerTypeAdapterFactory(new PostProcessingTypeAdapter()); @@ -28,10 +30,5 @@ public static Gson getDefaultGson() { return DEFAULT_GSON; } - @VisibleForTesting - public static GsonBuilder getDefaultGsonBuilder() { - return DEFAULT_GSON_BUILDER; - } - private GsonUtil() { } } diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/WikiBaseClient.java b/app/src/main/java/fr/free/nrw/commons/wikidata/WikiBaseClient.java index f812228bc1..201d97fe25 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/WikiBaseClient.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/WikiBaseClient.java @@ -10,7 +10,7 @@ import javax.inject.Named; import javax.inject.Singleton; import fr.free.nrw.commons.auth.csrf.CsrfTokenClient; -import org.wikipedia.dataclient.mwapi.MwPostResponse; +import fr.free.nrw.commons.wikidata.mwapi.MwPostResponse; import timber.log.Timber; /** diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataClient.java b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataClient.java index a476d5b40c..79d1e459c9 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataClient.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataClient.java @@ -9,7 +9,7 @@ import fr.free.nrw.commons.wikidata.model.AddEditTagResponse; import io.reactivex.Observable; import io.reactivex.ObservableSource; -import org.wikipedia.wikidata.Statement_partial; +import fr.free.nrw.commons.wikidata.model.Statement_partial; @Singleton public class WikidataClient { diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java index 7a2c75d65a..ae35373548 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.java @@ -15,6 +15,12 @@ import fr.free.nrw.commons.upload.WikidataPlace; import fr.free.nrw.commons.utils.ConfigUtils; import fr.free.nrw.commons.utils.ViewUtil; +import fr.free.nrw.commons.wikidata.model.DataValue; +import fr.free.nrw.commons.wikidata.model.DataValue.ValueString; +import fr.free.nrw.commons.wikidata.model.EditClaim; +import fr.free.nrw.commons.wikidata.model.Snak_partial; +import fr.free.nrw.commons.wikidata.model.Statement_partial; +import fr.free.nrw.commons.wikidata.model.WikiBaseMonolingualTextValue; import io.reactivex.Observable; import io.reactivex.schedulers.Schedulers; import java.util.ArrayList; @@ -27,13 +33,7 @@ import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; -import org.wikipedia.dataclient.mwapi.MwPostResponse; -import org.wikipedia.wikidata.DataValue; -import org.wikipedia.wikidata.DataValue.ValueString; -import org.wikipedia.wikidata.EditClaim; -import org.wikipedia.wikidata.Snak_partial; -import org.wikipedia.wikidata.Statement_partial; -import org.wikipedia.wikidata.WikiBaseMonolingualTextValue; +import fr.free.nrw.commons.wikidata.mwapi.MwPostResponse; import timber.log.Timber; /** diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataInterface.java b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataInterface.java index 2d133f6d3d..4f97607d57 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataInterface.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataInterface.java @@ -2,7 +2,7 @@ import androidx.annotation.NonNull; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse; import fr.free.nrw.commons.wikidata.model.WbCreateClaimResponse; import io.reactivex.Observable; diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/cookies/CommonsCookieStorage.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/cookies/CommonsCookieStorage.kt index a306538a83..211b2a5013 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/cookies/CommonsCookieStorage.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/cookies/CommonsCookieStorage.kt @@ -8,7 +8,7 @@ import fr.free.nrw.commons.kvstore.JsonKvStore import okhttp3.Cookie import okhttp3.HttpUrl import okhttp3.HttpUrl.Companion.toHttpUrlOrNull -import org.wikipedia.dataclient.WikiSite +import fr.free.nrw.commons.wikidata.model.WikiSite private const val COOKIE_STORE = "cookie_store" diff --git a/data-client/src/main/java/org/wikipedia/json/NamespaceTypeAdapter.java b/app/src/main/java/fr/free/nrw/commons/wikidata/json/NamespaceTypeAdapter.java similarity index 90% rename from data-client/src/main/java/org/wikipedia/json/NamespaceTypeAdapter.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/json/NamespaceTypeAdapter.java index 14aef23a1a..cc6dcc9f92 100644 --- a/data-client/src/main/java/org/wikipedia/json/NamespaceTypeAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/json/NamespaceTypeAdapter.java @@ -1,11 +1,11 @@ -package org.wikipedia.json; +package fr.free.nrw.commons.wikidata.json; import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; -import org.wikipedia.page.Namespace; +import fr.free.nrw.commons.wikidata.model.page.Namespace; import java.io.IOException; diff --git a/data-client/src/main/java/org/wikipedia/json/PostProcessingTypeAdapter.java b/app/src/main/java/fr/free/nrw/commons/wikidata/json/PostProcessingTypeAdapter.java similarity index 95% rename from data-client/src/main/java/org/wikipedia/json/PostProcessingTypeAdapter.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/json/PostProcessingTypeAdapter.java index 2efebc18e5..b6b67d4d22 100644 --- a/data-client/src/main/java/org/wikipedia/json/PostProcessingTypeAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/json/PostProcessingTypeAdapter.java @@ -1,4 +1,4 @@ -package org.wikipedia.json; +package fr.free.nrw.commons.wikidata.json; import com.google.gson.Gson; import com.google.gson.TypeAdapter; diff --git a/data-client/src/main/java/org/wikipedia/json/RequiredFieldsCheckOnReadTypeAdapterFactory.java b/app/src/main/java/fr/free/nrw/commons/wikidata/json/RequiredFieldsCheckOnReadTypeAdapterFactory.java similarity index 94% rename from data-client/src/main/java/org/wikipedia/json/RequiredFieldsCheckOnReadTypeAdapterFactory.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/json/RequiredFieldsCheckOnReadTypeAdapterFactory.java index ac4a9ea8be..c01b9fe662 100644 --- a/data-client/src/main/java/org/wikipedia/json/RequiredFieldsCheckOnReadTypeAdapterFactory.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/json/RequiredFieldsCheckOnReadTypeAdapterFactory.java @@ -1,4 +1,4 @@ -package org.wikipedia.json; +package fr.free.nrw.commons.wikidata.json; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -12,7 +12,7 @@ import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; -import org.wikipedia.json.annotations.Required; +import fr.free.nrw.commons.wikidata.json.annotations.Required; import java.io.IOException; import java.lang.reflect.Field; @@ -29,7 +29,7 @@ * TODO: Handle null values in lists during deserialization, perhaps with a new @RequiredElements * annotation and another corresponding TypeAdapter(Factory). */ -class RequiredFieldsCheckOnReadTypeAdapterFactory implements TypeAdapterFactory { +public class RequiredFieldsCheckOnReadTypeAdapterFactory implements TypeAdapterFactory { @Nullable @Override public final TypeAdapter create(@NonNull Gson gson, @NonNull TypeToken typeToken) { Class rawType = typeToken.getRawType(); Set requiredFields = collectRequiredFields(rawType); diff --git a/data-client/src/main/java/org/wikipedia/json/RuntimeTypeAdapterFactory.java b/app/src/main/java/fr/free/nrw/commons/wikidata/json/RuntimeTypeAdapterFactory.java similarity index 99% rename from data-client/src/main/java/org/wikipedia/json/RuntimeTypeAdapterFactory.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/json/RuntimeTypeAdapterFactory.java index f0acaf72d6..828dfbd681 100644 --- a/data-client/src/main/java/org/wikipedia/json/RuntimeTypeAdapterFactory.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/json/RuntimeTypeAdapterFactory.java @@ -1,4 +1,4 @@ -package org.wikipedia.json; +package fr.free.nrw.commons.wikidata.json; /* * Copyright (C) 2011 Google Inc. diff --git a/data-client/src/main/java/org/wikipedia/json/UriTypeAdapter.java b/app/src/main/java/fr/free/nrw/commons/wikidata/json/UriTypeAdapter.java similarity index 92% rename from data-client/src/main/java/org/wikipedia/json/UriTypeAdapter.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/json/UriTypeAdapter.java index 07ffa511a2..069e02f321 100644 --- a/data-client/src/main/java/org/wikipedia/json/UriTypeAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/json/UriTypeAdapter.java @@ -1,4 +1,4 @@ -package org.wikipedia.json; +package fr.free.nrw.commons.wikidata.json; import android.net.Uri; diff --git a/data-client/src/main/java/org/wikipedia/json/WikiSiteTypeAdapter.java b/app/src/main/java/fr/free/nrw/commons/wikidata/json/WikiSiteTypeAdapter.java similarity index 94% rename from data-client/src/main/java/org/wikipedia/json/WikiSiteTypeAdapter.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/json/WikiSiteTypeAdapter.java index 5c259affdc..c268d1e738 100644 --- a/data-client/src/main/java/org/wikipedia/json/WikiSiteTypeAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/json/WikiSiteTypeAdapter.java @@ -1,4 +1,4 @@ -package org.wikipedia.json; +package fr.free.nrw.commons.wikidata.json; import android.net.Uri; @@ -8,7 +8,7 @@ import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; -import org.wikipedia.dataclient.WikiSite; +import fr.free.nrw.commons.wikidata.model.WikiSite; import java.io.IOException; diff --git a/data-client/src/main/java/org/wikipedia/json/annotations/Required.java b/app/src/main/java/fr/free/nrw/commons/wikidata/json/annotations/Required.java similarity index 90% rename from data-client/src/main/java/org/wikipedia/json/annotations/Required.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/json/annotations/Required.java index 6191bb6adc..98e12745b8 100644 --- a/data-client/src/main/java/org/wikipedia/json/annotations/Required.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/json/annotations/Required.java @@ -1,4 +1,4 @@ -package org.wikipedia.json.annotations; +package fr.free.nrw.commons.wikidata.json.annotations; import java.lang.annotation.Documented; diff --git a/data-client/src/main/java/org/wikipedia/model/BaseModel.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/model/BaseModel.kt similarity index 92% rename from data-client/src/main/java/org/wikipedia/model/BaseModel.kt rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/BaseModel.kt index d199287fae..88c5aa5e8e 100644 --- a/data-client/src/main/java/org/wikipedia/model/BaseModel.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/BaseModel.kt @@ -1,4 +1,4 @@ -package org.wikipedia.model +package fr.free.nrw.commons.wikidata.model import org.apache.commons.lang3.builder.EqualsBuilder import org.apache.commons.lang3.builder.HashCodeBuilder diff --git a/data-client/src/main/java/org/wikipedia/wikidata/DataValue.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/model/DataValue.kt similarity index 96% rename from data-client/src/main/java/org/wikipedia/wikidata/DataValue.kt rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/DataValue.kt index c42ec05b91..4790822be0 100644 --- a/data-client/src/main/java/org/wikipedia/wikidata/DataValue.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/DataValue.kt @@ -1,6 +1,6 @@ -package org.wikipedia.wikidata +package fr.free.nrw.commons.wikidata.model -import org.wikipedia.json.RuntimeTypeAdapterFactory +import fr.free.nrw.commons.wikidata.json.RuntimeTypeAdapterFactory sealed class DataValue(val type: String) { companion object { diff --git a/data-client/src/main/java/org/wikipedia/wikidata/EditClaim.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/model/EditClaim.kt similarity index 88% rename from data-client/src/main/java/org/wikipedia/wikidata/EditClaim.kt rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/EditClaim.kt index 3875409380..5bc7eecc0c 100644 --- a/data-client/src/main/java/org/wikipedia/wikidata/EditClaim.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/EditClaim.kt @@ -1,6 +1,4 @@ -package org.wikipedia.wikidata - -import org.wikipedia.wikidata.DataValue.EntityId +package fr.free.nrw.commons.wikidata.model data class EditClaim(val claims: List) { @@ -16,7 +14,7 @@ data class EditClaim(val claims: List) { Snak_partial( "value", propertyName, - EntityId( + DataValue.EntityId( WikiBaseEntityValue( "item", it, diff --git a/data-client/src/main/java/org/wikipedia/wikidata/Entities.java b/app/src/main/java/fr/free/nrw/commons/wikidata/model/Entities.java similarity index 92% rename from data-client/src/main/java/org/wikipedia/wikidata/Entities.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/Entities.java index 86b2002f40..ea9ec6c2a5 100644 --- a/data-client/src/main/java/org/wikipedia/wikidata/Entities.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/Entities.java @@ -1,4 +1,4 @@ -package org.wikipedia.wikidata; +package fr.free.nrw.commons.wikidata.model; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -8,11 +8,10 @@ import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; -import org.wikipedia.dataclient.mwapi.MwResponse; -import org.wikipedia.json.PostProcessingTypeAdapter; +import fr.free.nrw.commons.wikidata.mwapi.MwResponse; -@SuppressWarnings("unused") -public class Entities extends MwResponse implements PostProcessingTypeAdapter.PostProcessable { + +public class Entities extends MwResponse { @Nullable private Map entities; private int success; diff --git a/data-client/src/main/java/org/wikipedia/model/EnumCode.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/model/EnumCode.kt similarity index 50% rename from data-client/src/main/java/org/wikipedia/model/EnumCode.kt rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/EnumCode.kt index 7221319034..71d4f6199b 100644 --- a/data-client/src/main/java/org/wikipedia/model/EnumCode.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/EnumCode.kt @@ -1,4 +1,4 @@ -package org.wikipedia.model +package fr.free.nrw.commons.wikidata.model interface EnumCode { fun code(): Int diff --git a/data-client/src/main/java/org/wikipedia/model/EnumCodeMap.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/model/EnumCodeMap.kt similarity index 93% rename from data-client/src/main/java/org/wikipedia/model/EnumCodeMap.kt rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/EnumCodeMap.kt index 3d6e52f38f..3f804f333e 100644 --- a/data-client/src/main/java/org/wikipedia/model/EnumCodeMap.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/EnumCodeMap.kt @@ -1,4 +1,4 @@ -package org.wikipedia.model +package fr.free.nrw.commons.wikidata.model import android.util.SparseArray diff --git a/data-client/src/main/java/org/wikipedia/wikidata/Snak_partial.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/model/Snak_partial.kt similarity index 91% rename from data-client/src/main/java/org/wikipedia/wikidata/Snak_partial.kt rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/Snak_partial.kt index db46615646..eb1412cf5c 100644 --- a/data-client/src/main/java/org/wikipedia/wikidata/Snak_partial.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/Snak_partial.kt @@ -1,4 +1,4 @@ -package org.wikipedia.wikidata +package fr.free.nrw.commons.wikidata.model import com.google.gson.annotations.SerializedName diff --git a/data-client/src/main/java/org/wikipedia/wikidata/Statement_partial.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/model/Statement_partial.kt similarity index 93% rename from data-client/src/main/java/org/wikipedia/wikidata/Statement_partial.kt rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/Statement_partial.kt index 24d032b336..aecd49b482 100644 --- a/data-client/src/main/java/org/wikipedia/wikidata/Statement_partial.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/Statement_partial.kt @@ -1,4 +1,4 @@ -package org.wikipedia.wikidata +package fr.free.nrw.commons.wikidata.model import com.google.gson.annotations.SerializedName diff --git a/data-client/src/main/java/org/wikipedia/wikidata/WikiBaseEntityValue.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/model/WikiBaseEntityValue.kt similarity index 86% rename from data-client/src/main/java/org/wikipedia/wikidata/WikiBaseEntityValue.kt rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/WikiBaseEntityValue.kt index 26d27fe5fa..f35b525614 100644 --- a/data-client/src/main/java/org/wikipedia/wikidata/WikiBaseEntityValue.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/WikiBaseEntityValue.kt @@ -1,4 +1,4 @@ -package org.wikipedia.wikidata +package fr.free.nrw.commons.wikidata.model import com.google.gson.annotations.SerializedName diff --git a/data-client/src/main/java/org/wikipedia/wikidata/WikiBaseMonolingualTextValue.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/model/WikiBaseMonolingualTextValue.kt similarity index 84% rename from data-client/src/main/java/org/wikipedia/wikidata/WikiBaseMonolingualTextValue.kt rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/WikiBaseMonolingualTextValue.kt index ab93fc1683..6b58c17805 100644 --- a/data-client/src/main/java/org/wikipedia/wikidata/WikiBaseMonolingualTextValue.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/WikiBaseMonolingualTextValue.kt @@ -1,4 +1,4 @@ -package org.wikipedia.wikidata +package fr.free.nrw.commons.wikidata.model import com.google.gson.annotations.SerializedName diff --git a/data-client/src/main/java/org/wikipedia/dataclient/WikiSite.java b/app/src/main/java/fr/free/nrw/commons/wikidata/model/WikiSite.java similarity index 80% rename from data-client/src/main/java/org/wikipedia/dataclient/WikiSite.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/WikiSite.java index 37f603e602..204ea0ab46 100644 --- a/data-client/src/main/java/org/wikipedia/dataclient/WikiSite.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/WikiSite.java @@ -1,4 +1,4 @@ -package org.wikipedia.dataclient; +package fr.free.nrw.commons.wikidata.model; import android.net.Uri; import android.os.Parcel; @@ -9,9 +9,8 @@ import com.google.gson.annotations.SerializedName; -import org.wikipedia.language.AppLanguageLookUpTable; -import org.wikipedia.page.PageTitle; -import org.wikipedia.util.UriUtil; +import org.apache.commons.lang3.StringUtils; +import fr.free.nrw.commons.language.AppLanguageLookUpTable; /** * The base URL and Wikipedia language code for a MediaWiki site. Examples: @@ -38,8 +37,10 @@ * */ public class WikiSite implements Parcelable { + private static String WIKIPEDIA_URL = "https://wikipedia.org/"; + public static final String DEFAULT_SCHEME = "https"; - private static String DEFAULT_BASE_URL = Service.WIKIPEDIA_URL; + private static String DEFAULT_BASE_URL = WIKIPEDIA_URL; public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override @@ -57,14 +58,6 @@ public WikiSite[] newArray(int size) { @SerializedName("domain") @NonNull private final Uri uri; @NonNull private String languageCode; - public static boolean supportedAuthority(@NonNull String authority) { - return authority.endsWith(Uri.parse(DEFAULT_BASE_URL).getAuthority()); - } - - public static void setDefaultBaseUrl(@NonNull String url) { - DEFAULT_BASE_URL = TextUtils.isEmpty(url) ? Service.WIKIPEDIA_URL : url; - } - public static WikiSite forLanguageCode(@NonNull String languageCode) { Uri uri = ensureScheme(Uri.parse(DEFAULT_BASE_URL)); return new WikiSite((languageCode.isEmpty() @@ -80,7 +73,7 @@ public WikiSite(@NonNull Uri uri) { // Special case for Wikipedia only: assume English subdomain when none given. authority = "en.wikipedia.org"; } - String langVariant = UriUtil.getLanguageVariantFromUri(tempUri); + String langVariant = getLanguageVariantFromUri(tempUri); if (!TextUtils.isEmpty(langVariant)) { languageCode = langVariant; } else { @@ -92,6 +85,16 @@ public WikiSite(@NonNull Uri uri) { .build(); } + /** Get language variant code from a Uri, e.g. "zh-*", otherwise returns empty string. */ + @NonNull + private String getLanguageVariantFromUri(@NonNull Uri uri) { + if (TextUtils.isEmpty(uri.getPath())) { + return ""; + } + String[] parts = StringUtils.split(StringUtils.defaultString(uri.getPath()), '/'); + return parts.length > 1 && !parts[0].equals("wiki") ? parts[0] : ""; + } + public WikiSite(@NonNull String url) { this(url.startsWith("http") ? Uri.parse(url) : url.startsWith("//") ? Uri.parse(DEFAULT_SCHEME + ":" + url) : Uri.parse(DEFAULT_SCHEME + "://" + url)); @@ -147,15 +150,6 @@ public String mobileUrl() { return String.format("%1$s://%2$s", scheme(), mobileAuthority()); } - /** - * @return The canonical "desktop" form of the authority. For example, if the authority - * is in a "mobile" form, e.g. en.m.wikipedia.org, this will become en.wikipedia.org. - */ - @NonNull - public String desktopAuthority() { - return authority().replace(".m.", "."); - } - @NonNull public String subdomain() { return languageCodeToSubdomain(languageCode); @@ -199,37 +193,6 @@ public String languageCode() { return languageCode; } - // TODO: this method doesn't have much to do with WikiSite. Move to PageTitle? - /** - * Create a PageTitle object from an internal link string. - * - * @param internalLink Internal link target text (eg. /wiki/Target). - * Should be URL decoded before passing in - * @return A {@link PageTitle} object representing the internalLink passed in. - */ - public PageTitle titleForInternalLink(String internalLink) { - // Strip the /wiki/ from the href - return new PageTitle(UriUtil.removeInternalLinkPrefix(internalLink), this); - } - - // TODO: this method doesn't have much to do with WikiSite. Move to PageTitle? - /** - * Create a PageTitle object from a Uri, taking into account any fragment (section title) in the link. - * @param uri Uri object to be turned into a PageTitle. - * @return {@link PageTitle} object that corresponds to the given Uri. - */ - public PageTitle titleForUri(Uri uri) { - String path = uri.getPath(); - if (!TextUtils.isEmpty(uri.getFragment())) { - path += "#" + uri.getFragment(); - } - return titleForInternalLink(path); - } - - @NonNull public String dbName() { - return subdomain().replaceAll("-", "_") + "wiki"; - } - // Auto-generated @Override public boolean equals(Object o) { diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/model/edit/Edit.java b/app/src/main/java/fr/free/nrw/commons/wikidata/model/edit/Edit.java new file mode 100644 index 0000000000..b79612ecc7 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/edit/Edit.java @@ -0,0 +1,36 @@ +package fr.free.nrw.commons.wikidata.model.edit; + +import androidx.annotation.Nullable; +import fr.free.nrw.commons.wikidata.mwapi.MwPostResponse; + +public class Edit extends MwPostResponse { + @Nullable private Result edit; + + @Nullable public Result edit() { + return edit; + } + + public class Result { + @Nullable private String result; + @Nullable private String code; + @Nullable private String info; + @Nullable private String warning; + + public boolean editSucceeded() { + return "Success".equals(result); + } + + @Nullable public String code() { + return code; + } + + @Nullable public String info() { + return info; + } + + @Nullable public String warning() { + return warning; + } + + } +} diff --git a/data-client/src/main/java/org/wikipedia/edit/EditResult.java b/app/src/main/java/fr/free/nrw/commons/wikidata/model/edit/EditResult.java similarity index 84% rename from data-client/src/main/java/org/wikipedia/edit/EditResult.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/edit/EditResult.java index 7137fcd036..1733f374ea 100644 --- a/data-client/src/main/java/org/wikipedia/edit/EditResult.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/edit/EditResult.java @@ -1,9 +1,8 @@ -package org.wikipedia.edit; +package fr.free.nrw.commons.wikidata.model.edit; import android.os.Parcel; import android.os.Parcelable; - -import org.wikipedia.model.BaseModel; +import fr.free.nrw.commons.wikidata.model.BaseModel; public abstract class EditResult extends BaseModel implements Parcelable { private final String result; diff --git a/data-client/src/main/java/org/wikipedia/gallery/ExtMetadata.java b/app/src/main/java/fr/free/nrw/commons/wikidata/model/gallery/ExtMetadata.java similarity index 98% rename from data-client/src/main/java/org/wikipedia/gallery/ExtMetadata.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/gallery/ExtMetadata.java index 90c5565882..2bd63400f4 100644 --- a/data-client/src/main/java/org/wikipedia/gallery/ExtMetadata.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/gallery/ExtMetadata.java @@ -1,4 +1,4 @@ -package org.wikipedia.gallery; +package fr.free.nrw.commons.wikidata.model.gallery; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -7,7 +7,7 @@ import org.apache.commons.lang3.StringUtils; -@SuppressWarnings("unused") + public class ExtMetadata { @SerializedName("DateTime") @Nullable private Values dateTime; @SerializedName("ObjectName") @Nullable private Values objectName; diff --git a/data-client/src/main/java/org/wikipedia/gallery/ImageInfo.java b/app/src/main/java/fr/free/nrw/commons/wikidata/model/gallery/ImageInfo.java similarity index 98% rename from data-client/src/main/java/org/wikipedia/gallery/ImageInfo.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/gallery/ImageInfo.java index 6ce92b0ff7..2e1349ae97 100644 --- a/data-client/src/main/java/org/wikipedia/gallery/ImageInfo.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/gallery/ImageInfo.java @@ -1,4 +1,4 @@ -package org.wikipedia.gallery; +package fr.free.nrw.commons.wikidata.model.gallery; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -12,7 +12,7 @@ /** * Gson POJO for a standard image info object as returned by the API ImageInfo module */ -@SuppressWarnings("unused") + public class ImageInfo implements Serializable { private int size; private int width; diff --git a/data-client/src/main/java/org/wikipedia/gallery/VideoInfo.java b/app/src/main/java/fr/free/nrw/commons/wikidata/model/gallery/VideoInfo.java similarity index 81% rename from data-client/src/main/java/org/wikipedia/gallery/VideoInfo.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/gallery/VideoInfo.java index 5e64e3609e..32388d5cf4 100644 --- a/data-client/src/main/java/org/wikipedia/gallery/VideoInfo.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/gallery/VideoInfo.java @@ -1,4 +1,4 @@ -package org.wikipedia.gallery; +package fr.free.nrw.commons.wikidata.model.gallery; import androidx.annotation.Nullable; @@ -10,7 +10,7 @@ * Gson POJO for a standard video info object as returned by the API VideoInfo module */ public class VideoInfo extends ImageInfo { - @SuppressWarnings("unused") @Nullable private List codecs; + @Nullable private List codecs; @SuppressWarnings("unused,NullableProblems") @Nullable private String name; @SuppressWarnings("unused,NullableProblems") @Nullable @SerializedName("short_name") private String shortName; } diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/model/notifications/Notification.java b/app/src/main/java/fr/free/nrw/commons/wikidata/model/notifications/Notification.java new file mode 100644 index 0000000000..2b18669a49 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/notifications/Notification.java @@ -0,0 +1,190 @@ +package fr.free.nrw.commons.wikidata.model.notifications; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.annotations.SerializedName; + +import org.apache.commons.lang3.StringUtils; +import fr.free.nrw.commons.utils.DateUtil; +import fr.free.nrw.commons.wikidata.GsonUtil; + +import java.text.ParseException; +import java.util.Date; +import timber.log.Timber; + +public class Notification { + @Nullable private String wiki; + private long id; + @Nullable private String type; + @Nullable private String category; + + @Nullable private Title title; + @Nullable private Timestamp timestamp; + @SerializedName("*") @Nullable private Contents contents; + + @NonNull public String wiki() { + return StringUtils.defaultString(wiki); + } + + public long id() { + return id; + } + + public void setId(final long id) { + this.id = id; + } + + public long key() { + return id + wiki().hashCode(); + } + + @NonNull public String type() { + return StringUtils.defaultString(type); + } + + @Nullable public Title title() { + return title; + } + + @Nullable public Contents getContents() { + return contents; + } + + public void setContents(@Nullable final Contents contents) { + this.contents = contents; + } + + @NonNull public Date getTimestamp() { + return timestamp != null ? timestamp.date() : new Date(); + } + + public void setTimestamp(@Nullable final Timestamp timestamp) { + this.timestamp = timestamp; + } + + @NonNull String getUtcIso8601() { + return StringUtils.defaultString(timestamp != null ? timestamp.utciso8601 : null); + } + + public boolean isFromWikidata() { + return wiki().equals("wikidatawiki"); + } + + @Override public String toString() { + return Long.toString(id); + } + + public static class Title { + @Nullable private String full; + @Nullable private String text; + + @NonNull public String text() { + return StringUtils.defaultString(text); + } + + @NonNull public String full() { + return StringUtils.defaultString(full); + } + } + + public static class Timestamp { + @Nullable private String utciso8601; + + public void setUtciso8601(@Nullable final String utciso8601) { + this.utciso8601 = utciso8601; + } + + public Date date() { + try { + return DateUtil.iso8601DateParse(utciso8601); + } catch (ParseException e) { + Timber.e(e); + return new Date(); + } + } + } + + public static class Link { + @Nullable private String url; + @Nullable private String label; + @Nullable private String tooltip; + @Nullable private String description; + @Nullable private String icon; + + @NonNull public String getUrl() { + return StringUtils.defaultString(url); + } + + public void setUrl(@Nullable final String url) { + this.url = url; + } + + @NonNull public String getTooltip() { + return StringUtils.defaultString(tooltip); + } + + @NonNull public String getLabel() { + return StringUtils.defaultString(label); + } + + @NonNull public String getIcon() { + return StringUtils.defaultString(icon); + } + } + + public static class Links { + @Nullable private JsonElement primary; + private Link primaryLink; + + public void setPrimary(@Nullable final JsonElement primary) { + this.primary = primary; + } + + @Nullable public Link getPrimary() { + if (primary == null) { + return null; + } + if (primaryLink == null && primary instanceof JsonObject) { + primaryLink = GsonUtil.getDefaultGson().fromJson(primary, Link.class); + } + return primaryLink; + } + + } + + public static class Contents { + @Nullable private String header; + @Nullable private String compactHeader; + @Nullable private String body; + @Nullable private String icon; + @Nullable private Links links; + + @NonNull public String getHeader() { + return StringUtils.defaultString(header); + } + + @NonNull public String getCompactHeader() { + return StringUtils.defaultString(compactHeader); + } + + public void setCompactHeader(@Nullable final String compactHeader) { + this.compactHeader = compactHeader; + } + + @NonNull public String getBody() { + return StringUtils.defaultString(body); + } + + @Nullable public Links getLinks() { + return links; + } + + public void setLinks(@Nullable final Links links) { + this.links = links; + } + } + +} diff --git a/data-client/src/main/java/org/wikipedia/page/GeoMarshaller.java b/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/GeoMarshaller.java similarity index 93% rename from data-client/src/main/java/org/wikipedia/page/GeoMarshaller.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/page/GeoMarshaller.java index f9e73a436b..4278335126 100644 --- a/data-client/src/main/java/org/wikipedia/page/GeoMarshaller.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/GeoMarshaller.java @@ -1,4 +1,4 @@ -package org.wikipedia.page; +package fr.free.nrw.commons.wikidata.model.page; import android.location.Location; diff --git a/data-client/src/main/java/org/wikipedia/page/GeoUnmarshaller.java b/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/GeoUnmarshaller.java similarity index 95% rename from data-client/src/main/java/org/wikipedia/page/GeoUnmarshaller.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/page/GeoUnmarshaller.java index 764e354c2c..aa59529648 100644 --- a/data-client/src/main/java/org/wikipedia/page/GeoUnmarshaller.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/GeoUnmarshaller.java @@ -1,4 +1,4 @@ -package org.wikipedia.page; +package fr.free.nrw.commons.wikidata.model.page; import android.location.Location; diff --git a/data-client/src/main/java/org/wikipedia/page/Namespace.java b/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/Namespace.java similarity index 67% rename from data-client/src/main/java/org/wikipedia/page/Namespace.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/page/Namespace.java index c8a6467d22..47aff28c20 100644 --- a/data-client/src/main/java/org/wikipedia/page/Namespace.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/Namespace.java @@ -1,18 +1,9 @@ -package org.wikipedia.page; +package fr.free.nrw.commons.wikidata.model.page; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import org.apache.commons.lang3.StringUtils; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.language.AppLanguageLookUpTable; -import org.wikipedia.model.CodeEnum; -import org.wikipedia.model.EnumCode; -import org.wikipedia.model.EnumCodeMap; -import org.wikipedia.staticdata.FileAliasData; -import org.wikipedia.staticdata.SpecialAliasData; - -import java.util.Locale; +import fr.free.nrw.commons.wikidata.model.EnumCode; +import fr.free.nrw.commons.wikidata.model.EnumCodeMap; /** An enumeration describing the different possible namespace codes. Do not attempt to use this * class to preserve URL path information such as Talk: or User: or localization. @@ -146,48 +137,11 @@ public boolean talk() { GADGET_DEFINITION_TALK(2303), TOPIC(2600); - public static final CodeEnum CODE_ENUM = Namespace::of; - private static final int TALK_MASK = 0x1; private static final EnumCodeMap MAP = new EnumCodeMap<>(Namespace.class); private final int code; - /** Warning: this method returns an English translation for the current namespace. */ - @Deprecated - @Nullable - public String toLegacyString() { - String string = this == MAIN ? null : this.name(); - if (string != null) { - string = StringUtils.capitalize(string.toLowerCase(Locale.ENGLISH)); - } - return string; - } - - /** Warning: this method is localized only for File and Special pages. */ - @Deprecated @NonNull public static Namespace fromLegacyString(@NonNull WikiSite wiki, - @Nullable String name) { - if (FileAliasData.valueFor(wiki.languageCode()).equals(name) - || FileAliasData.valueFor(AppLanguageLookUpTable.FALLBACK_LANGUAGE_CODE).equals(name)) { - return Namespace.FILE; - } - - if (SpecialAliasData.valueFor(wiki.languageCode()).equals(name) - || SpecialAliasData.valueFor(AppLanguageLookUpTable.FALLBACK_LANGUAGE_CODE).equals(name)) { - return Namespace.SPECIAL; - } - - // This works for the links provided by the app itself since they always have the English - // version of the namespace. - // TODO: It would be nice to add a mapping table, as is done for File and Special, - // so we can also handle links passed to the app. - if (name != null && name.contains("Talk")) { - return Namespace.TALK; - } - - return Namespace.MAIN; - } - @NonNull public static Namespace of(int code) { return MAP.get(code); diff --git a/data-client/src/main/java/org/wikipedia/page/PageProperties.java b/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/PageProperties.java similarity index 60% rename from data-client/src/main/java/org/wikipedia/page/PageProperties.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/page/PageProperties.java index 6114ce83f0..57a3c03b59 100644 --- a/data-client/src/main/java/org/wikipedia/page/PageProperties.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/PageProperties.java @@ -1,22 +1,16 @@ -package org.wikipedia.page; +package fr.free.nrw.commons.wikidata.model.page; import android.location.Location; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; -import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import org.wikipedia.AppAdapter; -import org.wikipedia.dataclient.page.PageLeadProperties; - -import java.text.ParseException; import java.util.Date; import static org.apache.commons.lang3.StringUtils.defaultString; -import static org.wikipedia.util.DateUtil.iso8601DateParse; /** * Immutable class that contains metadata associated with a PageTitle. @@ -45,108 +39,10 @@ public class PageProperties implements Parcelable { */ private final boolean canEdit; - /** - * Side note: Should later be moved out of this class but I like the similarities with - * PageProperties(JSONObject). - */ - public PageProperties(PageLeadProperties core) { - pageId = core.getId(); - namespace = core.getNamespace(); - revisionId = core.getRevision(); - displayTitleText = defaultString(core.getDisplayTitle()); - titlePronunciationUrl = core.getTitlePronunciationUrl(); - geo = core.getGeo(); - editProtectionStatus = core.getFirstAllowedEditorRole(); - languageCount = core.getLanguageCount(); - - // todo: don't hardcode this here - leadImageUrl = core.getLeadImageUrl(AppAdapter.get().getDesiredLeadImageDp()); - - leadImageName = core.getLeadImageFileName(); - lastModified = new Date(); - String lastModifiedText = core.getLastModified(); - if (lastModifiedText != null) { - try { - lastModified.setTime(iso8601DateParse(lastModifiedText).getTime()); - } catch (ParseException e) { - Log.d("PageProperties", "Failed to parse date: " + lastModifiedText); - } - } - // assume formatversion=2 is used so we get real booleans from the API - canEdit = core.isEditable(); - - isMainPage = core.isMainPage(); - isDisambiguationPage = core.isDisambiguation(); - wikiBaseItem = core.getWikiBaseItem(); - descriptionSource = core.getDescriptionSource(); - } - - /** - * Constructor to be used when building a Page from a compilation. Initializes the title and - * namespace fields, and explicitly disables editing. All other fields initialized to defaults. - * @param title Title to which these properties apply. - */ - public PageProperties(@NonNull PageTitle title, boolean isMainPage) { - pageId = 0; - namespace = title.namespace(); - revisionId = 0; - displayTitleText = title.getDisplayText(); - titlePronunciationUrl = null; - geo = null; - editProtectionStatus = ""; - languageCount = 1; - leadImageUrl = null; - leadImageName = ""; - lastModified = new Date(); - canEdit = false; - this.isMainPage = isMainPage; - isDisambiguationPage = false; - wikiBaseItem = null; - descriptionSource = null; - } - public int getPageId() { return pageId; } - @NonNull public Namespace getNamespace() { - return namespace; - } - - public long getRevisionId() { - return revisionId; - } - - public Date getLastModified() { - return lastModified; - } - - public String getDisplayTitle() { - return displayTitleText; - } - - @Nullable - public String getTitlePronunciationUrl() { - return titlePronunciationUrl; - } - - @Nullable - public Location getGeo() { - return geo; - } - - public String getEditProtectionStatus() { - return editProtectionStatus; - } - - public int getLanguageCount() { - return languageCount; - } - - public boolean canEdit() { - return canEdit; - } - public boolean isMainPage() { return isMainPage; } @@ -155,30 +51,6 @@ public boolean isDisambiguationPage() { return isDisambiguationPage; } - /** - * @return Nullable URL with no scheme. For example, foo.bar.com/ instead of - * http://foo.bar.com/. - */ - @Nullable - public String getLeadImageUrl() { - return leadImageUrl; - } - - @Nullable - public String getLeadImageName() { - return leadImageName; - } - - @Nullable - public String getWikiBaseItem() { - return wikiBaseItem; - } - - @Nullable - public String getDescriptionSource() { - return descriptionSource; - } - @Override public int describeContents() { return 0; diff --git a/data-client/src/main/java/org/wikipedia/page/PageTitle.java b/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/PageTitle.java similarity index 84% rename from data-client/src/main/java/org/wikipedia/page/PageTitle.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/model/page/PageTitle.java index 55c2a0144a..f22ff76097 100644 --- a/data-client/src/main/java/org/wikipedia/page/PageTitle.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/PageTitle.java @@ -1,23 +1,19 @@ -package org.wikipedia.page; +package fr.free.nrw.commons.wikidata.model.page; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; - import com.google.gson.annotations.SerializedName; - -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.util.StringUtil; - +import fr.free.nrw.commons.wikidata.model.WikiSite; import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; import java.net.URLEncoder; +import java.text.Normalizer; import java.util.Arrays; import java.util.Locale; - -import static org.wikipedia.util.UriUtil.decodeURL; +import timber.log.Timber; /** * Represents certain vital information about a page, including the title, namespace, @@ -157,18 +153,23 @@ private PageTitle(@Nullable String text, @NonNull WikiSite wiki, @Nullable Strin this.properties = properties; } - @Nullable - public String getNamespace() { - return namespace; - } - - @NonNull public Namespace namespace() { - if (properties != null) { - return properties.getNamespace(); + /** + * Decodes a URL-encoded string into its UTF-8 equivalent. If the string cannot be decoded, the + * original string is returned. + * @param url The URL-encoded string that you wish to decode. + * @return The decoded string, or the input string if the decoding failed. + */ + @NonNull private String decodeURL(@NonNull String url) { + try { + return URLDecoder.decode(url, "UTF-8"); + } catch (IllegalArgumentException e) { + // Swallow IllegalArgumentException (can happen with malformed encoding), and just + // return the original string. + Timber.d("URL decoding failed. String was: %s", url); + return url; + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); } - - // Properties has the accurate namespace but it doesn't exist. Guess based on title. - return Namespace.fromLegacyString(wiki, namespace); } @NonNull public WikiSite getWikiSite() { @@ -257,34 +258,11 @@ public String getUriForAction(String action) { public String getPrefixedText() { // TODO: find a better way to check if the namespace is a ISO Alpha2 Code (two digits country code) - return namespace == null ? getText() : StringUtil.addUnderscores(namespace) + ":" + getText(); - } - - /** - * Check if the Title represents a File: - * - * @return true if it is a File page, false if not - */ - public boolean isFilePage() { - return namespace().file(); - } - - /** - * Check if the Title represents a special page - * - * @return true if it is a special page, false if not - */ - public boolean isSpecial() { - return namespace().special(); + return namespace == null ? getText() : addUnderscores(namespace) + ":" + getText(); } - /** - * Check if the Title represents a talk page - * - * @return true if it is a talk page, false if not - */ - public boolean isTalkPage() { - return namespace().talk(); + private String addUnderscores(@NonNull String text) { + return text.replace(" ", "_"); } @Override public void writeToParcel(Parcel parcel, int flags) { @@ -305,7 +283,19 @@ public boolean isTalkPage() { PageTitle other = (PageTitle)o; // Not using namespace directly since that can be null - return StringUtil.normalizedEquals(other.getPrefixedText(), getPrefixedText()) && other.wiki.equals(wiki); + return normalizedEquals(other.getPrefixedText(), getPrefixedText()) && other.wiki.equals(wiki); + } + + // Compare two strings based on their normalized form, using the Unicode Normalization Form C. + // This should be used when comparing or verifying strings that will be exchanged between + // different platforms (iOS, desktop, etc) that may encode strings using inconsistent + // composition, especially for accents, diacritics, etc. + private boolean normalizedEquals(@Nullable String str1, @Nullable String str2) { + if (str1 == null || str2 == null) { + return (str1 == null && str2 == null); + } + return Normalizer.normalize(str1, Normalizer.Form.NFC) + .equals(Normalizer.normalize(str2, Normalizer.Form.NFC)); } @Override public int hashCode() { diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/ImageDetails.java b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/ImageDetails.java similarity index 58% rename from data-client/src/main/java/org/wikipedia/dataclient/mwapi/ImageDetails.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/ImageDetails.java index ba53f1cecc..3a4ac97026 100644 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/ImageDetails.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/ImageDetails.java @@ -1,11 +1,11 @@ -package org.wikipedia.dataclient.mwapi; +package fr.free.nrw.commons.wikidata.mwapi; import androidx.annotation.NonNull; public class ImageDetails { - @SuppressWarnings("unused") private String name; - @SuppressWarnings("unused") private String title; + private String name; + private String title; @NonNull public String getName() { return name; diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/ListUserResponse.java b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/ListUserResponse.java similarity index 54% rename from data-client/src/main/java/org/wikipedia/dataclient/mwapi/ListUserResponse.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/ListUserResponse.java index 25dd7d84ad..b817b0d538 100644 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/ListUserResponse.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/ListUserResponse.java @@ -1,4 +1,4 @@ -package org.wikipedia.dataclient.mwapi; +package fr.free.nrw.commons.wikidata.mwapi; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -12,33 +12,17 @@ import java.util.List; import java.util.Set; -@SuppressWarnings("unused") + public class ListUserResponse { @SerializedName("name") @Nullable private String name; private long userid; @Nullable private List groups; - @Nullable private String cancreate; - @Nullable private List cancreateerror; @Nullable public String name() { return name; } - public boolean canCreate() { - return cancreate != null; - } - @NonNull public Set getGroups() { return groups != null ? new ArraySet<>(groups) : Collections.emptySet(); } - - public static class UserResponseCreateError { - @Nullable private String message; - @Nullable private String code; - @Nullable private String type; - - @NonNull public String message() { - return StringUtils.defaultString(message); - } - } } diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwException.java b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwException.java similarity index 74% rename from data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwException.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwException.java index 146b3cdba0..f526815767 100644 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwException.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwException.java @@ -1,13 +1,12 @@ -package org.wikipedia.dataclient.mwapi; +package fr.free.nrw.commons.wikidata.mwapi; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.util.List; public class MwException extends RuntimeException { - @SuppressWarnings("unused") @Nullable private final MwServiceError error; + @Nullable private final MwServiceError error; - @SuppressWarnings("unused") @Nullable private final List errors; + @Nullable private final List errors; public MwException(@Nullable MwServiceError error, @Nullable final List errors) { @@ -15,11 +14,6 @@ public MwException(@Nullable MwServiceError error, this.errors = errors; } - @NonNull - public List getErrors() { - return errors; - } - public String getErrorCode() { if(error!=null) { return error.getCode(); diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwPostResponse.java b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwPostResponse.java similarity index 52% rename from data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwPostResponse.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwPostResponse.java index 486210cf6c..294fdad0a7 100644 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwPostResponse.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwPostResponse.java @@ -1,19 +1,14 @@ -package org.wikipedia.dataclient.mwapi; +package fr.free.nrw.commons.wikidata.mwapi; import androidx.annotation.Nullable; public class MwPostResponse extends MwResponse { - @Nullable @SuppressWarnings("unused") private String options; - @SuppressWarnings("unused") private int success; + private int success; public boolean success(@Nullable String result) { return "success".equals(result); } - @Nullable public String getOptions() { - return options; - } - public int getSuccessVal() { return success; } diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwQueryPage.java b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwQueryPage.java new file mode 100644 index 0000000000..be886b2059 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwQueryPage.java @@ -0,0 +1,229 @@ +package fr.free.nrw.commons.wikidata.mwapi; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.google.gson.annotations.SerializedName; + +import org.apache.commons.lang3.StringUtils; +import fr.free.nrw.commons.wikidata.model.gallery.ImageInfo; +import fr.free.nrw.commons.wikidata.model.BaseModel; + +import java.util.Collections; +import java.util.List; + +/** + * A class representing a standard page object as returned by the MediaWiki API. + */ +public class MwQueryPage extends BaseModel { + private int pageid; + private int index; + @NonNull private String title; + @NonNull private CategoryInfo categoryinfo; + @Nullable private List revisions; + @SerializedName("fileusage") @Nullable private List fileUsages; + @SerializedName("globalusage") @Nullable private List globalUsages; + @Nullable private List coordinates; + @Nullable private List categories; + @Nullable private Thumbnail thumbnail; + @Nullable private String description; + @SerializedName("imageinfo") @Nullable private List imageInfo; + @Nullable private String redirectFrom; + @Nullable private String convertedFrom; + @Nullable private String convertedTo; + + @NonNull public String title() { + return title; + } + + @NonNull public CategoryInfo categoryInfo() { + return categoryinfo; + } + + public int index() { + return index; + } + + @Nullable public List revisions() { + return revisions; + } + + @Nullable public List categories() { + return categories; + } + + @Nullable public List coordinates() { + // TODO: Handle null values in lists during deserialization, perhaps with a new + // @RequiredElements annotation and corresponding TypeAdapter + if (coordinates != null) { + coordinates.removeAll(Collections.singleton(null)); + } + return coordinates; + } + + public int pageId() { + return pageid; + } + + @Nullable public String thumbUrl() { + return thumbnail != null ? thumbnail.source() : null; + } + + @Nullable public String description() { + return description; + } + + @Nullable public ImageInfo imageInfo() { + return imageInfo != null ? imageInfo.get(0) : null; + } + + public void redirectFrom(@Nullable String from) { + redirectFrom = from; + } + + public void convertedFrom(@Nullable String from) { + convertedFrom = from; + } + + public void convertedTo(@Nullable String to) { + convertedTo = to; + } + + public void appendTitleFragment(@Nullable String fragment) { + title += "#" + fragment; + } + + public boolean checkWhetherFileIsUsedInWikis() { + if (globalUsages != null && globalUsages.size() > 0) { + return true; + } + + if (fileUsages == null || fileUsages.size() == 0) { + return false; + } + + final int totalCount = fileUsages.size(); + + /* Ignore usage under https://commons.wikimedia.org/wiki/User:Didym/Mobile_upload/ + which has been a gallery of all of our uploads since 2014 */ + for (final FileUsage fileUsage : fileUsages) { + if ( ! fileUsage.title().contains("User:Didym/Mobile upload")) { + return true; + } + } + + return false; + } + + public static class Revision { + @SerializedName("revid") private long revisionId; + private String user; + @SerializedName("contentformat") @NonNull private String contentFormat; + @SerializedName("contentmodel") @NonNull private String contentModel; + @SerializedName("timestamp") @NonNull private String timeStamp; + @NonNull private String content; + + @NonNull public String content() { + return content; + } + + @NonNull public String timeStamp() { + return StringUtils.defaultString(timeStamp); + } + + public long getRevisionId() { + return revisionId; + } + + @NonNull + public String getUser() { + return StringUtils.defaultString(user); + } + } + + public static class Coordinates { + @Nullable private Double lat; + @Nullable private Double lon; + + @Nullable public Double lat() { + return lat; + } + @Nullable public Double lon() { + return lon; + } + } + + public static class CategoryInfo { + private boolean hidden; + private int size; + private int pages; + private int files; + private int subcats; + public boolean isHidden() { + return hidden; + } + } + + static class Thumbnail { + private String source; + private int width; + private int height; + String source() { + return source; + } + } + + public static class GlobalUsage { + @SerializedName("title") private String title; + @SerializedName("wiki")private String wiki; + @SerializedName("url") private String url; + + public String getTitle() { + return title; + } + + public String getWiki() { + return wiki; + } + + public String getUrl() { + return url; + } + } + + public static class FileUsage { + @SerializedName("pageid") private int pageid; + @SerializedName("ns") private int ns; + @SerializedName("title") private String title; + + public int pageId() { + return pageid; + } + + public int ns() { + return ns; + } + + public String title() { + return title; + } + } + + public static class Category { + private int ns; + @SuppressWarnings("unused,NullableProblems") @Nullable private String title; + private boolean hidden; + + public int ns() { + return ns; + } + + @NonNull public String title() { + return StringUtils.defaultString(title); + } + + public boolean hidden() { + return hidden; + } + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwQueryResponse.java b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwQueryResponse.java new file mode 100644 index 0000000000..871a2c31b0 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwQueryResponse.java @@ -0,0 +1,26 @@ +package fr.free.nrw.commons.wikidata.mwapi; + +import androidx.annotation.Nullable; + +import com.google.gson.annotations.SerializedName; + +import java.util.Map; + +public class MwQueryResponse extends MwResponse { + + @SerializedName("continue") @Nullable private Map continuation; + + @SerializedName("query") @Nullable private MwQueryResult query; + + @Nullable public Map continuation() { + return continuation; + } + + @Nullable public MwQueryResult query() { + return query; + } + + public boolean success() { + return query != null; + } +} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResult.java b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwQueryResult.java similarity index 50% rename from data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResult.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwQueryResult.java index 291c8dfa47..303400160f 100644 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResult.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwQueryResult.java @@ -1,27 +1,22 @@ -package org.wikipedia.dataclient.mwapi; +package fr.free.nrw.commons.wikidata.mwapi; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.google.gson.annotations.SerializedName; +import fr.free.nrw.commons.wikidata.json.PostProcessingTypeAdapter; import org.apache.commons.lang3.StringUtils; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.gallery.ImageInfo; -import org.wikipedia.gallery.VideoInfo; -import org.wikipedia.json.PostProcessingTypeAdapter; -import org.wikipedia.model.BaseModel; -import org.wikipedia.notifications.Notification; -import org.wikipedia.page.PageTitle; -import org.wikipedia.settings.SiteInfo; +import fr.free.nrw.commons.wikidata.model.gallery.ImageInfo; +import fr.free.nrw.commons.wikidata.model.BaseModel; +import fr.free.nrw.commons.wikidata.model.notifications.Notification; -import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -@SuppressWarnings("unused") + public class MwQueryResult extends BaseModel implements PostProcessingTypeAdapter.PostProcessable { @SerializedName("pages") @Nullable private List pages; @Nullable private List redirects; @@ -29,17 +24,8 @@ public class MwQueryResult extends BaseModel implements PostProcessingTypeAdapte @SerializedName("userinfo") private UserInfo userInfo; @Nullable private List users; @Nullable private Tokens tokens; - @SerializedName("authmanagerinfo") @Nullable private MwAuthManagerInfo amInfo; - @Nullable private MarkReadResponse echomarkread; - @Nullable private MarkReadResponse echomarkseen; @Nullable private NotificationList notifications; - @Nullable private Map unreadnotificationpages; - @SerializedName("general") @Nullable private SiteInfo generalSiteInfo; - @SerializedName("wikimediaeditortaskscounts") @Nullable private EditorTaskCounts editorTaskCounts; @SerializedName("allimages") @Nullable private List allImages; - @SerializedName("geosearch") @Nullable private List geoSearch; - @Nullable private List logevents; - @Nullable public List pages() { return pages; @@ -57,11 +43,6 @@ public List allImages() { return allImages == null ? Collections.emptyList() : allImages; } - @NonNull - public List geoSearch() { - return geoSearch == null ? Collections.emptyList() : geoSearch; - } - @Nullable public UserInfo userInfo() { return userInfo; } @@ -70,10 +51,6 @@ public List geoSearch() { return tokens != null ? tokens.csrf() : null; } - @Nullable public String createAccountToken() { - return tokens != null ? tokens.createAccount() : null; - } - @Nullable public String loginToken() { return tokens != null ? tokens.login() : null; } @@ -82,26 +59,6 @@ public List geoSearch() { return notifications; } - @Nullable public Map unreadNotificationWikis() { - return unreadnotificationpages; - } - - @Nullable public MarkReadResponse getEchoMarkSeen() { - return echomarkseen; - } - - @Nullable public String captchaId() { - String captchaId = null; - if (amInfo != null) { - for (MwAuthManagerInfo.Request request : amInfo.requests()) { - if ("CaptchaAuthenticationRequest".equals(request.id())) { - captchaId = request.fields().get("captchaId").value(); - } - } - } - return captchaId; - } - @Nullable public ListUserResponse getUserResponse(@NonNull String userName) { if (users != null) { for (ListUserResponse user : users) { @@ -126,52 +83,6 @@ public List geoSearch() { return result; } - @NonNull public Map videos() { - Map result = new HashMap<>(); - if (pages != null) { - for (MwQueryPage page : pages) { - if (page.videoInfo() != null) { - result.put(page.title(), page.videoInfo()); - } - } - } - return result; - } - - @NonNull public List langLinks() { - List result = new ArrayList<>(); - if (pages == null || pages.isEmpty() || pages.get(0).langLinks() == null) { - return result; - } - // noinspection ConstantConditions - for (MwQueryPage.LangLink link : pages.get(0).langLinks()) { - PageTitle title = new PageTitle(link.title(), WikiSite.forLanguageCode(link.lang())); - result.add(title); - } - return result; - } - - @NonNull public List nearbyPages(@NonNull WikiSite wiki) { - List result = new ArrayList<>(); - if (pages != null) { - for (MwQueryPage page : pages) { - NearbyPage nearbyPage = new NearbyPage(page, wiki); - if (nearbyPage.getLocation() != null) { - result.add(nearbyPage); - } - } - } - return result; - } - - @Nullable public SiteInfo siteInfo() { - return generalSiteInfo; - } - - @Nullable public EditorTaskCounts editorTaskCounts() { - return editorTaskCounts; - } - @Override public void postProcess() { resolveConvertedTitles(); @@ -212,16 +123,11 @@ private void resolveConvertedTitles() { } } - @Nullable - public List logevents() { - return logevents; - } - private static class Redirect { - @SuppressWarnings("unused") private int index; - @SuppressWarnings("unused") @Nullable private String from; - @SuppressWarnings("unused") @Nullable private String to; - @SuppressWarnings("unused") @SerializedName("tofragment") @Nullable private String toFragment; + private int index; + @Nullable private String from; + @Nullable private String to; + @SerializedName("tofragment") @Nullable private String toFragment; @Nullable public String to() { return to; @@ -237,8 +143,8 @@ private static class Redirect { } public static class ConvertedTitle { - @SuppressWarnings("unused") @Nullable private String from; - @SuppressWarnings("unused") @Nullable private String to; + @Nullable private String from; + @Nullable private String to; @Nullable public String to() { return to; @@ -270,40 +176,12 @@ private static class Tokens { } } - public static class MarkReadResponse { - @SuppressWarnings("unused") @Nullable private String result; - @SuppressWarnings("unused,NullableProblems") @Nullable private String timestamp; - - @Nullable public String getResult() { - return result; - } - - @Nullable public String getTimestamp() { - return timestamp; - } - } - public static class NotificationList { - @SuppressWarnings("unused") private int count; - @SuppressWarnings("unused") private int rawcount; - @SuppressWarnings("unused") @Nullable private Notification.SeenTime seenTime; - @SuppressWarnings("unused") @Nullable private List list; - @SuppressWarnings("unused") @SerializedName("continue") @Nullable private String continueStr; - - @Nullable public List list() { + @Nullable + private List list; + @Nullable + public List list() { return list; } - - @Nullable public String getContinue() { - return continueStr; - } - - public int getCount() { - return count; - } - - @Nullable public Notification.SeenTime getSeenTime() { - return seenTime; - } } } diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwResponse.java b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwResponse.java similarity index 79% rename from data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwResponse.java rename to app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwResponse.java index 4c14abc7d7..52662cd12c 100644 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwResponse.java +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwResponse.java @@ -1,12 +1,12 @@ -package org.wikipedia.dataclient.mwapi; +package fr.free.nrw.commons.wikidata.mwapi; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.google.gson.annotations.SerializedName; -import org.wikipedia.json.PostProcessingTypeAdapter; -import org.wikipedia.model.BaseModel; +import fr.free.nrw.commons.wikidata.json.PostProcessingTypeAdapter; +import fr.free.nrw.commons.wikidata.model.BaseModel; import java.util.List; diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwServiceError.java b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwServiceError.java new file mode 100644 index 0000000000..4798a19b4b --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/MwServiceError.java @@ -0,0 +1,29 @@ +package fr.free.nrw.commons.wikidata.mwapi; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import org.apache.commons.lang3.StringUtils; +import fr.free.nrw.commons.wikidata.model.BaseModel; + +/** + * Gson POJO for a MediaWiki API error. + */ +public class MwServiceError extends BaseModel { + + @Nullable private String code; + @Nullable private String text; + + @NonNull public String getTitle() { + return StringUtils.defaultString(code); + } + + @NonNull public String getDetails() { + return StringUtils.defaultString(text); + } + + @Nullable + public String getCode() { + return code; + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/UserInfo.java b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/UserInfo.java new file mode 100644 index 0000000000..3ac9e39159 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/mwapi/UserInfo.java @@ -0,0 +1,34 @@ +package fr.free.nrw.commons.wikidata.mwapi; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import java.util.Map; + + +public class UserInfo { + @NonNull private String name; + @NonNull private int id; + + //Block information + private int blockid; + private String blockedby; + private int blockedbyid; + private String blockreason; + private String blocktimestamp; + private String blockexpiry; + + // Object type is any JSON type. + @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") + @Nullable private Map options; + + public int id() { + return id; + } + + @NonNull + public String blockexpiry() { + if (blockexpiry != null) + return blockexpiry; + else return ""; + } +} diff --git a/data-client/src/main/res/values/languages_list.xml b/app/src/main/res/values/languages_list.xml similarity index 100% rename from data-client/src/main/res/values/languages_list.xml rename to app/src/main/res/values/languages_list.xml diff --git a/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt index fdf4dd7527..82f3b3ada9 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt @@ -12,7 +12,6 @@ import org.mockito.Mock import org.mockito.Mockito.`when` import org.mockito.Mockito.mock import org.mockito.MockitoAnnotations -import org.wikipedia.dataclient.mwapi.MwQueryResponse /** * Test methods in media data extractor diff --git a/app/src/test/kotlin/fr/free/nrw/commons/MockWebServerTest.java b/app/src/test/kotlin/fr/free/nrw/commons/MockWebServerTest.java index cfb364ba10..fd940c12fa 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/MockWebServerTest.java +++ b/app/src/test/kotlin/fr/free/nrw/commons/MockWebServerTest.java @@ -14,7 +14,7 @@ import org.junit.Before; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; -import org.wikipedia.json.GsonUtil; +import fr.free.nrw.commons.wikidata.GsonUtil; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; diff --git a/app/src/test/kotlin/fr/free/nrw/commons/ModelFunctions.kt b/app/src/test/kotlin/fr/free/nrw/commons/ModelFunctions.kt index abd0582829..adcbe315c3 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/ModelFunctions.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/ModelFunctions.kt @@ -8,7 +8,7 @@ import fr.free.nrw.commons.nearby.Place import fr.free.nrw.commons.nearby.Sitelinks import fr.free.nrw.commons.upload.structure.depictions.DepictedItem import fr.free.nrw.commons.wikidata.model.DepictSearchItem -import org.wikipedia.wikidata.* +import fr.free.nrw.commons.wikidata.model.* import java.util.* fun depictedItem( diff --git a/app/src/test/kotlin/fr/free/nrw/commons/TestConnectionFactory.kt b/app/src/test/kotlin/fr/free/nrw/commons/TestConnectionFactory.kt index 2dc3a477ca..bac63cda48 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/TestConnectionFactory.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/TestConnectionFactory.kt @@ -1,10 +1,41 @@ package fr.free.nrw.commons +import okhttp3.Interceptor import okhttp3.OkHttpClient -import org.wikipedia.dataclient.okhttp.TestStubInterceptor -import org.wikipedia.dataclient.okhttp.UnsuccessfulResponseInterceptor +import okhttp3.Response +import fr.free.nrw.commons.OkHttpConnectionFactory.HttpStatusException +import java.io.IOException fun createTestClient(): OkHttpClient = OkHttpClient.Builder() .addInterceptor(UnsuccessfulResponseInterceptor()) .addInterceptor(TestStubInterceptor()) .build() + +private class TestStubInterceptor : Interceptor { + interface Callback { + @Throws(IOException::class) + fun getResponse(request: Interceptor.Chain): Response + } + + @Throws(IOException::class) + override fun intercept(chain: Interceptor.Chain): Response { + return if (CALLBACK != null) { + CALLBACK!!.getResponse(chain) + } else chain.proceed(chain.request()) + } + + companion object { + var CALLBACK: Callback? = null + } +} + +private class UnsuccessfulResponseInterceptor : Interceptor { + @Throws(IOException::class) + override fun intercept(chain: Interceptor.Chain): Response { + val rsp = chain.proceed(chain.request()) + if (rsp.isSuccessful) { + return rsp + } + throw HttpStatusException(rsp) + } +} diff --git a/app/src/test/kotlin/fr/free/nrw/commons/actions/PageEditClientTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/actions/PageEditClientTest.kt index de25c5425a..be0937e9d0 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/actions/PageEditClientTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/actions/PageEditClientTest.kt @@ -10,7 +10,7 @@ import org.mockito.Mock import org.mockito.Mockito import org.mockito.MockitoAnnotations import fr.free.nrw.commons.auth.csrf.CsrfTokenClient -import org.wikipedia.edit.Edit +import fr.free.nrw.commons.wikidata.model.edit.Edit class PageEditClientTest { @Mock diff --git a/app/src/test/kotlin/fr/free/nrw/commons/auth/csrf/CsrfTokenClientTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/auth/csrf/CsrfTokenClientTest.kt index 8d8106d7e2..238c9f30da 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/auth/csrf/CsrfTokenClientTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/auth/csrf/CsrfTokenClientTest.kt @@ -11,8 +11,8 @@ import org.mockito.ArgumentMatchers.isA import org.mockito.Mockito.mock import org.mockito.Mockito.never import org.mockito.Mockito.verify -import org.wikipedia.dataclient.mwapi.MwException -import org.wikipedia.dataclient.okhttp.HttpStatusException +import fr.free.nrw.commons.wikidata.mwapi.MwException +import fr.free.nrw.commons.OkHttpConnectionFactory.HttpStatusException class CsrfTokenClientTest : MockWebServerTest() { private val cb = mock(CsrfTokenClient.Callback::class.java) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/auth/login/UserExtendedInfoClientTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/auth/login/UserExtendedInfoClientTest.kt index 4408cf05a9..755f8ea8b9 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/auth/login/UserExtendedInfoClientTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/auth/login/UserExtendedInfoClientTest.kt @@ -7,13 +7,13 @@ import fr.free.nrw.commons.MockWebServerTest import io.reactivex.observers.TestObserver import org.junit.Before import org.junit.Test -import org.wikipedia.dataclient.WikiSite -import org.wikipedia.dataclient.mwapi.MwQueryResponse -import org.wikipedia.json.NamespaceTypeAdapter -import org.wikipedia.json.PostProcessingTypeAdapter -import org.wikipedia.json.UriTypeAdapter -import org.wikipedia.json.WikiSiteTypeAdapter -import org.wikipedia.page.Namespace +import fr.free.nrw.commons.wikidata.model.WikiSite +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse +import fr.free.nrw.commons.wikidata.json.NamespaceTypeAdapter +import fr.free.nrw.commons.wikidata.json.PostProcessingTypeAdapter +import fr.free.nrw.commons.wikidata.json.UriTypeAdapter +import fr.free.nrw.commons.wikidata.json.WikiSiteTypeAdapter +import fr.free.nrw.commons.wikidata.model.page.Namespace import retrofit2.Retrofit import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory import retrofit2.converter.gson.GsonConverterFactory @@ -22,9 +22,14 @@ class UserExtendedInfoClientTest : MockWebServerTest() { private var apiService: LoginInterface? = null private val observer = TestObserver() private val gson = GsonBuilder() - .registerTypeHierarchyAdapter(Uri::class.java, UriTypeAdapter().nullSafe()) - .registerTypeHierarchyAdapter(Namespace::class.java, NamespaceTypeAdapter().nullSafe()) - .registerTypeAdapter(WikiSite::class.java, WikiSiteTypeAdapter().nullSafe()) + .registerTypeHierarchyAdapter(Uri::class.java, UriTypeAdapter() + .nullSafe()) + .registerTypeHierarchyAdapter( + Namespace::class.java, NamespaceTypeAdapter() + .nullSafe()) + .registerTypeAdapter( + WikiSite::class.java, WikiSiteTypeAdapter() + .nullSafe()) .registerTypeAdapterFactory(PostProcessingTypeAdapter()) .create() diff --git a/app/src/test/kotlin/fr/free/nrw/commons/category/CategoryClientTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/category/CategoryClientTest.kt index 8633994ef4..1081dc0be8 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/category/CategoryClientTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/category/CategoryClientTest.kt @@ -10,9 +10,9 @@ import org.mockito.InjectMocks import org.mockito.Mock import org.mockito.Mockito.mock import org.mockito.MockitoAnnotations -import org.wikipedia.dataclient.mwapi.MwQueryPage -import org.wikipedia.dataclient.mwapi.MwQueryResponse -import org.wikipedia.dataclient.mwapi.MwQueryResult +import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResult class CategoryClientTest { @Mock diff --git a/app/src/test/kotlin/fr/free/nrw/commons/explore/depictions/DepictsClientTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/explore/depictions/DepictsClientTest.kt index f91c913808..689fa8e7b0 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/explore/depictions/DepictsClientTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/explore/depictions/DepictsClientTest.kt @@ -15,7 +15,7 @@ import org.junit.Before import org.junit.Test import org.mockito.Mock import org.mockito.MockitoAnnotations -import org.wikipedia.wikidata.* +import fr.free.nrw.commons.wikidata.model.* import java.lang.reflect.Method class DepictsClientTest { diff --git a/app/src/test/kotlin/fr/free/nrw/commons/explore/media/MediaConverterTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/explore/media/MediaConverterTest.kt index 4ed97e51fa..6d75598acf 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/explore/media/MediaConverterTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/explore/media/MediaConverterTest.kt @@ -11,10 +11,10 @@ import org.mockito.ArgumentMatchers import org.mockito.Mock import org.mockito.Mockito import org.mockito.MockitoAnnotations -import org.wikipedia.dataclient.mwapi.MwQueryPage -import org.wikipedia.gallery.ExtMetadata -import org.wikipedia.gallery.ImageInfo -import org.wikipedia.wikidata.Entities +import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage +import fr.free.nrw.commons.wikidata.model.gallery.ExtMetadata +import fr.free.nrw.commons.wikidata.model.gallery.ImageInfo +import fr.free.nrw.commons.wikidata.model.Entities import java.lang.IllegalArgumentException class MediaConverterTest { diff --git a/app/src/test/kotlin/fr/free/nrw/commons/media/MediaClientTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/media/MediaClientTest.kt index 12a523a0f5..c7f5a0e47a 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/media/MediaClientTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/media/MediaClientTest.kt @@ -13,11 +13,11 @@ import org.junit.Test import org.mockito.ArgumentMatchers import org.mockito.Mock import org.mockito.MockitoAnnotations -import org.wikipedia.dataclient.mwapi.MwQueryPage -import org.wikipedia.dataclient.mwapi.MwQueryResponse -import org.wikipedia.dataclient.mwapi.MwQueryResult -import org.wikipedia.gallery.ImageInfo -import org.wikipedia.wikidata.Entities +import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResult +import fr.free.nrw.commons.wikidata.model.gallery.ImageInfo +import fr.free.nrw.commons.wikidata.model.Entities class MediaClientTest { diff --git a/app/src/test/kotlin/fr/free/nrw/commons/mwapi/UserClientTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/mwapi/UserClientTest.kt index 2fb7ac828e..58f9918152 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/mwapi/UserClientTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/mwapi/UserClientTest.kt @@ -6,11 +6,10 @@ import org.junit.Assert.assertTrue import org.junit.Before import org.junit.Test import org.mockito.* -import org.wikipedia.dataclient.mwapi.MwQueryPage -import org.wikipedia.dataclient.mwapi.MwQueryResponse -import org.wikipedia.dataclient.mwapi.MwQueryResult -import org.wikipedia.dataclient.mwapi.UserInfo -import org.wikipedia.util.DateUtil +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResult +import fr.free.nrw.commons.wikidata.mwapi.UserInfo +import fr.free.nrw.commons.utils.DateUtil import java.util.* class UserClientTest{ diff --git a/app/src/test/kotlin/fr/free/nrw/commons/notification/NotificationClientTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/notification/NotificationClientTest.kt index 35cda96cec..74ffb31826 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/notification/NotificationClientTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/notification/NotificationClientTest.kt @@ -18,10 +18,10 @@ import org.mockito.MockitoAnnotations import org.robolectric.annotation.Config import org.robolectric.annotation.LooperMode import fr.free.nrw.commons.auth.csrf.CsrfTokenClient -import org.wikipedia.dataclient.mwapi.MwQueryResponse -import org.wikipedia.dataclient.mwapi.MwQueryResult -import org.wikipedia.json.GsonUtil -import org.wikipedia.notifications.Notification +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResult +import fr.free.nrw.commons.wikidata.GsonUtil +import fr.free.nrw.commons.wikidata.model.notifications.Notification @RunWith(AndroidJUnit4::class) @Config(sdk = [21], application = TestCommonsApplication::class) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/review/ReviewControllerTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/review/ReviewControllerTest.kt index 1e2a663eb6..a8387919a9 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/review/ReviewControllerTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/review/ReviewControllerTest.kt @@ -30,7 +30,7 @@ import org.robolectric.annotation.Config import org.robolectric.annotation.LooperMode import org.robolectric.shadows.ShadowNotificationManager import org.robolectric.shadows.ShadowToast -import org.wikipedia.dataclient.mwapi.MwQueryPage +import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage import java.lang.reflect.Method import java.util.* diff --git a/app/src/test/kotlin/fr/free/nrw/commons/review/ReviewHelperTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/review/ReviewHelperTest.kt index 48ce2a5b2e..6cea81f105 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/review/ReviewHelperTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/review/ReviewHelperTest.kt @@ -16,9 +16,9 @@ import org.mockito.InjectMocks import org.mockito.Mock import org.mockito.Mockito.* import org.mockito.MockitoAnnotations -import org.wikipedia.dataclient.mwapi.MwQueryPage -import org.wikipedia.dataclient.mwapi.MwQueryResponse -import org.wikipedia.dataclient.mwapi.MwQueryResult +import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResult import java.util.concurrent.Callable /** diff --git a/app/src/test/kotlin/fr/free/nrw/commons/upload/LanguagesAdapterTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/upload/LanguagesAdapterTest.kt index 6e5e4ceb98..3ba3f8dc0b 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/upload/LanguagesAdapterTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/upload/LanguagesAdapterTest.kt @@ -19,7 +19,7 @@ import org.mockito.MockitoAnnotations import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config import org.robolectric.annotation.LooperMode -import org.wikipedia.language.AppLanguageLookUpTable +import fr.free.nrw.commons.language.AppLanguageLookUpTable import java.util.* @RunWith(RobolectricTestRunner::class) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataClientTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataClientTest.kt index d9fb001a0e..d85a99bd8b 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataClientTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataClientTest.kt @@ -14,9 +14,9 @@ import org.mockito.Mock import org.mockito.Mockito.`when` import org.mockito.Mockito.mock import org.mockito.MockitoAnnotations -import org.wikipedia.dataclient.mwapi.MwQueryResponse -import org.wikipedia.dataclient.mwapi.MwQueryResult -import org.wikipedia.wikidata.Statement_partial +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResponse +import fr.free.nrw.commons.wikidata.mwapi.MwQueryResult +import fr.free.nrw.commons.wikidata.model.Statement_partial class WikidataClientTest { diff --git a/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataEditServiceTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataEditServiceTest.kt index b80570c622..041a0fa974 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataEditServiceTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/wikidata/WikidataEditServiceTest.kt @@ -17,7 +17,7 @@ import org.mockito.Mock import org.mockito.Mockito import org.mockito.Mockito.verifyNoInteractions import org.mockito.MockitoAnnotations -import org.wikipedia.wikidata.EditClaim +import fr.free.nrw.commons.wikidata.model.EditClaim class WikidataEditServiceTest { @Mock diff --git a/data-client/.gitignore b/data-client/.gitignore deleted file mode 100644 index 6214df7970..0000000000 --- a/data-client/.gitignore +++ /dev/null @@ -1,59 +0,0 @@ -# Built application files -*.apk -*.ap_ - -# Files for the ART/Dalvik VM -*.dex - -# Java class files -*.class - -# Generated files -bin/ -gen/ -out/ - -# Gradle files -.gradle/ -build/ - -# Local configuration file (sdk path, etc) -local.properties - -# Proguard folder generated by Eclipse -proguard/ - -# Log Files -*.log - -# Android Studio Navigation editor temp files -.navigation/ - -# Android Studio captures folder -captures/ - -# IntelliJ -*.iml -.idea/ - -# Keystore files -# Uncomment the following line if you do not want to check your keystore files in. -#*.jks - -# External native build folder generated in Android Studio 2.2 and later -.externalNativeBuild - -# Google Services (e.g. APIs or Firebase) -google-services.json - -# Freeline -freeline.py -freeline/ -freeline_project_description.json - -# fastlane -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots -fastlane/test_output -fastlane/readme.md diff --git a/data-client/.travis.yml b/data-client/.travis.yml deleted file mode 100644 index 81e299eae4..0000000000 --- a/data-client/.travis.yml +++ /dev/null @@ -1,23 +0,0 @@ -language: android -jdk: oraclejdk8 -android: - components: - - platform-tools - - tools - - # The BuildTools version used by your project - - build-tools-28.0.3 - - # The SDK version used to compile your project - - android-28 - - # Additional components - - extra-android-m2repository - -licenses: - - android-sdk-preview-license-.+ - - android-sdk-license-.+ -before_script: - - chmod +x gradlew - -script: "./gradlew test" diff --git a/data-client/LICENSE b/data-client/LICENSE deleted file mode 100644 index 261eeb9e9f..0000000000 --- a/data-client/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/data-client/README.md b/data-client/README.md deleted file mode 100644 index c6f84e90b1..0000000000 --- a/data-client/README.md +++ /dev/null @@ -1,101 +0,0 @@ -# Wikimedia Android data client -An Android library for communicating with Wikimedia projects, with Rx bindings and other utilities. - -## Motivation and philosophy - -Here are the purposes for creating this library: - -* Encapsulate the various model structures that are returned by MediaWiki APIs, -as well as by REST APIs provided by Wikimedia services. - -* Provide high-level bindings for Retrofit and RxJava for executing calls to MediaWiki APIs to -further simplify client integration, while also allowing customization and extension. - -* Provide numerous common utility methods, so that they don't need to be duplicated. - -## Integration with your app - -Add the dependency to your Gradle file as usual: - -``` -implementation "com.dmitrybrant:wikimedia-android-data-client:0.0.18" -``` - -The only nontrivial point of integration with the library is the `AppAdapter` class: You -need to create a class that inherits from `AppAdapter` and implement its methods. The -methods are mostly self-explanatory, and deal with user account management, cookie storage, -and a few other customizations. - -Once you create this class (suppose it's called `MyAppAdapter`), you should pass it into -the `AppAdapter` singleton when your app starts: - -``` -@Override -public void onCreate() { - ... - AppAdapter.set(new MyAppAdapter()); - ... -} -``` - -## Making calls to APIs - -Notice that there is an interface called `Service` that contains a number of API definitions -for talking with a MediaWiki server. To use any of the functions in the interface, you should -use the `ServiceFactory` class. For example: - -``` -WikiSite wiki = new WikiSite("en.wikipedia.org"); - -Observable observable = ServiceFactory.get(wiki).fullTextSearch("foo"); -``` - -That's it! Notice that most of the API calls return an `Observable` response which you can -feed into an Rx subscription. - -Note: the `ServiceFactory` class contains automatic caching logic, so that multiple calls to -`get()` the service for the same `WikiSite` will be very efficient. - -## Custom API calls - -The `ServiceFactory` class also allows you to provide a service interface with custom -API functions. Suppose you create your own service interface that looks like this: - -``` -public interface MyInterface { - - @GET("action=myawesomeaction") - Observable myAwesomeApiCall(@Query("parameter1") parameter); - -} -``` - -You can then use it with `ServiceFactory` this way: - -``` -WikiSite wiki = new WikiSite("my.awesome.wiki"); - -Observable observable = ServiceFactory.get(wiki, "https://my.awesome.wiki/", MyInterface.class) - .myAwesomeApiCall("foo"); -``` - -## Utility methods - -The library contains a potpourri of utility methods found under the `util` package. Feel free -to browse through them and use them as necessary. - -## License - -Copyright 2019 Wikimedia Foundation - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/data-client/build.gradle b/data-client/build.gradle deleted file mode 100644 index 3b2a33cd13..0000000000 --- a/data-client/build.gradle +++ /dev/null @@ -1,103 +0,0 @@ -// NOTE: This library is outdated, discontinued & will be replaced eventually. -// Please refrain from altering the library contents unless necessary - -// Repository -// url - 'https://github.com/wikimedia/wikimedia-android-data-client' -// description - 'Android library for accessing the Wikimedia APIs.' - -// Licenses -// name - 'The Apache Software License, Version 2.0' -// url - 'http://www.apache.org/licenses/LICENSE-2.0.txt' - -// Author -// name - Dmitry Brant -// email - me@dmitrybrant.com - -buildscript { - ext.kotlin_version = '1.7.20' - repositories { - mavenCentral() - google() - } - dependencies { - classpath 'com.android.tools.build:gradle:3.6.3' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } - apply plugin: 'com.android.library' - apply plugin: 'kotlin-android' - apply plugin: 'kotlin-android-extensions' -} - -version = "${VERSION_NAME}" -group = "${GROUP_ID}" - -android { - compileSdkVersion 33 - - defaultConfig { - minSdkVersion 21 - targetSdkVersion 33 - versionCode 1 - versionName "${VERSION_NAME}" - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } - lintOptions { - abortOnError false - } - compileOptions { - sourceCompatibility = '1.8' - targetCompatibility = '1.8' - } - namespace 'org.wikipedia.dataclient' -} - -dependencies { - - String retrofitVersion = '2.4.0' - - implementation fileTree(dir: 'libs', include: ['*.jar']) - - implementation "androidx.core:core:1.0.2" - implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" - implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion" - implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion" - implementation "io.reactivex.rxjava2:rxjava:2.2.3" - implementation "io.reactivex.rxjava2:rxandroid:2.1.0" - implementation 'org.apache.commons:commons-lang3:3.8.1' - - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' - - testImplementation 'junit:junit:4.13.2' - testImplementation 'org.mockito:mockito-core:2.25.1' - testImplementation 'org.robolectric:robolectric:4.6.1' - testImplementation 'org.hamcrest:hamcrest-junit:2.0.0.0' - testImplementation "com.squareup.okhttp3:mockwebserver:4.10.0" - testImplementation "commons-io:commons-io:2.6" - - constraints { - implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") { - because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib") - } - implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") { - because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib") - } - } -} - -repositories { - mavenCentral() -} \ No newline at end of file diff --git a/data-client/gradle.properties b/data-client/gradle.properties deleted file mode 100644 index a288f46e31..0000000000 --- a/data-client/gradle.properties +++ /dev/null @@ -1,25 +0,0 @@ -# Project-wide Gradle settings. - -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. - -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html - -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -# Default value: -Xmx10248m -XX:MaxPermSize=256m -# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 - -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true - -VERSION_NAME=0.0.27 -GROUP_ID=com.dmitrybrant -ARTIFACT_ID=wikimedia-android-data-client -GRADLE_BINTRAY_PLUGIN_VERSION=1.7.3 -android.useAndroidX=true -android.enableJetifier=true diff --git a/data-client/gradle/wrapper/gradle-wrapper.jar b/data-client/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 7a3265ee94..0000000000 Binary files a/data-client/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/data-client/gradle/wrapper/gradle-wrapper.properties b/data-client/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 2d9f959adb..0000000000 --- a/data-client/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Fri Jun 07 09:14:55 EDT 2019 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/data-client/gradlew b/data-client/gradlew deleted file mode 100755 index 9d82f78915..0000000000 --- a/data-client/gradlew +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/data-client/gradlew.bat b/data-client/gradlew.bat deleted file mode 100644 index 8a0b282aa6..0000000000 --- a/data-client/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/data-client/proguard-rules.pro b/data-client/proguard-rules.pro deleted file mode 100644 index 04b6008b33..0000000000 --- a/data-client/proguard-rules.pro +++ /dev/null @@ -1,25 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in F:\android-sdk-windows/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile diff --git a/data-client/scripts/generate_wiki_languages.py b/data-client/scripts/generate_wiki_languages.py deleted file mode 100644 index 5d35ebc436..0000000000 --- a/data-client/scripts/generate_wiki_languages.py +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env python -# coding=utf-8 - -from datetime import datetime, timedelta -import lxml -import lxml.builder as lb -import json -import requests - - -QUERY_SITEMATRIX = 'https://www.mediawiki.org/w/api.php?action=sitematrix' \ - '&format=json&formatversion=2&smtype=language&smstate=all' - -QUERY_ALLUSERS = '/w/api.php?action=query&format=json&formatversion=2&list=allusers' \ - '&aulimit=50&auactiveusers=1&auwitheditsonly=1' - -lang_keys = [] -lang_local_names = [] -lang_eng_names = [] -lang_rank = [] - - -def add_lang(key, local_name, eng_name, rank): - rank_pos = 0 - # Automatically keep the arrays sorted by rank - for index, item in enumerate(lang_rank): - rank_pos = index - if (rank > item): - break - lang_keys.insert(rank_pos, key) - lang_local_names.insert(rank_pos, local_name) - lang_eng_names.insert(rank_pos, eng_name) - lang_rank.insert(rank_pos, rank) - - -data = json.loads(requests.get(QUERY_SITEMATRIX).text) - -for key, value in data[u"sitematrix"].items(): - if type(value) is not dict: - continue - language_code = value[u"code"] - if language_code == 'got': - # 'got' is Gothic Runes, which lie outside the Basic Multilingual Plane - # Android segfaults on these. So let's ignore those. - continue - site_list = value[u"site"] - if type(site_list) is not list: - continue - wikipedia_url = "" - for site in site_list: - if "wikipedia.org" in site[u"url"] and u"closed" not in site: - wikipedia_url = site[u"url"] - if len(wikipedia_url) == 0: - continue - # TODO: If we want to remove languages with too few active users: - # allusers = json.loads(requests.get(wikipedia_url + QUERY_ALLUSERS).text) - # if len(allusers[u"query"][u"allusers"]) < 10: - # print ("Excluding " + language_code + " (too few active users).") - # continue - # Use the AQS API to get total pageviews for this language wiki in the last month: - date = datetime.today() - timedelta(days=31) - unique_device_response = json.loads(requests.get('https://wikimedia.org/api/rest_v1/metrics/unique-devices/' + - wikipedia_url.replace('https://', '') + '/all-sites/monthly/' + - date.strftime('%Y%m01') + '/' + date.strftime('%Y%m01')).text) - rank = 0 - if u"items" in unique_device_response: - if len(unique_device_response[u"items"]) > 0: - rank = unique_device_response[u"items"][0][u"devices"] - print ("Rank for " + language_code + ": " + str(rank)) - if language_code == 'zh': - add_lang(key='zh-hans', local_name=u'简体中文', - eng_name='Simplified Chinese', rank=rank) - add_lang(key='zh-hant', local_name=u'繁體中文', - eng_name='Traditional Chinese', rank=rank) - continue - if language_code == 'no': # T114042 - language_code = 'nb' - add_lang(language_code, value[u"name"].replace("'", "\\'"), value[u"localname"].replace("'", "\\'"), rank) - - -add_lang(key='test', local_name='Test', eng_name='Test', rank=0) -add_lang(key='en-x-piglatin', local_name='Igpay Atinlay', eng_name='Pig Latin', rank=0) - -# Generate the XML, for Android -NAMESPACE = 'http://schemas.android.com/tools' -TOOLS = '{%s}' % NAMESPACE -x = lb.ElementMaker(nsmap={'tools': NAMESPACE}) - -keys = [x.item(k) for k in lang_keys] -local_names = [x.item(k) for k in lang_local_names] -eng_names = [x.item(k) for k in lang_eng_names] - -resources = x.resources( - getattr(x, 'string-array')(*keys, name='preference_language_keys'), - getattr(x, 'string-array')(*local_names, name='preference_language_local_names'), - getattr(x, 'string-array')(*eng_names, name='preference_language_canonical_names')) -resources.set(TOOLS + 'ignore', 'MissingTranslation') - -with open('../src/main/res/values/languages_list.xml', 'wb') as f: - f.write(lxml.etree.tostring(resources, pretty_print=True, - xml_declaration=True, encoding='utf-8')) diff --git a/data-client/scripts/make-templates.py b/data-client/scripts/make-templates.py deleted file mode 100644 index ce1703e32e..0000000000 --- a/data-client/scripts/make-templates.py +++ /dev/null @@ -1,183 +0,0 @@ -#!/usr/bin/env python -# coding=utf-8 - -import copy -import os -import json -import codecs -import requests -from jinja2 import Environment, FileSystemLoader - - -CHINESE_WIKI_LANG = "zh" -SIMPLIFIED_CHINESE_LANG = "zh-hans" -TRADITIONAL_CHINESE_LANG = "zh-hant" - -# T114042 -NORWEGIAN_BOKMAL_WIKI_LANG = "no" -NORWEGIAN_BOKMAL_LANG = "nb" - - -# Wikis that cause problems and hence we pretend -# do not exist. -# - "got" -> Gothic runes wiki. The name of got in got -# contains characters outside the Unicode BMP. Android -# hard crashes on these. Let's ignore these fellas -# for now. -# - "mo" -> Moldovan, which automatically redirects to Romanian (ro), -# which already exists in our list. -OSTRICH_WIKIS = [u"got", "mo"] - - -# Represents a single wiki, along with arbitrary properties of that wiki -# Simple data container object -class Wiki(object): - def __init__(self, lang): - self.lang = lang - self.props = {} - - -# Represents a list of wikis plus their properties. -# Encapsulates rendering code as well -class WikiList(object): - def __init__(self, wikis): - self.wikis = wikis - self.template_env = Environment(loader=FileSystemLoader( - os.path.join(os.path.dirname(os.path.realpath(__file__)), u"templates") - )) - - def render(self, template, class_name, **kwargs): - data = { - u"class_name": class_name, - u"wikis": self.wikis - } - data.update(kwargs) - rendered = self.template_env.get_template(template).render(**data) - out = codecs.open(u"../src/main/java/org/wikipedia/staticdata/" + class_name + u".java", u"w", u"utf-8") - out.write(rendered) - out.close() - - -def build_wiki(lang, english_name, local_name): - wiki = Wiki(lang) - wiki.props["english_name"] = english_name - wiki.props["local_name"] = local_name - return wiki - - -def list_from_sitematrix(): - QUERY_SITEMATRIX = 'https://www.mediawiki.org/w/api.php?action=sitematrix' \ - '&format=json&formatversion=2&smtype=language&smstate=all' - - print(u"Fetching languages...") - data = json.loads(requests.get(QUERY_SITEMATRIX).text) - wikis = [] - - for key, value in data[u"sitematrix"].items(): - if type(value) is not dict: - continue - site_list = value[u"site"] - if type(site_list) is not list: - continue - wikipedia_url = "" - for site in site_list: - if "wikipedia.org" in site[u"url"] and u"closed" not in site: - wikipedia_url = site[u"url"] - if len(wikipedia_url) == 0: - continue - wikis.append(build_wiki(value[u"code"], value[u"localname"], value[u"name"])) - - return wikis - - -# Remove unsupported wikis. -def filter_supported_wikis(wikis): - return [wiki for wiki in wikis if wiki.lang not in OSTRICH_WIKIS] - - -# Apply manual tweaks to the list of wikis before they're populated. -def preprocess_wikis(wikis): - # Add TestWiki. - wikis.append(build_wiki(lang="test", english_name="Test", local_name="Test")) - - return wikis - - -# Apply manual tweaks to the list of wikis after they're populated. -def postprocess_wikis(wiki_list): - # Add Simplified and Traditional Chinese dialects. - chineseWiki = next((wiki for wiki in wiki_list.wikis if wiki.lang == CHINESE_WIKI_LANG), None) - chineseWikiIndex = wiki_list.wikis.index(chineseWiki) - - simplifiedWiki = copy.deepcopy(chineseWiki) - simplifiedWiki.lang = SIMPLIFIED_CHINESE_LANG - simplifiedWiki.props["english_name"] = "Simplified Chinese" - simplifiedWiki.props["local_name"] = "简体中文" - wiki_list.wikis.insert(chineseWikiIndex + 1, simplifiedWiki) - - traditionalWiki = copy.deepcopy(chineseWiki) - traditionalWiki.lang = TRADITIONAL_CHINESE_LANG - traditionalWiki.props["english_name"] = "Traditional Chinese" - traditionalWiki.props["local_name"] = "繁體中文" - wiki_list.wikis.insert(chineseWikiIndex + 2, traditionalWiki) - - bokmalWiki = next((wiki for wiki in wiki_list.wikis if wiki.lang == NORWEGIAN_BOKMAL_WIKI_LANG), None) - bokmalWiki.lang = NORWEGIAN_BOKMAL_LANG - - return wiki_list - - -# Populate the aliases for "Special:" and "File:" in all wikis -def populate_aliases(wikis): - for wiki in wikis.wikis: - print(u"Fetching Special Page and File alias for %s" % wiki.lang) - url = u"https://%s.wikipedia.org/w/api.php" % wiki.lang + \ - u"?action=query&meta=siteinfo&format=json&siprop=namespaces" - data = json.loads(requests.get(url).text) - # according to https://www.mediawiki.org/wiki/Manual:Namespace - # -1 seems to be the ID for Special Pages - wiki.props[u"special_alias"] = data[u"query"][u"namespaces"][u"-1"][u"*"] - # 6 is the ID for File pages - wiki.props[u"file_alias"] = data[u"query"][u"namespaces"][u"6"][u"*"] - return wikis - - -# Populates data on names of main page in each wiki -def populate_main_pages(wikis): - for wiki in wikis.wikis: - print(u"Fetching Main Page for %s" % wiki.lang) - url = u"https://%s.wikipedia.org/w/api.php" % wiki.lang + \ - u"?action=query&meta=siteinfo&format=json&siprop=general" - data = json.loads(requests.get(url).text) - wiki.props[u"main_page_name"] = data[u"query"][u"general"][u"mainpage"] - return wikis - - -# Returns a function that renders a particular template when passed -# a WikiList object -def render_template(template, filename, **kwargs): - def _actual_render(wikis): - wikis.render(template, filename, **kwargs) - return wikis - return _actual_render - - -# Kinda like reduce(), but special cases first function -def chain(*funcs): - res = funcs[0]() - for func in funcs[1:]: - res = func(res) - - -chain( - list_from_sitematrix, - filter_supported_wikis, - preprocess_wikis, - WikiList, - populate_aliases, - populate_main_pages, - postprocess_wikis, - render_template(u"basichash.java.jinja", u"SpecialAliasData", key=u"special_alias"), - render_template(u"basichash.java.jinja", u"FileAliasData", key=u"file_alias"), - render_template(u"basichash.java.jinja", u"MainPageNameData", key=u"main_page_name"), -) diff --git a/data-client/scripts/templates/basichash.java.jinja b/data-client/scripts/templates/basichash.java.jinja deleted file mode 100644 index 903db6b686..0000000000 --- a/data-client/scripts/templates/basichash.java.jinja +++ /dev/null @@ -1,36 +0,0 @@ -/* -This file is auto-generated from a template (/scripts/templates). -If you need to modify it, make sure to modify the template, not this file. -*/ -package org.wikipedia.staticdata; - -import android.support.annotation.NonNull; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -public final class {{class_name}} { - @NonNull private static final Map DATA_MAP = Collections.unmodifiableMap(newMap()); - - @NonNull public static String valueFor(String key) { - if (DATA_MAP.containsKey(key)) { - return DATA_MAP.get(key); - } - return DATA_MAP.get("en"); - } - - @SuppressWarnings({"checkstyle:methodlength", "SpellCheckingInspection"}) - private static Map newMap() { - final int size = {{wikis|length}}; - Map map = new HashMap<>(size); - - {%- for wiki in wikis %} - map.put("{{wiki.lang}}", "{{wiki.props[key]}}"); - {%- endfor %} - return map; - } - - private {{class_name}}() { } -} - diff --git a/data-client/src/main/AndroidManifest.xml b/data-client/src/main/AndroidManifest.xml deleted file mode 100644 index 057c28478c..0000000000 --- a/data-client/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/data-client/src/main/java/org/wikipedia/AppAdapter.java b/data-client/src/main/java/org/wikipedia/AppAdapter.java deleted file mode 100644 index 6fdcf2b44d..0000000000 --- a/data-client/src/main/java/org/wikipedia/AppAdapter.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.wikipedia; - -import androidx.annotation.NonNull; - -import org.wikipedia.dataclient.SharedPreferenceCookieManager; - -import okhttp3.OkHttpClient; - -public abstract class AppAdapter { - private final int DEFAULT_THUMB_SIZE = 640; - - public abstract OkHttpClient getOkHttpClient(); - - // Unused from commons app, implement here as a temporary step during refactoring - public String getRestbaseUriFormat() { - return ""; - } - - // Unused from commons app, implement here as a temporary step during refactoring - public int getDesiredLeadImageDp() { - return DEFAULT_THUMB_SIZE; - } - - private static AppAdapter INSTANCE; - public static void set(AppAdapter instance) { - INSTANCE = instance; - } - public static AppAdapter get() { - if (INSTANCE == null) { - throw new RuntimeException("Please provide an instance of AppAdapter when using this library."); - } - return INSTANCE; - } -} diff --git a/data-client/src/main/java/org/wikipedia/captcha/Captcha.java b/data-client/src/main/java/org/wikipedia/captcha/Captcha.java deleted file mode 100644 index ab0b60748b..0000000000 --- a/data-client/src/main/java/org/wikipedia/captcha/Captcha.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.wikipedia.captcha; - -import androidx.annotation.NonNull; - -import org.wikipedia.dataclient.mwapi.MwResponse; - -public class Captcha extends MwResponse { - @SuppressWarnings("unused,NullableProblems") @NonNull private FancyCaptchaReload fancycaptchareload; - @NonNull String captchaId() { - return fancycaptchareload.index(); - } - - private static class FancyCaptchaReload { - @SuppressWarnings("unused,NullableProblems") @NonNull private String index; - @NonNull String index() { - return index; - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/captcha/CaptchaResult.java b/data-client/src/main/java/org/wikipedia/captcha/CaptchaResult.java deleted file mode 100644 index 85458e59fc..0000000000 --- a/data-client/src/main/java/org/wikipedia/captcha/CaptchaResult.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.wikipedia.captcha; - -import android.os.Parcel; -import android.os.Parcelable; - -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.edit.EditResult; - -// Handles only Image Captchas -public class CaptchaResult extends EditResult { - private final String captchaId; - - public CaptchaResult(String captchaId) { - super("Failure"); - this.captchaId = captchaId; - } - - protected CaptchaResult(Parcel in) { - super(in); - captchaId = in.readString(); - } - - public String getCaptchaId() { - return captchaId; - } - - public String getCaptchaUrl(WikiSite wiki) { - return wiki.url("index.php") + "?title=Special:Captcha/image&wpCaptchaId=" + captchaId; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - super.writeToParcel(dest, flags); - dest.writeString(captchaId); - } - - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - @Override - public CaptchaResult createFromParcel(Parcel in) { - return new CaptchaResult(in); - } - - @Override - public CaptchaResult[] newArray(int size) { - return new CaptchaResult[size]; - } - }; -} diff --git a/data-client/src/main/java/org/wikipedia/concurrency/RxBus.java b/data-client/src/main/java/org/wikipedia/concurrency/RxBus.java deleted file mode 100644 index 9b3fd67625..0000000000 --- a/data-client/src/main/java/org/wikipedia/concurrency/RxBus.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.wikipedia.concurrency; - -import androidx.annotation.NonNull; - -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.annotations.CheckReturnValue; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Consumer; -import io.reactivex.subjects.PublishSubject; -import io.reactivex.subjects.Subject; - -public class RxBus { - - private final Subject bus = PublishSubject.create().toSerialized(); - private final Observable observable = bus.observeOn(AndroidSchedulers.mainThread()); - - public void post(Object o) { - bus.onNext(o); - } - - @CheckReturnValue - public Disposable subscribe(@NonNull Consumer consumer) { - return observable.subscribe(consumer); - } -} diff --git a/data-client/src/main/java/org/wikipedia/createaccount/CreateAccountException.java b/data-client/src/main/java/org/wikipedia/createaccount/CreateAccountException.java deleted file mode 100644 index 3173789091..0000000000 --- a/data-client/src/main/java/org/wikipedia/createaccount/CreateAccountException.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.wikipedia.createaccount; - -import androidx.annotation.NonNull; - -/** - * Exception thrown when an account creation request FAILs - */ -public class CreateAccountException extends RuntimeException { - CreateAccountException(@NonNull String message) { - super(message); - } -} diff --git a/data-client/src/main/java/org/wikipedia/createaccount/CreateAccountResult.java b/data-client/src/main/java/org/wikipedia/createaccount/CreateAccountResult.java deleted file mode 100644 index fac197f993..0000000000 --- a/data-client/src/main/java/org/wikipedia/createaccount/CreateAccountResult.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.wikipedia.createaccount; - -import android.os.Parcel; -import android.os.Parcelable; - -import androidx.annotation.NonNull; - -public class CreateAccountResult implements Parcelable { - @NonNull private final String status; - @NonNull private final String message; - - public CreateAccountResult(@NonNull String status, @NonNull String message) { - this.status = status; - this.message = message; - } - - @NonNull - public String getStatus() { - return status; - } - - @NonNull - public String getMessage() { - return message; - } - - @Override - public void writeToParcel(Parcel parcel, int flags) { - parcel.writeString(status); - parcel.writeString(message); - } - - @Override - public int describeContents() { - return 0; - } - - protected CreateAccountResult(Parcel in) { - status = in.readString(); - message = in.readString(); - } - - @NonNull - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - @Override - public CreateAccountResult createFromParcel(Parcel in) { - return new CreateAccountResult(in); - } - - @Override - public CreateAccountResult[] newArray(int size) { - return new CreateAccountResult[size]; - } - }; - -} diff --git a/data-client/src/main/java/org/wikipedia/createaccount/CreateAccountSuccessResult.java b/data-client/src/main/java/org/wikipedia/createaccount/CreateAccountSuccessResult.java deleted file mode 100644 index b6011e9a9a..0000000000 --- a/data-client/src/main/java/org/wikipedia/createaccount/CreateAccountSuccessResult.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.wikipedia.createaccount; - -import android.os.Parcel; -import android.os.Parcelable; - -import androidx.annotation.NonNull; - -class CreateAccountSuccessResult extends CreateAccountResult implements Parcelable { - private String username; - - CreateAccountSuccessResult(@NonNull String username) { - super("PASS", "Account created"); - this.username = username; - } - - String getUsername() { - return username; - } - - @Override - public void writeToParcel(Parcel parcel, int flags) { - super.writeToParcel(parcel, flags); - parcel.writeString(username); - } - - private CreateAccountSuccessResult(Parcel in) { - super(in); - username = in.readString(); - } - - public static final Creator CREATOR - = new Creator() { - @Override - public CreateAccountSuccessResult createFromParcel(Parcel in) { - return new CreateAccountSuccessResult(in); - } - - @Override - public CreateAccountSuccessResult[] newArray(int size) { - return new CreateAccountSuccessResult[size]; - } - }; -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/RestService.java b/data-client/src/main/java/org/wikipedia/dataclient/RestService.java deleted file mode 100644 index 3a77e12861..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/RestService.java +++ /dev/null @@ -1,194 +0,0 @@ -package org.wikipedia.dataclient; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.restbase.RbDefinition; -import org.wikipedia.dataclient.restbase.RbRelatedPages; -import org.wikipedia.dataclient.restbase.page.RbPageLead; -import org.wikipedia.dataclient.restbase.page.RbPageRemaining; -import org.wikipedia.dataclient.restbase.page.RbPageSummary; -import org.wikipedia.feed.aggregated.AggregatedFeedContent; -import org.wikipedia.feed.announcement.AnnouncementList; -import org.wikipedia.feed.configure.FeedAvailability; -import org.wikipedia.feed.onthisday.OnThisDay; -import org.wikipedia.gallery.Gallery; -import org.wikipedia.readinglist.sync.SyncedReadingLists; - -import java.util.Map; - -import io.reactivex.Observable; -import retrofit2.Call; -import retrofit2.Response; -import retrofit2.http.Body; -import retrofit2.http.DELETE; -import retrofit2.http.GET; -import retrofit2.http.Header; -import retrofit2.http.Headers; -import retrofit2.http.POST; -import retrofit2.http.PUT; -import retrofit2.http.Path; -import retrofit2.http.Query; - -public interface RestService { - String REST_API_PREFIX = "api/rest_v1/"; - - String ACCEPT_HEADER_PREFIX = "accept: application/json; charset=utf-8; profile=\"https://www.mediawiki.org/wiki/Specs/"; - String ACCEPT_HEADER_SUMMARY = ACCEPT_HEADER_PREFIX + "Summary/1.2.0\""; - String ACCEPT_HEADER_MOBILE_SECTIONS = ACCEPT_HEADER_PREFIX + "mobile-sections/0.12.4\""; - String ACCEPT_HEADER_DEFINITION = ACCEPT_HEADER_PREFIX + "definition/0.7.2\""; - - String REST_PAGE_SECTIONS_URL = "page/mobile-sections-remaining/{title}"; - - /** - * Gets a page summary for a given title -- for link previews - * - * @param title the page title to be used including prefix - */ - @Headers({ - "x-analytics: preview=1", - ACCEPT_HEADER_SUMMARY - }) - @GET("page/summary/{title}") - @NonNull - Observable getSummary(@Nullable @Header("Referer") String referrerUrl, - @NonNull @Path("title") String title); - - /** - * Gets the lead section and initial metadata of a given title. - * - * @param title the page title with prefix if necessary - */ - @Headers({ - "x-analytics: pageview=1", - ACCEPT_HEADER_MOBILE_SECTIONS - }) - @GET("page/mobile-sections-lead/{title}") - @NonNull - Observable> getLeadSection(@Nullable @Header("Cache-Control") String cacheControl, - @Nullable @Header(Service.OFFLINE_SAVE_HEADER) String saveHeader, - @Nullable @Header("Referer") String referrerUrl, - @NonNull @Path("title") String title); - - /** - * Gets the remaining sections of a given title. - * - * @param title the page title to be used including prefix - */ - @Headers(ACCEPT_HEADER_MOBILE_SECTIONS) - @GET(REST_PAGE_SECTIONS_URL) - @NonNull Observable> getRemainingSections(@Nullable @Header("Cache-Control") String cacheControl, - @Nullable @Header(Service.OFFLINE_SAVE_HEADER) String saveHeader, - @NonNull @Path("title") String title); - /** - * TODO: remove this if we find a way to get the request url before the observable object being executed - * Gets the remaining sections request url of a given title. - * - * @param title the page title to be used including prefix - */ - @Headers(ACCEPT_HEADER_MOBILE_SECTIONS) - @GET(REST_PAGE_SECTIONS_URL) - @NonNull Call getRemainingSectionsUrl(@Nullable @Header("Cache-Control") String cacheControl, - @Nullable @Header(Service.OFFLINE_SAVE_HEADER) String saveHeader, - @NonNull @Path("title") String title); - - // todo: this Content Service-only endpoint is under page/ but that implementation detail should - // probably not be reflected here. Move to WordDefinitionClient - /** - * Gets selected Wiktionary content for a given title derived from user-selected text - * - * @param title the Wiktionary page title derived from user-selected Wikipedia article text - */ - @Headers(ACCEPT_HEADER_DEFINITION) - @GET("page/definition/{title}") - @NonNull Observable> getDefinition(@NonNull @Path("title") String title); - - @Headers(ACCEPT_HEADER_SUMMARY) - @GET("page/random/summary") - @NonNull Observable getRandomSummary(); - - @Headers(ACCEPT_HEADER_SUMMARY) - @GET("page/related/{title}") - @NonNull Observable getRelatedPages(@Path("title") String title); - - @GET("page/media/{title}") - @NonNull Observable getMedia(@Path("title") String title); - - @GET("feed/onthisday/events/{mm}/{dd}") - @NonNull Observable getOnThisDay(@Path("mm") int month, @Path("dd") int day); - - @Headers(ACCEPT_HEADER_PREFIX + "announcements/0.1.0\"") - @GET("feed/announcements") - @NonNull Call getAnnouncements(); - - @Headers(ACCEPT_HEADER_PREFIX + "aggregated-feed/0.5.0\"") - @GET("feed/featured/{year}/{month}/{day}") - @NonNull Observable getAggregatedFeed(@Path("year") String year, - @Path("month") String month, - @Path("day") String day); - - @GET("feed/availability") - @NonNull Observable getFeedAvailability(); - - - // ------- Reading lists ------- - - @Headers("Cache-Control: no-cache") - @POST("data/lists/setup") - @NonNull Call setupReadingLists(@Query("csrf_token") String token); - - @Headers("Cache-Control: no-cache") - @POST("data/lists/teardown") - @NonNull Call tearDownReadingLists(@Query("csrf_token") String token); - - @Headers("Cache-Control: no-cache") - @GET("data/lists/") - @NonNull Call getReadingLists(@Query("next") String next); - - @Headers("Cache-Control: no-cache") - @POST("data/lists/") - @NonNull Call createReadingList(@Query("csrf_token") String token, - @Body SyncedReadingLists.RemoteReadingList list); - - @Headers("Cache-Control: no-cache") - @PUT("data/lists/{id}") - @NonNull Call updateReadingList(@Path("id") long listId, @Query("csrf_token") String token, - @Body SyncedReadingLists.RemoteReadingList list); - - @Headers("Cache-Control: no-cache") - @DELETE("data/lists/{id}") - @NonNull Call deleteReadingList(@Path("id") long listId, @Query("csrf_token") String token); - - @Headers("Cache-Control: no-cache") - @GET("data/lists/changes/since/{date}") - @NonNull Call getReadingListChangesSince(@Path("date") String iso8601Date, - @Query("next") String next); - - @Headers("Cache-Control: no-cache") - @GET("data/lists/pages/{project}/{title}") - @NonNull Call getReadingListsContaining(@Path("project") String project, - @Path("title") String title, - @Query("next") String next); - - @Headers("Cache-Control: no-cache") - @GET("data/lists/{id}/entries/") - @NonNull Call getReadingListEntries(@Path("id") long listId, @Query("next") String next); - - @Headers("Cache-Control: no-cache") - @POST("data/lists/{id}/entries/") - @NonNull Call addEntryToReadingList(@Path("id") long listId, - @Query("csrf_token") String token, - @Body SyncedReadingLists.RemoteReadingListEntry entry); - - @Headers("Cache-Control: no-cache") - @POST("data/lists/{id}/entries/batch") - @NonNull Call addEntriesToReadingList(@Path("id") long listId, - @Query("csrf_token") String token, - @Body SyncedReadingLists.RemoteReadingListEntryBatch batch); - - @Headers("Cache-Control: no-cache") - @DELETE("data/lists/{id}/entries/{entry_id}") - @NonNull Call deleteEntryFromReadingList(@Path("id") long listId, @Path("entry_id") long entryId, - @Query("csrf_token") String token); - -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/Service.java b/data-client/src/main/java/org/wikipedia/dataclient/Service.java deleted file mode 100644 index a759524f9d..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/Service.java +++ /dev/null @@ -1,329 +0,0 @@ -package org.wikipedia.dataclient; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.captcha.Captcha; -import org.wikipedia.dataclient.mwapi.CreateAccountResponse; -import org.wikipedia.dataclient.mwapi.MwPostResponse; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; -import org.wikipedia.dataclient.mwapi.SiteMatrix; -import org.wikipedia.dataclient.mwapi.page.MwMobileViewPageLead; -import org.wikipedia.dataclient.mwapi.page.MwMobileViewPageRemaining; -import org.wikipedia.dataclient.mwapi.page.MwQueryPageSummary; -import org.wikipedia.edit.Edit; -import org.wikipedia.edit.preview.EditPreview; -import org.wikipedia.search.PrefixSearchResponse; -import org.wikipedia.wikidata.Entities; - -import io.reactivex.Observable; -import retrofit2.Call; -import retrofit2.Response; -import retrofit2.http.Field; -import retrofit2.http.FormUrlEncoded; -import retrofit2.http.GET; -import retrofit2.http.Header; -import retrofit2.http.Headers; -import retrofit2.http.POST; -import retrofit2.http.Query; - -/** - * Retrofit service layer for all API interactions, including regular MediaWiki and RESTBase. - */ -public interface Service { - String WIKIPEDIA_URL = "https://wikipedia.org/"; - String WIKIDATA_URL = "https://www.wikidata.org/"; - String COMMONS_URL = "https://commons.wikimedia.org/"; - String META_URL = "https://meta.wikimedia.org/"; - - String MW_API_PREFIX = "w/api.php?format=json&formatversion=2&errorformat=plaintext&"; - - String MW_PAGE_SECTIONS_URL = MW_API_PREFIX + "action=mobileview&prop=" - + "text|sections&onlyrequestedsections=1§ions=1-" - + "§ionprop=toclevel|line|anchor&noheadings="; - - int PREFERRED_THUMB_SIZE = 320; - - String OFFLINE_SAVE_HEADER = "X-Offline-Save"; - String OFFLINE_SAVE_HEADER_SAVE = "save"; - String OFFLINE_SAVE_HEADER_DELETE = "delete"; - String OFFLINE_SAVE_HEADER_NONE = "none"; - - // ------- MobileView page content ------- - - /** - * Gets the lead section and initial metadata of a given title. - * - * @param title the page title with prefix if necessary - * @return a Retrofit Call which provides the populated MwMobileViewPageLead object in #success - */ - /* - Here's the rationale for this API call: - We request 10 sentences from the lead section, and then re-parse the text using our own - sentence parsing logic to end up with 2 sentences for the link preview. We trust our - parsing logic more than TextExtracts because it's better-tailored to the user's - Locale on the client side. For example, the TextExtracts extension incorrectly treats - abbreviations like "i.e.", "B.C.", "Jr.", etc. as separate sentences, whereas our parser - will leave those alone. - - Also, we no longer request "excharacters" from TextExtracts, since it has an issue where - it's liable to return content that lies beyond the lead section, which might include - unparsed wikitext, which we certainly don't want. - */ - @Headers("x-analytics: preview=1") - @GET(MW_API_PREFIX + "action=query&redirects=&converttitles=" - + "&prop=extracts|pageimages|pageprops&exsentences=5&piprop=thumbnail|name" - + "&pilicense=any&explaintext=&pithumbsize=" + PREFERRED_THUMB_SIZE) - @NonNull Observable getSummary(@Nullable @Header("Referer") String referrerUrl, - @NonNull @Query("titles") String title, - @Nullable @Query("uselang") String useLang); - - /** - * Gets the lead section and initial metadata of a given title. - * - * @param title the page title with prefix if necessary - * @param leadImageWidth one of the bucket widths for the lead image - */ - @Headers("x-analytics: pageview=1") - @GET(MW_API_PREFIX + "action=mobileview&prop=" - + "text|sections|languagecount|thumb|image|id|namespace|revision" - + "|description|lastmodified|normalizedtitle|displaytitle|protection" - + "|editable|pageprops&pageprops=wikibase_item" - + "§ions=0§ionprop=toclevel|line|anchor&noheadings=") - @NonNull Observable> getLeadSection(@Nullable @Header("Cache-Control") String cacheControl, - @Nullable @Header(OFFLINE_SAVE_HEADER) String saveHeader, - @Nullable @Header("Referer") String referrerUrl, - @NonNull @Query("page") String title, - @Query("thumbwidth") int leadImageWidth, - @Nullable @Query("uselang") String useLang); - - /** - * Gets the remaining sections of a given title. - * - * @param title the page title to be used including prefix - */ - @GET(MW_PAGE_SECTIONS_URL) - @NonNull Observable> getRemainingSections(@Nullable @Header("Cache-Control") String cacheControl, - @Nullable @Header(OFFLINE_SAVE_HEADER) String saveHeader, - @NonNull @Query("page") String title, - @Nullable @Query("uselang") String useLang); - /** - * TODO: remove this if we find a way to get the request url before the observable object being executed - * Gets the remaining sections request url of a given title. - * - * @param title the page title to be used including prefix - */ - @GET(MW_PAGE_SECTIONS_URL) - @NonNull Call getRemainingSectionsUrl(@Nullable @Header("Cache-Control") String cacheControl, - @Nullable @Header(OFFLINE_SAVE_HEADER) String saveHeader, - @NonNull @Query("page") String title, - @Nullable @Query("uselang") String useLang); - - // ------- Search ------- - - @GET(MW_API_PREFIX + "action=query&prop=pageimages&piprop=thumbnail" - + "&converttitles=&pilicense=any&pithumbsize=" + PREFERRED_THUMB_SIZE) - @NonNull Observable getPageImages(@NonNull @Query("titles") String titles); - - @GET(MW_API_PREFIX + "action=query&redirects=" - + "&converttitles=&prop=description|pageimages&piprop=thumbnail" - + "&pilicense=any&generator=prefixsearch&gpsnamespace=0&list=search&srnamespace=0" - + "&srwhat=text&srinfo=suggestion&srprop=&sroffset=0&srlimit=1&pithumbsize=" + PREFERRED_THUMB_SIZE) - @NonNull Observable prefixSearch(@Query("gpssearch") String title, - @Query("gpslimit") int maxResults, - @Query("srsearch") String repeat); - - @GET(MW_API_PREFIX + "action=query&converttitles=" - + "&prop=description|pageimages|pageprops&ppprop=mainpage|disambiguation" - + "&generator=search&gsrnamespace=0&gsrwhat=text" - + "&gsrinfo=&gsrprop=redirecttitle&piprop=thumbnail&pilicense=any&pithumbsize=" - + PREFERRED_THUMB_SIZE) - @NonNull Observable fullTextSearch(@Query("gsrsearch") String searchTerm, - @Query("gsrlimit") int gsrLimit, - @Query("continue") String cont, - @Query("gsroffset") String gsrOffset); - - @GET(MW_API_PREFIX + "action=query&prop=coordinates|description|pageimages" - + "&colimit=50&piprop=thumbnail&pilicense=any" - + "&generator=geosearch&ggslimit=50&pithumbsize=" + PREFERRED_THUMB_SIZE) - @NonNull Observable nearbySearch(@NonNull @Query("ggscoord") String coord, - @Query("ggsradius") double radius); - - - // ------- Miscellaneous ------- - - @GET(MW_API_PREFIX + "action=fancycaptchareload") - @NonNull Observable getNewCaptcha(); - - @GET(MW_API_PREFIX + "action=query&prop=langlinks&lllimit=500&redirects=&converttitles=") - @NonNull Observable getLangLinks(@NonNull @Query("titles") String title); - - @GET(MW_API_PREFIX + "action=query&prop=description|pageprops&redirects") - @NonNull Observable getPagePropsAndDescription(@NonNull @Query("titles") String titles); - - @GET(MW_API_PREFIX + "action=query&prop=description") - @NonNull Observable getDescription(@NonNull @Query("titles") String titles); - - @GET(MW_API_PREFIX + "action=query&prop=imageinfo&iiprop=timestamp|user|url|extmetadata&iiurlwidth=" + PREFERRED_THUMB_SIZE) - @NonNull Observable getImageExtMetadata(@NonNull @Query("titles") String titles); - - @GET(MW_API_PREFIX + "action=sitematrix&smtype=language&smlangprop=code|name|localname") - @NonNull Observable getSiteMatrix(); - - @GET(MW_API_PREFIX + "action=query&meta=siteinfo") - @NonNull Observable getSiteInfo(); - - @Headers("Cache-Control: no-cache") - @GET(MW_API_PREFIX + "action=query&generator=random&redirects=1&grnnamespace=0&grnlimit=50&prop=pageprops|description") - @NonNull Observable getRandomWithPageProps(); - - @Headers("Cache-Control: no-cache") - @GET(MW_API_PREFIX + "action=query&generator=random&redirects=1&grnnamespace=6&grnlimit=50" - + "&prop=description|imageinfo&iiprop=timestamp|user|url|mime&iiurlwidth=" + PREFERRED_THUMB_SIZE) - @NonNull Observable getRandomWithImageInfo(); - - @GET(MW_API_PREFIX + "action=query&prop=categories&clprop=hidden&cllimit=500") - @NonNull Observable getCategories(@NonNull @Query("titles") String titles); - - @GET(MW_API_PREFIX + "action=query&list=categorymembers&cmlimit=500") - @NonNull Observable getCategoryMembers(@NonNull @Query("cmtitle") String title, - @Nullable @Query("cmcontinue") String continueStr); - - // ------- Notifications ------- - - @Headers("Cache-Control: no-cache") - @GET(MW_API_PREFIX + "action=query&meta=notifications¬prop=list¬filter=!read¬limit=1") - @NonNull Observable getLastUnreadNotification(); - - @Headers("Cache-Control: no-cache") - @GET(MW_API_PREFIX + "action=query&meta=unreadnotificationpages&unplimit=max&unpwikis=*") - @NonNull Observable getUnreadNotificationWikis(); - - - // ------- User Options ------- - - @GET(MW_API_PREFIX + "action=query&meta=userinfo&uiprop=options") - @NonNull Observable getUserOptions(); - - @FormUrlEncoded - @POST(MW_API_PREFIX + "action=options") - @NonNull Observable postUserOption(@Field("token") @NonNull String token, - @Query("optionname") @NonNull String key, - @Query("optionvalue") @Nullable String value); - - @FormUrlEncoded - @POST(MW_API_PREFIX + "action=options") - @NonNull Observable deleteUserOption(@Field("token") @NonNull String token, - @Query("change") @NonNull String key); - - - // ------- Editing ------- - - @GET(MW_API_PREFIX + "action=query&prop=revisions&rvprop=content|timestamp&rvlimit=1&converttitles=") - @NonNull Observable getWikiTextForSection(@NonNull @Query("titles") String title, @Query("rvsection") int section); - - @FormUrlEncoded - @POST(MW_API_PREFIX + "action=parse&prop=text§ionpreview=&pst=&mobileformat=") - @NonNull Observable postEditPreview(@NonNull @Field("title") String title, - @NonNull @Field("text") String text); - - @FormUrlEncoded - @Headers("Cache-Control: no-cache") - @POST(MW_API_PREFIX + "action=edit&nocreate=") - @SuppressWarnings("checkstyle:parameternumber") - @NonNull Call postEditSubmit(@NonNull @Field("title") String title, - @Nullable @Field("section") Integer section, - @NonNull @Field("summary") String summary, - @Nullable @Field("assert") String user, - @NonNull @Field("text") String text, - @Nullable @Field("basetimestamp") String baseTimeStamp, - @NonNull @Field("token") String token, - @Nullable @Field("captchaid") String captchaId, - @Nullable @Field("captchaword") String captchaWord); - - @FormUrlEncoded - @Headers("Cache-Control: no-cache") - @POST(MW_API_PREFIX + "action=edit&nocreate=") - @NonNull Observable postAppendEdit(@NonNull @Field("title") String title, - @NonNull @Field("summary") String summary, - @NonNull @Field("appendtext") String text, - @NonNull @Field("token") String token); - - @FormUrlEncoded - @Headers("Cache-Control: no-cache") - @POST(MW_API_PREFIX + "action=edit&nocreate=") - @NonNull Observable postPrependEdit(@NonNull @Field("title") String title, - @NonNull @Field("summary") String summary, - @NonNull @Field("prependtext") String text, - @NonNull @Field("token") String token); - - @Headers("Cache-Control: no-cache") - @POST(MW_API_PREFIX + "action=tag") - @FormUrlEncoded - Observable addEditTag(@NonNull @Field("revid") String revId, - @NonNull @Field("add") String tagName, - @NonNull @Field("reason") String reason, - @NonNull @Field("token") String token); - - @Headers("Cache-Control: no-cache") - @GET(MW_API_PREFIX + "action=query&meta=wikimediaeditortaskscounts") - @NonNull Observable getEditorTaskCounts(); - - @GET(MW_API_PREFIX + "action=query&generator=wikimediaeditortaskssuggestions&prop=pageprops&gwetstask=missingdescriptions&gwetslimit=3") - @NonNull Observable getEditorTaskMissingDescriptions(@NonNull @Query("gwetstarget") String targetLanguage); - - @GET(MW_API_PREFIX + "action=query&generator=wikimediaeditortaskssuggestions&prop=pageprops&gwetstask=descriptiontranslations&gwetslimit=3") - @NonNull Observable getEditorTaskTranslatableDescriptions(@NonNull @Query("gwetssource") String sourceLanguage, - @NonNull @Query("gwetstarget") String targetLanguage); - - - // ------- Wikidata ------- - - @GET(MW_API_PREFIX + "action=wbgetentities") - @NonNull Observable getEntitiesByTitle(@Query("titles") @NonNull String titles, - @Query("sites") @NonNull String sites); - - @GET(MW_API_PREFIX + "action=wbgetentities&props=labels&languagefallback=1") - @NonNull Call getWikidataLabels(@Query("ids") @NonNull String idList, - @Query("languages") @NonNull String langList); - - @GET(MW_API_PREFIX + "action=wbgetentities&props=descriptions|labels|sitelinks") - @NonNull Observable getWikidataLabelsAndDescriptions(@Query("ids") @NonNull String idList); - - @Headers("Cache-Control: no-cache") - @POST(MW_API_PREFIX + "action=wbsetdescription&errorlang=uselang") - @FormUrlEncoded - @SuppressWarnings("checkstyle:parameternumber") - Observable postDescriptionEdit(@NonNull @Field("language") String language, - @NonNull @Field("uselang") String useLang, - @NonNull @Field("site") String site, - @NonNull @Field("title") String title, - @NonNull @Field("value") String newDescription, - @Nullable @Field("summary") String summary, - @NonNull @Field("token") String token, - @Nullable @Field("assert") String user); - - @Headers("Cache-Control: no-cache") - @POST(MW_API_PREFIX + "action=wbsetlabel&errorlang=uselang") - @FormUrlEncoded - @SuppressWarnings("checkstyle:parameternumber") - Observable postLabelEdit(@NonNull @Field("language") String language, - @NonNull @Field("uselang") String useLang, - @NonNull @Field("site") String site, - @NonNull @Field("title") String title, - @NonNull @Field("value") String newDescription, - @Nullable @Field("summary") String summary, - @NonNull @Field("token") String token, - @Nullable @Field("assert") String user); - - @Headers("Cache-Control: no-cache") - @POST(MW_API_PREFIX + "action=wbcreateclaim&errorlang=uselang") - @FormUrlEncoded - Observable postCreateClaim(@NonNull @Field("entity") String entity, - @NonNull @Field("snaktype") String snakType, - @NonNull @Field("property") String property, - @NonNull @Field("value") String value, - @NonNull @Field("uselang") String useLang, - @NonNull @Field("token") String token); - -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/ServiceError.java b/data-client/src/main/java/org/wikipedia/dataclient/ServiceError.java deleted file mode 100644 index 82d6e9b69e..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/ServiceError.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.wikipedia.dataclient; - -import androidx.annotation.NonNull; - -/** - * The API reported an error in the payload. - */ -public interface ServiceError { - @NonNull String getTitle(); - - @NonNull String getDetails(); -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/ServiceFactory.java b/data-client/src/main/java/org/wikipedia/dataclient/ServiceFactory.java deleted file mode 100644 index 48841ea97a..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/ServiceFactory.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.wikipedia.dataclient; - -import android.text.TextUtils; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.collection.LruCache; - -import org.wikipedia.AppAdapter; -import org.wikipedia.json.GsonUtil; - -import retrofit2.Retrofit; -import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; -import retrofit2.converter.gson.GsonConverterFactory; - -public final class ServiceFactory { - private static final int SERVICE_CACHE_SIZE = 8; - private static LruCache SERVICE_CACHE = new LruCache<>(SERVICE_CACHE_SIZE); - private static LruCache REST_SERVICE_CACHE = new LruCache<>(SERVICE_CACHE_SIZE); - - public static Service get(@NonNull WikiSite wiki) { - long hashCode = wiki.hashCode(); - if (SERVICE_CACHE.get(hashCode) != null) { - return SERVICE_CACHE.get(hashCode); - } - - Retrofit r = createRetrofit(wiki, wiki.url() + "/"); - - Service s = r.create(Service.class); - SERVICE_CACHE.put(hashCode, s); - return s; - } - - public static T get(@NonNull WikiSite wiki, Class service) { - return get(wiki, wiki.url() + "/", service); - } - - public static T get(@NonNull WikiSite wiki, @Nullable String baseUrl, Class service) { - Retrofit r = createRetrofit(wiki, TextUtils.isEmpty(baseUrl) ? wiki.url() + "/" : baseUrl); - return r.create(service); - } - - public static RestService getRest(@NonNull WikiSite wiki) { - long hashCode = wiki.hashCode(); - if (REST_SERVICE_CACHE.get(hashCode) != null) { - return REST_SERVICE_CACHE.get(hashCode); - } - - Retrofit r = createRetrofit(wiki, TextUtils.isEmpty(AppAdapter.get().getRestbaseUriFormat()) - ? wiki.url() + "/" + RestService.REST_API_PREFIX - : String.format(AppAdapter.get().getRestbaseUriFormat(), "https", wiki.authority())); - - RestService s = r.create(RestService.class); - REST_SERVICE_CACHE.put(hashCode, s); - return s; - } - - private static Retrofit createRetrofit(@NonNull WikiSite wiki, @NonNull String baseUrl) { - return new Retrofit.Builder() - .client(AppAdapter.get().getOkHttpClient()) - .baseUrl(baseUrl) - .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) - .addConverterFactory(GsonConverterFactory.create(GsonUtil.getDefaultGson())) - .build(); - } - - private ServiceFactory() { } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/SharedPreferenceCookieManager.java b/data-client/src/main/java/org/wikipedia/dataclient/SharedPreferenceCookieManager.java deleted file mode 100644 index 72c03302a1..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/SharedPreferenceCookieManager.java +++ /dev/null @@ -1,166 +0,0 @@ -package org.wikipedia.dataclient; - -import android.text.TextUtils; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.AppAdapter; -import org.wikipedia.util.log.L; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import okhttp3.Cookie; -import okhttp3.CookieJar; -import okhttp3.HttpUrl; - -public final class SharedPreferenceCookieManager implements CookieJar { - private static final String CENTRALAUTH_PREFIX = "centralauth_"; - private static SharedPreferenceCookieManager INSTANCE; - - // Map: domain -> list of cookies - private final Map> cookieJar; - - @NonNull - public static SharedPreferenceCookieManager getInstance() { -// if (INSTANCE == null) { -// try { -// INSTANCE = AppAdapter.get().getCookies(); -// } catch (Exception e) { -// L.logRemoteErrorIfProd(e); -// } -// } - if (INSTANCE == null) { - INSTANCE = new SharedPreferenceCookieManager(); - } - return INSTANCE; - } - - public SharedPreferenceCookieManager(Map> cookieJar) { - this.cookieJar = cookieJar; - } - - private SharedPreferenceCookieManager() { - cookieJar = new HashMap<>(); - } - - public Map> getCookieJar() { - return cookieJar; - } - - private void persistCookies() { -// AppAdapter.get().setCookies(this); - } - - public synchronized void clearAllCookies() { - cookieJar.clear(); - persistCookies(); - } - - @Nullable public synchronized String getCookieByName(@NonNull String name) { - for (String domainSpec: cookieJar.keySet()) { - for (Cookie cookie : cookieJar.get(domainSpec)) { - if (cookie.name().equals(name)) { - return cookie.value(); - } - } - } - return null; - } - - @Override - public synchronized void saveFromResponse(@NonNull HttpUrl url, @NonNull List cookies) { - if (cookies.isEmpty()) { - return; - } - boolean cookieJarModified = false; - for (Cookie cookie : cookies) { - // Default to the URI's domain if cookie's domain is not explicitly set - String domainSpec = TextUtils.isEmpty(cookie.domain()) ? url.uri().getAuthority() : cookie.domain(); - if (!cookieJar.containsKey(domainSpec)) { - cookieJar.put(domainSpec, new ArrayList<>()); - } - - List cookieList = cookieJar.get(domainSpec); - if (cookie.expiresAt() < System.currentTimeMillis() || "deleted".equals(cookie.value())) { - Iterator i = cookieList.iterator(); - while (i.hasNext()) { - if (i.next().name().equals(cookie.name())) { - i.remove(); - cookieJarModified = true; - } - } - } else { - Iterator i = cookieList.iterator(); - boolean exists = false; - while (i.hasNext()) { - Cookie c = i.next(); - if (c.equals(cookie)) { - // an identical cookie already exists, so we don't need to update it. - exists = true; - break; - } else if (c.name().equals(cookie.name())) { - // it's a cookie with the same name, but different contents, so remove the - // current cookie, so that the new one will be added. - i.remove(); - } - } - if (!exists) { - cookieList.add(cookie); - cookieJarModified = true; - } - } - } - if (cookieJarModified) { - persistCookies(); - } - } - - @Override - public synchronized List loadForRequest(@NonNull HttpUrl url) { - List cookieList = new ArrayList<>(); - String domain = url.uri().getAuthority(); - - Log.d("CookieManager", "Domain:" + domain); - - for (String domainSpec : cookieJar.keySet()) { - List cookiesForDomainSpec = cookieJar.get(domainSpec); - - if (domain.endsWith(domainSpec)) { - buildCookieList(cookieList, cookiesForDomainSpec, null); - } else if (domainSpec.endsWith("commons.wikimedia.org")) { - Log.d("CookieManager", "Adding centralauth cookies"); - // For sites outside the wikipedia.org domain, transfer the centralauth cookies - // from commons.wikimedia.org unconditionally. - buildCookieList(cookieList, cookiesForDomainSpec, CENTRALAUTH_PREFIX); - } - } - return cookieList; - } - - private void buildCookieList(@NonNull List outList, @NonNull List inList, @Nullable String prefix) { - Iterator i = inList.iterator(); - boolean cookieJarModified = false; - while (i.hasNext()) { - Cookie cookie = i.next(); - if (prefix != null && !cookie.name().startsWith(prefix)) { - continue; - } - // But wait, is the cookie expired? - if (cookie.expiresAt() < System.currentTimeMillis()) { - i.remove(); - cookieJarModified = true; - } else { - outList.add(cookie); - } - } - if (cookieJarModified) { - persistCookies(); - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/CreateAccountResponse.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/CreateAccountResponse.java deleted file mode 100644 index 6e77c3b293..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/CreateAccountResponse.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.wikipedia.dataclient.mwapi; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -public class CreateAccountResponse extends MwResponse { - @SuppressWarnings("unused") @Nullable private Result createaccount; - - @Nullable public String status() { - return createaccount.status(); - } - - @Nullable public String user() { - return createaccount.user(); - } - - @Nullable public String message() { - return createaccount.message(); - } - - public boolean hasResult() { - return createaccount != null; - } - - public static class Result { - @SuppressWarnings("unused,NullableProblems") @NonNull private String status; - @SuppressWarnings("unused") @Nullable private String message; - @SuppressWarnings("unused") @Nullable private String username; - - @NonNull public String status() { - return status; - } - - @Nullable public String user() { - return username; - } - - @Nullable public String message() { - return message; - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/EditorTaskCounts.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/EditorTaskCounts.java deleted file mode 100644 index 8497ae6d1d..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/EditorTaskCounts.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.wikipedia.dataclient.mwapi; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.annotations.SerializedName; - -import org.wikipedia.json.GsonUtil; - -import java.util.Collections; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("unused") -public class EditorTaskCounts { - @Nullable private JsonElement counts; - @Nullable @SerializedName("targets_passed") private JsonElement targetsPassed; - @Nullable private JsonElement targets; - - @NonNull - public Map getDescriptionEditsPerLanguage() { - Map editsPerLanguage = null; - if (counts != null && !(counts instanceof JsonArray)) { - editsPerLanguage = GsonUtil.getDefaultGson().fromJson(counts, Counts.class).appDescriptionEdits; - } - return editsPerLanguage == null ? Collections.emptyMap() : editsPerLanguage; - } - - @NonNull - public List getDescriptionEditTargetsPassed() { - List passedList = null; - if (targetsPassed != null && !(targetsPassed instanceof JsonArray)) { - passedList = GsonUtil.getDefaultGson().fromJson(targetsPassed, Targets.class).appDescriptionEdits; - } - return passedList == null ? Collections.emptyList() : passedList; - } - - public int getDescriptionEditTargetsPassedCount() { - List targetList = getDescriptionEditTargets(); - List passedList = getDescriptionEditTargetsPassed(); - int count = 0; - if (!targetList.isEmpty() && !passedList.isEmpty()) { - for (int target : targetList) { - if (passedList.contains(target)) { - count++; - } - } - } - return count; - } - - @NonNull - public List getDescriptionEditTargets() { - List targetList = null; - if (targets != null && !(targets instanceof JsonArray)) { - targetList = GsonUtil.getDefaultGson().fromJson(targets, Targets.class).appDescriptionEdits; - } - return targetList == null ? Collections.emptyList() : targetList; - } - - @NonNull - public Map getCaptionEditsPerLanguage() { - Map editsPerLanguage = null; - if (counts != null && !(counts instanceof JsonArray)) { - editsPerLanguage = GsonUtil.getDefaultGson().fromJson(counts, Counts.class).appCaptionEdits; - } - return editsPerLanguage == null ? Collections.emptyMap() : editsPerLanguage; - } - - @NonNull - public List getCaptionEditTargetsPassed() { - List passedList = null; - if (targetsPassed != null && !(targetsPassed instanceof JsonArray)) { - passedList = GsonUtil.getDefaultGson().fromJson(targetsPassed, Targets.class).appCaptionEdits; - } - return passedList == null ? Collections.emptyList() : passedList; - } - - public int getCaptionEditTargetsPassedCount() { - List targetList = getCaptionEditTargets(); - List passedList = getCaptionEditTargetsPassed(); - int count = 0; - if (!targetList.isEmpty() && !passedList.isEmpty()) { - for (int target : targetList) { - if (passedList.contains(target)) { - count++; - } - } - } - return count; - } - - @NonNull - public List getCaptionEditTargets() { - List targetList = null; - if (targets != null && !(targets instanceof JsonArray)) { - targetList = GsonUtil.getDefaultGson().fromJson(targets, Targets.class).appCaptionEdits; - } - return targetList == null ? Collections.emptyList() : targetList; - } - - public class Counts { - @Nullable @SerializedName("app_description_edits") private Map appDescriptionEdits; - @Nullable @SerializedName("app_caption_edits") private Map appCaptionEdits; - } - - public class Targets { - @Nullable @SerializedName("app_description_edits") private List appDescriptionEdits; - @Nullable @SerializedName("app_caption_edits") private List appCaptionEdits; - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/GeoSearchItem.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/GeoSearchItem.java deleted file mode 100644 index 0e04bff3e9..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/GeoSearchItem.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.wikipedia.dataclient.mwapi; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.annotations.SerializedName; - -import org.apache.commons.lang3.StringUtils; - -@SuppressWarnings("unused") -public class GeoSearchItem { - @Nullable private String title; - @SerializedName("lat") private double latitude; - @SerializedName("lon") private double longitude; - @SerializedName("dist") private double distance; - - @NonNull public String getTitle() { - return StringUtils.defaultString(title); - } - - public double getLatitude() { - return latitude; - } - - public double getLongitude() { - return longitude; - } - - public double getDistance() { - return distance; - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwAuthManagerInfo.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwAuthManagerInfo.java deleted file mode 100644 index a6aa9d5f86..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwAuthManagerInfo.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.wikipedia.dataclient.mwapi; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.model.BaseModel; - -import java.util.List; -import java.util.Map; - -class MwAuthManagerInfo extends BaseModel { - @SuppressWarnings("unused,NullableProblems") @NonNull private List requests; - - @NonNull List requests() { - return requests; - } - - static class Request { - @SuppressWarnings("unused,NullableProblems") @NonNull private String id; - @SuppressWarnings("unused,NullableProblems") @NonNull private Map metadata; - @SuppressWarnings("unused,NullableProblems") @NonNull private String required; - @SuppressWarnings("unused,NullableProblems") @NonNull private String provider; - @SuppressWarnings("unused,NullableProblems") @NonNull private String account; - @SuppressWarnings("unused,NullableProblems") @NonNull private Map fields; - - @NonNull String id() { - return id; - } - - @NonNull Map fields() { - return fields; - } - } - - static class Field { - @SuppressWarnings("unused") @Nullable private String type; - @SuppressWarnings("unused") @Nullable private String value; - @SuppressWarnings("unused") @Nullable private String label; - @SuppressWarnings("unused") @Nullable private String help; - @SuppressWarnings("unused") private boolean optional; - @SuppressWarnings("unused") private boolean sensitive; - - @Nullable String value() { - return value; - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryLogEvent.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryLogEvent.java deleted file mode 100644 index 7265bc9b08..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryLogEvent.java +++ /dev/null @@ -1,107 +0,0 @@ -package org.wikipedia.dataclient.mwapi; - -import org.wikipedia.model.BaseModel; -import org.wikipedia.util.DateUtil; - -import java.text.ParseException; -import java.util.Date; -import java.util.List; - -@SuppressWarnings("unused") -public class MwQueryLogEvent extends BaseModel { - private int logid; - private int ns; - private int index; - private String title; - private int pageid; - private Params params; - private String type; - private String action; - private String user; - private int userid; - private String timestamp; - private String comment; - private String parsedcomment; - private List tags; - - public int logid() { - return logid; - } - - public int ns() { - return ns; - } - - public int index() { - return index; - } - - public String title() { - return title; - } - - public int pageid() { - return pageid; - } - - public String type() { - return type; - } - - public String action() { - return action; - } - - public String user() { - return user; - } - - public int userid() { - return userid; - } - - public String timestamp() { - return timestamp; - } - - public Date date(){ - try { - return DateUtil.iso8601DateParse(timestamp); - } catch (ParseException e) { - return null; - } - } - - public String comment() { - return comment; - } - - public String parsedcomment() { - return parsedcomment; - } - - public List tags() { - return tags; - } - - public boolean isDeleted() { - return pageid==0; - } - - public Params params() { - return params; - } - - public static class Params{ - private String img_sha1; - private String img_timestamp; - - public String img_sha1() { - return img_sha1; - } - - public String img_timestamp() { - return img_timestamp; - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryPage.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryPage.java deleted file mode 100644 index 3629fc7bf4..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryPage.java +++ /dev/null @@ -1,323 +0,0 @@ -package org.wikipedia.dataclient.mwapi; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.annotations.SerializedName; - -import org.apache.commons.lang3.StringUtils; -import org.wikipedia.gallery.ImageInfo; -import org.wikipedia.gallery.VideoInfo; -import org.wikipedia.model.BaseModel; -import org.wikipedia.page.Namespace; - -import java.util.Collections; -import java.util.List; - -/** - * A class representing a standard page object as returned by the MediaWiki API. - */ -public class MwQueryPage extends BaseModel { - @SuppressWarnings("unused") private int pageid; - @SuppressWarnings("unused") private int ns; - @SuppressWarnings("unused") private int index; - @SuppressWarnings("unused,NullableProblems") @NonNull private String title; - @SuppressWarnings("unused,NullableProblems") @NonNull private CategoryInfo categoryinfo; - @SuppressWarnings("unused") @Nullable private List langlinks; - @SuppressWarnings("unused") @Nullable private List revisions; - @SuppressWarnings("unused") @SerializedName("fileusage") @Nullable private List fileUsages; - @SuppressWarnings("unused") @SerializedName("globalusage") @Nullable private List globalUsages; - @SuppressWarnings("unused") @Nullable private List coordinates; - @SuppressWarnings("unused") @Nullable private List categories; - @SuppressWarnings("unused") @Nullable private PageProps pageprops; - @SuppressWarnings("unused") @Nullable private PageTerms terms; - @SuppressWarnings("unused") @Nullable private String extract; - @SuppressWarnings("unused") @Nullable private Thumbnail thumbnail; - @SuppressWarnings("unused") @Nullable private String description; - @SuppressWarnings("unused") @SerializedName("descriptionsource") @Nullable private String descriptionSource; - @SuppressWarnings("unused") @SerializedName("imageinfo") @Nullable private List imageInfo; - @SuppressWarnings("unused") @SerializedName("videoinfo") @Nullable private List videoInfo; - @Nullable private String redirectFrom; - @Nullable private String convertedFrom; - @Nullable private String convertedTo; - - @NonNull public String title() { - return title; - } - - @NonNull public CategoryInfo categoryInfo() { - return categoryinfo; - } - - public int index() { - return index; - } - - @NonNull public Namespace namespace() { - return Namespace.of(ns); - } - - @Nullable public List langLinks() { - return langlinks; - } - - @Nullable public List revisions() { - return revisions; - } - - @Nullable public List categories() { - return categories; - } - - @Nullable public List globalUsages() { - return globalUsages; - } - - @Nullable public List fileUsages() { - return fileUsages; - } - - @Nullable public List coordinates() { - // TODO: Handle null values in lists during deserialization, perhaps with a new - // @RequiredElements annotation and corresponding TypeAdapter - if (coordinates != null) { - coordinates.removeAll(Collections.singleton(null)); - } - return coordinates; - } - - public List labels() { - return terms != null && terms.label != null ? terms.label : Collections.emptyList(); - } - - public int pageId() { - return pageid; - } - - @Nullable public PageProps pageProps() { - return pageprops; - } - - @Nullable public String extract() { - return extract; - } - - @Nullable public String thumbUrl() { - return thumbnail != null ? thumbnail.source() : null; - } - - @Nullable public String description() { - return description; - } - - @Nullable - public String descriptionSource() { - return descriptionSource; - } - - @Nullable public ImageInfo imageInfo() { - return imageInfo != null ? imageInfo.get(0) : null; - } - - @Nullable public VideoInfo videoInfo() { - return videoInfo != null ? videoInfo.get(0) : null; - } - - @Nullable public String redirectFrom() { - return redirectFrom; - } - - public void redirectFrom(@Nullable String from) { - redirectFrom = from; - } - - @Nullable public String convertedFrom() { - return convertedFrom; - } - - public void convertedFrom(@Nullable String from) { - convertedFrom = from; - } - - @Nullable public String convertedTo() { - return convertedTo; - } - - public void convertedTo(@Nullable String to) { - convertedTo = to; - } - - public void appendTitleFragment(@Nullable String fragment) { - title += "#" + fragment; - } - - public boolean checkWhetherFileIsUsedInWikis() { - if (globalUsages != null && globalUsages.size() > 0) { - return true; - } - - if (fileUsages == null || fileUsages.size() == 0) { - return false; - } - - final int totalCount = fileUsages.size(); - - /* Ignore usage under https://commons.wikimedia.org/wiki/User:Didym/Mobile_upload/ - which has been a gallery of all of our uploads since 2014 */ - for (final FileUsage fileUsage : fileUsages) { - if ( ! fileUsage.title().contains("User:Didym/Mobile upload")) { - return true; - } - } - - return false; - } - - public static class Revision { - @SerializedName("revid") private long revisionId; - private String user; - @SuppressWarnings("unused,NullableProblems") @SerializedName("contentformat") @NonNull private String contentFormat; - @SuppressWarnings("unused,NullableProblems") @SerializedName("contentmodel") @NonNull private String contentModel; - @SuppressWarnings("unused,NullableProblems") @SerializedName("timestamp") @NonNull private String timeStamp; - @SuppressWarnings("unused,NullableProblems") @NonNull private String content; - - @NonNull public String content() { - return content; - } - - @NonNull public String timeStamp() { - return StringUtils.defaultString(timeStamp); - } - - public long getRevisionId() { - return revisionId; - } - - @NonNull - public String getUser() { - return StringUtils.defaultString(user); - } - } - - public static class LangLink { - @SuppressWarnings("unused,NullableProblems") @NonNull private String lang; - @NonNull public String lang() { - return lang; - } - @SuppressWarnings("unused,NullableProblems") @NonNull private String title; - @NonNull public String title() { - return title; - } - } - - public static class Coordinates { - @SuppressWarnings("unused") @Nullable private Double lat; - @SuppressWarnings("unused") @Nullable private Double lon; - - @Nullable public Double lat() { - return lat; - } - @Nullable public Double lon() { - return lon; - } - } - - public static class CategoryInfo { - @SuppressWarnings("unused") private boolean hidden; - @SuppressWarnings("unused") private int size; - @SuppressWarnings("unused") private int pages; - @SuppressWarnings("unused") private int files; - @SuppressWarnings("unused") private int subcats; - public boolean isHidden() { - return hidden; - } - } - - static class Thumbnail { - @SuppressWarnings("unused") private String source; - @SuppressWarnings("unused") private int width; - @SuppressWarnings("unused") private int height; - String source() { - return source; - } - } - - public static class PageProps { - @SuppressWarnings("unused") @SerializedName("wikibase_item") @Nullable private String wikiBaseItem; - @SuppressWarnings("unused") @Nullable private String displaytitle; - @SuppressWarnings("unused") @Nullable private String disambiguation; - - @Nullable public String getDisplayTitle() { - return displaytitle; - } - - @NonNull public String getWikiBaseItem() { - return StringUtils.defaultString(wikiBaseItem); - } - - public boolean isDisambiguation() { - return disambiguation != null; - } - } - - public static class GlobalUsage { - @SerializedName("title") private String title; - @SerializedName("wiki")private String wiki; - @SerializedName("url") private String url; - - public String getTitle() { - return title; - } - - public String getWiki() { - return wiki; - } - - public String getUrl() { - return url; - } - - - } - - public static class FileUsage { - @SerializedName("pageid") private int pageid; - @SerializedName("ns") private int ns; - @SerializedName("title") private String title; - - public int pageId() { - return pageid; - } - - public int ns() { - return ns; - } - - public String title() { - return title; - } - } - - public static class Category { - @SuppressWarnings("unused") private int ns; - @SuppressWarnings("unused,NullableProblems") @Nullable private String title; - @SuppressWarnings("unused") private boolean hidden; - - public int ns() { - return ns; - } - - @NonNull public String title() { - return StringUtils.defaultString(title); - } - - public boolean hidden() { - return hidden; - } - } - - public static class PageTerms { - @SuppressWarnings("unused") private List alias; - @SuppressWarnings("unused") private List label; - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResponse.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResponse.java deleted file mode 100644 index 8ed544c48b..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResponse.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.wikipedia.dataclient.mwapi; - -import androidx.annotation.Nullable; -import androidx.annotation.VisibleForTesting; - -import com.google.gson.annotations.SerializedName; - -import java.util.Map; - -public class MwQueryResponse extends MwResponse { - - @SuppressWarnings("unused") @SerializedName("batchcomplete") private boolean batchComplete; - - @SuppressWarnings("unused") @SerializedName("continue") @Nullable private Map continuation; - - @SerializedName("query") @Nullable private MwQueryResult query; - - public boolean batchComplete() { - return batchComplete; - } - - @Nullable public Map continuation() { - return continuation; - } - - @Nullable public MwQueryResult query() { - return query; - } - - public boolean success() { - return query != null; - } - - @VisibleForTesting protected void setQuery(@Nullable MwQueryResult query) { - this.query = query; - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwServiceError.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwServiceError.java deleted file mode 100644 index f2b3eb4639..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwServiceError.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.wikipedia.dataclient.mwapi; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.apache.commons.lang3.StringUtils; -import org.wikipedia.dataclient.ServiceError; -import org.wikipedia.model.BaseModel; - -import java.util.List; - -/** - * Gson POJO for a MediaWiki API error. - */ -public class MwServiceError extends BaseModel implements ServiceError { - - @SuppressWarnings("unused") @Nullable private String code; - @SuppressWarnings("unused") @Nullable private String text; - @SuppressWarnings("unused") @Nullable private Data data; - - @Override @NonNull public String getTitle() { - return StringUtils.defaultString(code); - } - - @Override @NonNull public String getDetails() { - return StringUtils.defaultString(text); - } - - public boolean badToken() { - return "badtoken".equals(code); - } - - public boolean badLoginState() { - return "assertuserfailed".equals(code); - } - - public boolean hasMessageName(@NonNull String messageName) { - if (data != null && data.messages() != null) { - for (Message msg : data.messages()) { - if (messageName.equals(msg.name)) { - return true; - } - } - } - return false; - } - - @Nullable public String getMessageHtml(@NonNull String messageName) { - if (data != null && data.messages() != null) { - for (Message msg : data.messages()) { - if (messageName.equals(msg.name)) { - return msg.html(); - } - } - } - return null; - } - - @Nullable - public String getCode() { - return code; - } - - private static final class Data { - @SuppressWarnings("unused") @Nullable private List messages; - - @Nullable private List messages() { - return messages; - } - } - - private static final class Message { - @SuppressWarnings("unused") @Nullable private String name; - @SuppressWarnings("unused") @Nullable private String html; - - @NonNull private String html() { - return StringUtils.defaultString(html); - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/NearbyPage.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/NearbyPage.java deleted file mode 100644 index 0deeab181b..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/NearbyPage.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.wikipedia.dataclient.mwapi; - -import android.location.Location; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.page.PageTitle; - -import java.util.List; - -public class NearbyPage { - @NonNull private PageTitle title; - @Nullable private Location location; - - /** calculated externally */ - private int distance; - - public NearbyPage(@NonNull MwQueryPage page, @NonNull WikiSite wiki) { - title = new PageTitle(page.title(), wiki); - title.setThumbUrl(page.thumbUrl()); - List coordinates = page.coordinates(); - if (coordinates == null || coordinates.isEmpty()) { - return; - } - if (coordinates.get(0).lat() != null && coordinates.get(0).lon() != null) { - location = new Location(title.getPrefixedText()); - location.setLatitude(coordinates.get(0).lat()); - location.setLongitude(coordinates.get(0).lon()); - } - } - - public NearbyPage(@NonNull PageTitle title, @Nullable Location location) { - this.title = title; - this.location = location; - } - - @NonNull public PageTitle getTitle() { - return title; - } - - @Nullable public Location getLocation() { - return location; - } - - @Override public String toString() { - return "NearbyPage{" - + "title='" + title + '\'' - + ", thumbUrl='" + title.getThumbUrl() + '\'' - + ", location=" + location + '\'' - + ", distance='" + distance - + '}'; - } - - /** - * Returns the distance from the point where the device is. - * Calculated later and can change. Needs to be set first by #setDistance! - */ - public int getDistance() { - return distance; - } - - public void setDistance(int distance) { - this.distance = distance; - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/SiteMatrix.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/SiteMatrix.java deleted file mode 100644 index 10516d7dab..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/SiteMatrix.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.wikipedia.dataclient.mwapi; - -import androidx.annotation.NonNull; - -import com.google.gson.JsonObject; - -import org.wikipedia.json.GsonUtil; - -import java.util.ArrayList; -import java.util.List; - -public class SiteMatrix extends MwResponse { - @SuppressWarnings("unused,NullableProblems") @NonNull private JsonObject sitematrix; - - public JsonObject siteMatrix() { - return sitematrix; - } - - @SuppressWarnings("unused,NullableProblems") - public class SiteInfo { - @NonNull - private String code; - @NonNull - private String name; - @NonNull - private String localname; - - @NonNull - public String code() { - return code; - } - - @NonNull - public String name() { - return name; - } - - @NonNull - public String localName() { - return localname; - } - } - - public static List getSites(@NonNull SiteMatrix siteMatrix) { - List sites = new ArrayList<>(); - // We have to parse the Json manually because the list of SiteInfo objects - // contains a "count" member that prevents it from being able to deserialize - // as a list automatically. - for (String key : siteMatrix.siteMatrix().keySet()) { - if (key.equals("count")) { - continue; - } - SiteInfo info = GsonUtil.getDefaultGson().fromJson(siteMatrix.siteMatrix().get(key), SiteInfo.class); - if (info != null) { - sites.add(info); - } - } - return sites; - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/UserInfo.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/UserInfo.java deleted file mode 100644 index 786879acd0..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/UserInfo.java +++ /dev/null @@ -1,84 +0,0 @@ -package org.wikipedia.dataclient.mwapi; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import java.util.HashMap; -import java.util.Map; - -@SuppressWarnings("unused") -public class UserInfo { - @NonNull - private String name; - @NonNull - private int id; - - //Block information - private int blockid; - private String blockedby; - private int blockedbyid; - private String blockreason; - private String blocktimestamp; - private String blockexpiry; - - // Object type is any JSON type. - @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") - @Nullable - private Map options; - - public int id() { - return id; - } - - @NonNull - public Map userjsOptions() { - Map map = new HashMap<>(); - if (options != null) { - for (Map.Entry entry : options.entrySet()) { - if (entry.getKey().startsWith("userjs-")) { - // T161866 entry.valueOf() should always return a String but doesn't - map.put(entry.getKey(), entry.getValue() == null ? "" : String.valueOf(entry.getValue())); - } - } - } - return map; - } - - @NonNull - public int blockid() { - return blockid; - } - - @NonNull - public String blockedby() { - if (blockedby != null) - return blockedby; - else return ""; - } - - @NonNull - public int blockedbyid() { - return blockedbyid; - } - - @NonNull - public String blockreason() { - if (blockreason != null) - return blockreason; - else return ""; - } - - @NonNull - public String blocktimestamp() { - if (blocktimestamp != null) - return blocktimestamp; - else return ""; - } - - @NonNull - public String blockexpiry() { - if (blockexpiry != null) - return blockexpiry; - else return ""; - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLead.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLead.java deleted file mode 100644 index dfd6a6d163..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLead.java +++ /dev/null @@ -1,281 +0,0 @@ -package org.wikipedia.dataclient.mwapi.page; - -import android.location.Location; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.VisibleForTesting; - -import com.google.gson.annotations.SerializedName; - -import org.wikipedia.dataclient.mwapi.MwQueryPage; -import org.wikipedia.dataclient.mwapi.MwResponse; -import org.wikipedia.dataclient.page.PageLead; -import org.wikipedia.dataclient.page.PageLeadProperties; -import org.wikipedia.dataclient.page.Protection; -import org.wikipedia.page.Namespace; -import org.wikipedia.page.Page; -import org.wikipedia.page.PageProperties; -import org.wikipedia.page.PageTitle; -import org.wikipedia.page.Section; -import org.wikipedia.util.StringUtil; -import org.wikipedia.util.UriUtil; - -import java.util.Collections; -import java.util.List; - -import static org.wikipedia.dataclient.Service.PREFERRED_THUMB_SIZE; -import static org.wikipedia.util.ImageUrlUtil.getUrlForSize; - -/** - * Gson POJO for loading the first stage of page content. - */ -public class MwMobileViewPageLead extends MwResponse implements PageLead { - @SuppressWarnings("unused") private Mobileview mobileview; - - /** Note: before using this check that #getMobileview != null */ - @Override - public Page toPage(@NonNull PageTitle title) { - return new Page(adjustPageTitle(title, title.getPrefixedText()), - mobileview.getSections(), - mobileview.toPageProperties(), - false); - } - - private PageTitle adjustPageTitle(@NonNull PageTitle title, @NonNull String originalPrefixedText) { - if (mobileview.getRedirected() != null) { - // Handle redirects properly. - title = new PageTitle(mobileview.getRedirected(), title.getWikiSite(), - title.getThumbUrl()); - } else if (mobileview.getNormalizedTitle() != null) { - // We care about the normalized title only if we were not redirected - title = new PageTitle(mobileview.getNormalizedTitle(), title.getWikiSite(), - title.getThumbUrl()); - } - - if (mobileview.getDisplayTitle() != null - && !StringUtil.removeHTMLTags(title.getDisplayText()).equals(StringUtil.removeHTMLTags(mobileview.getDisplayTitle()))) { - title = new PageTitle(StringUtil.removeHTMLTags(mobileview.getDisplayTitle()), title.getWikiSite(), - title.getThumbUrl()); - } - - if (mobileview.getDisplayTitle() != null - && !mobileview.getDisplayTitle().equals(originalPrefixedText) - && mobileview.getNormalizedTitle() == null) { - // Sometimes the MW api will not give us the "converted" or "redirected" title if switching between Chinese variants - // Ticket: https://phabricator.wikimedia.org/T206891#4672777 - // We can the original prefixed title text (the one we used for calling API) to build the PageTitle - title = new PageTitle(originalPrefixedText, title.getWikiSite(), title.getThumbUrl()); - } - - if (mobileview.getRedirected() != null) { - title.setConvertedText(mobileview.getRedirected()); - } - - title.setDescription(mobileview.getDescription()); - return title; - } - - @Override @NonNull public String getLeadSectionContent() { - if (mobileview != null) { - return mobileview.getSections().get(0).getContent(); - } - return ""; - } - - @Nullable - @Override - public String getTitlePronunciationUrl() { - return null; - } - - @Nullable @Override public String getLeadImageUrl(int leadImageWidth) { - return mobileview == null ? null : mobileview.getLeadImageUrl(leadImageWidth); - } - - @Nullable @Override public String getThumbUrl() { - return mobileview == null ? null : mobileview.getThumbUrl(); - } - - @Nullable @Override public String getDescription() { - return mobileview == null ? null : mobileview.getDescription(); - } - - @Nullable - @Override - public Location getGeo() { - return null; - } - - @VisibleForTesting - public Mobileview getMobileview() { - return mobileview; - } - - - /** - * Almost everything is in this inner class. - */ - public static class Mobileview implements PageLeadProperties { - @SuppressWarnings("unused") private int id; - @SuppressWarnings("unused") private int namespace; - @SuppressWarnings("unused") private long revision; - @SuppressWarnings("unused") @Nullable private String lastmodified; - @SuppressWarnings("unused") @Nullable private String displaytitle; - @SuppressWarnings("unused") @Nullable private String redirected; - @SuppressWarnings("unused") @Nullable private String normalizedtitle; - @SuppressWarnings("unused") private int languagecount; - @SuppressWarnings("unused") private boolean editable; - @SuppressWarnings("unused") private boolean mainpage; - @SuppressWarnings("unused") private boolean disambiguation; - @SuppressWarnings("unused") @Nullable private String description; - @SuppressWarnings("unused") @Nullable private String descriptionsource; - @SuppressWarnings("unused") @SerializedName("image") @Nullable private PageImage pageImage; - @SuppressWarnings("unused") @SerializedName("thumb") @Nullable private PageImageThumb leadImage; - @SuppressWarnings("unused") @Nullable private Protection protection; - @SuppressWarnings("unused") @Nullable private List
sections; - @SuppressWarnings("unused") @Nullable private MwQueryPage.PageProps pageprops; - - /** Converter */ - public PageProperties toPageProperties() { - return new PageProperties(this); - } - - @Override - public int getId() { - return id; - } - - @Override @NonNull public Namespace getNamespace() { - return Namespace.of(namespace); - } - - @Override - public long getRevision() { - return revision; - } - - @Override - @Nullable - public String getLastModified() { - return lastmodified; - } - - @Override - public int getLanguageCount() { - return languagecount; - } - - @Override - @Nullable - public String getDisplayTitle() { - return displaytitle; - } - - @Override - @Nullable - public String getTitlePronunciationUrl() { - return null; - } - - @Override - @Nullable - public Location getGeo() { - return null; - } - - @Override - @Nullable - public String getRedirected() { - return redirected; - } - - @Override - @Nullable - public String getNormalizedTitle() { - return normalizedtitle; - } - - @Nullable - public String getDescription() { - return description; - } - - @Override - @Nullable - public String getLeadImageUrl(int leadImageWidth) { - return leadImage != null ? leadImage.getUrl() : null; - } - - @Override - @Nullable - public String getThumbUrl() { - return leadImage != null ? UriUtil.resolveProtocolRelativeUrl(getUrlForSize(leadImage.getUrl(), PREFERRED_THUMB_SIZE)) : null; - } - - @Override - @Nullable - public String getLeadImageFileName() { - return pageImage != null ? pageImage.getFileName() : null; - } - - @Override - @Nullable - public String getWikiBaseItem() { - return pageprops != null && pageprops.getWikiBaseItem() != null ? pageprops.getWikiBaseItem() : null; - } - - @Override - @Nullable - public String getDescriptionSource() { - return descriptionsource; - } - - @Override - @Nullable - public String getFirstAllowedEditorRole() { - return protection != null ? protection.getFirstAllowedEditorRole() : null; - } - - @Override - public boolean isEditable() { - return editable; - } - - @Override - public boolean isMainPage() { - return mainpage; - } - - @Override - public boolean isDisambiguation() { - return disambiguation; - } - - @Override @NonNull public List
getSections() { - return sections == null ? Collections.emptyList() : sections; - } - } - - /** - * For the lead image File: page name - */ - public static class PageImage { - @SuppressWarnings("unused") @SerializedName("file") private String fileName; - - public String getFileName() { - return fileName; - } - } - - /** - * For the lead image URL - */ - public static class PageImageThumb { - @SuppressWarnings("unused") private String url; - - public String getUrl() { - return url; - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageRemaining.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageRemaining.java deleted file mode 100644 index 3063e251e7..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageRemaining.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.wikipedia.dataclient.mwapi.page; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.page.PageRemaining; -import org.wikipedia.page.Section; - -import java.util.Collections; -import java.util.List; - -/** - * Gson POJO for loading remaining page content. - */ -public class MwMobileViewPageRemaining implements PageRemaining { - @SuppressWarnings("unused") @Nullable private MwMobileViewPageLead.Mobileview mobileview; - - @NonNull @Override public List
sections() { - return mobileview == null ? Collections.emptyList() : mobileview.getSections(); - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageClient.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageClient.java deleted file mode 100644 index 94c8c2c95e..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageClient.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.wikipedia.dataclient.mwapi.page; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.ServiceFactory; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.dataclient.page.PageClient; -import org.wikipedia.dataclient.page.PageSummary; - -import io.reactivex.Observable; -import okhttp3.CacheControl; -import okhttp3.Request; -import retrofit2.Response; - -/** - * Retrofit web service client for MediaWiki PHP API. - */ -public class MwPageClient implements PageClient { - - @SuppressWarnings("unchecked") - @NonNull @Override public Observable summary(@NonNull WikiSite wiki, @NonNull String title, @Nullable String referrerUrl) { - return ServiceFactory.get(wiki).getSummary(referrerUrl, title, wiki.languageCode()); - } - - @SuppressWarnings("unchecked") - @NonNull @Override public Observable> lead(@NonNull WikiSite wiki, - @Nullable CacheControl cacheControl, - @Nullable String saveOfflineHeader, - @Nullable String referrerUrl, - @NonNull String title, - int leadImageWidth) { - return ServiceFactory.get(wiki).getLeadSection(cacheControl == null ? null : cacheControl.toString(), - saveOfflineHeader, referrerUrl, title, leadImageWidth, wiki.languageCode()); - } - - @SuppressWarnings("unchecked") - @NonNull @Override public Observable> sections(@NonNull WikiSite wiki, - @Nullable CacheControl cacheControl, - @Nullable String saveOfflineHeader, - @NonNull String title) { - return ServiceFactory.get(wiki).getRemainingSections(cacheControl == null ? null : cacheControl.toString(), - saveOfflineHeader, title, wiki.languageCode()); - } - - @SuppressWarnings("unchecked") - @NonNull @Override public Request sectionsUrl(@NonNull WikiSite wiki, - @Nullable CacheControl cacheControl, - @Nullable String saveOfflineHeader, - @NonNull String title) { - return ServiceFactory.get(wiki).getRemainingSectionsUrl(cacheControl == null ? null : cacheControl.toString(), - saveOfflineHeader, title, wiki.languageCode()).request(); - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/page/MwQueryPageSummary.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/page/MwQueryPageSummary.java deleted file mode 100644 index 5290ccbf4e..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/page/MwQueryPageSummary.java +++ /dev/null @@ -1,83 +0,0 @@ -package org.wikipedia.dataclient.mwapi.page; - -import android.text.TextUtils; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.mwapi.MwQueryResponse; -import org.wikipedia.dataclient.page.PageSummary; -import org.wikipedia.page.Namespace; - -/** - * Useful for link previews coming from MW API. - */ -public class MwQueryPageSummary extends MwQueryResponse implements PageSummary { - @Override @Nullable public String getTitle() { - if (query() == null || query().firstPage() == null) { - return null; - } - return query().firstPage().title(); - } - - @Override @Nullable public String getDisplayTitle() { - if (query() == null || query().firstPage() == null) { - return null; - } - return (query().firstPage().pageProps() != null && !TextUtils.isEmpty(query().firstPage().pageProps().getDisplayTitle())) - ? query().firstPage().pageProps().getDisplayTitle() : query().firstPage().title(); - } - - @Override @Nullable public String getConvertedTitle() { - if (query() == null || query().firstPage() == null) { - return null; - } - return (query().firstPage().convertedTo() != null && !TextUtils.isEmpty(query().firstPage().convertedTo())) - ? query().firstPage().convertedTo() : query().firstPage().title(); - } - - @Override @Nullable - public String getExtract() { - if (query() == null || query().firstPage() == null) { - return null; - } - return query().firstPage().extract(); - } - - @Override @Nullable - public String getExtractHtml() { - return getExtract(); - } - - @Override @Nullable - public String getThumbnailUrl() { - if (query() == null || query().firstPage() == null) { - return null; - } - return query().firstPage().thumbUrl(); - } - - @Override @NonNull - public Namespace getNamespace() { - if (query() == null || query().firstPage() == null) { - return Namespace.MAIN; - } - return query().firstPage().namespace(); - } - - @NonNull @Override - public String getType() { - if (query() != null && query().firstPage() != null && query().firstPage().pageProps() != null - && query().firstPage().pageProps().isDisambiguation()) { - return TYPE_DISAMBIGUATION; - } - return TYPE_STANDARD; - } - - @Override public int getPageId() { - if (query() == null || query().firstPage() == null) { - return 0; - } - return query().firstPage().pageId(); - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/okhttp/AvailableInputStream.java b/data-client/src/main/java/org/wikipedia/dataclient/okhttp/AvailableInputStream.java deleted file mode 100644 index df9e20b76d..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/okhttp/AvailableInputStream.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.wikipedia.dataclient.okhttp; - -import androidx.annotation.NonNull; - -import java.io.IOException; -import java.io.InputStream; - -/** - * This is a subclass of InputStream that implements the available() method reliably enough - * to satisfy WebResourceResponses or other consumers like BufferedInputStream that depend - * on available() to return a meaningful value. - * - * The problem is that the InputStream provided by OkHttp's body().byteStream() returns zero - * when calling available() prior to making any read() calls, which means that it will break - * any consumers that wrap a BufferedInputStream onto this stream, or any other wrapper that - * relies on a consistent implementation of available(). - * - * This is initialized with the original InputStream plus its total size, which must be known - * at the time of instantiation. You may then call the read() and skip() methods in the usual - * way, and then be able to call available() and get the number of bytes left to read. - */ -public class AvailableInputStream extends InputStream { - private InputStream stream; - private long available; - - public AvailableInputStream(InputStream stream, long available) { - this.stream = stream; - this.available = available; - } - - @Override public int read() throws IOException { - decreaseAvailable(1); - return stream.read(); - } - - @Override public int read(@NonNull byte[] b) throws IOException { - int ret = stream.read(b); - if (ret > 0) { - decreaseAvailable(ret); - } - return ret; - } - - @Override public int read(@NonNull byte[] b, int off, int len) throws IOException { - int ret = stream.read(b, off, len); - if (ret > 0) { - decreaseAvailable(ret); - } - return ret; - } - - @Override public long skip(long n) throws IOException { - long ret = stream.skip(n); - if (ret > 0) { - decreaseAvailable(ret); - } - return ret; - } - - @Override public int available() throws IOException { - int ret = stream.available(); - if (ret == 0 && available > 0) { - return (int) available; - } - return ret; - } - - private void decreaseAvailable(long n) { - available -= n; - if (available < 0) { - available = 0; - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/okhttp/HttpStatusException.java b/data-client/src/main/java/org/wikipedia/dataclient/okhttp/HttpStatusException.java deleted file mode 100644 index 272e762e3b..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/okhttp/HttpStatusException.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.wikipedia.dataclient.okhttp; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.ServiceError; -import org.wikipedia.dataclient.restbase.RbServiceError; -import org.wikipedia.util.log.L; - -import java.io.IOException; - -import okhttp3.Response; - -public class HttpStatusException extends IOException { - private final int code; - private final String url; - @Nullable private ServiceError serviceError; - - public HttpStatusException(@NonNull Response rsp) { - this.code = rsp.code(); - this.url = rsp.request().url().uri().toString(); - try { - if (rsp.body() != null && rsp.body().contentType() != null - && rsp.body().contentType().toString().contains("json")) { - serviceError = RbServiceError.create(rsp.body().string()); - } - } catch (Exception e) { - L.e(e); - } - } - - public HttpStatusException(@Nullable ServiceError error) { - serviceError = error; - code = 0; - url = ""; - } - - public int code() { - return code; - } - - public ServiceError serviceError() { - return serviceError; - } - - @Override - public String getMessage() { - String str = "Code: " + Integer.toString(code) + ", URL: " + url; - if (serviceError != null) { - str += ", title: " + serviceError.getTitle() + ", detail: " + serviceError.getDetails(); - } - return str; - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/okhttp/TestStubInterceptor.kt b/data-client/src/main/java/org/wikipedia/dataclient/okhttp/TestStubInterceptor.kt deleted file mode 100644 index e7279c0aae..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/okhttp/TestStubInterceptor.kt +++ /dev/null @@ -1,23 +0,0 @@ -package org.wikipedia.dataclient.okhttp - -import okhttp3.Interceptor -import okhttp3.Response -import java.io.IOException - -class TestStubInterceptor : Interceptor { - interface Callback { - @Throws(IOException::class) - fun getResponse(request: Interceptor.Chain): Response - } - - @Throws(IOException::class) - override fun intercept(chain: Interceptor.Chain): Response { - return if (CALLBACK != null) { - CALLBACK!!.getResponse(chain) - } else chain.proceed(chain.request()) - } - - companion object { - var CALLBACK: Callback? = null - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/okhttp/UnsuccessfulResponseInterceptor.kt b/data-client/src/main/java/org/wikipedia/dataclient/okhttp/UnsuccessfulResponseInterceptor.kt deleted file mode 100644 index 10cf85c57b..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/okhttp/UnsuccessfulResponseInterceptor.kt +++ /dev/null @@ -1,16 +0,0 @@ -package org.wikipedia.dataclient.okhttp - -import okhttp3.Interceptor -import okhttp3.Response -import java.io.IOException - -class UnsuccessfulResponseInterceptor : Interceptor { - @Throws(IOException::class) - override fun intercept(chain: Interceptor.Chain): Response { - val rsp = chain.proceed(chain.request()) - if (rsp.isSuccessful) { - return rsp - } - throw HttpStatusException(rsp) - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/okhttp/util/HttpUrlUtil.java b/data-client/src/main/java/org/wikipedia/dataclient/okhttp/util/HttpUrlUtil.java deleted file mode 100644 index 67ac02b5f7..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/okhttp/util/HttpUrlUtil.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.wikipedia.dataclient.okhttp.util; - -import androidx.annotation.NonNull; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import okhttp3.HttpUrl; - -public final class HttpUrlUtil { - private static final List RESTBASE_SEGMENT_IDENTIFIERS = Arrays.asList("rest_v1", "v1"); - - public static boolean isRestBase(@NonNull HttpUrl url) { - return !Collections.disjoint(url.encodedPathSegments(), RESTBASE_SEGMENT_IDENTIFIERS); - } - - public static boolean isMobileView(@NonNull HttpUrl url) { - return "mobileview".equals(url.queryParameter("action")); - } - - private HttpUrlUtil() { } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/page/PageClient.java b/data-client/src/main/java/org/wikipedia/dataclient/page/PageClient.java deleted file mode 100644 index 11974f7f3e..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/page/PageClient.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.wikipedia.dataclient.page; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.WikiSite; - -import io.reactivex.Observable; -import okhttp3.CacheControl; -import okhttp3.Request; -import retrofit2.Response; - -/** - * Generic interface for Page content service. - * Usually we would use direct Retrofit Callbacks here but since we have two ways of - * getting to the data (MW API and RESTBase) we add this layer of indirection -- until we drop one. - */ -public interface PageClient { - /** - * Gets a page summary for a given title -- for link previews - * - * @param title the page title to be used including prefix - */ - @NonNull Observable summary(@NonNull WikiSite wiki, - @NonNull String title, - @Nullable String referrerUrl); - - /** - * Gets the lead section and initial metadata of a given title. - * - * @param title the page title with prefix if necessary - * @param leadThumbnailWidth one of the bucket widths for the lead image - */ - @NonNull Observable> lead(@NonNull WikiSite wiki, - @Nullable CacheControl cacheControl, - @Nullable String saveOfflineHeader, - @Nullable String referrerUrl, - @NonNull String title, - int leadThumbnailWidth); - - /** - * Gets the remaining sections of a given title. - * - * @param title the page title to be used including prefix - */ - @NonNull Observable> sections(@NonNull WikiSite wiki, - @Nullable CacheControl cacheControl, - @Nullable String saveOfflineHeader, - @NonNull String title); - - /** - * Gets the remaining sections request url of a given title. - * - * @param title the page title to be used including prefix - */ - @NonNull Request sectionsUrl(@NonNull WikiSite wiki, - @Nullable CacheControl cacheControl, - @Nullable String saveOfflineHeader, - @NonNull String title); -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/page/PageLead.java b/data-client/src/main/java/org/wikipedia/dataclient/page/PageLead.java deleted file mode 100644 index bc2102da1c..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/page/PageLead.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.wikipedia.dataclient.page; - -import android.location.Location; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.page.Page; -import org.wikipedia.page.PageTitle; - -/** - * Gson POJI for loading the first stage of page content. - */ -public interface PageLead { - /** Note: before using this check that #hasError is false */ - Page toPage(PageTitle title); - - @NonNull String getLeadSectionContent(); - - @Nullable String getTitlePronunciationUrl(); - @Nullable String getLeadImageUrl(int leadImageWidth); - @Nullable String getThumbUrl(); - @Nullable String getDescription(); - - @Nullable Location getGeo(); -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/page/PageLeadProperties.java b/data-client/src/main/java/org/wikipedia/dataclient/page/PageLeadProperties.java deleted file mode 100644 index 9778d36394..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/page/PageLeadProperties.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.wikipedia.dataclient.page; - -import android.location.Location; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.page.Namespace; -import org.wikipedia.page.Section; - -import java.util.List; - -/** - * The main properties of a page - */ -public interface PageLeadProperties { - - int getId(); - - @NonNull Namespace getNamespace(); - - long getRevision(); - - @Nullable - String getLastModified(); - - int getLanguageCount(); - - @Nullable - String getDisplayTitle(); - - @Nullable - String getTitlePronunciationUrl(); - - @Nullable - Location getGeo(); - - @Nullable - String getRedirected(); - - @Nullable - String getNormalizedTitle(); - - @Nullable - String getWikiBaseItem(); - - @Nullable - String getDescriptionSource(); - - /** - * @return Nullable URL with no scheme. For example, foo.bar.com/ instead of - * http://foo.bar.com/. - */ - @Nullable - String getLeadImageUrl(int leadImageWidth); - - @Nullable - String getThumbUrl(); - - @Nullable - String getLeadImageFileName(); - - @Nullable - String getFirstAllowedEditorRole(); - - boolean isEditable(); - - boolean isMainPage(); - - boolean isDisambiguation(); - - @NonNull List
getSections(); -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/page/PageRemaining.java b/data-client/src/main/java/org/wikipedia/dataclient/page/PageRemaining.java deleted file mode 100644 index d5309f9846..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/page/PageRemaining.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.wikipedia.dataclient.page; - -import androidx.annotation.NonNull; - -import org.wikipedia.page.Section; - -import java.util.List; - -/** - * Gson POJI for loading remaining page content. - */ -public interface PageRemaining { - @NonNull List
sections(); -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/page/PageSummary.java b/data-client/src/main/java/org/wikipedia/dataclient/page/PageSummary.java deleted file mode 100644 index 6ca1d93198..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/page/PageSummary.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.wikipedia.dataclient.page; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.page.Namespace; - -/** - * Represents a summary of a page, useful for page previews. - */ -public interface PageSummary { - String TYPE_STANDARD = "standard"; - String TYPE_DISAMBIGUATION = "disambiguation"; - String TYPE_MAIN_PAGE = "mainpage"; - String TYPE_NO_EXTRACT = "no-extract"; - - @NonNull String getType(); - @Nullable String getTitle(); - @Nullable String getDisplayTitle(); - @Nullable String getConvertedTitle(); - @Nullable String getExtract(); - @Nullable String getExtractHtml(); - @Nullable String getThumbnailUrl(); - @NonNull Namespace getNamespace(); - int getPageId(); -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/page/Protection.java b/data-client/src/main/java/org/wikipedia/dataclient/page/Protection.java deleted file mode 100644 index 561687f770..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/page/Protection.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.wikipedia.dataclient.page; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import java.util.Collections; -import java.util.Set; - -/** Protection settings for a page */ -public class Protection { - @SuppressWarnings("MismatchedReadAndWriteOfArray") @NonNull private Set edit = Collections.emptySet(); - - // TODO should send them all, but callers need to be updated, too, (future patch) - @Nullable - public String getFirstAllowedEditorRole() { - return edit.isEmpty() ? null : edit.iterator().next(); - } - - @NonNull - public Set getEditRoles() { - return Collections.unmodifiableSet(edit); - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/restbase/RbDefinition.java b/data-client/src/main/java/org/wikipedia/dataclient/restbase/RbDefinition.java deleted file mode 100644 index db95a932c2..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/restbase/RbDefinition.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.wikipedia.dataclient.restbase; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.json.annotations.Required; - -import java.util.Map; - -public class RbDefinition { - @Required @NonNull private Map usagesByLang; - - public RbDefinition(@NonNull Map usages) { - usagesByLang = usages; - } - - @Nullable public Usage[] getUsagesForLang(String langCode) { - return usagesByLang.get(langCode); - } - - public static class Usage { - @Required @NonNull private String partOfSpeech; - @Required @NonNull private Definition[] definitions; - - public Usage(@NonNull String partOfSpeech, @NonNull Definition[] definitions) { - this.partOfSpeech = partOfSpeech; - this.definitions = definitions; - } - - @NonNull public String getPartOfSpeech() { - return partOfSpeech; - } - - @NonNull public Definition[] getDefinitions() { - return definitions; - } - } - - public static class Definition { - @Required @NonNull private String definition; - @Nullable private String[] examples; - - public Definition(@NonNull String definition, @Nullable String[] examples) { - this.definition = definition; - this.examples = examples; - } - - @NonNull public String getDefinition() { - return definition; - } - - @Nullable public String[] getExamples() { - return examples; - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/restbase/RbRelatedPages.java b/data-client/src/main/java/org/wikipedia/dataclient/restbase/RbRelatedPages.java deleted file mode 100644 index 5dd8b1d5c2..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/restbase/RbRelatedPages.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.wikipedia.dataclient.restbase; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.restbase.page.RbPageSummary; - -import java.util.ArrayList; -import java.util.List; - -public class RbRelatedPages { - @SuppressWarnings("unused") @Nullable private List pages; - - @Nullable - public List getPages() { - return pages; - } - - @NonNull - public List getPages(int limit) { - List list = new ArrayList<>(); - if (getPages() != null) { - for (RbPageSummary page : getPages()) { - list.add(page); - if (limit == list.size()) { - break; - } - } - } - - return list; - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/restbase/RbServiceError.java b/data-client/src/main/java/org/wikipedia/dataclient/restbase/RbServiceError.java deleted file mode 100644 index 140de7ef0a..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/restbase/RbServiceError.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.wikipedia.dataclient.restbase; - -import androidx.annotation.NonNull; - -import org.apache.commons.lang3.StringUtils; -import org.wikipedia.dataclient.ServiceError; -import org.wikipedia.json.GsonUnmarshaller; -import org.wikipedia.model.BaseModel; - -/** - * Gson POJO for a RESTBase API error. - */ -public class RbServiceError extends BaseModel implements ServiceError { - @SuppressWarnings("unused") private String type; - @SuppressWarnings("unused") private String title; - @SuppressWarnings("unused") private String detail; - @SuppressWarnings("unused") private String method; - @SuppressWarnings("unused") private String uri; - - public static RbServiceError create(@NonNull String rspBody) { - return GsonUnmarshaller.unmarshal(RbServiceError.class, rspBody); - } - - @Override - @NonNull - public String getTitle() { - return StringUtils.defaultString(title); - } - - @Override - @NonNull - public String getDetails() { - return StringUtils.defaultString(detail); - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageClient.java b/data-client/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageClient.java deleted file mode 100644 index fd17107aa5..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageClient.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.wikipedia.dataclient.restbase.page; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.ServiceFactory; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.dataclient.page.PageClient; -import org.wikipedia.dataclient.page.PageSummary; - -import io.reactivex.Observable; -import okhttp3.CacheControl; -import okhttp3.Request; -import retrofit2.Response; - -// todo: consolidate with MwPageClient or just use the Services directly! -/** - * Retrofit web service client for RESTBase Nodejs API. - */ -public class RbPageClient implements PageClient { - - // todo: RbPageSummary should specify an @Required annotation that throws a JsonParseException - // when the body is null rather than requiring all clients to check for a null body. There - // may be some abandoned demo patches that already have this functionality. It should be - // part of the Gson augmentation package and eventually cut into a separate lib. Repeat - // everywhere a Response.body() == null check occurs that throws - @SuppressWarnings("unchecked") - @NonNull @Override public Observable summary(@NonNull WikiSite wiki, @NonNull String title, @Nullable String referrerUrl) { - return ServiceFactory.getRest(wiki).getSummary(referrerUrl, title); - } - - @SuppressWarnings("unchecked") - @NonNull @Override public Observable> lead(@NonNull WikiSite wiki, - @Nullable CacheControl cacheControl, - @Nullable String saveOfflineHeader, - @Nullable String referrerUrl, - @NonNull String title, - int leadThumbnailWidth) { - return ServiceFactory.getRest(wiki).getLeadSection(cacheControl == null ? null : cacheControl.toString(), - saveOfflineHeader, referrerUrl, title); - } - - @SuppressWarnings("unchecked") - @NonNull @Override public Observable> sections(@NonNull WikiSite wiki, - @Nullable CacheControl cacheControl, - @Nullable String saveOfflineHeader, - @NonNull String title) { - return ServiceFactory.getRest(wiki).getRemainingSections(cacheControl == null ? null : cacheControl.toString(), - saveOfflineHeader, title); - } - - @SuppressWarnings("unchecked") - @NonNull @Override public Request sectionsUrl(@NonNull WikiSite wiki, - @Nullable CacheControl cacheControl, - @Nullable String saveOfflineHeader, - @NonNull String title) { - return ServiceFactory.getRest(wiki).getRemainingSectionsUrl(cacheControl == null ? null : cacheControl.toString(), - saveOfflineHeader, title).request(); - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageLead.java b/data-client/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageLead.java deleted file mode 100644 index d13768986a..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageLead.java +++ /dev/null @@ -1,268 +0,0 @@ -package org.wikipedia.dataclient.restbase.page; - -import android.location.Location; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; - -import org.wikipedia.dataclient.page.PageLead; -import org.wikipedia.dataclient.page.PageLeadProperties; -import org.wikipedia.dataclient.page.Protection; -import org.wikipedia.page.GeoTypeAdapter; -import org.wikipedia.page.Namespace; -import org.wikipedia.page.Page; -import org.wikipedia.page.PageProperties; -import org.wikipedia.page.PageTitle; -import org.wikipedia.page.Section; -import org.wikipedia.util.UriUtil; - -import java.util.Collections; -import java.util.List; -import java.util.Set; - -import static org.wikipedia.dataclient.Service.PREFERRED_THUMB_SIZE; - -/** - * Gson POJO for loading the first stage of page content. - */ -@SuppressWarnings("unused") -public class RbPageLead implements PageLead, PageLeadProperties { - private int ns; - private int id; - private long revision; - @Nullable private String lastmodified; - @Nullable private String displaytitle; - @Nullable private String redirected; - @Nullable private String normalizedtitle; - @Nullable @SerializedName("wikibase_item") private String wikiBaseItem; - @Nullable @SerializedName("pronunciation") private TitlePronunciation titlePronunciation; - @Nullable @JsonAdapter(GeoTypeAdapter.class) private Location geo; - private int languagecount; - private boolean editable; - private boolean mainpage; - private boolean disambiguation; - @Nullable private String description; - @Nullable @SerializedName("description_source") private String descriptionSource; - @Nullable private Image image; - @Nullable private Protection protection; - @Nullable private List
sections; - - /** Note: before using this check that #getMobileview != null */ - @Override - public Page toPage(PageTitle title) { - return new Page(adjustPageTitle(title), - getSections(), - toPageProperties(), - true); - } - - PageTitle adjustPageTitle(PageTitle title) { - if (redirected != null) { - // Handle redirects properly. - title = new PageTitle(redirected, title.getWikiSite(), title.getThumbUrl()); - } else if (normalizedtitle != null) { - // We care about the normalized title only if we were not redirected - title = new PageTitle(normalizedtitle, title.getWikiSite(), title.getThumbUrl()); - } - title.setDescription(description); - return title; - } - - @Override - public String getLeadSectionContent() { - if (sections != null) { - return sections.get(0).getContent(); - } else { - return ""; - } - } - - /** Converter */ - private PageProperties toPageProperties() { - return new PageProperties(this); - } - - @Override - public int getId() { - return id; - } - - @NonNull @Override public Namespace getNamespace() { - return Namespace.of(ns); - } - - @Override - public long getRevision() { - return revision; - } - - @Override - @Nullable - public String getLastModified() { - return lastmodified; - } - - @Override - @Nullable - public String getTitlePronunciationUrl() { - return titlePronunciation == null - ? null - : UriUtil.resolveProtocolRelativeUrl(titlePronunciation.getUrl()); - } - - @Override - @Nullable - public Location getGeo() { - return geo; - } - - @Override - public int getLanguageCount() { - return languagecount; - } - - @Override - @Nullable - public String getDisplayTitle() { - return displaytitle; - } - - @Override - @Nullable - public String getRedirected() { - return redirected; - } - - @Override - @Nullable - public String getNormalizedTitle() { - return normalizedtitle; - } - - @Override - @Nullable - public String getWikiBaseItem() { - return wikiBaseItem; - } - - @Override - @Nullable - public String getDescription() { - return description; - } - - @Override - @Nullable - public String getDescriptionSource() { - return descriptionSource; - } - - @Override - @Nullable - public String getLeadImageUrl(int leadImageWidth) { - return image != null ? image.getUrl(leadImageWidth) : null; - } - - @Override - @Nullable - public String getThumbUrl() { - return image != null ? image.getUrl(PREFERRED_THUMB_SIZE) : null; - } - - @Override - @Nullable - public String getLeadImageFileName() { - return image != null ? image.getFileName() : null; - } - - @Override - @Nullable - public String getFirstAllowedEditorRole() { - return protection != null ? protection.getFirstAllowedEditorRole() : null; - } - - @Override - public boolean isEditable() { - return editable; - } - - public Set getEditRoles() { - return protection != null ? protection.getEditRoles() : Collections.emptySet(); - } - - @Override - public boolean isMainPage() { - return mainpage; - } - - @Override - public boolean isDisambiguation() { - return disambiguation; - } - - @Override @NonNull public List
getSections() { - return sections == null ? Collections.emptyList() : sections; - } - - /** - * For the lead image File: page name - */ - public static class TitlePronunciation { - @SuppressWarnings("unused,NullableProblems") @NonNull private String url; - - @NonNull - public String getUrl() { - return url; - } - } - - /** - * For the lead image File: page name - */ - public static class Image { - @SuppressWarnings("unused") @SerializedName("file") private String fileName; - @SuppressWarnings("unused") private ThumbUrls urls; - - public String getFileName() { - return fileName; - } - - @Nullable - public String getUrl(int width) { - return urls != null ? urls.get(width) : null; - } - } - - /** - * For the lead image URLs - */ - public static class ThumbUrls { - private static final int SMALL = 320; - private static final int MEDIUM = 640; - private static final int LARGE = 800; - private static final int XL = 1024; - @SuppressWarnings("unused") @SerializedName("320") private String small; - @SuppressWarnings("unused") @SerializedName("640") private String medium; - @SuppressWarnings("unused") @SerializedName("800") private String large; - @SuppressWarnings("unused") @SerializedName("1024") private String xl; - - @Nullable - public String get(int width) { - switch (width) { - case SMALL: - return small; - case MEDIUM: - return medium; - case LARGE: - return large; - case XL: - return xl; - default: - return null; - } - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageRemaining.java b/data-client/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageRemaining.java deleted file mode 100644 index 6d713d9ae9..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageRemaining.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.wikipedia.dataclient.restbase.page; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.page.PageRemaining; -import org.wikipedia.page.Section; - -import java.util.Collections; -import java.util.List; - -/** - * Gson POJO for loading remaining page content. - */ -public class RbPageRemaining implements PageRemaining { - @SuppressWarnings("unused") @Nullable private List
sections; - - @NonNull @Override public List
sections() { - if (sections == null) { - return Collections.emptyList(); - } - return sections; - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageSummary.java b/data-client/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageSummary.java deleted file mode 100644 index e6d3105b70..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageSummary.java +++ /dev/null @@ -1,136 +0,0 @@ -package org.wikipedia.dataclient.restbase.page; - -import android.text.TextUtils; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.annotations.SerializedName; - -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.dataclient.page.PageSummary; -import org.wikipedia.json.annotations.Required; -import org.wikipedia.page.Namespace; -import org.wikipedia.page.PageTitle; - -/** - * A standardized page summary object constructed by RESTBase, used for link previews and as the - * base class for various feed content (see the FeedPageSummary class). - * - * N.B.: The "title" field here sent by RESTBase is the *normalized* page title. However, in the - * FeedPageSummary subclass, "title" becomes the un-normalized, raw title, and the normalized title - * is sent as "normalizedtitle". - */ -@SuppressWarnings("unused") -public class RbPageSummary implements PageSummary { - @Nullable private String type; - @SuppressWarnings("NullableProblems") @Required @NonNull private String title; - @Nullable private String normalizedtitle; - @SuppressWarnings("NullableProblems") @NonNull private String displaytitle; - @Nullable private NamespaceContainer namespace; - @Nullable private String extract; - @Nullable @SerializedName("extract_html") private String extractHtml; - @Nullable private String description; - @Nullable private Thumbnail thumbnail; - @Nullable @SerializedName("originalimage") private Thumbnail originalImage; - @Nullable private String lang; - private int pageid; - @Nullable @SerializedName("wikibase_item") private String wikiBaseItem; - - @Override @NonNull - public String getTitle() { - return title; - } - - @Override @NonNull - public String getDisplayTitle() { - return displaytitle; - } - - @Override @NonNull - public String getConvertedTitle() { - return title; - } - - @Override @NonNull - public Namespace getNamespace() { - return namespace == null ? Namespace.MAIN : Namespace.of(namespace.id()); - } - - @Override @NonNull - public String getType() { - return TextUtils.isEmpty(type) ? TYPE_STANDARD : type; - } - - @Override @Nullable - public String getExtract() { - return extract; - } - - @Override @Nullable - public String getExtractHtml() { - return extractHtml; - } - - @Override @Nullable - public String getThumbnailUrl() { - return thumbnail == null ? null : thumbnail.getUrl(); - } - - @Nullable - public String getDescription() { - return description; - } - - @NonNull - public String getNormalizedTitle() { - return normalizedtitle == null ? title : normalizedtitle; - } - - @Nullable - public String getOriginalImageUrl() { - return originalImage == null ? null : originalImage.getUrl(); - } - - @Nullable - public String getWikiBaseItem() { - return wikiBaseItem; - } - - @NonNull - public PageTitle getPageTitle(@NonNull WikiSite wiki) { - return new PageTitle(getTitle(), wiki, getThumbnailUrl(), getDescription()); - } - - public int getPageId() { - return pageid; - } - - public String getLang() { - return lang; - } - - /** - * For the thumbnail URL of the page - */ - private static class Thumbnail { - @SuppressWarnings("unused") private String source; - - public String getUrl() { - return source; - } - } - - private static class NamespaceContainer { - @SuppressWarnings("unused") private int id; - @SuppressWarnings("unused") @Nullable private String text; - - public int id() { - return id; - } - } - - @Override public String toString() { - return getTitle(); - } -} diff --git a/data-client/src/main/java/org/wikipedia/dataclient/retrofit/RetrofitException.java b/data-client/src/main/java/org/wikipedia/dataclient/retrofit/RetrofitException.java deleted file mode 100644 index 88e4feced7..0000000000 --- a/data-client/src/main/java/org/wikipedia/dataclient/retrofit/RetrofitException.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.wikipedia.dataclient.retrofit; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import java.io.IOException; - -import retrofit2.Response; - -/** - * This is RetrofitError converted to Retrofit 2 - */ -public class RetrofitException extends RuntimeException { - public static RetrofitException httpError(Response response) { - return httpError(response.raw().request().url().toString(), response); - } - - public static RetrofitException httpError(String url, Response response) { - String message = response.code() + " " + response.message(); - return new RetrofitException(message, url, response.code(), Kind.HTTP, null); - } - - public static RetrofitException httpError(@NonNull okhttp3.Response response) { - String message = response.code() + " " + response.message(); - return new RetrofitException(message, response.request().url().toString(), response.code(), Kind.HTTP, - null); - } - - public static RetrofitException networkError(IOException exception) { - return new RetrofitException(exception.getMessage(), null, null, Kind.NETWORK, exception); - } - - public static RetrofitException unexpectedError(Throwable exception) { - return new RetrofitException(exception.getMessage(), null, null, Kind.UNEXPECTED, exception); - } - - /** Identifies the event kind which triggered a {@link RetrofitException}. */ - public enum Kind { - /** An {@link IOException} occurred while communicating to the server. */ - NETWORK, - /** A non-200 HTTP status code was received from the server. */ - HTTP, - /** - * An internal error occurred while attempting to execute a request. It is best practice to - * re-throw this exception so your application crashes. - */ - UNEXPECTED - } - - private final String url; - @Nullable private final Integer code; - private final Kind kind; - - RetrofitException(String message, String url, @Nullable Integer code, Kind kind, Throwable exception) { - super(message, exception); - this.url = url; - this.code = code; - this.kind = kind; - } - - /** The request URL which produced the error. */ - public String getUrl() { - return url; - } - - /** HTTP status code. */ - @Nullable public Integer getCode() { - return code; - } - - /** The event kind which triggered this error. */ - public Kind getKind() { - return kind; - } -} diff --git a/data-client/src/main/java/org/wikipedia/edit/Edit.java b/data-client/src/main/java/org/wikipedia/edit/Edit.java deleted file mode 100644 index 62edb8d3a6..0000000000 --- a/data-client/src/main/java/org/wikipedia/edit/Edit.java +++ /dev/null @@ -1,79 +0,0 @@ -package org.wikipedia.edit; - -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.mwapi.MwPostResponse; - -public class Edit extends MwPostResponse { - @SuppressWarnings("unused,") @Nullable private Result edit; - - @Nullable public Result edit() { - return edit; - } - - boolean hasEditResult() { - return edit != null; - } - - public class Result { - @SuppressWarnings("unused") @Nullable private String result; - @SuppressWarnings("unused") private int newrevid; - @SuppressWarnings("unused") @Nullable private Captcha captcha; - @SuppressWarnings("unused") @Nullable private String code; - @SuppressWarnings("unused") @Nullable private String info; - @SuppressWarnings("unused") @Nullable private String warning; - @SuppressWarnings("unused") @Nullable private String spamblacklist; - - @Nullable String status() { - return result; - } - - public int newRevId() { - return newrevid; - } - - public boolean editSucceeded() { - return "Success".equals(result); - } - - @Nullable String captchaId() { - return captcha == null ? null : captcha.id(); - } - - public boolean hasEditErrorCode() { - return code != null; - } - - boolean hasCaptchaResponse() { - return captcha != null; - } - - @Nullable public String code() { - return code; - } - - @Nullable public String info() { - return info; - } - - @Nullable public String warning() { - return warning; - } - - @Nullable String spamblacklist() { - return spamblacklist; - } - - boolean hasSpamBlacklistResponse() { - return spamblacklist != null; - } - } - - private static class Captcha { - @SuppressWarnings("unused") @Nullable private String id; - - @Nullable String id() { - return id; - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/edit/EditAbuseFilterResult.java b/data-client/src/main/java/org/wikipedia/edit/EditAbuseFilterResult.java deleted file mode 100644 index f8701c47e6..0000000000 --- a/data-client/src/main/java/org/wikipedia/edit/EditAbuseFilterResult.java +++ /dev/null @@ -1,79 +0,0 @@ -package org.wikipedia.edit; - -import android.os.Parcel; -import android.os.Parcelable; - -import androidx.annotation.Nullable; - -public class EditAbuseFilterResult extends EditResult { - static final int TYPE_WARNING = 1; - static final int TYPE_ERROR = 2; - - @Nullable private final String code; - @Nullable private final String info; - @Nullable private final String warning; - - EditAbuseFilterResult(@Nullable String code, @Nullable String info, @Nullable String warning) { - super("Failure"); - this.code = code; - this.info = info; - this.warning = warning; - } - - private EditAbuseFilterResult(Parcel in) { - super(in); - code = in.readString(); - info = in.readString(); - warning = in.readString(); - } - - @Nullable public String getCode() { - return code; - } - - @Nullable public String getInfo() { - return info; - } - - @Nullable public String getWarning() { - return warning; - } - - @Override public void writeToParcel(Parcel dest, int flags) { - super.writeToParcel(dest, flags); - dest.writeString(code); - dest.writeString(info); - dest.writeString(warning); - } - - public int getType() { - if (code != null && code.startsWith("abusefilter-warning")) { - return TYPE_WARNING; - } else if (code != null && code.startsWith("abusefilter-disallowed")) { - return TYPE_ERROR; - } else if (info != null && info.startsWith("Hit AbuseFilter")) { - // This case is here because, unfortunately, an admin can create an abuse filter which - // emits an arbitrary error code over the API. - // TODO: More properly handle the case where the AbuseFilter throws an arbitrary error. - // Oh, and, you know, also fix the AbuseFilter API to not throw arbitrary error codes. - return TYPE_ERROR; - } else { - // We have no understanding of what kind of abuse filter response we got. It's safest - // to simply treat these as an error. - return TYPE_ERROR; - } - } - - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - @Override - public EditAbuseFilterResult createFromParcel(Parcel in) { - return new EditAbuseFilterResult(in); - } - - @Override - public EditAbuseFilterResult[] newArray(int size) { - return new EditAbuseFilterResult[size]; - } - }; -} diff --git a/data-client/src/main/java/org/wikipedia/edit/EditClient.java b/data-client/src/main/java/org/wikipedia/edit/EditClient.java deleted file mode 100644 index 67b587ef0a..0000000000 --- a/data-client/src/main/java/org/wikipedia/edit/EditClient.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.wikipedia.edit; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.VisibleForTesting; - -import org.wikipedia.captcha.CaptchaResult; -import org.wikipedia.dataclient.Service; -import org.wikipedia.dataclient.ServiceFactory; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.page.PageTitle; - -import java.io.IOException; - -import retrofit2.Call; -import retrofit2.Response; - -public class EditClient { - public interface Callback { - void success(@NonNull Call call, @NonNull EditResult result); - void failure(@NonNull Call call, @NonNull Throwable caught); - } - - @SuppressWarnings("checkstyle:parameternumber") - public Call request(@NonNull WikiSite wiki, @NonNull PageTitle title, int section, - @NonNull String text, @NonNull String token, @NonNull String summary, - @Nullable String baseTimeStamp, boolean loggedIn, @Nullable String captchaId, - @Nullable String captchaWord, @NonNull Callback cb) { - return request(ServiceFactory.get(wiki), title, section, text, token, summary, - baseTimeStamp, loggedIn, captchaId, captchaWord, cb); - } - - @VisibleForTesting @SuppressWarnings("checkstyle:parameternumber") - Call request(@NonNull Service service, @NonNull PageTitle title, int section, - @NonNull String text, @NonNull String token, @NonNull String summary, - @Nullable String baseTimeStamp, boolean loggedIn, @Nullable String captchaId, - @Nullable String captchaWord, @NonNull final Callback cb) { - Call call = service.postEditSubmit(title.getPrefixedText(), section, summary, loggedIn ? "user" : null, - text, baseTimeStamp, token, captchaId, captchaWord); - call.enqueue(new retrofit2.Callback() { - @Override - public void onResponse(@NonNull Call call, @NonNull Response response) { - if (response.body().hasEditResult()) { - handleEditResult(response.body().edit(), call, cb); - } else { - cb.failure(call, new IOException("An unknown error occurred.")); - } - } - - @Override - public void onFailure(@NonNull Call call, @NonNull Throwable t) { - cb.failure(call, t); - } - }); - return call; - } - - private void handleEditResult(@NonNull Edit.Result result, @NonNull Call call, - @NonNull Callback cb) { - if (result.editSucceeded()) { - cb.success(call, new EditSuccessResult(result.newRevId())); - } else if (result.hasEditErrorCode()) { - cb.success(call, new EditAbuseFilterResult(result.code(), result.info(), result.warning())); - } else if (result.hasSpamBlacklistResponse()) { - cb.success(call, new EditSpamBlacklistResult(result.spamblacklist())); - } else if (result.hasCaptchaResponse()) { - cb.success(call, new CaptchaResult(result.captchaId())); - } else { - cb.failure(call, new IOException("Received unrecognized edit response")); - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/edit/EditSpamBlacklistResult.java b/data-client/src/main/java/org/wikipedia/edit/EditSpamBlacklistResult.java deleted file mode 100644 index 3ca5528662..0000000000 --- a/data-client/src/main/java/org/wikipedia/edit/EditSpamBlacklistResult.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.wikipedia.edit; - -import android.os.Parcel; -import android.os.Parcelable; - -public class EditSpamBlacklistResult extends EditResult { - private final String domain; - public EditSpamBlacklistResult(String domain) { - super("Failure"); - this.domain = domain; - } - - protected EditSpamBlacklistResult(Parcel in) { - super(in); - domain = in.readString(); - } - - public String getDomain() { - return domain; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - super.writeToParcel(dest, flags); - dest.writeString(domain); - } - - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - @Override - public EditSpamBlacklistResult createFromParcel(Parcel in) { - return new EditSpamBlacklistResult(in); - } - - @Override - public EditSpamBlacklistResult[] newArray(int size) { - return new EditSpamBlacklistResult[size]; - } - }; -} diff --git a/data-client/src/main/java/org/wikipedia/edit/EditSuccessResult.java b/data-client/src/main/java/org/wikipedia/edit/EditSuccessResult.java deleted file mode 100644 index dafe06a093..0000000000 --- a/data-client/src/main/java/org/wikipedia/edit/EditSuccessResult.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.wikipedia.edit; - -import android.os.Parcel; -import android.os.Parcelable; - -public class EditSuccessResult extends EditResult { - private final int revID; - public EditSuccessResult(int revID) { - super("Success"); - this.revID = revID; - } - - private EditSuccessResult(Parcel in) { - super(in); - revID = in.readInt(); - } - - public int getRevID() { - return revID; - } - - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - @Override - public EditSuccessResult createFromParcel(Parcel in) { - return new EditSuccessResult(in); - } - - @Override - public EditSuccessResult[] newArray(int size) { - return new EditSuccessResult[size]; - } - }; -} diff --git a/data-client/src/main/java/org/wikipedia/edit/preview/EditPreview.java b/data-client/src/main/java/org/wikipedia/edit/preview/EditPreview.java deleted file mode 100644 index f0bf23e8cb..0000000000 --- a/data-client/src/main/java/org/wikipedia/edit/preview/EditPreview.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.wikipedia.edit.preview; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.annotations.SerializedName; - -import org.wikipedia.dataclient.mwapi.MwPostResponse; - -public class EditPreview extends MwPostResponse { - @SuppressWarnings("unused") @Nullable private Parse parse; - - boolean hasPreviewResult() { - return parse != null; - } - - @Nullable String result() { - return parse != null ? parse.text() : null; - } - - private static class Parse { - @SuppressWarnings("unused,NullableProblems") @NonNull private String title; - @SuppressWarnings("unused") @SerializedName("pageid") private int pageId; - @SuppressWarnings("unused,NullableProblems") @NonNull private String text; - @NonNull String text() { - return text; - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContent.java b/data-client/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContent.java deleted file mode 100644 index 5e0ae7d39b..0000000000 --- a/data-client/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContent.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.wikipedia.feed.aggregated; - -import androidx.annotation.Nullable; - -import com.google.gson.annotations.SerializedName; - -import org.wikipedia.dataclient.restbase.page.RbPageSummary; -import org.wikipedia.feed.image.FeaturedImage; -import org.wikipedia.feed.mostread.MostReadArticles; -import org.wikipedia.feed.news.NewsItem; -import org.wikipedia.feed.onthisday.OnThisDay; - -import java.util.List; - -public class AggregatedFeedContent { - @SuppressWarnings("unused") @Nullable private RbPageSummary tfa; - @SuppressWarnings("unused") @Nullable private List news; - @SuppressWarnings("unused") @SerializedName("mostread") @Nullable private MostReadArticles mostRead; - @SuppressWarnings("unused") @Nullable private FeaturedImage image; - @SuppressWarnings("unused") @Nullable private List onthisday; - - @Nullable - public List onthisday() { - return onthisday; - } - - @Nullable - public RbPageSummary tfa() { - return tfa; - } - - @Nullable - List news() { - return news; - } - - @Nullable - MostReadArticles mostRead() { - return mostRead; - } - - @Nullable - FeaturedImage potd() { - return image; - } -} diff --git a/data-client/src/main/java/org/wikipedia/feed/announcement/Announcement.java b/data-client/src/main/java/org/wikipedia/feed/announcement/Announcement.java deleted file mode 100644 index ead59755fa..0000000000 --- a/data-client/src/main/java/org/wikipedia/feed/announcement/Announcement.java +++ /dev/null @@ -1,164 +0,0 @@ -package org.wikipedia.feed.announcement; - -import android.text.TextUtils; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.annotations.SerializedName; - -import org.wikipedia.json.annotations.Required; -import org.wikipedia.model.BaseModel; -import org.wikipedia.util.DateUtil; - -import java.text.ParseException; -import java.util.Collections; -import java.util.Date; -import java.util.List; - -import static org.apache.commons.lang3.StringUtils.defaultString; - -public class Announcement extends BaseModel { - public static final String SURVEY = "survey"; - public static final String FUNDRAISING = "fundraising"; - - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String id; - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String type; - @SuppressWarnings("unused,NullableProblems") @SerializedName("start_time") @Required @NonNull private String startTime; - @SuppressWarnings("unused,NullableProblems") @SerializedName("end_time") @Required @NonNull private String endTime; - @SuppressWarnings("unused") @NonNull private List platforms = Collections.emptyList(); - @SuppressWarnings("unused") @NonNull private List countries = Collections.emptyList(); - @SuppressWarnings("unused") @SerializedName("caption_HTML") @Nullable private String footerCaption; - @SuppressWarnings("unused") @SerializedName("image_url") @Nullable private String imageUrl; - @SuppressWarnings("unused") @SerializedName("image_height") @Nullable private String imageHeight; - @SuppressWarnings("unused") @SerializedName("logged_in") @Nullable private Boolean loggedIn; - @SuppressWarnings("unused") @SerializedName("reading_list_sync_enabled") @Nullable private Boolean readingListSyncEnabled; - @SuppressWarnings("unused") @Nullable private Boolean beta; - @SuppressWarnings("unused") @SerializedName("min_version") @Nullable private String minVersion; - @SuppressWarnings("unused") @SerializedName("max_version") @Nullable private String maxVersion; - - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String text; - @SuppressWarnings("unused") @Nullable private Action action; - @SuppressWarnings("unused") @SerializedName("negative_text") @Nullable private String negativeText; - - public Announcement() { } - - public Announcement(@NonNull String id, @NonNull String text, @NonNull String imageUrl, - @NonNull Action action, @NonNull String negativeText) { - this.id = id; - this.text = text; - this.imageUrl = imageUrl; - this.action = action; - this.negativeText = negativeText; - } - - @NonNull String id() { - return id; - } - - @NonNull String type() { - return type; - } - - @Nullable Date startTime() { - try { - return DateUtil.iso8601DateParse(startTime); - } catch (ParseException e) { - return null; - } - } - - @Nullable Date endTime() { - try { - return DateUtil.iso8601DateParse(endTime); - } catch (ParseException e) { - return null; - } - } - - @NonNull List platforms() { - return platforms; - } - - @NonNull List countries() { - return countries; - } - - @NonNull String text() { - return text; - } - - boolean hasAction() { - return action != null; - } - - @NonNull String actionTitle() { - return action != null ? action.title() : ""; - } - - @NonNull String actionUrl() { - return action != null ? action.url() : ""; - } - - boolean hasFooterCaption() { - return !TextUtils.isEmpty(footerCaption); - } - - @NonNull String footerCaption() { - return defaultString(footerCaption); - } - - boolean hasImageUrl() { - return !TextUtils.isEmpty(imageUrl); - } - - @NonNull String imageUrl() { - return defaultString(imageUrl); - } - - @NonNull String imageHeight() { - return defaultString(imageHeight); - } - - @Nullable String negativeText() { - return negativeText; - } - - @Nullable Boolean loggedIn() { - return loggedIn; - } - - @Nullable Boolean readingListSyncEnabled() { - return readingListSyncEnabled; - } - - @Nullable Boolean beta() { - return beta; - } - - @Nullable String minVersion() { - return minVersion; - } - - @Nullable String maxVersion() { - return maxVersion; - } - - public static class Action { - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String title; - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String url; - - public Action(@NonNull String title, @NonNull String url) { - this.title = title; - this.url = url; - } - - @NonNull String title() { - return title; - } - - @NonNull String url() { - return url; - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/feed/announcement/AnnouncementList.java b/data-client/src/main/java/org/wikipedia/feed/announcement/AnnouncementList.java deleted file mode 100644 index d512274e54..0000000000 --- a/data-client/src/main/java/org/wikipedia/feed/announcement/AnnouncementList.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.wikipedia.feed.announcement; - -import androidx.annotation.NonNull; - -import com.google.gson.annotations.SerializedName; - -import org.wikipedia.model.BaseModel; - -import java.util.Collections; -import java.util.List; - -public class AnnouncementList extends BaseModel { - - @SuppressWarnings("unused") @SerializedName("announce") @NonNull private List items = Collections.emptyList(); - - @NonNull - List items() { - return items; - } - -} diff --git a/data-client/src/main/java/org/wikipedia/feed/announcement/GeoIPCookie.java b/data-client/src/main/java/org/wikipedia/feed/announcement/GeoIPCookie.java deleted file mode 100644 index 48088eb54a..0000000000 --- a/data-client/src/main/java/org/wikipedia/feed/announcement/GeoIPCookie.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.wikipedia.feed.announcement; - -import android.location.Location; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -public class GeoIPCookie { - - @NonNull private final String country; - @NonNull private final String region; - @NonNull private final String city; - @Nullable private final Location location; - - GeoIPCookie(@NonNull String country, @NonNull String region, @NonNull String city, @Nullable Location location) { - this.country = country; - this.region = region; - this.city = city; - this.location = location; - } - - @NonNull - public String country() { - return country; - } - - @NonNull - public String region() { - return region; - } - - @NonNull - public String city() { - return city; - } - - @Nullable - public Location location() { - return location; - } -} diff --git a/data-client/src/main/java/org/wikipedia/feed/announcement/GeoIPCookieUnmarshaller.java b/data-client/src/main/java/org/wikipedia/feed/announcement/GeoIPCookieUnmarshaller.java deleted file mode 100644 index 4b762ad360..0000000000 --- a/data-client/src/main/java/org/wikipedia/feed/announcement/GeoIPCookieUnmarshaller.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.wikipedia.feed.announcement; - -import android.location.Location; -import android.text.TextUtils; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.VisibleForTesting; - -import org.wikipedia.dataclient.SharedPreferenceCookieManager; - -/* -This currently supports the "v4" version of the GeoIP cookie. -For some info about the format and contents of the cookie: -https://phabricator.wikimedia.org/diffusion/ECNO/browse/master/resources/subscribing/ext.centralNotice.geoIP.js - */ -public final class GeoIPCookieUnmarshaller { - private static final String COOKIE_NAME = "GeoIP"; - - private enum Component { - COUNTRY, REGION, CITY, LATITUDE, LONGITUDE, VERSION - } - - @NonNull - public static GeoIPCookie unmarshal() { - return unmarshal(SharedPreferenceCookieManager.getInstance().getCookieByName(COOKIE_NAME)); - } - - @VisibleForTesting - @NonNull - static GeoIPCookie unmarshal(@Nullable String cookie) throws IllegalArgumentException { - if (TextUtils.isEmpty(cookie)) { - throw new IllegalArgumentException("Cookie is empty."); - } - String[] components = cookie.split(":"); - if (components.length < Component.values().length) { - throw new IllegalArgumentException("Cookie is malformed."); - } else if (!components[Component.VERSION.ordinal()].equals("v4")) { - throw new IllegalArgumentException("Incorrect cookie version."); - } - Location location = null; - if (!TextUtils.isEmpty(components[Component.LATITUDE.ordinal()]) - && !TextUtils.isEmpty(components[Component.LONGITUDE.ordinal()])) { - location = new Location(""); - try { - location.setLatitude(Double.parseDouble(components[Component.LATITUDE.ordinal()])); - location.setLongitude(Double.parseDouble(components[Component.LONGITUDE.ordinal()])); - } catch (NumberFormatException e) { - throw new IllegalArgumentException("Location is malformed."); - } - } - return new GeoIPCookie(components[Component.COUNTRY.ordinal()], - components[Component.REGION.ordinal()], - components[Component.CITY.ordinal()], - location); - } - - private GeoIPCookieUnmarshaller() { - } -} diff --git a/data-client/src/main/java/org/wikipedia/feed/configure/FeedAvailability.java b/data-client/src/main/java/org/wikipedia/feed/configure/FeedAvailability.java deleted file mode 100644 index 6803690193..0000000000 --- a/data-client/src/main/java/org/wikipedia/feed/configure/FeedAvailability.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.wikipedia.feed.configure; - -import androidx.annotation.NonNull; - -import com.google.gson.annotations.SerializedName; - -import java.util.Collections; -import java.util.List; - -@SuppressWarnings("unused") -public class FeedAvailability { - @SerializedName("todays_featured_article") private List featuredArticle; - @SerializedName("most_read") private List mostRead; - @SerializedName("picture_of_the_day") private List featuredPicture; - @SerializedName("in_the_news") private List news; - @SerializedName("on_this_day") private List onThisDay; - - @NonNull public List featuredArticle() { - return featuredArticle != null ? featuredArticle : Collections.emptyList(); - } - - @NonNull public List mostRead() { - return mostRead != null ? mostRead : Collections.emptyList(); - } - - @NonNull public List featuredPicture() { - return featuredPicture != null ? featuredPicture : Collections.emptyList(); - } - - @NonNull public List news() { - return news != null ? news : Collections.emptyList(); - } - - @NonNull public List onThisDay() { - return onThisDay != null ? onThisDay : Collections.emptyList(); - } -} diff --git a/data-client/src/main/java/org/wikipedia/feed/image/FeaturedImage.java b/data-client/src/main/java/org/wikipedia/feed/image/FeaturedImage.java deleted file mode 100644 index 1e97e8f791..0000000000 --- a/data-client/src/main/java/org/wikipedia/feed/image/FeaturedImage.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.wikipedia.feed.image; - -import androidx.annotation.NonNull; - -import org.wikipedia.gallery.GalleryItem; -import org.wikipedia.gallery.ImageInfo; -import org.wikipedia.json.PostProcessingTypeAdapter; -import org.wikipedia.json.annotations.Required; - -public final class FeaturedImage extends GalleryItem implements PostProcessingTypeAdapter.PostProcessable { - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String title; - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private ImageInfo image; - - private int age; - - public void setAge(int age) { - this.age = age; - } - - public int getAge() { - return age; - } - - @NonNull - public String title() { - return title; - } - - @Override - public void postProcess() { - setTitle(title); - getOriginal().setSource(image.getSource()); - } -} diff --git a/data-client/src/main/java/org/wikipedia/feed/model/UtcDate.java b/data-client/src/main/java/org/wikipedia/feed/model/UtcDate.java deleted file mode 100644 index 9bfc584100..0000000000 --- a/data-client/src/main/java/org/wikipedia/feed/model/UtcDate.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.wikipedia.feed.model; - -import androidx.annotation.NonNull; - -import java.util.Calendar; - -import static java.util.TimeZone.getTimeZone; - -public class UtcDate { - @NonNull private Calendar cal; - @NonNull private String year; - @NonNull private String month; - @NonNull private String date; - - public UtcDate(int age) { - this.cal = Calendar.getInstance(getTimeZone("UTC")); - cal.add(Calendar.DATE, -age); - this.year = Integer.toString(cal.get(Calendar.YEAR)); - this.month = pad(Integer.toString(cal.get(Calendar.MONTH) + 1)); - this.date = pad(Integer.toString(cal.get(Calendar.DATE))); - } - - @NonNull - public Calendar baseCalendar() { - return cal; - } - - @NonNull - public String year() { - return year; - } - - @NonNull - public String month() { - return month; - } - - @NonNull - public String date() { - return date; - } - - private String pad(String value) { - if (value.length() == 1) { - return "0" + value; - } - return value; - } -} diff --git a/data-client/src/main/java/org/wikipedia/feed/mostread/MostReadArticles.java b/data-client/src/main/java/org/wikipedia/feed/mostread/MostReadArticles.java deleted file mode 100644 index 6c84af4887..0000000000 --- a/data-client/src/main/java/org/wikipedia/feed/mostread/MostReadArticles.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.wikipedia.feed.mostread; - -import androidx.annotation.NonNull; - -import org.wikipedia.dataclient.restbase.page.RbPageSummary; -import org.wikipedia.json.annotations.Required; - -import java.util.Date; -import java.util.List; - -public final class MostReadArticles { - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private Date date; - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private List articles; - - @NonNull public Date date() { - return date; - } - - @NonNull public List articles() { - return articles; - } -} diff --git a/data-client/src/main/java/org/wikipedia/feed/news/NewsItem.java b/data-client/src/main/java/org/wikipedia/feed/news/NewsItem.java deleted file mode 100644 index 8025838ddb..0000000000 --- a/data-client/src/main/java/org/wikipedia/feed/news/NewsItem.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.wikipedia.feed.news; - -import android.net.Uri; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.apache.commons.lang3.StringUtils; -import org.wikipedia.dataclient.restbase.page.RbPageSummary; -import org.wikipedia.json.annotations.Required; - -import java.util.Collections; -import java.util.List; - -import static org.wikipedia.dataclient.Service.PREFERRED_THUMB_SIZE; -import static org.wikipedia.util.ImageUrlUtil.getUrlForSize; - -public final class NewsItem { - @SuppressWarnings("unused") @Required @Nullable private String story; - @SuppressWarnings("unused") @Nullable private List links - = Collections.emptyList(); - - @NonNull String story() { - return StringUtils.defaultString(story); - } - - @NonNull public List links() { - return links != null ? links : Collections.emptyList(); - } - - @Nullable public Uri thumb() { - Uri uri = getFirstImageUri(links()); - return uri != null ? getUrlForSize(uri, PREFERRED_THUMB_SIZE) : null; - } - - @Nullable Uri featureImage() { - return getFirstImageUri(links()); - } - - /** - * Iterate through the CardPageItems associated with the news story's links and return the first - * thumb URI found. - */ - @Nullable private Uri getFirstImageUri(List links) { - for (RbPageSummary link : links) { - if (link == null) { - continue; - } - String thumbnail = link.getThumbnailUrl(); - if (thumbnail != null) { - return Uri.parse(thumbnail); - } - } - return null; - } -} diff --git a/data-client/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java b/data-client/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java deleted file mode 100644 index 92f3f5b3d3..0000000000 --- a/data-client/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.wikipedia.feed.onthisday; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.apache.commons.lang3.StringUtils; -import org.wikipedia.dataclient.restbase.page.RbPageSummary; -import org.wikipedia.json.annotations.Required; -import org.wikipedia.util.StringUtil; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -public class OnThisDay { - - @SuppressWarnings("unused") @Nullable private List selected; - @SuppressWarnings("unused") @Nullable private List events; - @SuppressWarnings("unused") @Nullable private List births; - @SuppressWarnings("unused") @Nullable private List deaths; - @SuppressWarnings("unused") @Nullable private List holidays; - - @NonNull public List selectedEvents() { - return selected != null ? selected : Collections.emptyList(); - } - - @NonNull public List events() { - ArrayList allEvents = new ArrayList<>(); - if (events != null) { - allEvents.addAll(events); - } - if (births != null) { - allEvents.addAll(births); - } - if (deaths != null) { - allEvents.addAll(deaths); - } - if (holidays != null) { - allEvents.addAll(holidays); - } - Collections.sort(allEvents, (e1, e2) -> Integer.compare(e2.year(), e1.year())); - return allEvents; - } - - public static class Event { - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String text; - @SuppressWarnings("unused") private int year; - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private List pages; - - @NonNull - public CharSequence text() { - List pageTitles = new ArrayList<>(); - for (RbPageSummary page : pages) { - pageTitles.add((StringUtil.fromHtml(StringUtils.defaultString(page.getNormalizedTitle()))).toString()); - } - return StringUtil.boldenSubstrings(text, pageTitles); - } - - public int year() { - return year; - } - - @Nullable - public List pages() { - Iterator iterator = pages.iterator(); - while ((iterator.hasNext())) { - if (iterator.next() == null) { - iterator.remove(); - } - } - return pages; - } - } - - public void setSelected(@Nullable List selected) { - this.selected = selected; - } - -} diff --git a/data-client/src/main/java/org/wikipedia/gallery/ArtistInfo.java b/data-client/src/main/java/org/wikipedia/gallery/ArtistInfo.java deleted file mode 100644 index ddacb2bd7f..0000000000 --- a/data-client/src/main/java/org/wikipedia/gallery/ArtistInfo.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.wikipedia.gallery; - -import androidx.annotation.Nullable; - -import com.google.gson.annotations.SerializedName; - -public class ArtistInfo extends TextInfo { - - @SuppressWarnings("unused,NullableProblems") @Nullable private String name; - @SuppressWarnings("unused,NullableProblems") @Nullable @SerializedName("user_page") private String userPage; - - @Nullable - public String getName() { - return name; - } -} diff --git a/data-client/src/main/java/org/wikipedia/gallery/Gallery.java b/data-client/src/main/java/org/wikipedia/gallery/Gallery.java deleted file mode 100644 index 4abf8b08ae..0000000000 --- a/data-client/src/main/java/org/wikipedia/gallery/Gallery.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.wikipedia.gallery; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import java.util.ArrayList; -import java.util.List; - -public class Gallery { - @SuppressWarnings("unused,NullableProblems") @Nullable private String revision; - @SuppressWarnings("unused,NullableProblems") @Nullable private String tid; - @SuppressWarnings("unused") @Nullable private List items; - - @Nullable - public List getAllItems() { - return items; - } - - @NonNull - public List getItems(@NonNull String... types) { - List list = new ArrayList<>(); - if (items != null) { - for (GalleryItem item : items) { - if (item.isShowInGallery()) { - for (String type : types) { - if (item.getType().contains(type)) { - list.add(item); - } - } - } - } - } - return list; - } -} diff --git a/data-client/src/main/java/org/wikipedia/gallery/GalleryItem.java b/data-client/src/main/java/org/wikipedia/gallery/GalleryItem.java deleted file mode 100644 index c129004561..0000000000 --- a/data-client/src/main/java/org/wikipedia/gallery/GalleryItem.java +++ /dev/null @@ -1,194 +0,0 @@ -package org.wikipedia.gallery; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.annotations.SerializedName; - -import org.apache.commons.lang3.StringUtils; -import org.wikipedia.dataclient.Service; -import org.wikipedia.util.ImageUrlUtil; -import org.wikipedia.util.StringUtil; - -import java.io.Serializable; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("unused") -public class GalleryItem implements Serializable { - public static final int PREFERRED_GALLERY_IMAGE_SIZE = 1280; - - @SerializedName("section_id") private int sectionId; - @SuppressWarnings("NullableProblems") @NonNull private String type; - @Nullable @SerializedName("audio_type") private String audioType; - @Nullable private TextInfo caption; - private boolean showInGallery; - @SuppressWarnings("NullableProblems") @NonNull private Titles titles; - @Nullable private ImageInfo thumbnail; - @Nullable private ImageInfo original; - @Nullable private List sources; - @Nullable @SerializedName("file_page") private String filePage; - @Nullable private ArtistInfo artist; - private double duration; - @SuppressWarnings("NullableProblems") @NonNull private ImageLicense license; - @Nullable private TextInfo description; - @Nullable @SerializedName("wb_entity_id") private String entityId; - @Nullable @SerializedName("structured") private StructuredData structuredData; - - public GalleryItem() { - } - - public GalleryItem(@NonNull String title) { - this.type = "*/*"; - this.titles = new Titles(title, StringUtil.addUnderscores(title), title); - this.original = new ImageInfo(); - this.thumbnail = new ImageInfo(); - this.description = new TextInfo(); - this.license = new ImageLicense(); - } - - @NonNull - public String getType() { - return StringUtils.defaultString(type); - } - - @NonNull - public String getAudioType() { - return StringUtils.defaultString(audioType); - } - - @Nullable - public TextInfo getCaption() { - return caption; - } - - public boolean isShowInGallery() { - return showInGallery; - } - - @NonNull - public Titles getTitles() { - return titles; - } - - protected void setTitle(@NonNull String title) { - titles = new Titles(title, StringUtil.addUnderscores(title), title); - } - - @NonNull - public ImageInfo getThumbnail() { - if (thumbnail == null) { - thumbnail = new ImageInfo(); - } - return thumbnail; - } - - @NonNull - public String getThumbnailUrl() { - return getThumbnail().getSource(); - } - - @NonNull - public String getPreferredSizedImageUrl() { - return ImageUrlUtil.getUrlForPreferredSize(getThumbnailUrl(), PREFERRED_GALLERY_IMAGE_SIZE); - } - - @NonNull - public ImageInfo getOriginal() { - if (original == null) { - original = new ImageInfo(); - } - return original; - } - - @Nullable - public List getSources() { - return sources; - } - - @Nullable - public VideoInfo getOriginalVideoSource() { - // The getSources has different levels of source, - // should have an option that allows user to chose which quality to play - return sources == null || sources.size() == 0 - ? null : sources.get(sources.size() - 1); - } - - public double getDuration() { - return duration; - } - - @NonNull - public String getFilePage() { - // return the base url of Wiki Commons for WikiSite() if the file_page is null. - return filePage == null ? Service.COMMONS_URL : StringUtils.defaultString(filePage); - } - - public void setFilePage(@NonNull String filePage) { - this.filePage = filePage; - } - - @Nullable - public ArtistInfo getArtist() { - return artist; - } - - public void setArtist(@Nullable ArtistInfo artist) { - this.artist = artist; - } - - @NonNull - public ImageLicense getLicense() { - return license; - } - - public void setLicense(@NonNull ImageLicense license) { - this.license = license; - } - - @NonNull - public TextInfo getDescription() { - if (description == null) { - description = new TextInfo(); - } - return description; - } - - @NonNull - public Map getStructuredCaptions() { - return (structuredData != null && structuredData.captions != null) ? structuredData.captions : Collections.emptyMap(); - } - - public static class Titles implements Serializable { - @Nullable private String canonical; - @Nullable private String normalized; - @Nullable private String display; - - Titles(@NonNull String display, @NonNull String canonical, @NonNull String normalized) { - this.display = display; - this.canonical = canonical; - this.normalized = normalized; - } - - @NonNull - public String getCanonical() { - return StringUtils.defaultString(canonical); - } - - @NonNull - public String getNormalized() { - return StringUtils.defaultString(normalized); - } - - @NonNull - public String getDisplay() { - return StringUtils.defaultString(display); - } - } - - public static class StructuredData implements Serializable { - @Nullable private HashMap captions; - } -} diff --git a/data-client/src/main/java/org/wikipedia/gallery/ImageLicense.java b/data-client/src/main/java/org/wikipedia/gallery/ImageLicense.java deleted file mode 100644 index ea882fa113..0000000000 --- a/data-client/src/main/java/org/wikipedia/gallery/ImageLicense.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.wikipedia.gallery; - -import androidx.annotation.NonNull; - -import com.google.gson.annotations.SerializedName; - -import java.io.Serializable; -import java.util.Locale; - -import static org.apache.commons.lang3.StringUtils.defaultString; - -public class ImageLicense implements Serializable { - private static final String CREATIVE_COMMONS_PREFIX = "cc"; - private static final String PUBLIC_DOMAIN_PREFIX = "pd"; - private static final String CC_BY_SA = "ccbysa"; - - @NonNull @SerializedName("type") private final String license; - @NonNull @SerializedName("code") private final String licenseShortName; - @NonNull @SerializedName("url") private final String licenseUrl; - - public ImageLicense(@NonNull ExtMetadata metadata) { - this.license = metadata.license(); - this.licenseShortName = metadata.licenseShortName(); - this.licenseUrl = metadata.licenseUrl(); - } - - private ImageLicense(@NonNull String license, @NonNull String licenseShortName, @NonNull String licenseUrl) { - this.license = license; - this.licenseShortName = licenseShortName; - this.licenseUrl = licenseUrl; - } - - public ImageLicense() { - this("", "", ""); - } - - @NonNull public String getLicenseName() { - return license; - } - - @NonNull public String getLicenseShortName() { - return licenseShortName; - } - - @NonNull public String getLicenseUrl() { - return licenseUrl; - } - - public boolean isLicenseCC() { - return defaultString(license).toLowerCase(Locale.ENGLISH).startsWith(CREATIVE_COMMONS_PREFIX) - || defaultString(licenseShortName).toLowerCase(Locale.ENGLISH).startsWith(CREATIVE_COMMONS_PREFIX); - } - - public boolean isLicensePD() { - return defaultString(license).toLowerCase(Locale.ENGLISH).startsWith(PUBLIC_DOMAIN_PREFIX) - || defaultString(licenseShortName).toLowerCase(Locale.ENGLISH).startsWith(PUBLIC_DOMAIN_PREFIX); - } - - public boolean isLicenseCCBySa() { - return defaultString(license).toLowerCase(Locale.ENGLISH).replace("-", "").startsWith(CC_BY_SA) - || defaultString(licenseShortName).toLowerCase(Locale.ENGLISH).replace("-", "").startsWith(CC_BY_SA); - } - - public boolean hasLicenseInfo() { - return !(license.isEmpty() && licenseShortName.isEmpty() && licenseUrl.isEmpty()); - } -} diff --git a/data-client/src/main/java/org/wikipedia/gallery/TextInfo.java b/data-client/src/main/java/org/wikipedia/gallery/TextInfo.java deleted file mode 100644 index 1ab829ed63..0000000000 --- a/data-client/src/main/java/org/wikipedia/gallery/TextInfo.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.wikipedia.gallery; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.apache.commons.lang3.StringUtils; - -import java.io.Serializable; - -public class TextInfo implements Serializable { - @SuppressWarnings("unused,NullableProblems") @Nullable private String html; - @SuppressWarnings("unused,NullableProblems") @Nullable private String text; - @SuppressWarnings("unused,NullableProblems") @Nullable private String lang; - - @NonNull - public String getHtml() { - return StringUtils.defaultString(html); - } - - @NonNull - public String getText() { - return StringUtils.defaultString(text); - } - - @NonNull - public String getLang() { - return StringUtils.defaultString(lang); - } -} diff --git a/data-client/src/main/java/org/wikipedia/json/CookieManagerTypeAdapter.java b/data-client/src/main/java/org/wikipedia/json/CookieManagerTypeAdapter.java deleted file mode 100644 index 43d65d0198..0000000000 --- a/data-client/src/main/java/org/wikipedia/json/CookieManagerTypeAdapter.java +++ /dev/null @@ -1,53 +0,0 @@ -package org.wikipedia.json; - -import com.google.gson.TypeAdapter; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; - -import org.wikipedia.dataclient.SharedPreferenceCookieManager; -import org.wikipedia.dataclient.WikiSite; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import okhttp3.Cookie; -import okhttp3.HttpUrl; - -public class CookieManagerTypeAdapter extends TypeAdapter { - @Override public void write(JsonWriter out, SharedPreferenceCookieManager cookies) throws IOException { - Map> map = cookies.getCookieJar(); - out.beginObject(); - for (String key : map.keySet()) { - out.name(key).beginArray(); - for (Cookie cookie : map.get(key)) { - out.value(cookie.toString()); - } - out.endArray(); - } - out.endObject(); - } - - @Override public SharedPreferenceCookieManager read(JsonReader input) throws IOException { - Map> map = new HashMap<>(); - input.beginObject(); - while (input.hasNext()) { - String key = input.nextName(); - List list = new ArrayList<>(); - map.put(key, list); - input.beginArray(); - HttpUrl url = HttpUrl.parse(WikiSite.DEFAULT_SCHEME + "://" + key); - while (input.hasNext()) { - String str = input.nextString(); - if (url != null) { - list.add(Cookie.parse(url, str)); - } - } - input.endArray(); - } - input.endObject(); - return new SharedPreferenceCookieManager(map); - } -} diff --git a/data-client/src/main/java/org/wikipedia/json/GsonMarshaller.java b/data-client/src/main/java/org/wikipedia/json/GsonMarshaller.java deleted file mode 100644 index 98528476db..0000000000 --- a/data-client/src/main/java/org/wikipedia/json/GsonMarshaller.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.wikipedia.json; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.Gson; - -public final class GsonMarshaller { - public static String marshal(@Nullable Object object) { - return marshal(GsonUtil.getDefaultGson(), object); - } - - public static String marshal(@NonNull Gson gson, @Nullable Object object) { - return gson.toJson(object); - } - - private GsonMarshaller() { } -} diff --git a/data-client/src/main/java/org/wikipedia/json/GsonUnmarshaller.java b/data-client/src/main/java/org/wikipedia/json/GsonUnmarshaller.java deleted file mode 100644 index 8e62b16585..0000000000 --- a/data-client/src/main/java/org/wikipedia/json/GsonUnmarshaller.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.wikipedia.json; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; - -public final class GsonUnmarshaller { - /** @return Unmarshalled object. */ - public static T unmarshal(Class clazz, @Nullable String json) { - return unmarshal(GsonUtil.getDefaultGson(), clazz, json); - } - - /** @return Unmarshalled collection of objects. */ - public static T unmarshal(TypeToken typeToken, @Nullable String json) { - return unmarshal(GsonUtil.getDefaultGson(), typeToken, json); - } - - /** @return Unmarshalled object. */ - public static T unmarshal(@NonNull Gson gson, Class clazz, @Nullable String json) { - return gson.fromJson(json, clazz); - } - - /** @return Unmarshalled collection of objects. */ - public static T unmarshal(@NonNull Gson gson, TypeToken typeToken, @Nullable String json) { - // From the manual: "Fairly hideous... Unfortunately, no way to get around this in Java". - return gson.fromJson(json, typeToken.getType()); - } - - private GsonUnmarshaller() { } -} diff --git a/data-client/src/main/java/org/wikipedia/language/AcceptLanguageUtil.java b/data-client/src/main/java/org/wikipedia/language/AcceptLanguageUtil.java deleted file mode 100644 index 0b0bdb0199..0000000000 --- a/data-client/src/main/java/org/wikipedia/language/AcceptLanguageUtil.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.wikipedia.language; - -import androidx.annotation.NonNull; - -import java.util.Locale; - -public final class AcceptLanguageUtil { - private static final float APP_LANGUAGE_QUALITY = .9f; - private static final float SYSTEM_LANGUAGE_QUALITY = .8f; - - /** - * @return The value that should go in the Accept-Language header. - */ - @NonNull - public static String getAcceptLanguage(@NonNull String wikiLanguageCode, - @NonNull String appLanguageCode, - @NonNull String systemLanguageCode) { - String acceptLanguage = wikiLanguageCode; - acceptLanguage = appendToAcceptLanguage(acceptLanguage, appLanguageCode, APP_LANGUAGE_QUALITY); - acceptLanguage = appendToAcceptLanguage(acceptLanguage, systemLanguageCode, SYSTEM_LANGUAGE_QUALITY); - return acceptLanguage; - } - - @NonNull - private static String appendToAcceptLanguage(@NonNull String acceptLanguage, - @NonNull String languageCode, float quality) { - // If accept-language already contains the language, just return accept-language. - if (acceptLanguage.contains(languageCode)) { - return acceptLanguage; - } - - // If accept-language is empty, don't append. Just return the language. - if (acceptLanguage.isEmpty()) { - return languageCode; - } - - // Accept-language is nonempty, append the language. - return String.format(Locale.ROOT, "%s,%s;q=%.1f", acceptLanguage, languageCode, quality); - } - - private AcceptLanguageUtil() { } -} diff --git a/data-client/src/main/java/org/wikipedia/model/CodeEnum.kt b/data-client/src/main/java/org/wikipedia/model/CodeEnum.kt deleted file mode 100644 index d312387330..0000000000 --- a/data-client/src/main/java/org/wikipedia/model/CodeEnum.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.wikipedia.model - -interface CodeEnum { - fun enumeration(code: Int): T -} diff --git a/data-client/src/main/java/org/wikipedia/model/EnumStr.kt b/data-client/src/main/java/org/wikipedia/model/EnumStr.kt deleted file mode 100644 index 8e201a9852..0000000000 --- a/data-client/src/main/java/org/wikipedia/model/EnumStr.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.wikipedia.model - -interface EnumStr { - fun str(): String -} diff --git a/data-client/src/main/java/org/wikipedia/notifications/Notification.java b/data-client/src/main/java/org/wikipedia/notifications/Notification.java deleted file mode 100644 index 8f864b0ce2..0000000000 --- a/data-client/src/main/java/org/wikipedia/notifications/Notification.java +++ /dev/null @@ -1,288 +0,0 @@ -package org.wikipedia.notifications; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.annotations.SerializedName; - -import org.apache.commons.lang3.StringUtils; -import org.wikipedia.json.GsonUtil; -import org.wikipedia.util.DateUtil; -import org.wikipedia.util.log.L; - -import java.text.ParseException; -import java.util.Date; -import java.util.List; -import java.util.Map; - -public class Notification { - public static final String TYPE_EDIT_USER_TALK = "edit-user-talk"; - public static final String TYPE_REVERTED = "reverted"; - public static final String TYPE_EDIT_THANK = "edit-thank"; - public static final String TYPE_WELCOME = "welcome"; - public static final String TYPE_EDIT_MILESTONE = "thank-you-edit"; - public static final String TYPE_LOGIN_SUCCESS = "login-success"; - public static final String TYPE_LOGIN_FAIL_NEW = "login-fail-new"; - public static final String TYPE_LOGIN_FAIL_KNOWN = "login-fail-known"; - public static final String TYPE_FOREIGN = "foreign"; - - @SuppressWarnings("unused,NullableProblems") @Nullable private String wiki; - @SuppressWarnings("unused") private long id; - @SuppressWarnings("unused,NullableProblems") @Nullable private String type; - @SuppressWarnings("unused,NullableProblems") @Nullable private String category; - @SuppressWarnings("unused") private long revid; - - @SuppressWarnings("unused,NullableProblems") @Nullable private Title title; - @SuppressWarnings("unused,NullableProblems") @Nullable private Agent agent; - @SuppressWarnings("unused,NullableProblems") @Nullable private Timestamp timestamp; - @SuppressWarnings("unused,NullableProblems") @SerializedName("*") @Nullable private Contents contents; - @SuppressWarnings("unused,NullableProblems") @Nullable private Map sources; - - @NonNull public String wiki() { - return StringUtils.defaultString(wiki); - } - - public long id() { - return id; - } - - public void setId(final long id) { - this.id = id; - } - - public long key() { - return id + wiki().hashCode(); - } - - @NonNull public String type() { - return StringUtils.defaultString(type); - } - - @Nullable public Agent agent() { - return agent; - } - - @Nullable public Title title() { - return title; - } - - public long revID() { - return revid; - } - - @Nullable public Contents getContents() { - return contents; - } - - public void setContents(@Nullable final Contents contents) { - this.contents = contents; - } - - @NonNull public Date getTimestamp() { - return timestamp != null ? timestamp.date() : new Date(); - } - - public void setTimestamp(@Nullable final Timestamp timestamp) { - this.timestamp = timestamp; - } - - @NonNull String getUtcIso8601() { - return StringUtils.defaultString(timestamp != null ? timestamp.utciso8601 : null); - } - - @Nullable Map getSources() { - return sources; - } - - public boolean isFromWikidata() { - return wiki().equals("wikidatawiki"); - } - - @Override public String toString() { - return Long.toString(id); - } - - public static class Title { - @SuppressWarnings("unused,NullableProblems") @Nullable private String full; - @SuppressWarnings("unused,NullableProblems") @Nullable private String text; - @SuppressWarnings("unused") @Nullable private String namespace; - @SuppressWarnings("unused") @SerializedName("namespace-key") private int namespaceKey; - - @NonNull public String text() { - return StringUtils.defaultString(text); - } - - @NonNull public String full() { - return StringUtils.defaultString(full); - } - - public boolean isMainNamespace() { - return namespaceKey == 0; - } - - public void setFull(@NonNull String title) { - full = title; - } - } - - public static class Agent { - @SuppressWarnings("unused") private int id; - @SuppressWarnings("unused,NullableProblems") @Nullable private String name; - - @NonNull public String name() { - return StringUtils.defaultString(name); - } - } - - public static class Timestamp { - @SuppressWarnings("unused,NullableProblems") @Nullable private String utciso8601; - - public void setUtciso8601(@Nullable final String utciso8601) { - this.utciso8601 = utciso8601; - } - - public Date date() { - try { - return DateUtil.iso8601DateParse(utciso8601); - } catch (ParseException e) { - L.e(e); - return new Date(); - } - } - } - - public static class Link { - @SuppressWarnings("unused,NullableProblems") @Nullable private String url; - @SuppressWarnings("unused,NullableProblems") @Nullable private String label; - @SuppressWarnings("unused,NullableProblems") @Nullable private String tooltip; - @SuppressWarnings("unused,NullableProblems") @Nullable private String description; - @SuppressWarnings("unused,NullableProblems") @Nullable private String icon; - - @NonNull public String getUrl() { - return StringUtils.defaultString(url); - } - - public void setUrl(@Nullable final String url) { - this.url = url; - } - - @NonNull public String getTooltip() { - return StringUtils.defaultString(tooltip); - } - - @NonNull public String getLabel() { - return StringUtils.defaultString(label); - } - - @NonNull public String getIcon() { - return StringUtils.defaultString(icon); - } - } - - public static class Links { - @SuppressWarnings("unused,NullableProblems") @Nullable private JsonElement primary; - @SuppressWarnings("unused,NullableProblems") @Nullable private List secondary; - private Link primaryLink; - - public void setPrimary(@Nullable final JsonElement primary) { - this.primary = primary; - } - - @Nullable public Link getPrimary() { - if (primary == null) { - return null; - } - if (primaryLink == null && primary instanceof JsonObject) { - primaryLink = GsonUtil.getDefaultGson().fromJson(primary, Link.class); - } - return primaryLink; - } - - @Nullable public List getSecondary() { - return secondary; - } - } - - public static class Source { - @SuppressWarnings("unused,NullableProblems") @Nullable private String title; - @SuppressWarnings("unused,NullableProblems") @Nullable private String url; - @SuppressWarnings("unused,NullableProblems") @Nullable private String base; - - @NonNull public String getTitle() { - return StringUtils.defaultString(title); - } - - @NonNull public String getUrl() { - return StringUtils.defaultString(url); - } - - @NonNull public String getBase() { - return StringUtils.defaultString(base); - } - } - - public static class Contents { - @SuppressWarnings("unused,NullableProblems") @Nullable private String header; - @SuppressWarnings("unused,NullableProblems") @Nullable private String compactHeader; - @SuppressWarnings("unused,NullableProblems") @Nullable private String body; - @SuppressWarnings("unused,NullableProblems") @Nullable private String icon; - @SuppressWarnings("unused,NullableProblems") @Nullable private String iconUrl; - @SuppressWarnings("unused,NullableProblems") @Nullable private Links links; - - @NonNull public String getHeader() { - return StringUtils.defaultString(header); - } - - @NonNull public String getCompactHeader() { - return StringUtils.defaultString(compactHeader); - } - - public void setCompactHeader(@Nullable final String compactHeader) { - this.compactHeader = compactHeader; - } - - @NonNull public String getBody() { - return StringUtils.defaultString(body); - } - - @NonNull public String getIconUrl() { - return StringUtils.defaultString(iconUrl); - } - - @Nullable public Links getLinks() { - return links; - } - - public void setLinks(@Nullable final Links links) { - this.links = links; - } - } - - public static class UnreadNotificationWikiItem { - @SuppressWarnings("unused") private int totalCount; - @SuppressWarnings("unused,NullableProblems") @Nullable private Source source; - - public int getTotalCount() { - return totalCount; - } - - @Nullable public Source getSource() { - return source; - } - } - - public static class SeenTime { - @SuppressWarnings("unused,NullableProblems") @Nullable private String alert; - @SuppressWarnings("unused,NullableProblems") @Nullable private String message; - - @Nullable public String getAlert() { - return alert; - } - - @Nullable public String getMessage() { - return message; - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/page/GeoTypeAdapter.java b/data-client/src/main/java/org/wikipedia/page/GeoTypeAdapter.java deleted file mode 100644 index dab169b74a..0000000000 --- a/data-client/src/main/java/org/wikipedia/page/GeoTypeAdapter.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.wikipedia.page; - -import android.location.Location; - -import com.google.gson.TypeAdapter; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; - -import org.wikipedia.util.log.L; - -import java.io.IOException; - -public class GeoTypeAdapter extends TypeAdapter { - @Override - public void write(JsonWriter out, Location value) throws IOException { - out.beginObject(); - out.name(GeoUnmarshaller.LATITUDE).value(value.getLatitude()); - out.name(GeoUnmarshaller.LONGITUDE).value(value.getLongitude()); - out.endObject(); - } - - @Override - public Location read(JsonReader in) throws IOException { - Location ret = new Location((String) null); - - in.beginObject(); - while (in.hasNext()) { - String name = in.nextName(); - switch(name) { - case GeoUnmarshaller.LATITUDE: - ret.setLatitude(in.nextDouble()); - break; - case GeoUnmarshaller.LONGITUDE: - ret.setLongitude(in.nextDouble()); - break; - default: - L.d("name=" + name); - break; - } - } - in.endObject(); - - return ret; - } -} diff --git a/data-client/src/main/java/org/wikipedia/page/Page.java b/data-client/src/main/java/org/wikipedia/page/Page.java deleted file mode 100644 index 532e4b59a2..0000000000 --- a/data-client/src/main/java/org/wikipedia/page/Page.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.wikipedia.page; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import java.util.List; - -/** - * Represents a particular page along with its full contents. - */ -public class Page { - @NonNull private final PageTitle title; - @NonNull private final List
sections; - @NonNull private final PageProperties pageProperties; - private final boolean fromRestBase; - - /** Regular constructor */ - public Page(@NonNull PageTitle title, @NonNull List
sections, @NonNull PageProperties pageProperties, boolean fromRestBase) { - this.title = title; - this.sections = sections; - this.pageProperties = pageProperties; - this.fromRestBase = fromRestBase; - } - - @NonNull public PageTitle getTitle() { - return title; - } - - @NonNull public List
getSections() { - return sections; - } - - public String getDisplayTitle() { - return pageProperties.getDisplayTitle(); - } - - @Nullable public String getTitlePronunciationUrl() { - return getPageProperties().getTitlePronunciationUrl(); - } - - @NonNull public PageProperties getPageProperties() { - return pageProperties; - } - - public boolean couldHaveReadMoreSection() { - return getTitle().namespace() == Namespace.MAIN; - } - - public boolean isFilePage() { - return title.isFilePage(); - } - - public boolean isMainPage() { - return pageProperties.isMainPage(); - } - - public boolean isArticle() { - return !isMainPage() && getTitle().namespace() == Namespace.MAIN; - } - - public boolean isProtected() { - return !getPageProperties().canEdit(); - } - - public boolean isFromRestBase() { - return fromRestBase; - } -} diff --git a/data-client/src/main/java/org/wikipedia/page/Section.java b/data-client/src/main/java/org/wikipedia/page/Section.java deleted file mode 100644 index 44e3390565..0000000000 --- a/data-client/src/main/java/org/wikipedia/page/Section.java +++ /dev/null @@ -1,114 +0,0 @@ -package org.wikipedia.page; - -import androidx.annotation.NonNull; - -import org.apache.commons.lang3.StringUtils; -import org.json.JSONException; -import org.json.JSONObject; -import org.wikipedia.json.GsonUtil; - -import static org.apache.commons.lang3.StringUtils.defaultString; - -/** - * Gson POJO for one section of a page. - */ -public class Section { - - private int id; - private int toclevel = 1; - private String line; - private String anchor; - private String text; - - // TODO: can we get rid of this? It's not efficient to - public static Section fromJson(JSONObject json) { - return GsonUtil.getDefaultGson().fromJson(json.toString(), Section.class); - } - - // TODO: get rid of this; problem is how to interop Gson and org.json.JSONObject - // We're using this to send the section over the JS bridge - public JSONObject toJSON() { - try { - JSONObject data = new JSONObject(); - data.put("id", id); - data.put("toclevel", toclevel); - data.put("line", line); - data.put("anchor", anchor); - data.put("text", text); - return data; - } catch (JSONException e) { - throw new RuntimeException(e); - } - } - - /** Default constructor used by Gson deserialization. Good for setting default values. */ - public Section() { - toclevel = 1; - } - - public Section(int id, int level, String heading, String anchor, String content) { - this.id = id; - this.toclevel = level; - this.line = heading; - this.anchor = anchor; - this.text = content; - } - - @Override - public boolean equals(Object o) { - if (!(o instanceof Section)) { - return false; - } - - Section other = (Section) o; - return getId() == other.getId() - && getLevel() == other.getLevel() - && StringUtils.equals(getHeading(), other.getHeading()) - && StringUtils.equals(getAnchor(), other.getAnchor()) - && StringUtils.equals(getContent(), other.getContent()); - } - - @Override - public int hashCode() { - int result = getId(); - result = 31 * result + getHeading().hashCode(); - result = 31 * result + getAnchor().hashCode(); - result = 31 * result + getContent().hashCode(); - return result; - } - - @Override - public String toString() { - return "Section{" - + "id=" + id - + ", toclevel=" + toclevel - + ", line='" + line + '\'' - + ", anchor='" + anchor + '\'' - + ", text='" + text + '\'' - + '}'; - } - - public boolean isLead() { - return id == 0; - } - - public int getId() { - return id; - } - - public int getLevel() { - return toclevel; - } - - @NonNull public String getHeading() { - return defaultString(line); - } - - @NonNull public String getAnchor() { - return defaultString(anchor); - } - - @NonNull public String getContent() { - return defaultString(text); - } -} diff --git a/data-client/src/main/java/org/wikipedia/readinglist/sync/ReadingListClient.java b/data-client/src/main/java/org/wikipedia/readinglist/sync/ReadingListClient.java deleted file mode 100644 index f19a4ccb64..0000000000 --- a/data-client/src/main/java/org/wikipedia/readinglist/sync/ReadingListClient.java +++ /dev/null @@ -1,238 +0,0 @@ -package org.wikipedia.readinglist.sync; - -import android.text.TextUtils; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.ServiceFactory; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.dataclient.okhttp.HttpStatusException; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import retrofit2.Response; - -import static org.wikipedia.readinglist.sync.SyncedReadingLists.RemoteReadingList; -import static org.wikipedia.readinglist.sync.SyncedReadingLists.RemoteReadingListEntry; -import static org.wikipedia.readinglist.sync.SyncedReadingLists.RemoteReadingListEntryBatch; - -public class ReadingListClient { - @NonNull private final WikiSite wiki; - @Nullable private String lastDateHeader; - - // Artificial upper limit on the number of continuation cycles we can do, to prevent - // getting stuck in an infinite loop. - private static final int MAX_CONTINUE_CYCLES = 256; - - public ReadingListClient(@NonNull WikiSite wiki) { - this.wiki = wiki; - } - - @Nullable public String getLastDateHeader() { - return lastDateHeader; - } - - /** - * Sets up reading list syncing on the server, and returns true if the setup was successful, - * or false if syncing is already set up. - */ - public boolean setup(@NonNull String csrfToken) throws Throwable { - try { - ServiceFactory.getRest(wiki).setupReadingLists(csrfToken).execute(); - return true; - } catch (Throwable t) { - if (isErrorType(t, "already-set-up")) { - return false; - } - throw t; - } - } - - public void tearDown(@NonNull String csrfToken) throws Throwable { - try { - ServiceFactory.getRest(wiki).tearDownReadingLists(csrfToken).execute(); - } catch (Throwable t) { - if (isErrorType(t, "not-set-up")) { - return; - } - throw t; - } - } - - @NonNull - public List getAllLists() throws Throwable { - List totalLists = new ArrayList<>(); - int totalCycles = 0; - String continueStr = null; - do { - Response response = ServiceFactory.getRest(wiki).getReadingLists(continueStr).execute(); - SyncedReadingLists lists = response.body(); - if (lists == null || lists.getLists() == null) { - throw new IOException("Incorrect response format."); - } - totalLists.addAll(lists.getLists()); - continueStr = TextUtils.isEmpty(lists.getContinueStr()) ? null : lists.getContinueStr(); - saveLastDateHeader(response); - } while (!TextUtils.isEmpty(continueStr) && (totalCycles++ < MAX_CONTINUE_CYCLES)); - return totalLists; - } - - @NonNull - public SyncedReadingLists getChangesSince(@NonNull String date) throws Throwable { - List totalLists = new ArrayList<>(); - List totalEntries = new ArrayList<>(); - int totalCycles = 0; - String continueStr = null; - do { - Response response = ServiceFactory.getRest(wiki).getReadingListChangesSince(date, continueStr).execute(); - SyncedReadingLists body = response.body(); - if (body == null) { - throw new IOException("Incorrect response format."); - } - if (body.getLists() != null) { - totalLists.addAll(body.getLists()); - } - if (body.getEntries() != null) { - totalEntries.addAll(body.getEntries()); - } - continueStr = TextUtils.isEmpty(body.getContinueStr()) ? null : body.getContinueStr(); - saveLastDateHeader(response); - } while (!TextUtils.isEmpty(continueStr) && (totalCycles++ < MAX_CONTINUE_CYCLES)); - return new SyncedReadingLists(totalLists, totalEntries); - } - - @NonNull - public List getListsContaining(@NonNull RemoteReadingListEntry entry) throws Throwable { - List totalLists = new ArrayList<>(); - int totalCycles = 0; - String continueStr = null; - do { - Response response = ServiceFactory.getRest(wiki) - .getReadingListsContaining(entry.project(), entry.title(), continueStr).execute(); - SyncedReadingLists lists = response.body(); - if (lists == null || lists.getLists() == null) { - throw new IOException("Incorrect response format."); - } - totalLists.addAll(lists.getLists()); - continueStr = TextUtils.isEmpty(lists.getContinueStr()) ? null : lists.getContinueStr(); - saveLastDateHeader(response); - } while (!TextUtils.isEmpty(continueStr) && (totalCycles++ < MAX_CONTINUE_CYCLES)); - return totalLists; - } - - @NonNull - public List getListEntries(long listId) throws Throwable { - List totalEntries = new ArrayList<>(); - int totalCycles = 0; - String continueStr = null; - do { - Response response - = ServiceFactory.getRest(wiki).getReadingListEntries(listId, continueStr).execute(); - SyncedReadingLists body = response.body(); - if (body == null || body.getEntries() == null) { - throw new IOException("Incorrect response format."); - } - totalEntries.addAll(body.getEntries()); - continueStr = TextUtils.isEmpty(body.getContinueStr()) ? null : body.getContinueStr(); - saveLastDateHeader(response); - } while (!TextUtils.isEmpty(continueStr) && (totalCycles++ < MAX_CONTINUE_CYCLES)); - return totalEntries; - } - - public long createList(@NonNull String csrfToken, @NonNull RemoteReadingList list) throws Throwable { - Response response - = ServiceFactory.getRest(wiki).createReadingList(csrfToken, list).execute(); - SyncedReadingLists.RemoteIdResponse idResponse = response.body(); - if (idResponse == null) { - throw new IOException("Incorrect response format."); - } - saveLastDateHeader(response); - return idResponse.id(); - } - - public void updateList(@NonNull String csrfToken, long listId, @NonNull RemoteReadingList list) throws Throwable { - Response response = ServiceFactory.getRest(wiki).updateReadingList(listId, csrfToken, list).execute(); - saveLastDateHeader(response); - } - - public void deleteList(@NonNull String csrfToken, long listId) throws Throwable { - Response response = ServiceFactory.getRest(wiki).deleteReadingList(listId, csrfToken).execute(); - saveLastDateHeader(response); - } - - public long addPageToList(@NonNull String csrfToken, long listId, @NonNull RemoteReadingListEntry entry) throws Throwable { - Response response - = ServiceFactory.getRest(wiki).addEntryToReadingList(listId, csrfToken, entry).execute(); - SyncedReadingLists.RemoteIdResponse idResponse = response.body(); - if (idResponse == null) { - throw new IOException("Incorrect response format."); - } - saveLastDateHeader(response); - return idResponse.id(); - } - - public List addPagesToList(@NonNull String csrfToken, long listId, @NonNull List entries) throws Throwable { - final int maxBatchSize = 50; - int batchIndex = 0; - List ids = new ArrayList<>(); - List currentBatch = new ArrayList<>(); - while (true) { - currentBatch.clear(); - while (batchIndex < entries.size() && currentBatch.size() < maxBatchSize) { - currentBatch.add(entries.get(batchIndex++)); - } - if (currentBatch.isEmpty()) { - break; - } - - try { - Response response - = ServiceFactory.getRest(wiki).addEntriesToReadingList(listId, csrfToken, new RemoteReadingListEntryBatch(currentBatch)).execute(); - SyncedReadingLists.RemoteIdResponseBatch idResponse = response.body(); - if (idResponse == null) { - throw new IOException("Incorrect response format."); - } - saveLastDateHeader(response); - - for (SyncedReadingLists.RemoteIdResponse id : idResponse.batch()) { - ids.add(id.id()); - } - } catch (Throwable t) { - if (isErrorType(t, "entry-limit")) { - // TODO: handle more meaningfully than ignoring, for now. - break; - } - throw t; - } - } - return ids; - } - - public void deletePageFromList(@NonNull String csrfToken, long listId, long entryId) throws Throwable { - Response response = ServiceFactory.getRest(wiki).deleteEntryFromReadingList(listId, entryId, csrfToken).execute(); - saveLastDateHeader(response); - } - - public boolean isErrorType(Throwable t, @NonNull String errorType) { - return (t instanceof HttpStatusException - && ((HttpStatusException) t).serviceError() != null - && ((HttpStatusException) t).serviceError().getTitle().contains(errorType)); - } - - public boolean isServiceError(Throwable t) { - final int code = 400; - return (t instanceof HttpStatusException && ((HttpStatusException) t).code() == code); - } - - public boolean isUnavailableError(Throwable t) { - final int code = 405; - return (t instanceof HttpStatusException && ((HttpStatusException) t).code() == code); - } - - private void saveLastDateHeader(@NonNull Response response) { - lastDateHeader = response.headers().get("date"); - } -} diff --git a/data-client/src/main/java/org/wikipedia/readinglist/sync/SyncedReadingLists.java b/data-client/src/main/java/org/wikipedia/readinglist/sync/SyncedReadingLists.java deleted file mode 100644 index 92234544e4..0000000000 --- a/data-client/src/main/java/org/wikipedia/readinglist/sync/SyncedReadingLists.java +++ /dev/null @@ -1,152 +0,0 @@ -package org.wikipedia.readinglist.sync; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.annotations.SerializedName; - -import org.apache.commons.lang3.StringUtils; -import org.wikipedia.dataclient.restbase.page.RbPageSummary; -import org.wikipedia.json.annotations.Required; - -import java.text.Normalizer; -import java.util.List; - -public class SyncedReadingLists { - - @SuppressWarnings("unused,NullableProblems") @Nullable private List lists; - @SuppressWarnings("unused,NullableProblems") @Nullable private List entries; - @SuppressWarnings("unused,NullableProblems") @Nullable private String next; - - public SyncedReadingLists() { } - - public SyncedReadingLists(@NonNull List lists, @NonNull List entries) { - this.lists = lists; - this.entries = entries; - } - - @Nullable public List getLists() { - return lists; - } - - @Nullable public List getEntries() { - return entries; - } - - @Nullable public String getContinueStr() { - return next; - } - - public static class RemoteReadingList { - @SuppressWarnings("unused") @Required private long id; - @SuppressWarnings("unused") @SerializedName("default") private boolean isDefault; - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String name; - @SuppressWarnings("unused") @Nullable private String description; - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String created; - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String updated; - @SuppressWarnings("unused") private boolean deleted; - - public RemoteReadingList() { } - - public RemoteReadingList(@NonNull String name, @Nullable String description) { - this.name = Normalizer.normalize(name, Normalizer.Form.NFC); - this.description = Normalizer.normalize(StringUtils.defaultString(description), Normalizer.Form.NFC); - } - - public long id() { - return id; - } - - @NonNull public String name() { - return Normalizer.normalize(name, Normalizer.Form.NFC); - } - - @NonNull public String description() { - return Normalizer.normalize(StringUtils.defaultString(description), Normalizer.Form.NFC); - } - - public boolean isDefault() { - return isDefault; - } - - public boolean isDeleted() { - return deleted; - } - - @NonNull public String updatedDate() { - return updated; - } - } - - public static class RemoteReadingListEntry { - @SuppressWarnings("unused") private long id; - @SuppressWarnings("unused") private long listId; - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String project; - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String title; - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String created; - @SuppressWarnings("unused,NullableProblems") @Required @NonNull private String updated; - @SuppressWarnings("unused") @Nullable private RbPageSummary summary; - @SuppressWarnings("unused") private boolean deleted; - - public RemoteReadingListEntry() { } - - public RemoteReadingListEntry(@NonNull String project, @NonNull String title) { - this.project = Normalizer.normalize(project, Normalizer.Form.NFC); - this.title = Normalizer.normalize(title, Normalizer.Form.NFC); - } - - public long id() { - return id; - } - - public long listId() { - return listId; - } - - @NonNull public String project() { - return Normalizer.normalize(project, Normalizer.Form.NFC); - } - - @NonNull public String title() { - return Normalizer.normalize(title, Normalizer.Form.NFC); - } - - @NonNull public String updatedDate() { - return updated; - } - - @Nullable public RbPageSummary summary() { - return summary; - } - - public boolean isDeleted() { - return deleted; - } - } - - public static class RemoteReadingListEntryBatch { - @SuppressWarnings("unused") private RemoteReadingListEntry[] batch; - - public RemoteReadingListEntryBatch() { } - - public RemoteReadingListEntryBatch(@NonNull List entries) { - this.batch = entries.toArray(new RemoteReadingListEntry[]{}); - } - } - - public class RemoteIdResponse { - @SuppressWarnings("unused") @Required private long id; - - public long id() { - return id; - } - } - - public class RemoteIdResponseBatch { - @SuppressWarnings("unused") @Required private RemoteIdResponse[] batch; - - public RemoteIdResponse[] batch() { - return batch; - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/search/PrefixSearchResponse.java b/data-client/src/main/java/org/wikipedia/search/PrefixSearchResponse.java deleted file mode 100644 index 5af06127bb..0000000000 --- a/data-client/src/main/java/org/wikipedia/search/PrefixSearchResponse.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.wikipedia.search; - -import androidx.annotation.Nullable; - -import com.google.gson.annotations.SerializedName; - -import org.wikipedia.dataclient.mwapi.MwQueryResponse; - -public class PrefixSearchResponse extends MwQueryResponse { - @SuppressWarnings("unused") @SerializedName("searchinfo") private SearchInfo searchInfo; - @SuppressWarnings("unused") private Search search; - - @Nullable String suggestion() { - return searchInfo != null ? searchInfo.suggestion() : null; - } - - static class SearchInfo { - @SuppressWarnings("unused") @Nullable private String suggestion; - @SuppressWarnings("unused") @SerializedName("suggestionsnippet") - @Nullable private String snippet; - - @Nullable public String suggestion() { - return suggestion; - } - } - - static class Search { - @SuppressWarnings("unused") @SerializedName("ns") private int namespace; - @SuppressWarnings("unused") @Nullable private String title; - } -} diff --git a/data-client/src/main/java/org/wikipedia/search/SearchResult.java b/data-client/src/main/java/org/wikipedia/search/SearchResult.java deleted file mode 100644 index 524286578e..0000000000 --- a/data-client/src/main/java/org/wikipedia/search/SearchResult.java +++ /dev/null @@ -1,92 +0,0 @@ -package org.wikipedia.search; - -import android.os.Parcel; -import android.os.Parcelable; -import android.text.TextUtils; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.dataclient.mwapi.MwQueryPage; -import org.wikipedia.model.BaseModel; -import org.wikipedia.page.PageTitle; - -public class SearchResult extends BaseModel implements Parcelable { - private PageTitle pageTitle; - private final String redirectFrom; - - public SearchResult(@NonNull MwQueryPage page, @NonNull WikiSite wiki) { - this(new PageTitle(page.title(), wiki, page.thumbUrl(), page.description()), page.redirectFrom()); - } - - public SearchResult(@NonNull PageTitle pageTitle) { - this(pageTitle, null); - } - - public SearchResult(@NonNull PageTitle pageTitle, @Nullable String redirectFrom) { - this.pageTitle = pageTitle; - this.redirectFrom = redirectFrom; - } - - @NonNull - public PageTitle getPageTitle() { - return pageTitle; - } - - @Nullable - public String getRedirectFrom() { - return redirectFrom; - } - - @Override - public String toString() { - return pageTitle.getPrefixedText(); - } - - @Override - public int describeContents() { - return 0; - } - - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - @Override - public SearchResult createFromParcel(Parcel in) { - return new SearchResult(in); - } - - @Override - public SearchResult[] newArray(int size) { - return new SearchResult[size]; - } - }; - - @Override - public void writeToParcel(Parcel parcel, int flags) { - parcel.writeParcelable(pageTitle, flags); - parcel.writeString(redirectFrom); - } - - @Override - public boolean equals(Object o) { - if (!(o instanceof SearchResult)) { - return false; - } - SearchResult other = (SearchResult)o; - return other.getPageTitle().equals(pageTitle) && TextUtils.equals(other.getRedirectFrom(), redirectFrom); - } - - @Override - public int hashCode() { - int result = pageTitle.hashCode(); - result = 31 * result + redirectFrom.hashCode(); - return result; - } - - private SearchResult(Parcel in) { - pageTitle = in.readParcelable(PageTitle.class.getClassLoader()); - redirectFrom = in.readString(); - } -} - diff --git a/data-client/src/main/java/org/wikipedia/search/SearchResults.java b/data-client/src/main/java/org/wikipedia/search/SearchResults.java deleted file mode 100644 index 88b278f02d..0000000000 --- a/data-client/src/main/java/org/wikipedia/search/SearchResults.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.wikipedia.search; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.dataclient.mwapi.MwQueryPage; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -/** - * Simple Data Object to hold search result data for both prefix search and full text search. - */ -public class SearchResults { - @NonNull private List results; - @Nullable private Map continuation; - @Nullable private String suggestion; - - /** - * Empty results. Use for fallback when something goes wrong. - */ - public SearchResults() { - results = new ArrayList<>(); - continuation = null; - } - - /** - * Constructor for a list of MwQueryPage search query results. - * @param pages the result pages - * @param wiki the wiki searched - * @param continuation info for search continuation - * @param suggestion a search suggestion to show to the user: "Did you mean ...?" - */ - public SearchResults(@NonNull List pages, @NonNull WikiSite wiki, - @Nullable Map continuation, @Nullable String suggestion) { - List searchResults = new ArrayList<>(); - - // Sort the array based on the "index" property - Collections.sort(pages, (a, b) -> ((Integer) a.index()).compareTo(b.index())); - - for (MwQueryPage page : pages) { - searchResults.add(new SearchResult(page, wiki)); - } - this.results = searchResults; - this.continuation = continuation; - this.suggestion = suggestion; - } - - @NonNull public List getResults() { - return results; - } - - @Nullable public String getSuggestion() { - return suggestion; - } - - @Nullable public Map getContinuation() { - return continuation; - } -} - diff --git a/data-client/src/main/java/org/wikipedia/settings/SiteInfo.java b/data-client/src/main/java/org/wikipedia/settings/SiteInfo.java deleted file mode 100644 index 104cbd8b43..0000000000 --- a/data-client/src/main/java/org/wikipedia/settings/SiteInfo.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.wikipedia.settings; - -import androidx.annotation.Nullable; - -import com.google.gson.annotations.SerializedName; - -import java.util.List; - -public class SiteInfo { - @SuppressWarnings("unused") @Nullable private String mainpage; - @SuppressWarnings("unused") @Nullable private String sitename; - @SuppressWarnings("unused") @Nullable private String lang; - @SuppressWarnings("unused") @Nullable private List variants; - @SuppressWarnings("unused") @SerializedName("readinglists-config") - @Nullable private ReadingListsConfig readingListsConfig; - - @Nullable public String mainPage() { - return mainpage; - } - - @Nullable public ReadingListsConfig readingListsConfig() { - return readingListsConfig; - } - - @Nullable public String lang() { - return lang; - } - - public boolean hasVariants() { - return variants != null && variants.size() > 0; - } - - public static class ReadingListsConfig { - @SuppressWarnings("unused") private int maxListsPerUser; - @SuppressWarnings("unused") private int maxEntriesPerList; - @SuppressWarnings("unused") private int deletedRetentionDays; - - public int maxEntriesPerList() { - return maxEntriesPerList; - } - } - - private static class LanguageVariants { - @SuppressWarnings("unused") private String code; - @SuppressWarnings("unused") private String name; - } -} diff --git a/data-client/src/main/java/org/wikipedia/staticdata/FileAliasData.java b/data-client/src/main/java/org/wikipedia/staticdata/FileAliasData.java deleted file mode 100644 index 6e6e99c191..0000000000 --- a/data-client/src/main/java/org/wikipedia/staticdata/FileAliasData.java +++ /dev/null @@ -1,326 +0,0 @@ -/* -This file is auto-generated from a template (/scripts/templates). -If you need to modify it, make sure to modify the template, not this file. -*/ -package org.wikipedia.staticdata; - -import androidx.annotation.NonNull; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -public final class FileAliasData { - @NonNull private static final Map DATA_MAP = Collections.unmodifiableMap(newMap()); - - @NonNull public static String valueFor(String key) { - if (DATA_MAP.containsKey(key)) { - return DATA_MAP.get(key); - } - return DATA_MAP.get("en"); - } - - @SuppressWarnings({"checkstyle:methodlength", "SpellCheckingInspection"}) - private static Map newMap() { - final int size = 295; - Map map = new HashMap<>(size); - map.put("ab", "Афаил"); - map.put("ace", "Beureukaih"); - map.put("ady", "File"); - map.put("af", "Lêer"); - map.put("ak", "File"); - map.put("als", "Datei"); - map.put("am", "ስዕል"); - map.put("an", "Imachen"); - map.put("ang", "Ymele"); - map.put("ar", "ملف"); - map.put("arc", "ܠܦܦܐ"); - map.put("arz", "ملف"); - map.put("as", "চিত্ৰ"); - map.put("ast", "Ficheru"); - map.put("atj", "Natisinahikaniwoc"); - map.put("av", "Файл"); - map.put("ay", "Archivo"); - map.put("az", "Şəkil"); - map.put("azb", "فایل"); - map.put("ba", "Файл"); - map.put("bar", "Datei"); - map.put("bat-smg", "Abruozdielis"); - map.put("bcl", "Ladawan"); - map.put("be", "Файл"); - map.put("be-x-old", "Файл"); - map.put("bg", "Файл"); - map.put("bh", "चित्र"); - map.put("bi", "File"); - map.put("bjn", "Barakas"); - map.put("bm", "Fichier"); - map.put("bn", "চিত্র"); - map.put("bo", "File"); - map.put("bpy", "ছবি"); - map.put("br", "Restr"); - map.put("bs", "Datoteka"); - map.put("bug", "Berkas"); - map.put("bxr", "Файл"); - map.put("ca", "Fitxer"); - map.put("cbk-zam", "Archivo"); - map.put("cdo", "文件"); - map.put("ce", "Файл"); - map.put("ceb", "Payl"); - map.put("ch", "Litratu"); - map.put("chr", "File"); - map.put("chy", "File"); - map.put("ckb", "پەڕگە"); - map.put("co", "File"); - map.put("cr", "File"); - map.put("crh", "Fayl"); - map.put("cs", "Soubor"); - map.put("csb", "Òbrôzk"); - map.put("cu", "Дѣло"); - map.put("cv", "Ӳкерчĕк"); - map.put("cy", "Delwedd"); - map.put("da", "Fil"); - map.put("de", "Datei"); - map.put("din", "Apamduööt"); - map.put("diq", "Dosya"); - map.put("dsb", "Dataja"); - map.put("dty", "चित्र"); - map.put("dv", "ފައިލު"); - map.put("dz", "File"); - map.put("ee", "File"); - map.put("el", "Αρχείο"); - map.put("eml", "File"); - map.put("en", "File"); - map.put("eo", "Dosiero"); - map.put("es", "Archivo"); - map.put("et", "Fail"); - map.put("eu", "Fitxategi"); - map.put("ext", "Archivu"); - map.put("fa", "پرونده"); - map.put("ff", "Fichier"); - map.put("fi", "Tiedosto"); - map.put("fiu-vro", "Pilt"); - map.put("fj", "File"); - map.put("fo", "Mynd"); - map.put("fr", "Fichier"); - map.put("frp", "Fichiér"); - map.put("frr", "Datei"); - map.put("fur", "Figure"); - map.put("fy", "Ofbyld"); - map.put("ga", "Íomhá"); - map.put("gag", "Dosye"); - map.put("gan", "文檔"); - map.put("gd", "Faidhle"); - map.put("gl", "Ficheiro"); - map.put("glk", "فاىل"); - map.put("gn", "Ta'ãnga"); - map.put("gom", "फायल"); - map.put("gor", "Berkas"); - map.put("gu", "ચિત્ર"); - map.put("gv", "Coadan"); - map.put("ha", "File"); - map.put("hak", "檔案"); - map.put("haw", "Waihona"); - map.put("he", "קובץ"); - map.put("hi", "चित्र"); - map.put("hif", "file"); - map.put("hr", "Datoteka"); - map.put("hsb", "Dataja"); - map.put("ht", "Fichye"); - map.put("hu", "Fájl"); - map.put("hy", "Պատկեր"); - map.put("ia", "File"); - map.put("id", "Berkas"); - map.put("ie", "File"); - map.put("ig", "Usòrò"); - map.put("ik", "File"); - map.put("ilo", "Papeles"); - map.put("inh", "Файл"); - map.put("io", "Arkivo"); - map.put("is", "Mynd"); - map.put("it", "File"); - map.put("iu", "File"); - map.put("ja", "ファイル"); - map.put("jam", "File"); - map.put("jbo", "datnyvei"); - map.put("jv", "Gambar"); - map.put("ka", "ფაილი"); - map.put("kaa", "Su'wret"); - map.put("kab", "Tugna"); - map.put("kbd", "Файл"); - map.put("kbp", "Fichier"); - map.put("kg", "Fisye"); - map.put("ki", "File"); - map.put("kk", "Сурет"); - map.put("kl", "Fiileq"); - map.put("km", "ឯកសារ"); - map.put("kn", "ಚಿತ್ರ"); - map.put("ko", "파일"); - map.put("koi", "Файл"); - map.put("krc", "Файл"); - map.put("ks", "فَیِل"); - map.put("ksh", "Datei"); - map.put("ku", "Wêne"); - map.put("kv", "Файл"); - map.put("kw", "Restren"); - map.put("ky", "Файл"); - map.put("la", "Fasciculus"); - map.put("lad", "Dosya"); - map.put("lb", "Fichier"); - map.put("lbe", "Сурат"); - map.put("lez", "Файл"); - map.put("lfn", "Fix"); - map.put("lg", "File"); - map.put("li", "Plaetje"); - map.put("lij", "Immaggine"); - map.put("lmo", "Archivi"); - map.put("ln", "Fichier"); - map.put("lo", "ຮູບ"); - map.put("lrc", "جانیا"); - map.put("lt", "Vaizdas"); - map.put("ltg", "Fails"); - map.put("lv", "Attēls"); - map.put("mai", "फाइल"); - map.put("map-bms", "Gambar"); - map.put("mdf", "Няйф"); - map.put("mg", "Sary"); - map.put("mhr", "Файл"); - map.put("mi", "File"); - map.put("min", "Berkas"); - map.put("mk", "Податотека"); - map.put("ml", "പ്രമാണം"); - map.put("mn", "Файл"); - map.put("mr", "चित्र"); - map.put("mrj", "Файл"); - map.put("ms", "Fail"); - map.put("mt", "Stampa"); - map.put("mwl", "Fexeiro"); - map.put("my", "File"); - map.put("myv", "Артовкс"); - map.put("mzn", "پرونده"); - map.put("na", "File"); - map.put("nah", "Īxiptli"); - map.put("nap", "Fiùra"); - map.put("nds", "Bild"); - map.put("nds-nl", "Bestaand"); - map.put("ne", "चित्र"); - map.put("new", "किपा"); - map.put("nl", "Bestand"); - map.put("nn", "Fil"); - map.put("nb", "Fil"); - map.put("nov", "File"); - map.put("nrm", "Fichier"); - map.put("nso", "Seswantšho"); - map.put("nv", "Eʼelyaaígíí"); - map.put("ny", "File"); - map.put("oc", "Fichièr"); - map.put("olo", "Failu"); - map.put("om", "File"); - map.put("or", "ଫାଇଲ"); - map.put("os", "Файл"); - map.put("pa", "ਤਸਵੀਰ"); - map.put("pag", "File"); - map.put("pam", "File"); - map.put("pap", "File"); - map.put("pcd", "Fichier"); - map.put("pdc", "Feil"); - map.put("pfl", "Dadai"); - map.put("pi", "पटिमा"); - map.put("pih", "File"); - map.put("pl", "Plik"); - map.put("pms", "Figura"); - map.put("pnb", "فائل"); - map.put("pnt", "Αρχείον"); - map.put("ps", "دوتنه"); - map.put("pt", "Ficheiro"); - map.put("qu", "Rikcha"); - map.put("rm", "Datoteca"); - map.put("rmy", "Chitro"); - map.put("rn", "File"); - map.put("ro", "Fișier"); - map.put("roa-rup", "Fișier"); - map.put("roa-tara", "File"); - map.put("ru", "Файл"); - map.put("rue", "Файл"); - map.put("rw", "File"); - map.put("sa", "सञ्चिका"); - map.put("sah", "Билэ"); - map.put("sat", "ᱨᱮᱫ"); - map.put("sc", "File"); - map.put("scn", "File"); - map.put("sco", "File"); - map.put("sd", "فائل"); - map.put("se", "Fiila"); - map.put("sg", "Fichier"); - map.put("sh", "Datoteka"); - map.put("shn", "ၾၢႆႇ"); - map.put("si", "ගොනුව"); - map.put("simple", "File"); - map.put("sk", "Súbor"); - map.put("sl", "Slika"); - map.put("sm", "File"); - map.put("sn", "File"); - map.put("so", "File"); - map.put("sq", "Skeda"); - map.put("sr", "Датотека"); - map.put("srn", "Gefre"); - map.put("ss", "File"); - map.put("st", "File"); - map.put("stq", "Bielde"); - map.put("su", "Gambar"); - map.put("sv", "Fil"); - map.put("sw", "Picha"); - map.put("szl", "Plik"); - map.put("ta", "படிமம்"); - map.put("tcy", "ಫೈಲ್"); - map.put("te", "దస్త్రం"); - map.put("tet", "Imajen"); - map.put("tg", "Акс"); - map.put("th", "ไฟล์"); - map.put("ti", "File"); - map.put("tk", "Faýl"); - map.put("tl", "Talaksan"); - map.put("tn", "File"); - map.put("to", "File"); - map.put("tpi", "Fail"); - map.put("tr", "Dosya"); - map.put("ts", "File"); - map.put("tt", "Файл"); - map.put("tum", "File"); - map.put("tw", "File"); - map.put("ty", "Fichier"); - map.put("tyv", "Файл"); - map.put("udm", "Файл"); - map.put("ug", "ھۆججەت"); - map.put("uk", "Файл"); - map.put("ur", "فائل"); - map.put("uz", "Fayl"); - map.put("ve", "File"); - map.put("vec", "File"); - map.put("vep", "Fail"); - map.put("vi", "Tập tin"); - map.put("vls", "Ofbeeldienge"); - map.put("vo", "Ragiv"); - map.put("wa", "Imådje"); - map.put("war", "Paypay"); - map.put("wo", "Dencukaay"); - map.put("wuu", "File"); - map.put("xal", "Боомг"); - map.put("xh", "File"); - map.put("xmf", "ფაილი"); - map.put("yi", "טעקע"); - map.put("yo", "Fáìlì"); - map.put("za", "文件"); - map.put("zea", "Plaetje"); - map.put("zh", "File"); - map.put("zh-hans", "File"); - map.put("zh-hant", "File"); - map.put("zh-classical", "檔案"); - map.put("zh-min-nan", "tóng-àn"); - map.put("zh-yue", "File"); - map.put("zu", "File"); - map.put("test", "File"); - return map; - } - - private FileAliasData() { } -} diff --git a/data-client/src/main/java/org/wikipedia/staticdata/MainPageNameData.java b/data-client/src/main/java/org/wikipedia/staticdata/MainPageNameData.java deleted file mode 100644 index c8beae9dfe..0000000000 --- a/data-client/src/main/java/org/wikipedia/staticdata/MainPageNameData.java +++ /dev/null @@ -1,326 +0,0 @@ -/* -This file is auto-generated from a template (/scripts/templates). -If you need to modify it, make sure to modify the template, not this file. -*/ -package org.wikipedia.staticdata; - -import androidx.annotation.NonNull; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -public final class MainPageNameData { - @NonNull private static final Map DATA_MAP = Collections.unmodifiableMap(newMap()); - - @NonNull public static String valueFor(String key) { - if (DATA_MAP.containsKey(key)) { - return DATA_MAP.get(key); - } - return DATA_MAP.get("en"); - } - - @SuppressWarnings({"checkstyle:methodlength", "SpellCheckingInspection"}) - private static Map newMap() { - final int size = 295; - Map map = new HashMap<>(size); - map.put("ab", "Ихадоу адаҟьа"); - map.put("ace", "Ôn Keue"); - map.put("ady", "НэкӀубгъо шъхьаӀ"); - map.put("af", "Tuisblad"); - map.put("ak", "Krataafa Titiriw"); - map.put("als", "Wikipedia:Houptsyte"); - map.put("am", "ዋናው ገጽ"); - map.put("an", "Portalada"); - map.put("ang", "Hēafodtramet"); - map.put("ar", "الصفحة الرئيسية"); - map.put("arc", "ܦܐܬܐ ܪܝܫܝܬܐ"); - map.put("arz", "الصفحه الرئيسيه"); - map.put("as", "বেটুপাত"); - map.put("ast", "Portada"); - map.put("atj", "Otitikowin"); - map.put("av", "БетӀераб гьумер"); - map.put("ay", "Nayriri uñstawi"); - map.put("az", "Ana Səhifə"); - map.put("azb", "آنا صفحه"); - map.put("ba", "Баш бит"); - map.put("bar", "Hoamseitn"); - map.put("bat-smg", "Pėrms poslapis"); - map.put("bcl", "Panginot na Pahina"); - map.put("be", "Галоўная старонка"); - map.put("be-x-old", "Галоўная старонка"); - map.put("bg", "Начална страница"); - map.put("bh", "मुख्य पन्ना"); - map.put("bi", "Nambawan Pej"); - map.put("bjn", "Tungkaran Tatambaian"); - map.put("bm", "Nyɛ fɔlɔ"); - map.put("bn", "প্রধান পাতা"); - map.put("bo", "གཙོ་ངོས།"); - map.put("bpy", "পয়লা পাতা"); - map.put("br", "Degemer"); - map.put("bs", "Početna strana"); - map.put("bug", "Mappadecéŋ"); - map.put("bxr", "Нюур хуудаһан"); - map.put("ca", "Portada"); - map.put("cbk-zam", "El Primero Pagina"); - map.put("cdo", "Tàu Hiĕk"); - map.put("ce", "Коьрта агӀо"); - map.put("ceb", "Unang Panid"); - map.put("ch", "Fanhaluman"); - map.put("chr", "ᎤᎵᎮᎵᏍᏗ"); - map.put("chy", "Va'ohtama"); - map.put("ckb", "دەستپێک"); - map.put("co", "Pagina maestra"); - map.put("cr", "ᓃᔥᑕᒻᐹᔅᑌᒋᓂᑲᓐ"); - map.put("crh", "Baş Saife"); - map.put("cs", "Hlavní strana"); - map.put("csb", "Przédnô starna"); - map.put("cu", "Главьна страница"); - map.put("cv", "Тĕп страницă"); - map.put("cy", "Hafan"); - map.put("da", "Forside"); - map.put("de", "Wikipedia:Hauptseite"); - map.put("din", "Apam këdït"); - map.put("diq", "Perra Seri"); - map.put("dsb", "Głowny bok"); - map.put("dty", "मुख्य पन्ना"); - map.put("dv", "މައި ޞަފްޙާ"); - map.put("dz", "མ་ཤོག།"); - map.put("ee", "Axa do Ŋgɔ"); - map.put("el", "Πύλη:Κύρια"); - map.put("eml", "PP"); - map.put("en", "Main Page"); - map.put("eo", "Vikipedio:Ĉefpaĝo"); - map.put("es", "Wikipedia:Portada"); - map.put("et", "Esileht"); - map.put("eu", "Azala"); - map.put("ext", "Página prencipal"); - map.put("fa", "صفحهٔ اصلی"); - map.put("ff", "Hello jaɓɓorgo"); - map.put("fi", "Wikipedia:Etusivu"); - map.put("fiu-vro", "Pääleht"); - map.put("fj", "Tabana levu"); - map.put("fo", "Forsíða"); - map.put("fr", "Wikipédia:Accueil principal"); - map.put("frp", "Vouiquipèdia:Reçua principâla"); - map.put("frr", "Wikipedia:Hoodsid"); - map.put("fur", "Pagjine principâl"); - map.put("fy", "Haadside"); - map.put("ga", "Príomhleathanach"); - map.put("gag", "Baş yaprak"); - map.put("gan", "封面"); - map.put("gd", "Prìomh-Dhuilleag"); - map.put("gl", "Portada"); - map.put("glk", "گتˇ ولگ"); - map.put("gn", "Ape"); - map.put("gom", "मुखेल पान"); - map.put("gor", "Halaman Bungaliyo"); - map.put("gu", "મુખપૃષ્ઠ"); - map.put("gv", "Ard-ghuillag"); - map.put("ha", "Babban shafi"); - map.put("hak", "Thèu-Ya̍p"); - map.put("haw", "Ka papa kinohi"); - map.put("he", "עמוד ראשי"); - map.put("hi", "मुखपृष्ठ"); - map.put("hif", "Pahila Panna"); - map.put("hr", "Glavna stranica"); - map.put("hsb", "Hłowna strona"); - map.put("ht", "Paj Prensipal"); - map.put("hu", "Kezdőlap"); - map.put("hy", "Գլխավոր էջ"); - map.put("ia", "Pagina principal"); - map.put("id", "Halaman Utama"); - map.put("ie", "Principal págine"); - map.put("ig", "Ihu m̀bụ"); - map.put("ik", "Makpiġaaq Kanna"); - map.put("ilo", "Umuna a Panid"); - map.put("inh", "Керттера оагӀув"); - map.put("io", "Frontispico"); - map.put("is", "Forsíða"); - map.put("it", "Pagina principale"); - map.put("iu", "ᐊᒥᖅ"); - map.put("ja", "メインページ"); - map.put("jam", "Mien Piej"); - map.put("jbo", "uikipedi'as:ralju"); - map.put("jv", "Tepas"); - map.put("ka", "მთავარი გვერდი"); - map.put("kaa", "Bas bet"); - map.put("kab", "Asebtar amenzu"); - map.put("kbd", "НапэкӀуэцӀ нэхъыщхьэ"); - map.put("kbp", "Talɩ ɖeu"); - map.put("kg", "Mukânda ya ngudi"); - map.put("ki", "Main Page"); - map.put("kk", "Басты бет"); - map.put("kl", "Saqqaa"); - map.put("km", "ទំព័រដើម"); - map.put("kn", "ಮುಖ್ಯ ಪುಟ"); - map.put("ko", "위키백과:대문"); - map.put("koi", "Пондӧтчан листбок"); - map.put("krc", "Баш бет"); - map.put("ks", "اہم صَفہٕ"); - map.put("ksh", "Wikipedia:Houpsigk"); - map.put("ku", "Destpêk"); - map.put("kv", "Медшӧр лист бок"); - map.put("kw", "Folen dre"); - map.put("ky", "Башбарак"); - map.put("la", "Vicipaedia:Pagina prima"); - map.put("lad", "La Primera Hoja"); - map.put("lb", "Haaptsäit"); - map.put("lbe", "Агьаммур лажин"); - map.put("lez", "Кьилин ччин"); - map.put("lfn", "Paje xef"); - map.put("lg", "Olupapula Olusooka"); - map.put("li", "Veurblaad"); - map.put("lij", "Pagina prinçipâ"); - map.put("lmo", "Pagina principala"); - map.put("ln", "Lokásá ya libosó"); - map.put("lo", "ໜ້າຫຼັກ"); - map.put("lrc", "سرآسونٱ"); - map.put("lt", "Pagrindinis puslapis"); - map.put("ltg", "Suoku puslopa"); - map.put("lv", "Sākumlapa"); - map.put("mai", "सम्मुख पन्ना"); - map.put("map-bms", "Kaca Utama"); - map.put("mdf", "Пря лопа"); - map.put("mg", "Wikipedia:Fandraisana"); - map.put("mhr", "Тӱҥ лаштык"); - map.put("mi", "Hau Kāinga"); - map.put("min", "Laman Utamo"); - map.put("mk", "Главна страница"); - map.put("ml", "പ്രധാന താൾ"); - map.put("mn", "Нүүр хуудас"); - map.put("mr", "मुखपृष्ठ"); - map.put("mrj", "Тӹнг ӹлӹштӓш"); - map.put("ms", "Laman Utama"); - map.put("mt", "Il-Paġna prinċipali"); - map.put("mwl", "Biquipédia:Páigina percipal"); - map.put("my", "ဗဟိုစာမျက်နှာ"); - map.put("myv", "Прявтлопа"); - map.put("mzn", "گت صفحه"); - map.put("na", "Bwiema peij"); - map.put("nah", "Calīxatl"); - map.put("nap", "Paggena prencepale"); - map.put("nds", "Wikipedia:Hööftsiet"); - map.put("nds-nl", "Vöärblad"); - map.put("ne", "मुख्य पृष्ठ"); - map.put("new", "मू पौ"); - map.put("nl", "Hoofdpagina"); - map.put("nn", "Hovudside"); - map.put("nb", "Portal:Forside"); - map.put("nov", "Chefi pagine"); - map.put("nrm", "Page dé garde"); - map.put("nso", "Letlakala la pele"); - map.put("nv", "Íiyisíí Naaltsoos"); - map.put("ny", "Tsamba Lalikulu"); - map.put("oc", "Acuèlh"); - map.put("olo", "Piäsivu"); - map.put("om", "Fuula Dura"); - map.put("or", "ପ୍ରଧାନ ପୃଷ୍ଠା"); - map.put("os", "Сæйраг фарс"); - map.put("pa", "ਮੁੱਖ ਸਫ਼ਾ"); - map.put("pag", "Arapan ya Bolong"); - map.put("pam", "Pun Bulung"); - map.put("pap", "Página Prinsipal"); - map.put("pcd", "Accueul"); - map.put("pdc", "Haaptblatt"); - map.put("pfl", "Wikipedia:Haubdsaid"); - map.put("pi", "पमुख पत्त Pamukha patta"); - map.put("pih", "Mien Paij"); - map.put("pl", "Wikipedia:Strona główna"); - map.put("pms", "Intrada"); - map.put("pnb", "پہلا صفہ"); - map.put("pnt", "Αρχικόν σελίδα"); - map.put("ps", "لومړی مخ"); - map.put("pt", "Wikipédia:Página principal"); - map.put("qu", "Qhapaq p'anqa"); - map.put("rm", "Wikipedia:Pagina principala"); - map.put("rmy", "Sherutni patrin"); - map.put("rn", "Main Page"); - map.put("ro", "Pagina principală"); - map.put("roa-rup", "Prota frãndzã"); - map.put("roa-tara", "Pagene Prengepále"); - map.put("ru", "Заглавная страница"); - map.put("rue", "Головна сторінка"); - map.put("rw", "Intangiriro"); - map.put("sa", "मुख्यपृष्ठम्"); - map.put("sah", "Сүрүн сирэй"); - map.put("sat", "ᱢᱩᱬᱩᱛ ᱥᱟᱦᱴᱟ"); - map.put("sc", "Pàgina printzipale"); - map.put("scn", "Pàggina principali"); - map.put("sco", "Main Page"); - map.put("sd", "مُک صفحو"); - map.put("se", "Portála:Ovdasiidu"); - map.put("sg", "Gä nzönî"); - map.put("sh", "Glavna stranica"); - map.put("shn", "ၼႃႈႁူဝ်ႁႅၵ်ႈ"); - map.put("si", "මුල් පිටුව"); - map.put("simple", "Main Page"); - map.put("sk", "Hlavná stránka"); - map.put("sl", "Glavna stran"); - map.put("sm", "Itūlau Muamua"); - map.put("sn", "Peji Rekutanga"); - map.put("so", "Bogga Hore"); - map.put("sq", "Faqja kryesore"); - map.put("sr", "Главна страна"); - map.put("srn", "Fesipapira"); - map.put("ss", "Likhasi Lelikhulu"); - map.put("st", "Leqephe la pele"); - map.put("stq", "Haudsiede"); - map.put("su", "Tepas"); - map.put("sv", "Portal:Huvudsida"); - map.put("sw", "Mwanzo"); - map.put("szl", "Przodniŏ zajta"); - map.put("ta", "முதற் பக்கம்"); - map.put("tcy", "ಮುಖ್ಯ ಪುಟ"); - map.put("te", "మొదటి పేజీ"); - map.put("tet", "Pájina Mahuluk"); - map.put("tg", "Саҳифаи аслӣ"); - map.put("th", "หน้าหลัก"); - map.put("ti", "መበገሲ ገጽ"); - map.put("tk", "Baş Sahypa"); - map.put("tl", "Unang Pahina"); - map.put("tn", "Main Page"); - map.put("to", "Peesi tali fiefia"); - map.put("tpi", "Fran pes"); - map.put("tr", "Anasayfa"); - map.put("ts", "Tlukankulu"); - map.put("tt", "Баш бит"); - map.put("tum", "Main Page"); - map.put("tw", "Main Page"); - map.put("ty", "Fa’ari’ira’a"); - map.put("tyv", "Кол арын"); - map.put("udm", "Кутскон бам"); - map.put("ug", "ئۇيغۇرچە ۋىكىپىدىيە"); - map.put("uk", "Головна сторінка"); - map.put("ur", "صفحۂ اول"); - map.put("uz", "Bosh Sahifa"); - map.put("ve", "Hayani"); - map.put("vec", "Pajina prinsipałe"); - map.put("vep", "Pälehtpol’"); - map.put("vi", "Trang Chính"); - map.put("vls", "Voorblad"); - map.put("vo", "Cifapad"); - map.put("wa", "Mwaisse pådje"); - map.put("war", "Syahan nga Pakli"); - map.put("wo", "Xët wu njëkk"); - map.put("wuu", "封面"); - map.put("xal", "Нүр халх"); - map.put("xh", "Iphepha Elingundoqo"); - map.put("xmf", "დუდხასჷლა"); - map.put("yi", "הויפט זייט"); - map.put("yo", "Ojúewé Àkọ́kọ́"); - map.put("za", "Yiebdaeuz"); - map.put("zea", "Vòblad"); - map.put("zh", "Wikipedia:首页"); - map.put("zh-hans", "Wikipedia:首页"); - map.put("zh-hant", "Wikipedia:首页"); - map.put("zh-classical", "維基大典:卷首"); - map.put("zh-min-nan", "Thâu-ia̍h"); - map.put("zh-yue", "頭版"); - map.put("zu", "Ikhasi Elikhulu"); - map.put("test", "Main Page"); - return map; - } - - private MainPageNameData() { } -} diff --git a/data-client/src/main/java/org/wikipedia/staticdata/SpecialAliasData.java b/data-client/src/main/java/org/wikipedia/staticdata/SpecialAliasData.java deleted file mode 100644 index af3cd4d9df..0000000000 --- a/data-client/src/main/java/org/wikipedia/staticdata/SpecialAliasData.java +++ /dev/null @@ -1,326 +0,0 @@ -/* -This file is auto-generated from a template (/scripts/templates). -If you need to modify it, make sure to modify the template, not this file. -*/ -package org.wikipedia.staticdata; - -import androidx.annotation.NonNull; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -public final class SpecialAliasData { - @NonNull private static final Map DATA_MAP = Collections.unmodifiableMap(newMap()); - - @NonNull public static String valueFor(String key) { - if (DATA_MAP.containsKey(key)) { - return DATA_MAP.get(key); - } - return DATA_MAP.get("en"); - } - - @SuppressWarnings({"checkstyle:methodlength", "SpellCheckingInspection"}) - private static Map newMap() { - final int size = 295; - Map map = new HashMap<>(size); - map.put("ab", "Цастәи"); - map.put("ace", "Kusuih"); - map.put("ady", "Special"); - map.put("af", "Spesiaal"); - map.put("ak", "Soronko"); - map.put("als", "Spezial"); - map.put("am", "ልዩ"); - map.put("an", "Especial"); - map.put("ang", "Syndrig"); - map.put("ar", "خاص"); - map.put("arc", "ܕܝܠܢܝܐ"); - map.put("arz", "خاص"); - map.put("as", "বিশেষ"); - map.put("ast", "Especial"); - map.put("atj", "Kotakahi"); - map.put("av", "Служебная"); - map.put("ay", "Especial"); - map.put("az", "Xüsusi"); - map.put("azb", "اؤزل"); - map.put("ba", "Махсус"); - map.put("bar", "Spezial"); - map.put("bat-smg", "Specēlos"); - map.put("bcl", "Espesyal"); - map.put("be", "Адмысловае"); - map.put("be-x-old", "Спэцыяльныя"); - map.put("bg", "Специални"); - map.put("bh", "विशेष"); - map.put("bi", "Special"); - map.put("bjn", "Istimiwa"); - map.put("bm", "Spécial"); - map.put("bn", "বিশেষ"); - map.put("bo", "Special"); - map.put("bpy", "বিশেষ"); - map.put("br", "Dibar"); - map.put("bs", "Posebno"); - map.put("bug", "Istimewa"); - map.put("bxr", "Тусхай"); - map.put("ca", "Especial"); - map.put("cbk-zam", "Especial"); - map.put("cdo", "特殊"); - map.put("ce", "Белхан"); - map.put("ceb", "Espesyal"); - map.put("ch", "Espesiat"); - map.put("chr", "Special"); - map.put("chy", "Special"); - map.put("ckb", "تایبەت"); - map.put("co", "Speciale"); - map.put("cr", "Special"); - map.put("crh", "Mahsus"); - map.put("cs", "Speciální"); - map.put("csb", "Specjalnô"); - map.put("cu", "Нарочьна"); - map.put("cv", "Ятарлă"); - map.put("cy", "Arbennig"); - map.put("da", "Speciel"); - map.put("de", "Spezial"); - map.put("din", "Këcëweek"); - map.put("diq", "Bağse"); - map.put("dsb", "Specialne"); - map.put("dty", "बिशेष"); - map.put("dv", "ޚާއްސަ"); - map.put("dz", "Special"); - map.put("ee", "Special"); - map.put("el", "Ειδικό"); - map.put("eml", "Speciale"); - map.put("en", "Special"); - map.put("eo", "Specialaĵo"); - map.put("es", "Especial"); - map.put("et", "Eri"); - map.put("eu", "Berezi"); - map.put("ext", "Especial"); - map.put("fa", "ویژه"); - map.put("ff", "Spécial"); - map.put("fi", "Toiminnot"); - map.put("fiu-vro", "Tallituslehekülg"); - map.put("fj", "Special"); - map.put("fo", "Serstakt"); - map.put("fr", "Spécial"); - map.put("frp", "Spèciâl"); - map.put("frr", "Spezial"); - map.put("fur", "Speciâl"); - map.put("fy", "Wiki"); - map.put("ga", "Speisialta"); - map.put("gag", "Maasus"); - map.put("gan", "特別"); - map.put("gd", "Sònraichte"); - map.put("gl", "Especial"); - map.put("glk", "خاص"); - map.put("gn", "Mba'echĩchĩ"); - map.put("gom", "विशेश"); - map.put("gor", "Spesial"); - map.put("gu", "વિશેષ"); - map.put("gv", "Er lheh"); - map.put("ha", "Special"); - map.put("hak", "特殊"); - map.put("haw", "Papa nui"); - map.put("he", "מיוחד"); - map.put("hi", "विशेष"); - map.put("hif", "khaas"); - map.put("hr", "Posebno"); - map.put("hsb", "Specialnje"); - map.put("ht", "Espesyal"); - map.put("hu", "Speciális"); - map.put("hy", "Սպասարկող"); - map.put("ia", "Special"); - map.put("id", "Istimewa"); - map.put("ie", "Special"); - map.put("ig", "Ihü kárírí"); - map.put("ik", "Special"); - map.put("ilo", "Espesial"); - map.put("inh", "Гӏулакха"); - map.put("io", "Specala"); - map.put("is", "Kerfissíða"); - map.put("it", "Speciale"); - map.put("iu", "Special"); - map.put("ja", "特別"); - map.put("jam", "Special"); - map.put("jbo", "rirci"); - map.put("jv", "Astamiwa"); - map.put("ka", "სპეციალური"); - map.put("kaa", "Arnawlı"); - map.put("kab", "Uslig"); - map.put("kbd", "Служебная"); - map.put("kbp", "Spécial"); - map.put("kg", "Special"); - map.put("ki", "Special"); - map.put("kk", "Арнайы"); - map.put("kl", "Immikkut"); - map.put("km", "ពិសេស"); - map.put("kn", "ವಿಶೇಷ"); - map.put("ko", "특수"); - map.put("koi", "Служебная"); - map.put("krc", "Къуллукъ"); - map.put("ks", "خاص"); - map.put("ksh", "Extra"); - map.put("ku", "Taybet"); - map.put("kv", "Отсасян"); - map.put("kw", "Arbennek"); - map.put("ky", "Атайын"); - map.put("la", "Specialis"); - map.put("lad", "Especial"); - map.put("lb", "Spezial"); - map.put("lbe", "Къуллугъирал лажин"); - map.put("lez", "Служебная"); - map.put("lfn", "Spesial"); - map.put("lg", "Special"); - map.put("li", "Speciaal"); - map.put("lij", "Speçiale"); - map.put("lmo", "Special"); - map.put("ln", "Spécial"); - map.put("lo", "ພິເສດ"); - map.put("lrc", "ڤیجە"); - map.put("lt", "Specialus"); - map.put("ltg", "Seviškuo"); - map.put("lv", "Special"); - map.put("mai", "विशेष"); - map.put("map-bms", "Astamiwa"); - map.put("mdf", "Башка"); - map.put("mg", "Manokana"); - map.put("mhr", "Лӱмын ыштыме"); - map.put("mi", "Special"); - map.put("min", "Istimewa"); - map.put("mk", "Специјална"); - map.put("ml", "പ്രത്യേകം"); - map.put("mn", "Тусгай"); - map.put("mr", "विशेष"); - map.put("mrj", "Спецӹлӹштӓш"); - map.put("ms", "Khas"); - map.put("mt", "Speċjali"); - map.put("mwl", "Special"); - map.put("my", "Special"); - map.put("myv", "Башка тевень"); - map.put("mzn", "شا"); - map.put("na", "Special"); - map.put("nah", "Nōncuahquīzqui"); - map.put("nap", "Speciàle"); - map.put("nds", "Spezial"); - map.put("nds-nl", "Spesiaal"); - map.put("ne", "विशेष"); - map.put("new", "विशेष"); - map.put("nl", "Speciaal"); - map.put("nn", "Spesial"); - map.put("nb", "Spesial"); - map.put("nov", "Special"); - map.put("nrm", "Spécial"); - map.put("nso", "Special"); - map.put("nv", "Special"); - map.put("ny", "Special"); - map.put("oc", "Especial"); - map.put("olo", "Erikoine"); - map.put("om", "Special"); - map.put("or", "ବିଶେଷ"); - map.put("os", "Сæрмагонд"); - map.put("pa", "ਖ਼ਾਸ"); - map.put("pag", "Special"); - map.put("pam", "Special"); - map.put("pap", "Special"); - map.put("pcd", "Spécial"); - map.put("pdc", "Spezial"); - map.put("pfl", "Schbezial"); - map.put("pi", "विसेस"); - map.put("pih", "Special"); - map.put("pl", "Specjalna"); - map.put("pms", "Special"); - map.put("pnb", "خاص"); - map.put("pnt", "Ειδικόν"); - map.put("ps", "ځانگړی"); - map.put("pt", "Especial"); - map.put("qu", "Sapaq"); - map.put("rm", "Spezial"); - map.put("rmy", "Uzalutno"); - map.put("rn", "Special"); - map.put("ro", "Special"); - map.put("roa-rup", "Special"); - map.put("roa-tara", "Speciale"); - map.put("ru", "Служебная"); - map.put("rue", "Шпеціална"); - map.put("rw", "Special"); - map.put("sa", "विशेषः"); - map.put("sah", "Аналлаах"); - map.put("sat", "ᱟᱥᱚᱠᱟᱭ"); - map.put("sc", "Ispetziale"); - map.put("scn", "Spiciali"); - map.put("sco", "Special"); - map.put("sd", "خاص"); - map.put("se", "Erenoamáš"); - map.put("sg", "Spécial"); - map.put("sh", "Posebno"); - map.put("shn", "ၶိုၵ်ႉတွၼ်း"); - map.put("si", "විශේෂ"); - map.put("simple", "Special"); - map.put("sk", "Špeciálne"); - map.put("sl", "Posebno"); - map.put("sm", "Special"); - map.put("sn", "Special"); - map.put("so", "Special"); - map.put("sq", "Speciale"); - map.put("sr", "Посебно"); - map.put("srn", "Spesyal"); - map.put("ss", "Special"); - map.put("st", "Special"); - map.put("stq", "Spezial"); - map.put("su", "Husus"); - map.put("sv", "Special"); - map.put("sw", "Maalum"); - map.put("szl", "Szpecyjalna"); - map.put("ta", "சிறப்பு"); - map.put("tcy", "ವಿಸೇಸೊ"); - map.put("te", "ప్రత్యేక"); - map.put("tet", "Espesiál"); - map.put("tg", "Вижа"); - map.put("th", "พิเศษ"); - map.put("ti", "Special"); - map.put("tk", "Ýörite"); - map.put("tl", "Natatangi"); - map.put("tn", "Special"); - map.put("to", "Special"); - map.put("tpi", "Sipesol"); - map.put("tr", "Özel"); - map.put("ts", "Special"); - map.put("tt", "Махсус"); - map.put("tum", "Special"); - map.put("tw", "Special"); - map.put("ty", "Spécial"); - map.put("tyv", "Тускай"); - map.put("udm", "Панель"); - map.put("ug", "ئالاھىدە"); - map.put("uk", "Спеціальна"); - map.put("ur", "خاص"); - map.put("uz", "Maxsus"); - map.put("ve", "Special"); - map.put("vec", "Speciale"); - map.put("vep", "Specialine"); - map.put("vi", "Đặc biệt"); - map.put("vls", "Specioal"); - map.put("vo", "Patikos"); - map.put("wa", "Sipeciås"); - map.put("war", "Pinaurog"); - map.put("wo", "Jagleel"); - map.put("wuu", "Special"); - map.put("xal", "Көдлхнә"); - map.put("xh", "Special"); - map.put("xmf", "სპეციალური"); - map.put("yi", "באַזונדער"); - map.put("yo", "Pàtàkì"); - map.put("za", "特殊"); - map.put("zea", "Speciaol"); - map.put("zh", "Special"); - map.put("zh-hans", "Special"); - map.put("zh-hant", "Special"); - map.put("zh-classical", "特殊"); - map.put("zh-min-nan", "Tek-pia̍t"); - map.put("zh-yue", "Special"); - map.put("zu", "Special"); - map.put("test", "Special"); - return map; - } - - private SpecialAliasData() { } -} diff --git a/data-client/src/main/java/org/wikipedia/util/ActiveTimer.java b/data-client/src/main/java/org/wikipedia/util/ActiveTimer.java deleted file mode 100644 index bbd58c78bc..0000000000 --- a/data-client/src/main/java/org/wikipedia/util/ActiveTimer.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.wikipedia.util; - -import java.util.concurrent.TimeUnit; - -public class ActiveTimer { - private long startMillis; - private long pauseMillis; - - public ActiveTimer() { - reset(); - } - - public void reset() { - startMillis = System.currentTimeMillis(); - pauseMillis = startMillis; - } - - public void pause() { - pauseMillis = System.currentTimeMillis(); - } - - public void resume() { - startMillis -= (System.currentTimeMillis() - pauseMillis); - } - - public int getElapsedSec() { - return (int) TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - startMillis); - } -} diff --git a/data-client/src/main/java/org/wikipedia/util/ArrayUtils.java b/data-client/src/main/java/org/wikipedia/util/ArrayUtils.java deleted file mode 100644 index 8a8fba4b85..0000000000 --- a/data-client/src/main/java/org/wikipedia/util/ArrayUtils.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.wikipedia.util; - -import java.util.Arrays; - -import static org.apache.commons.lang3.ArrayUtils.INDEX_NOT_FOUND; -import static org.apache.commons.lang3.ArrayUtils.indexOf; -import static org.apache.commons.lang3.ArrayUtils.removeAll; - -// Some OEMs appear to have added a pre-v3.5, possibly re-v3.4, version of ArrayUtils to the system -// path which does not contain removeAllOccurrences(). This class is a partial copy of Apache -// Commons' ArrayUtils -// https://rink.hockeyapp.net/manage/apps/226650/app_versions/79/crash_reasons/156658637 -public final class ArrayUtils { - /** - * Removes the occurrences of the specified element from the specified array. - * - *

- * All subsequent elements are shifted to the left (subtracts one from their indices). - * If the array doesn't contains such an element, no elements are removed from the array. - * null will be returned if the input array is null. - *

- * - * @param the type of object in the array - * @param element the element to remove - * @param array the input array - * - * @return A new array containing the existing elements except the occurrences of the specified element. - * @since 3.5 - */ - public static T[] removeAllOccurrences(final T[] array, final T element) { - int index = indexOf(array, element); - if (index == INDEX_NOT_FOUND) { - return org.apache.commons.lang3.ArrayUtils.clone(array); - } - - int[] indices = new int[array.length - index]; - indices[0] = index; - int count = 1; - - while ((index = indexOf(array, element, indices[count - 1] + 1)) != INDEX_NOT_FOUND) { - indices[count++] = index; - } - - return removeAll(array, Arrays.copyOf(indices, count)); - } - - private ArrayUtils() { } -} diff --git a/data-client/src/main/java/org/wikipedia/util/ClipboardUtil.java b/data-client/src/main/java/org/wikipedia/util/ClipboardUtil.java deleted file mode 100644 index 4ac5937334..0000000000 --- a/data-client/src/main/java/org/wikipedia/util/ClipboardUtil.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.wikipedia.util; - -import android.content.ClipData; -import android.content.ClipboardManager; -import android.content.Context; - -import androidx.annotation.Nullable; - -public final class ClipboardUtil { - public static void setPlainText(@Nullable Context context, - @Nullable CharSequence label, - @Nullable CharSequence text) { - ClipData clip = ClipData.newPlainText(label, text); - getManager(context).setPrimaryClip(clip); - } - - private static ClipboardManager getManager(Context context) { - return (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); - } - - private ClipboardUtil() { } -} diff --git a/data-client/src/main/java/org/wikipedia/util/ConfigurationCompat.java b/data-client/src/main/java/org/wikipedia/util/ConfigurationCompat.java deleted file mode 100644 index 68616df9cd..0000000000 --- a/data-client/src/main/java/org/wikipedia/util/ConfigurationCompat.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.wikipedia.util; - -import android.content.res.Configuration; -import android.os.Build; - -import androidx.annotation.NonNull; - -import java.util.Locale; - -public final class ConfigurationCompat { - - @NonNull public static Locale getLocale(@NonNull Configuration cfg) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - return cfg.getLocales().get(0); - } - //noinspection deprecation - return cfg.locale; - } - - private ConfigurationCompat() { } -} diff --git a/data-client/src/main/java/org/wikipedia/util/ContentProviderClientCompat.java b/data-client/src/main/java/org/wikipedia/util/ContentProviderClientCompat.java deleted file mode 100644 index e85adcb018..0000000000 --- a/data-client/src/main/java/org/wikipedia/util/ContentProviderClientCompat.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.wikipedia.util; - -import android.content.ContentProviderClient; -import android.os.Build; - -import androidx.annotation.NonNull; - -public final class ContentProviderClientCompat { - public static void close(@NonNull ContentProviderClient client) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - client.close(); - } else { - //noinspection deprecation - client.release(); - } - } - - private ContentProviderClientCompat() { } -} diff --git a/data-client/src/main/java/org/wikipedia/util/DateUtil.java b/data-client/src/main/java/org/wikipedia/util/DateUtil.java deleted file mode 100644 index c986555a79..0000000000 --- a/data-client/src/main/java/org/wikipedia/util/DateUtil.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.wikipedia.util; - -import android.content.Context; - -import androidx.annotation.NonNull; - -import org.wikipedia.feed.model.UtcDate; - -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import java.util.TimeZone; - -public final class DateUtil { - private static Map DATE_FORMATS = new HashMap<>(); - - // TODO: Switch to DateTimeFormatter when minSdk = 26. - - public static synchronized String iso8601DateFormat(Date date) { - return getCachedDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ROOT, true).format(date); - } - - public static synchronized Date iso8601DateParse(String date) throws ParseException { - return getCachedDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ROOT, true).parse(date); - } - - public static synchronized String iso8601LocalDateFormat(Date date) { - return getCachedDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ROOT, false).format(date); - } - - public static String getMonthOnlyDateString(@NonNull Date date) { - return getDateStringWithSkeletonPattern(date, "MMMM d"); - } - - public static String getMonthOnlyWithoutDayDateString(@NonNull Date date) { - return getDateStringWithSkeletonPattern(date, "MMMM"); - } - - public static String getExtraShortDateString(@NonNull Date date) { - return getDateStringWithSkeletonPattern(date, "MMM d"); - } - - public static synchronized String getDateStringWithSkeletonPattern(@NonNull Date date, @NonNull String pattern) { - return getCachedDateFormat(android.text.format.DateFormat.getBestDateTimePattern(Locale.getDefault(), pattern), Locale.getDefault(), false).format(date); - } - - private static SimpleDateFormat getCachedDateFormat(String pattern, Locale locale, boolean utc) { - if (!DATE_FORMATS.containsKey(pattern)) { - SimpleDateFormat df = new SimpleDateFormat(pattern, locale); - if (utc) { - df.setTimeZone(TimeZone.getTimeZone("UTC")); - } - DATE_FORMATS.put(pattern, df); - } - return DATE_FORMATS.get(pattern); - } - - public static String getShortDateString(@NonNull Context context, @NonNull Date date) { - // todo: consider allowing TWN date formats. It would be useful to have but might be - // difficult for translators to write correct format specifiers without being able to - // test them. We should investigate localization support in date libraries such as - // Joda-Time and how TWN solves this classic problem. - DateFormat dateFormat = android.text.format.DateFormat.getMediumDateFormat(context); - dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - return dateFormat.format(date); - } - - public static UtcDate getUtcRequestDateFor(int age) { - return new UtcDate(age); - } - - public static Calendar getDefaultDateFor(int age) { - Calendar calendar = Calendar.getInstance(TimeZone.getDefault()); - calendar.add(Calendar.DATE, -age); - return calendar; - } - - public static synchronized Date getHttpLastModifiedDate(@NonNull String dateStr) throws ParseException { - return getCachedDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH, true).parse(dateStr); - } - - public static String getReadingListsLastSyncDateString(@NonNull String dateStr) throws ParseException { - return getDateStringWithSkeletonPattern(iso8601DateParse(dateStr), "d MMM yyyy HH:mm"); - } - - @NonNull public static String yearToStringWithEra(int year) { - Calendar cal = new GregorianCalendar(year, 1, 1); - return getDateStringWithSkeletonPattern(cal.getTime(), year < 0 ? "y GG" : "y"); - } - - private DateUtil() { - } -} diff --git a/data-client/src/main/java/org/wikipedia/util/ImageUrlUtil.java b/data-client/src/main/java/org/wikipedia/util/ImageUrlUtil.java deleted file mode 100644 index 632cd21e23..0000000000 --- a/data-client/src/main/java/org/wikipedia/util/ImageUrlUtil.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.wikipedia.util; - -import android.net.Uri; - -import androidx.annotation.NonNull; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public final class ImageUrlUtil { - private static Pattern WIDTH_IN_IMAGE_URL_REGEX = Pattern.compile("/(\\d+)px-"); - - @NonNull - public static Uri getUrlForSize(@NonNull Uri uri, int size) { - return Uri.parse(getUrlForSize(uri.toString(), size)); - } - - @NonNull - public static String getUrlForSize(@NonNull String original, int size) { - Matcher matcher = WIDTH_IN_IMAGE_URL_REGEX.matcher(original); - if (matcher.find() && Integer.parseInt(matcher.group(1)) > size) { - return matcher.replaceAll("/" + size + "px-"); - } - return original; - } - - @NonNull - public static String getUrlForPreferredSize(@NonNull String original, int size) { - Matcher matcher = WIDTH_IN_IMAGE_URL_REGEX.matcher(original); - if (matcher.find() && Integer.parseInt(matcher.group(1)) != size) { - return matcher.replaceAll("/" + size + "px-"); - } - return original; - } - - private ImageUrlUtil() { - } -} diff --git a/data-client/src/main/java/org/wikipedia/util/JsonUtil.java b/data-client/src/main/java/org/wikipedia/util/JsonUtil.java deleted file mode 100644 index ca4c3aeb97..0000000000 --- a/data-client/src/main/java/org/wikipedia/util/JsonUtil.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.wikipedia.util; - -import org.json.JSONArray; - -public final class JsonUtil { - - /** - * Convert a JSONArray object to a String Array. - * - * @param array a JSONArray containing only Strings - * @return a String[] with all the items in the JSONArray - */ - public static String[] jsonArrayToStringArray(JSONArray array) { - if (array == null) { - return null; - } - String[] stringArray = new String[array.length()]; - for (int i = 0; i < array.length(); i++) { - stringArray[i] = array.optString(i); - } - return stringArray; - } - - private JsonUtil() { - - } -} diff --git a/data-client/src/main/java/org/wikipedia/util/MathUtil.java b/data-client/src/main/java/org/wikipedia/util/MathUtil.java deleted file mode 100644 index 73216eda65..0000000000 --- a/data-client/src/main/java/org/wikipedia/util/MathUtil.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.wikipedia.util; - -public final class MathUtil { - - private static final int PERCENTAGE_BASE = 100; - - public static float constrain(float f, float min, float max) { - return Math.min(Math.max(min, f), max); - } - - public static class Averaged { - private double sampleSum; - private int sampleSize; - - public void addSample(T sample) { - sampleSum += sample.doubleValue(); - ++sampleSize; - } - - public double getAverage() { - return sampleSize == 0 ? 0 : sampleSum / sampleSize; - } - - public void reset() { - sampleSum = 0; - sampleSize = 0; - } - } - - public static float percentage(float numerator, float denominator) { - return numerator / denominator * PERCENTAGE_BASE; - } - - private MathUtil() { - } -} diff --git a/data-client/src/main/java/org/wikipedia/util/StringUtil.java b/data-client/src/main/java/org/wikipedia/util/StringUtil.java deleted file mode 100644 index 1d3e2d42e8..0000000000 --- a/data-client/src/main/java/org/wikipedia/util/StringUtil.java +++ /dev/null @@ -1,267 +0,0 @@ -package org.wikipedia.util; - -import android.os.Build; -import android.text.Html; -import android.text.Spannable; -import android.text.SpannableStringBuilder; -import android.text.Spanned; -import android.text.SpannedString; -import android.text.TextUtils; -import android.text.style.StyleSpan; -import android.text.style.TypefaceSpan; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.annotation.IntRange; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.Gson; - -import org.json.JSONArray; - -import java.io.UnsupportedEncodingException; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.text.Collator; -import java.text.Normalizer; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -public final class StringUtil { - private static final String CSV_DELIMITER = ","; - - @NonNull - public static String listToCsv(@NonNull List list) { - return TextUtils.join(CSV_DELIMITER, list); - } - - /** @return Nonnull immutable list. */ - @NonNull - public static List csvToList(@NonNull String csv) { - return delimiterStringToList(csv, CSV_DELIMITER); - } - - /** @return Nonnull immutable list. */ - @NonNull - public static List delimiterStringToList(@NonNull String delimitedString, - @NonNull String delimiter) { - return Arrays.asList(TextUtils.split(delimitedString, delimiter)); - } - - /** - * Creates an MD5 hash of the provided string and returns its ASCII representation - * @param s String to hash - * @return ASCII MD5 representation of the string passed in - */ - @NonNull public static String md5string(@NonNull String s) { - StringBuilder hexStr = new StringBuilder(); - try { - // Create MD5 Hash - MessageDigest digest = java.security.MessageDigest.getInstance("MD5"); - digest.update(s.getBytes("utf-8")); - byte[] messageDigest = digest.digest(); - - final int maxByteVal = 0xFF; - for (byte b : messageDigest) { - hexStr.append(Integer.toHexString(maxByteVal & b)); - } - } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { - throw new RuntimeException(e); - } - return hexStr.toString(); - } - - /** - * Remove leading and trailing whitespace from a CharSequence. This is useful after using - * the fromHtml() function to convert HTML to a CharSequence. - * @param str CharSequence to be trimmed. - * @return The trimmed CharSequence. - */ - @NonNull public static CharSequence strip(@Nullable CharSequence str) { - if (str == null || str.length() == 0) { - return ""; - } - int len = str.length(); - int start = 0; - int end = len - 1; - while (start < len && Character.isWhitespace(str.charAt(start))) { - start++; - } - while (end > 0 && Character.isWhitespace(str.charAt(end))) { - end--; - } - if (end > start) { - return str.subSequence(start, end + 1); - } - return ""; - } - - @NonNull - public static String intToHexStr(int i) { - return String.format("x%08x", i); - } - - public static String addUnderscores(@NonNull String text) { - return text.replace(" ", "_"); - } - - public static String removeUnderscores(@NonNull String text) { - return text.replace("_", " "); - } - - public static boolean hasSectionAnchor(@NonNull String text) { - return text.contains("#"); - } - - public static String removeSectionAnchor(String text) { - return text.substring(0, text.indexOf("#")); - } - - public static String removeNamespace(@NonNull String text) { - if (text.length() > text.indexOf(":")) { - return text.substring(text.indexOf(":") + 1, text.length()); - } else { - return text; - } - } - - public static String removeHTMLTags(@NonNull String text) { - return fromHtml(text).toString(); - } - - public static String sanitizeText(@NonNull String selectedText) { - return selectedText.replaceAll("\\[\\d+\\]", "") // [1] - // https://en.wikipedia.org/wiki/Phonetic_symbols_in_Unicode - .replaceAll("\\s*/[^/]+/;?\\s*", "") - .replaceAll("\\(\\s*;\\s*", "\\(") // (; -> ( hacky way for IPA remnants - .replaceAll("\\s{2,}", " ") - .trim(); - } - - // Compare two strings based on their normalized form, using the Unicode Normalization Form C. - // This should be used when comparing or verifying strings that will be exchanged between - // different platforms (iOS, desktop, etc) that may encode strings using inconsistent - // composition, especially for accents, diacritics, etc. - public static boolean normalizedEquals(@Nullable String str1, @Nullable String str2) { - if (str1 == null || str2 == null) { - return (str1 == null && str2 == null); - } - return Normalizer.normalize(str1, Normalizer.Form.NFC) - .equals(Normalizer.normalize(str2, Normalizer.Form.NFC)); - } - - /** - * @param source String that may contain HTML tags. - * @return returned Spanned string that may contain spans parsed from the HTML source. - */ - @NonNull public static Spanned fromHtml(@Nullable String source) { - if (source == null) { - return new SpannedString(""); - } - if (!source.contains("<") && !source.contains("&")) { - // If the string doesn't contain any hints of HTML entities, then skip the expensive - // processing that fromHtml() performs. - return new SpannedString(source); - } - source = source.replaceAll("‎", "\u200E") - .replaceAll("‏", "\u200F") - .replaceAll("&", "&"); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - return Html.fromHtml(source, Html.FROM_HTML_MODE_LEGACY); - } else { - //noinspection deprecation - return Html.fromHtml(source); - } - } - - @NonNull - public static SpannableStringBuilder boldenSubstrings(@NonNull String text, @NonNull List subStrings) { - SpannableStringBuilder sb = new SpannableStringBuilder(text); - for (String subString : subStrings) { - int index = text.toLowerCase().indexOf(subString.toLowerCase()); - if (index != -1) { - sb.setSpan(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP - ? new TypefaceSpan("sans-serif-medium") - : new StyleSpan(android.graphics.Typeface.BOLD), - index, index + subString.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); - } - } - return sb; - } - - public static void highlightEditText(@NonNull EditText editText, @NonNull String parentText, @NonNull String highlightText) { - String[] words = highlightText.split("\\s+"); - int pos = 0; - for (String word : words) { - pos = parentText.indexOf(word, pos); - if (pos == -1) { - break; - } - } - if (pos == -1) { - pos = parentText.indexOf(words[words.length - 1]); - } - if (pos >= 0) { - // TODO: Programmatic selection doesn't seem to work with RTL content... - editText.setSelection(pos, pos + words[words.length - 1].length()); - editText.performLongClick(); - } - } - - public static void boldenKeywordText(@NonNull TextView textView, @NonNull String parentText, @Nullable String searchQuery) { - int startIndex = indexOf(parentText, searchQuery); - if (startIndex >= 0) { - parentText = parentText.substring(0, startIndex) - + "" - + parentText.substring(startIndex, startIndex + searchQuery.length()) - + "" - + parentText.substring(startIndex + searchQuery.length()); - textView.setText(StringUtil.fromHtml(parentText)); - } else { - textView.setText(parentText); - } - } - - // case insensitive indexOf, also more lenient with similar chars, like chars with accents - private static int indexOf(@NonNull String original, @Nullable String search) { - if (!TextUtils.isEmpty(search)) { - Collator collator = Collator.getInstance(); - collator.setStrength(Collator.PRIMARY); - for (int i = 0; i <= original.length() - search.length(); i++) { - if (collator.equals(search, original.substring(i, i + search.length()))) { - return i; - } - } - } - return -1; - } - - @NonNull - public static String getBase26String(@IntRange(from = 1) int number) { - final int base = 26; - String str = ""; - while (--number >= 0) { - str = (char)('A' + number % base) + str; - number /= base; - } - return str; - } - - @NonNull - public static String listToJsonArrayString(@NonNull List list) { - return new JSONArray(list).toString(); - } - - public static String stringToListMapToJSONString(@Nullable Map> map) { - return new Gson().toJson(map); - } - - public static String listToJSONString(@Nullable List list) { - return new Gson().toJson(list); - } - - private StringUtil() { - } -} diff --git a/data-client/src/main/java/org/wikipedia/util/UriUtil.java b/data-client/src/main/java/org/wikipedia/util/UriUtil.java deleted file mode 100644 index c537c76a19..0000000000 --- a/data-client/src/main/java/org/wikipedia/util/UriUtil.java +++ /dev/null @@ -1,137 +0,0 @@ -package org.wikipedia.util; - -import android.content.Context; -import android.net.Uri; -import android.text.TextUtils; - -import androidx.annotation.NonNull; -import androidx.annotation.StringRes; -import androidx.annotation.VisibleForTesting; - -import org.apache.commons.lang3.StringUtils; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.page.PageTitle; -import org.wikipedia.util.log.L; - -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.net.URLEncoder; - -public final class UriUtil { - /** - * Decodes a URL-encoded string into its UTF-8 equivalent. If the string cannot be decoded, the - * original string is returned. - * @param url The URL-encoded string that you wish to decode. - * @return The decoded string, or the input string if the decoding failed. - */ - @NonNull public static String decodeURL(@NonNull String url) { - try { - return URLDecoder.decode(url, "UTF-8"); - } catch (IllegalArgumentException e) { - // Swallow IllegalArgumentException (can happen with malformed encoding), and just - // return the original string. - L.d("URL decoding failed. String was: " + url); - return url; - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); - } - } - - @NonNull public static String encodeURL(@NonNull String url) { - try { - return URLEncoder.encode(url, "UTF-8"); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); - } - } - - @NonNull public static String resolveProtocolRelativeUrl(@NonNull WikiSite wiki, - @NonNull String url) { - String ret = resolveProtocolRelativeUrl(url); - - // also handle images like /w/extensions/ImageMap/desc-20.png?15600 on Estados Unidos - // or like /api/rest_v1/page/graph/png/API/0/019dd76b5f4887040716e65de53802c5033cb40c.png - return (ret.startsWith("./") || ret.startsWith("/w/") || ret.startsWith("/wiki/")) - || ret.startsWith("/api/") - ? wiki.uri().buildUpon().appendEncodedPath(ret.replaceFirst("/", "")).build().toString() - : ret; - } - - /** - * Resolves a potentially protocol relative URL to a 'full' URL - * - * @param url Url to check for (and fix) protocol relativeness - * @return A fully qualified, protocol specified URL - */ - @NonNull public static String resolveProtocolRelativeUrl(@NonNull String url) { - return (url.startsWith("//") ? WikiSite.DEFAULT_SCHEME + ":" + url - : url); - } - - public static boolean isValidPageLink(@NonNull Uri uri) { - return (!TextUtils.isEmpty(uri.getAuthority()) - && uri.getAuthority().endsWith("wikipedia.org") - && !TextUtils.isEmpty(uri.getPath()) - && uri.getPath().startsWith("/wiki")); - } - - /* - Links in a ZIM file are of the form "[Title].html", instead of "/wiki/[Title]", which is what - isValidPageLink() expects. This necessitates a slightly different way to check for validity. - */ - public static boolean isValidOfflinePageLink(@NonNull Uri uri) { - return (!TextUtils.isEmpty(uri.getAuthority()) - && uri.getAuthority().endsWith("wikipedia.org") - && !TextUtils.isEmpty(uri.getPath()) - && uri.getPath().endsWith(".html")); - } - - public static String getUrlWithProvenance(Context context, PageTitle title, - @StringRes int provId) { - return title.getCanonicalUri() + "?wprov=" + context.getString(provId); - } - - /** - * Note that while this method also replaces '_' with spaces it doesn't fully decode the string. - */ - @NonNull - public static String getTitleFromUrl(@NonNull String url) { - return removeFragment(removeLinkPrefix(url)).replace("_", " "); - } - - /** Get language variant code from a Uri, e.g. "zh-*", otherwise returns empty string. */ - @NonNull - public static String getLanguageVariantFromUri(@NonNull Uri uri) { - if (TextUtils.isEmpty(uri.getPath())) { - return ""; - } - String[] parts = StringUtils.split(StringUtils.defaultString(uri.getPath()), '/'); - return parts.length > 1 && !parts[0].equals("wiki") ? parts[0] : ""; - } - - /** For internal links only */ - @NonNull - public static String removeInternalLinkPrefix(@NonNull String link) { - return link.replaceFirst("/wiki/|/zh-.*/", ""); - } - - /** For links that could be internal or external links */ - @NonNull - private static String removeLinkPrefix(@NonNull String link) { - return link.replaceFirst("^.*?/wiki/", ""); - } - - /** Removes an optional fragment portion of a URL */ - @VisibleForTesting - @NonNull - static String removeFragment(@NonNull String link) { - return link.replaceFirst("#.*$", ""); - } - - public static String getFragment(String link) { - return Uri.parse(link).getFragment(); - } - - private UriUtil() { - } -} diff --git a/data-client/src/main/java/org/wikipedia/util/log/L.java b/data-client/src/main/java/org/wikipedia/util/log/L.java deleted file mode 100644 index 059cef287e..0000000000 --- a/data-client/src/main/java/org/wikipedia/util/log/L.java +++ /dev/null @@ -1,147 +0,0 @@ -package org.wikipedia.util.log; - -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.wikipedia.AppAdapter; - -/** Logging utility like {@link Log} but with implied tags. */ -public final class L { - private static final LogLevel LEVEL_V = new LogLevel() { - @Override - public void logLevel(String tag, String msg, Throwable t) { - Log.v(tag, msg, t); - } - }; - - private static final LogLevel LEVEL_D = new LogLevel() { - @Override - public void logLevel(String tag, String msg, Throwable t) { - Log.d(tag, msg, t); - } - }; - - private static final LogLevel LEVEL_I = new LogLevel() { - @Override - public void logLevel(String tag, String msg, Throwable t) { - Log.i(tag, msg, t); - } - }; - - private static final LogLevel LEVEL_W = new LogLevel() { - @Override - public void logLevel(String tag, String msg, Throwable t) { - Log.w(tag, msg, t); - } - }; - - private static final LogLevel LEVEL_E = new LogLevel() { - @Override - public void logLevel(String tag, String msg, Throwable t) { - Log.e(tag, msg, t); - } - }; - - @Nullable private static RemoteExceptionLogger REMOTE_EXCEPTION_LOGGER; - - public static void v(CharSequence msg) { - LEVEL_V.log(msg, null); - } - - public static void d(CharSequence msg) { - LEVEL_D.log(msg, null); - } - - public static void i(CharSequence msg) { - LEVEL_I.log(msg, null); - } - - public static void w(CharSequence msg) { - LEVEL_W.log(msg, null); - } - - public static void e(CharSequence msg) { - LEVEL_E.log(msg, null); - } - - public static void v(Throwable t) { - LEVEL_V.log("", t); - } - - public static void d(Throwable t) { - LEVEL_D.log("", t); - } - - public static void i(Throwable t) { - LEVEL_I.log("", t); - } - - public static void w(Throwable t) { - LEVEL_W.log("", t); - } - - public static void e(Throwable t) { - LEVEL_E.log("", t); - } - - public static void v(CharSequence msg, Throwable t) { - LEVEL_V.log(msg, t); - } - - public static void d(CharSequence msg, Throwable t) { - LEVEL_D.log(msg, t); - } - - public static void i(CharSequence msg, Throwable t) { - LEVEL_I.log(msg, t); - } - - public static void w(CharSequence msg, Throwable t) { - LEVEL_W.log(msg, t); - } - - public static void e(CharSequence msg, Throwable t) { - LEVEL_E.log(msg, t); - } - - public static void logRemoteErrorIfProd(@NonNull Throwable t) { - // Since "logErrorsInsteadOfCrashing()" only ever returns false... - // if (AppAdapter.get().logErrorsInsteadOfCrashing()) { - // logRemoteError(t); - // } else { - throw new RuntimeException(t); - // } - } - - public static void setRemoteLogger(@Nullable RemoteExceptionLogger logger) { - REMOTE_EXCEPTION_LOGGER = logger; - } - - // Favor logRemoteErrorIfProd(). If it's worth consuming bandwidth and developer hours, it's - // worth crashing on everything but prod - public static void logRemoteError(@NonNull Throwable t) { - LEVEL_E.log("", t); - if (REMOTE_EXCEPTION_LOGGER != null) { - REMOTE_EXCEPTION_LOGGER.log(t); - } - } - - private abstract static class LogLevel { - private static final int STACK_INDEX = 4; - - public abstract void logLevel(String tag, String msg, Throwable t); - - public final void log(CharSequence msg, Throwable t) { - StackTraceElement element = Thread.currentThread().getStackTrace()[STACK_INDEX]; - logLevel(element.getClassName(), stackTraceElementToMessagePrefix(element) + msg, t); - } - - private String stackTraceElementToMessagePrefix(StackTraceElement element) { - return element.getMethodName() + "():" + element.getLineNumber() + ": "; - } - } - - private L() { } -} diff --git a/data-client/src/main/java/org/wikipedia/util/log/RemoteExceptionLogger.java b/data-client/src/main/java/org/wikipedia/util/log/RemoteExceptionLogger.java deleted file mode 100644 index b3e0de6680..0000000000 --- a/data-client/src/main/java/org/wikipedia/util/log/RemoteExceptionLogger.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.wikipedia.util.log; - -import androidx.annotation.NonNull; - -public interface RemoteExceptionLogger { - void log(@NonNull Throwable throwable); -} diff --git a/data-client/src/main/java/org/wikipedia/views/ViewAnimations.java b/data-client/src/main/java/org/wikipedia/views/ViewAnimations.java deleted file mode 100644 index 4213618064..0000000000 --- a/data-client/src/main/java/org/wikipedia/views/ViewAnimations.java +++ /dev/null @@ -1,135 +0,0 @@ -package org.wikipedia.views; - -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.content.res.Resources; -import android.view.View; - -import androidx.annotation.Nullable; - -/** - * Contains convenient methods for performing various animations on Views. - */ -public final class ViewAnimations { - private static long SHORT_ANIMATION_DURATION; - private static long MEDIUM_ANIMATION_DURATION; - - private ViewAnimations() { } - - public static void init(Resources resources) { - SHORT_ANIMATION_DURATION = resources.getInteger(android.R.integer.config_shortAnimTime); - MEDIUM_ANIMATION_DURATION = resources.getInteger(android.R.integer.config_mediumAnimTime); - } - - /** - * Crossfades two views, one of which is assumed to be currently visible - * @param curView The view that is currently visible - * @param newView The new view that should be faded in - */ - public static void crossFade(View curView, View newView) { - fadeIn(newView); - fadeOut(curView); - } - - /** - * Crossfades two views, one of which is assumed to be currently visible - * @param curView The view that is currently visible - * @param newView The new view that should be faded in - * @param runOnComplete Optional Runnable to be run when the animation is complete (may be null). - */ - public static void crossFade(View curView, View newView, Runnable runOnComplete) { - fadeIn(newView); - fadeOut(curView, runOnComplete); - } - - /** - * Fades in a view. - * @param view The currently invisible view to be faded in - */ - public static void fadeIn(View view) { - fadeIn(view, null); - } - - /** - * Fades in a view. - * @param view The currently invisible view to be faded in - * @param runOnComplete Optional Runnable to be run when the animation is complete (may be null). - */ - public static void fadeIn(View view, @Nullable final Runnable runOnComplete) { - view.setAlpha(0); - view.setVisibility(View.VISIBLE); - view.animate() - .alpha(1) - .setDuration(MEDIUM_ANIMATION_DURATION) - .setListener(new CancelStateAnimatorListenerAdapter() { - @Override public void onAnimationEnd(Animator animation) { - if (!canceled()) { - if (runOnComplete != null) { - runOnComplete.run(); - } - } - } - }) - .start(); - } - - /** - * Fades out a view. - * @param view The currently visible view to be faded out - */ - public static void fadeOut(final View view) { - fadeOut(view, null); - } - - /** - * Fades out a view. - * @param view The currently visible view to be faded out - * @param runOnComplete Optional Runnable to be run when the animation is complete (may be null). - */ - public static void fadeOut(final View view, final Runnable runOnComplete) { - view.animate().cancel(); - view.animate() - .alpha(0) - .setDuration(MEDIUM_ANIMATION_DURATION) - .setListener(new CancelStateAnimatorListenerAdapter() { - @Override public void onAnimationEnd(Animator animation) { - if (!canceled()) { - // Detect if we got canceled, and if so DON'T hide... - // There's another animation now pushing the alpha back up - view.setVisibility(View.GONE); - view.setAlpha(1); - if (runOnComplete != null) { - runOnComplete.run(); - } - } - } - }) - .start(); - } - - /** - * Ensures that the translationY of a particular view is the given value. - * - * If it isn't the current value, then it performs a short animation to make it so. - * - * @param view The view to translate - * @param translation The value to ensure it is translated by - */ - public static void ensureTranslationY(View view, int translation) { - if (view.getTranslationY() != translation) { - view.animate().translationY(translation).setDuration(SHORT_ANIMATION_DURATION).start(); - } - } - - private static class CancelStateAnimatorListenerAdapter extends AnimatorListenerAdapter { - private boolean canceled; - - @Override public void onAnimationCancel(Animator animation) { - canceled = true; - } - - protected boolean canceled() { - return canceled; - } - } -} diff --git a/data-client/src/main/java/org/wikipedia/wikidata/ClaimsResponse.kt b/data-client/src/main/java/org/wikipedia/wikidata/ClaimsResponse.kt deleted file mode 100644 index 50f7725c1a..0000000000 --- a/data-client/src/main/java/org/wikipedia/wikidata/ClaimsResponse.kt +++ /dev/null @@ -1,4 +0,0 @@ -package org.wikipedia.wikidata - - -data class ClaimsResponse(val claims: Map>) diff --git a/data-client/src/main/res/values/strings.xml b/data-client/src/main/res/values/strings.xml deleted file mode 100644 index 37d989628c..0000000000 --- a/data-client/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - wikimedia-android-data-client - diff --git a/data-client/src/test/java/org/wikipedia/TestAppAdapter.java b/data-client/src/test/java/org/wikipedia/TestAppAdapter.java deleted file mode 100644 index b5ad98aaac..0000000000 --- a/data-client/src/test/java/org/wikipedia/TestAppAdapter.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.wikipedia; - -import okhttp3.OkHttpClient; -import org.wikipedia.dataclient.okhttp.TestStubInterceptor; -import org.wikipedia.dataclient.okhttp.UnsuccessfulResponseInterceptor; - -public class TestAppAdapter extends AppAdapter { - - @Override - public OkHttpClient getOkHttpClient() { - return new OkHttpClient.Builder() - .addInterceptor(new UnsuccessfulResponseInterceptor()) - .addInterceptor(new TestStubInterceptor()) - .build(); - } - -} diff --git a/data-client/src/test/java/org/wikipedia/TestConstants.java b/data-client/src/test/java/org/wikipedia/TestConstants.java deleted file mode 100644 index 99223d5386..0000000000 --- a/data-client/src/test/java/org/wikipedia/TestConstants.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.wikipedia; - -import java.util.concurrent.TimeUnit; - -public final class TestConstants { - public static final int TIMEOUT_DURATION = 5; - public static final TimeUnit TIMEOUT_UNIT = TimeUnit.SECONDS; - - private TestConstants() { } -} diff --git a/data-client/src/test/java/org/wikipedia/TestLatch.java b/data-client/src/test/java/org/wikipedia/TestLatch.java deleted file mode 100644 index 45174b3b3a..0000000000 --- a/data-client/src/test/java/org/wikipedia/TestLatch.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.wikipedia; - -import java.util.concurrent.CountDownLatch; - -public class TestLatch { - private final CountDownLatch latch; - - public TestLatch() { - this(1); - } - - public TestLatch(int count) { - latch = new CountDownLatch(count); - } - - public long getCount() { - return latch.getCount(); - } - - public void countDown() { - latch.countDown(); - } - - public void await() { - boolean done = false; - - try { - done = latch.await(TestConstants.TIMEOUT_DURATION, TestConstants.TIMEOUT_UNIT); - } catch (InterruptedException ignore) { } - - if (!done) { - throw new RuntimeException("Timeout elapsed."); - } - } -} diff --git a/data-client/src/test/java/org/wikipedia/captcha/CaptchaClientTest.java b/data-client/src/test/java/org/wikipedia/captcha/CaptchaClientTest.java deleted file mode 100644 index 4404aad528..0000000000 --- a/data-client/src/test/java/org/wikipedia/captcha/CaptchaClientTest.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.wikipedia.captcha; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.test.MockRetrofitTest; - -import io.reactivex.Observable; -import io.reactivex.observers.TestObserver; - -public class CaptchaClientTest extends MockRetrofitTest { - - @Test public void testRequestSuccess() throws Throwable { - enqueueFromFile("captcha.json"); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.getCaptchaId().equals("1572672319")); - } - - @Test public void testRequestResponseApiError() throws Throwable { - enqueueFromFile("api_error.json"); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseFailure() { - enqueue404(); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseMalformed() { - enqueueMalformed(); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertError(MalformedJsonException.class); - } - - private Observable getObservable() { - return getApiService().getNewCaptcha() - .map(response -> new CaptchaResult(response.captchaId())); - } -} diff --git a/data-client/src/test/java/org/wikipedia/createaccount/CreateAccountClientTest.java b/data-client/src/test/java/org/wikipedia/createaccount/CreateAccountClientTest.java deleted file mode 100644 index 1a9aef5bdc..0000000000 --- a/data-client/src/test/java/org/wikipedia/createaccount/CreateAccountClientTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package org.wikipedia.createaccount; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.dataclient.Service; -import org.wikipedia.dataclient.mwapi.CreateAccountResponse; -import org.wikipedia.test.MockRetrofitTest; - -import io.reactivex.Observable; -import io.reactivex.observers.TestObserver; - -public class CreateAccountClientTest extends MockRetrofitTest { - - private Observable getObservable() { - return getApiService().postCreateAccount("user", "pass", "pass", "token", Service.WIKIPEDIA_URL, null, null, null); - } - - @Test public void testRequestSuccess() throws Throwable { - enqueueFromFile("create_account_success.json"); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.status().equals("PASS") - && result.user().equals("Farb0nucci")); - } - - @Test public void testRequestFailure() throws Throwable { - enqueueFromFile("create_account_failure.json"); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.status().equals("FAIL")); - } - - @Test public void testRequestResponse404() { - enqueue404(); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseMalformed() { - enqueueMalformed(); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertError(MalformedJsonException.class); - } -} diff --git a/data-client/src/test/java/org/wikipedia/createaccount/CreateAccountInfoClientTest.java b/data-client/src/test/java/org/wikipedia/createaccount/CreateAccountInfoClientTest.java deleted file mode 100644 index 0dfe61c987..0000000000 --- a/data-client/src/test/java/org/wikipedia/createaccount/CreateAccountInfoClientTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.wikipedia.createaccount; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; -import org.wikipedia.test.MockRetrofitTest; - -import io.reactivex.Observable; -import io.reactivex.observers.TestObserver; - -public class CreateAccountInfoClientTest extends MockRetrofitTest { - - @Test public void testRequestSuccess() throws Throwable { - enqueueFromFile("create_account_info.json"); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(response -> { - String token = response.query().createAccountToken(); - String captchaId = response.query().captchaId(); - - return token.equals("5d78e6a823be0901eeae9f6486f752da59123760+\\") - && captchaId.equals("272460457"); - }); - } - - @Test public void testRequestResponse404() { - enqueue404(); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseMalformed() { - enqueueMalformed(); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertError(MalformedJsonException.class); - } - - private Observable getObservable() { - return getApiService().getAuthManagerInfo(); - } -} diff --git a/data-client/src/test/java/org/wikipedia/dataclient/WikiSiteTest.java b/data-client/src/test/java/org/wikipedia/dataclient/WikiSiteTest.java deleted file mode 100644 index 9c253b71fc..0000000000 --- a/data-client/src/test/java/org/wikipedia/dataclient/WikiSiteTest.java +++ /dev/null @@ -1,228 +0,0 @@ -package org.wikipedia.dataclient; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.wikipedia.json.GsonMarshaller; -import org.wikipedia.json.GsonUnmarshaller; -import org.wikipedia.page.PageTitle; -import org.wikipedia.test.TestParcelUtil; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.not; - -@RunWith(RobolectricTestRunner.class) public class WikiSiteTest { - @Test public void testSupportedAuthority() { - assertThat(WikiSite.supportedAuthority("fr.wikipedia.org"), is(true)); - assertThat(WikiSite.supportedAuthority("fr.m.wikipedia.org"), is(true)); - assertThat(WikiSite.supportedAuthority("roa-rup.wikipedia.org"), is(true)); - - assertThat(WikiSite.supportedAuthority("google.com"), is(false)); - } - - @Test public void testForLanguageCodeScheme() { - WikiSite subject = WikiSite.forLanguageCode("test"); - assertThat(subject.scheme(), is("https")); - } - - @Test public void testForLanguageCodeAuthority() { - WikiSite subject = WikiSite.forLanguageCode("test"); - assertThat(subject.authority(), is("test.wikipedia.org")); - } - - @Test public void testForLanguageCodeLanguage() { - WikiSite subject = WikiSite.forLanguageCode("test"); - assertThat(subject.languageCode(), is("test")); - } - - @Test public void testForLanguageCodeNoLanguage() { - WikiSite subject = WikiSite.forLanguageCode(""); - assertThat(subject.languageCode(), is("")); - } - - @Test public void testForLanguageCodeNoLanguageAuthority() { - WikiSite subject = WikiSite.forLanguageCode(""); - assertThat(subject.authority(), is("wikipedia.org")); - } - - @Test public void testForLanguageCodeLanguageAuthority() { - WikiSite subject = WikiSite.forLanguageCode("zh-hans"); - assertThat(subject.authority(), is("zh.wikipedia.org")); - assertThat(subject.languageCode(), is("zh-hans")); - } - - @Test public void testCtorScheme() { - WikiSite subject = new WikiSite("http://wikipedia.org"); - assertThat(subject.scheme(), is("http")); - } - - @Test public void testCtorDefaultScheme() { - WikiSite subject = new WikiSite("wikipedia.org"); - assertThat(subject.scheme(), is("https")); - } - - @Test public void testCtorAuthority() { - WikiSite subject = new WikiSite("test.wikipedia.org"); - assertThat(subject.authority(), is("test.wikipedia.org")); - } - - @Test public void testCtorAuthorityLanguage() { - WikiSite subject = new WikiSite("test.wikipedia.org"); - assertThat(subject.languageCode(), is("test")); - } - - @Test public void testCtorAuthorityNoLanguage() { - WikiSite subject = new WikiSite("wikipedia.org"); - assertThat(subject.languageCode(), is("")); - } - - @Test public void testCtorMobileAuthorityLanguage() { - WikiSite subject = new WikiSite("test.m.wikipedia.org"); - assertThat(subject.languageCode(), is("test")); - } - - @Test public void testCtorMobileAuthorityNoLanguage() { - WikiSite subject = new WikiSite("m.wikipedia.org"); - assertThat(subject.languageCode(), is("")); - } - - @Test public void testCtorUriLangVariant() { - WikiSite subject = new WikiSite("zh.wikipedia.org/zh-hant/Foo"); - assertThat(subject.authority(), is("zh.wikipedia.org")); - assertThat(subject.mobileAuthority(), is("zh.m.wikipedia.org")); - assertThat(subject.subdomain(), is("zh")); - assertThat(subject.languageCode(), is("zh-hant")); - assertThat(subject.scheme(), is("https")); - assertThat(subject.dbName(), is("zhwiki")); - assertThat(subject.url(), is("https://zh.wikipedia.org")); - } - - @Test public void testCtorMobileUriLangVariant() { - WikiSite subject = new WikiSite("zh.m.wikipedia.org/zh-hant/Foo"); - assertThat(subject.authority(), is("zh.m.wikipedia.org")); - assertThat(subject.mobileAuthority(), is("zh.m.wikipedia.org")); - assertThat(subject.subdomain(), is("zh")); - assertThat(subject.languageCode(), is("zh-hant")); - assertThat(subject.scheme(), is("https")); - assertThat(subject.url(), is("https://zh.m.wikipedia.org")); - } - - @Test public void testCtorUriNoLangVariant() { - WikiSite subject = new WikiSite("http://zh.wikipedia.org/wiki/Foo"); - assertThat(subject.authority(), is("zh.wikipedia.org")); - assertThat(subject.mobileAuthority(), is("zh.m.wikipedia.org")); - assertThat(subject.subdomain(), is("zh")); - assertThat(subject.languageCode(), is("zh")); - assertThat(subject.scheme(), is("http")); - assertThat(subject.url(), is("http://zh.wikipedia.org")); - } - - @Test public void testCtorParcel() throws Throwable { - WikiSite subject = WikiSite.forLanguageCode("test"); - TestParcelUtil.test(subject); - } - - @Test public void testAuthority() { - WikiSite subject = new WikiSite("test.wikipedia.org", "test"); - assertThat(subject.authority(), is("test.wikipedia.org")); - } - - @Test public void testMobileAuthorityLanguage() { - WikiSite subject = WikiSite.forLanguageCode("fiu-vro"); - assertThat(subject.mobileAuthority(), is("fiu-vro.m.wikipedia.org")); - } - - @Test public void testMobileAuthorityNoLanguage() { - WikiSite subject = new WikiSite("wikipedia.org"); - assertThat(subject.mobileAuthority(), is("m.wikipedia.org")); - } - - @Test public void testMobileAuthorityLanguageAuthority() { - WikiSite subject = new WikiSite("no.wikipedia.org", "nb"); - assertThat(subject.mobileAuthority(), is("no.m.wikipedia.org")); - } - - @Test public void testMobileAuthorityMobileAuthority() { - WikiSite subject = new WikiSite("ru.m.wikipedia.org"); - assertThat(subject.mobileAuthority(), is("ru.m.wikipedia.org")); - } - - @Test public void testMobileAuthorityMobileAuthorityNoLanguage() { - WikiSite subject = new WikiSite("m.wikipedia.org"); - assertThat(subject.mobileAuthority(), is("m.wikipedia.org")); - } - - @Test public void testDbNameLanguage() { - WikiSite subject = new WikiSite("en.wikipedia.org", "en"); - assertThat(subject.dbName(), is("enwiki")); - } - - @Test public void testDbNameSpecialLanguage() { - WikiSite subject = new WikiSite("no.wikipedia.org", "nb"); - assertThat(subject.dbName(), is("nowiki")); - } - - @Test public void testDbNameWithOneUnderscore() { - WikiSite subject = new WikiSite("zh-yue.wikipedia.org"); - assertThat(subject.dbName(), is("zh_yuewiki")); - } - - @Test public void testDbNameWithTwoUnderscore() { - WikiSite subject = new WikiSite("zh-min-nan.wikipedia.org"); - assertThat(subject.dbName(), is("zh_min_nanwiki")); - } - - @Test public void testPath() { - WikiSite subject = WikiSite.forLanguageCode("test"); - assertThat(subject.path("Segment"), is("/w/Segment")); - } - - @Test public void testPathEmpty() { - WikiSite subject = WikiSite.forLanguageCode("test"); - assertThat(subject.path(""), is("/w/")); - } - - @Test public void testUrl() { - WikiSite subject = new WikiSite("test.192.168.1.11:8080", "test"); - assertThat(subject.url(), is("https://test.192.168.1.11:8080")); - } - - @Test public void testUrlPath() { - WikiSite subject = WikiSite.forLanguageCode("test"); - assertThat(subject.url("Segment"), is("https://test.wikipedia.org/w/Segment")); - } - - @Test public void testLanguageCode() { - WikiSite subject = WikiSite.forLanguageCode("lang"); - assertThat(subject.languageCode(), is("lang")); - } - - @Test public void testUnmarshal() { - WikiSite wiki = WikiSite.forLanguageCode("test"); - assertThat(GsonUnmarshaller.unmarshal(WikiSite.class, GsonMarshaller.marshal(wiki)), is(wiki)); - } - - @Test public void testUnmarshalScheme() { - WikiSite wiki = new WikiSite("wikipedia.org", ""); - assertThat(GsonUnmarshaller.unmarshal(WikiSite.class, GsonMarshaller.marshal(wiki)), is(wiki)); - } - - @Test public void testTitleForInternalLink() { - WikiSite wiki = WikiSite.forLanguageCode("en"); - assertThat(new PageTitle("wiki", wiki), is(wiki.titleForInternalLink("wiki"))); - assertThat(new PageTitle("wiki", wiki), is(wiki.titleForInternalLink("/wiki/wiki"))); - assertThat(new PageTitle("wiki/wiki", wiki), is(wiki.titleForInternalLink("/wiki/wiki/wiki"))); - } - - @Test public void testEquals() { - assertThat(WikiSite.forLanguageCode("en"), is(WikiSite.forLanguageCode("en"))); - - assertThat(WikiSite.forLanguageCode("ta"), not(WikiSite.forLanguageCode("en"))); - assertThat(WikiSite.forLanguageCode("ta").equals("ta.wikipedia.org"), is(false)); - } - - @Test public void testNormalization() { - assertThat("bm.wikipedia.org", is(WikiSite.forLanguageCode("bm").authority())); - } -} diff --git a/data-client/src/test/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLeadTest.java b/data-client/src/test/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLeadTest.java deleted file mode 100644 index 0464012867..0000000000 --- a/data-client/src/test/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLeadTest.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.wikipedia.dataclient.mwapi.page; - -import androidx.annotation.NonNull; - -import org.junit.Before; -import org.junit.Test; -import org.wikipedia.dataclient.mwapi.MwException; -import org.wikipedia.dataclient.page.BasePageLeadTest; -import org.wikipedia.dataclient.page.PageClient; - -import io.reactivex.observers.TestObserver; -import okhttp3.CacheControl; -import retrofit2.Response; - -import static org.wikipedia.json.GsonUnmarshaller.unmarshal; - -public class MwMobileViewPageLeadTest extends BasePageLeadTest { - private PageClient subject; - - @Before public void setUp() throws Throwable { - super.setUp(); - subject = new MwPageClient(); - } - - @Test public void testEnglishMainPage() { - MwMobileViewPageLead pageLead = unmarshal(MwMobileViewPageLead.class, wrapInMobileview(getEnglishMainPageJson())); - MwMobileViewPageLead.Mobileview props = pageLead.getMobileview(); - verifyEnglishMainPage(props); - } - - - @Test public void testUnprotectedDisambiguationPage() { - MwMobileViewPageLead pageLead = unmarshal(MwMobileViewPageLead.class, - wrapInMobileview(getUnprotectedDisambiguationPageJson())); - MwMobileViewPageLead.Mobileview props = pageLead.getMobileview(); - verifyUnprotectedDisambiguationPage(props); - } - - /** - * Custom deserializer; um, yeah /o\. - * An earlier version had issues with protection settings that don't include "edit" protection. - */ - @Test public void testProtectedButNoEditProtectionPage() { - MwMobileViewPageLead pageLead = unmarshal(MwMobileViewPageLead.class, - wrapInMobileview(getProtectedButNoEditProtectionPageJson())); - MwMobileViewPageLead.Mobileview props = pageLead.getMobileview(); - verifyProtectedNoEditProtectionPage(props); - } - - @Test @SuppressWarnings("checkstyle:magicnumber") public void testThumbUrls() throws Throwable { - enqueueFromFile("page_lead_mw.json"); - TestObserver> observer = new TestObserver<>(); - getApiService().getLeadSection(CacheControl.FORCE_NETWORK.toString(), null, null, "foo", 640, "en").subscribe(observer); - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.body().getLeadImageUrl(640).contains("640px") - && result.body().getThumbUrl().contains(preferredThumbSizeString()) - && result.body().getDescription().contains("Mexican boxer")); - } - - @Test public void testError() { - try { - unmarshal(MwMobileViewPageLead.class, getErrorJson()); - } catch (MwException e) { - verifyError(e); - } - } - - @NonNull @Override protected PageClient subject() { - return subject; - } - - private String wrapInMobileview(String json) { - return "{\"mobileview\":" + json + "}"; - } -} diff --git a/data-client/src/test/java/org/wikipedia/dataclient/mwapi/page/MwPageClientTest.java b/data-client/src/test/java/org/wikipedia/dataclient/mwapi/page/MwPageClientTest.java deleted file mode 100644 index f5812c9b3a..0000000000 --- a/data-client/src/test/java/org/wikipedia/dataclient/mwapi/page/MwPageClientTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.wikipedia.dataclient.mwapi.page; - -import androidx.annotation.NonNull; - -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.wikipedia.dataclient.page.BasePageClientTest; -import org.wikipedia.dataclient.page.PageClient; -import org.wikipedia.dataclient.page.PageLead; - -import io.reactivex.observers.TestObserver; -import retrofit2.Response; - -public class MwPageClientTest extends BasePageClientTest { - private PageClient subject; - - @Before public void setUp() throws Throwable { - super.setUp(); - subject = new MwPageClient(); - } - - @Ignore("MobileView API is deprecated. Remove test cases after fixing #5165") - @Test public void testLeadThumbnailWidth() { - - TestObserver> observer = new TestObserver<>(); - subject.lead(wikiSite(), null, null, null, "test", 10).subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.raw().request().url().toString().contains("10")); - } - - @NonNull @Override protected PageClient subject() { - return subject; - } -} diff --git a/data-client/src/test/java/org/wikipedia/dataclient/okhttp/util/HttpUrlUtilTest.java b/data-client/src/test/java/org/wikipedia/dataclient/okhttp/util/HttpUrlUtilTest.java deleted file mode 100644 index c839d1b92e..0000000000 --- a/data-client/src/test/java/org/wikipedia/dataclient/okhttp/util/HttpUrlUtilTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.wikipedia.dataclient.okhttp.util; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.wikipedia.dataclient.WikiSite; - -import okhttp3.HttpUrl; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -@RunWith(RobolectricTestRunner.class) public class HttpUrlUtilTest { - @Test public void testIsRestBaseProd() { - HttpUrl url = HttpUrl.parse("https://test.wikipedia.org/api/rest_v1/"); - assertThat(HttpUrlUtil.isRestBase(url), is(true)); - } - - @Test public void testIsRestBaseLabs() { - HttpUrl url = HttpUrl.parse("http://appservice.wmflabs.org/test.wikipedia.org/v1/"); - assertThat(HttpUrlUtil.isRestBase(url), is(true)); - } - - @Test public void testIsRestBaseDev() { - HttpUrl url = HttpUrl.parse("http://host:6927/192.168.1.11:8080/v1/"); - assertThat(HttpUrlUtil.isRestBase(url), is(true)); - } - - @Test public void testIsRestBaseMediaWikiTest() { - HttpUrl url = HttpUrl.parse(WikiSite.forLanguageCode("test").url()); - assertThat(HttpUrlUtil.isRestBase(url), is(false)); - } - - @Test public void testIsRestBaseMediaWikiDev() { - HttpUrl url = HttpUrl.parse("http://192.168.1.11:8080/"); - assertThat(HttpUrlUtil.isRestBase(url), is(false)); - } - - @Test public void testIsMobileViewTest() { - HttpUrl url = HttpUrl.parse(WikiSite.forLanguageCode("test").url()) - .newBuilder() - .addQueryParameter("action", "mobileview") - .build(); - assertThat(HttpUrlUtil.isMobileView(url), is(true)); - } - - @Test public void testIsMobileViewDev() { - HttpUrl url = HttpUrl.parse("http://localhost:8080/?action=mobileview"); - assertThat(HttpUrlUtil.isMobileView(url), is(true)); - } - - @Test public void testIsMobileViewRestBase() { - HttpUrl url = HttpUrl.parse("https://en.wikipedia.org/api/rest_v1/"); - assertThat(HttpUrlUtil.isMobileView(url), is(false)); - } -} diff --git a/data-client/src/test/java/org/wikipedia/dataclient/page/BasePageClientTest.java b/data-client/src/test/java/org/wikipedia/dataclient/page/BasePageClientTest.java deleted file mode 100644 index 441687fa85..0000000000 --- a/data-client/src/test/java/org/wikipedia/dataclient/page/BasePageClientTest.java +++ /dev/null @@ -1,94 +0,0 @@ -package org.wikipedia.dataclient.page; - -import androidx.annotation.NonNull; - -import org.junit.Ignore; -import org.junit.Test; -import org.wikipedia.dataclient.Service; -import org.wikipedia.test.MockRetrofitTest; - -import io.reactivex.observers.TestObserver; -import okhttp3.CacheControl; -import retrofit2.Response; - -import static org.wikipedia.dataclient.Service.PREFERRED_THUMB_SIZE; - -public abstract class BasePageClientTest extends MockRetrofitTest { - @Ignore("MobileView API is deprecated. Remove test cases after fixing #5165") - @Test public void testLeadCacheControl() { - TestObserver> observer = new TestObserver<>(); - subject().lead(wikiSite(), CacheControl.FORCE_NETWORK, null, null, "foo", 0).subscribe(observer); - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.raw().request().header("Cache-Control").contains("no-cache")); - } - - @Ignore("MobileView API is deprecated. Remove test cases after fixing #5165") - @Test public void testLeadHttpRefererUrl() { - String refererUrl = "https://en.wikipedia.org/wiki/United_States"; - TestObserver> observer = new TestObserver<>(); - subject().lead(wikiSite(), null, null, refererUrl, "foo", 0).subscribe(observer); - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.raw().request().header("Referer").contains(refererUrl)); - } - - @Ignore("MobileView API is deprecated. Remove test cases after fixing #5165") - @Test public void testLeadCacheOptionCache() { - TestObserver> observer = new TestObserver<>(); - subject().lead(wikiSite(), null, null, null, "foo", 0).subscribe(observer); - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.raw().request().header(Service.OFFLINE_SAVE_HEADER) == null); - } - - @Ignore("MobileView API is deprecated. Remove test cases after fixing #5165") - @Test public void testLeadCacheOptionSave() { - TestObserver> observer = new TestObserver<>(); - subject().lead(wikiSite(), null, Service.OFFLINE_SAVE_HEADER_SAVE, null, "foo", 0).subscribe(observer); - observer.assertComplete().assertValue(result -> result.raw().request().header(Service.OFFLINE_SAVE_HEADER).contains(Service.OFFLINE_SAVE_HEADER_SAVE)); - } - - @Ignore("MobileView API is deprecated. Remove test cases after fixing #5165") - @Test public void testLeadTitle() { - TestObserver> observer = new TestObserver<>(); - subject().lead(wikiSite(), null, null, null, "Title", 0).subscribe(observer); - observer.assertComplete().assertNoErrors() - .assertValue(result -> { - System.out.println(result.raw().request().url()); - System.out.println(result.raw().request().url().toString()); - return result.raw().request().url().toString().contains("Title"); - }); - } - - @Test public void testSectionsCacheControl() { - TestObserver> observer = new TestObserver<>(); - subject().sections(wikiSite(), CacheControl.FORCE_NETWORK, null, "foo").subscribe(observer); - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.raw().request().header("Cache-Control").contains("no-cache")); - } - - @Test public void testSectionsCacheOptionCache() { - TestObserver> observer = new TestObserver<>(); - subject().sections(wikiSite(), null, null, "foo").subscribe(observer); - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.raw().request().header(Service.OFFLINE_SAVE_HEADER) == null); - } - - @Test public void testSectionsCacheOptionSave() { - TestObserver> observer = new TestObserver<>(); - subject().sections(wikiSite(), null, Service.OFFLINE_SAVE_HEADER_SAVE, "foo").subscribe(observer); - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.raw().request().header(Service.OFFLINE_SAVE_HEADER).contains(Service.OFFLINE_SAVE_HEADER_SAVE)); - } - - @Test public void testSectionsTitle() { - TestObserver> observer = new TestObserver<>(); - subject().sections(wikiSite(), null, null, "Title").subscribe(observer); - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.raw().request().url().toString().contains("Title")); - } - - @NonNull protected abstract PageClient subject(); - - protected String preferredThumbSizeString() { - return Integer.toString(PREFERRED_THUMB_SIZE) + "px"; - } -} diff --git a/data-client/src/test/java/org/wikipedia/dataclient/page/BasePageLeadTest.java b/data-client/src/test/java/org/wikipedia/dataclient/page/BasePageLeadTest.java deleted file mode 100644 index 5c1c298ad2..0000000000 --- a/data-client/src/test/java/org/wikipedia/dataclient/page/BasePageLeadTest.java +++ /dev/null @@ -1,101 +0,0 @@ -package org.wikipedia.dataclient.page; - -import androidx.annotation.NonNull; - -import org.wikipedia.dataclient.mwapi.MwException; -import org.wikipedia.dataclient.mwapi.MwServiceError; - -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Common test code for the two PageLead variants. - */ -public abstract class BasePageLeadTest extends BasePageClientTest { - protected static final int ID = 15580374; - protected static final long REVISION = 664887982L; - protected static final int LANGUAGE_COUNT = 45; - protected static final String LAST_MODIFIED_DATE = "2015-05-31T17:32:11Z"; - protected static final String MAIN_PAGE = "Main Page"; - - @NonNull - public static String getEnglishMainPageJson() { - return "{" - + "\"lastmodified\":\"" + LAST_MODIFIED_DATE + "\"," - + "\"revision\":" + REVISION + "," - + "\"languagecount\":" + LANGUAGE_COUNT + "," - + "\"displaytitle\":\"" + MAIN_PAGE + "\"," - + "\"id\":" + ID + "," - + "\"description\":\"main page of a Wikimedia project\"," - + "\"mainpage\":true," - + "\"sections\":[" - + "{\"id\":0,\"text\":\"My lead section text\"}" - + "]," - + "\"protection\":{\"edit\":[\"made_up_role1\"],\"move\":[\"made_up_role2\"]}," - + "\"editable\":false" - + "}"; - } - - protected void verifyEnglishMainPage(PageLeadProperties props) { - assertThat(props.getId(), is(ID)); - assertThat(props.getRevision(), is(REVISION)); - assertThat(props.getLastModified(), is(LAST_MODIFIED_DATE)); - assertThat(props.getDisplayTitle(), is(MAIN_PAGE)); - assertThat(props.getLanguageCount(), is(LANGUAGE_COUNT)); - assertThat(props.getLeadImageUrl(0), equalTo(null)); - assertThat(props.getLeadImageFileName(), equalTo(null)); - assertThat(props.getSections().size(), is(1)); - assertThat(props.getSections().get(0).getId(), is(0)); - assertThat(props.getSections().get(0).getContent(), is("My lead section text")); - assertThat(props.getSections().get(0).getLevel(), is(1)); - assertThat(props.getSections().get(0).getAnchor(), equalTo("")); - assertThat(props.getSections().get(0).getHeading(), equalTo("")); - assertThat(props.getFirstAllowedEditorRole(), is("made_up_role1")); - assertThat(props.isEditable(), is(false)); - assertThat(props.isMainPage(), is(true)); - assertThat(props.isDisambiguation(), is(false)); - } - - @NonNull - protected String getUnprotectedDisambiguationPageJson() { - return "{" - + "\"disambiguation\":true," - + "\"protection\":{}," - + "\"editable\":true" - + "}"; - } - - protected void verifyUnprotectedDisambiguationPage(PageLeadProperties core) { - assertThat(core.getFirstAllowedEditorRole(), equalTo(null)); - assertThat(core.isEditable(), is(true)); - assertThat(core.isMainPage(), is(false)); - assertThat(core.isDisambiguation(), is(true)); - } - - @NonNull - protected String getProtectedButNoEditProtectionPageJson() { - return "{" - + "\"protection\":{\"move\":[\"sysop\"]}" - + "}"; - } - - protected void verifyProtectedNoEditProtectionPage(PageLeadProperties core) { - assertThat(core.getFirstAllowedEditorRole(), equalTo(null)); - } - - @NonNull - protected String getErrorJson() { - return "{\"error\":{" - + "\"code\":\"nopage\"," - + "\"info\":\"The page parameter must be set\"," - + "\"docref\":\"See https://en.wikipedia.org/w/api.php for API usage\"" - + "}}"; - } - - protected void verifyError(MwException e) { - MwServiceError error = e.getError(); - assertThat(error.getTitle(), is("nopage")); - assertThat(error.getDetails(), is("The page parameter must be set")); - } -} diff --git a/data-client/src/test/java/org/wikipedia/dataclient/restbase/page/RbPageLeadTest.java b/data-client/src/test/java/org/wikipedia/dataclient/restbase/page/RbPageLeadTest.java deleted file mode 100644 index d68953c08e..0000000000 --- a/data-client/src/test/java/org/wikipedia/dataclient/restbase/page/RbPageLeadTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.wikipedia.dataclient.restbase.page; - -import androidx.annotation.NonNull; - -import org.junit.Before; -import org.junit.Test; -import org.wikipedia.dataclient.page.BasePageLeadTest; -import org.wikipedia.dataclient.page.PageClient; - -import io.reactivex.observers.TestObserver; -import okhttp3.CacheControl; -import retrofit2.Response; - -import static org.wikipedia.json.GsonUnmarshaller.unmarshal; - -public class RbPageLeadTest extends BasePageLeadTest { - private PageClient subject; - - @Before @Override public void setUp() throws Throwable { - super.setUp(); - subject = new RbPageClient(); - } - - @Test public void testEnglishMainPage() { - RbPageLead props = unmarshal(RbPageLead.class, getEnglishMainPageJson()); - verifyEnglishMainPage(props); - } - - @Test public void testUnprotectedDisambiguationPage() { - RbPageLead props = unmarshal(RbPageLead.class, getUnprotectedDisambiguationPageJson()); - verifyUnprotectedDisambiguationPage(props); - } - - /** - * Custom deserializer; um, yeah /o\. - * An earlier version had issues with protection settings that don't include "edit" protection. - */ - @Test public void testProtectedButNoEditProtectionPage() { - RbPageLead props = unmarshal(RbPageLead.class, getProtectedButNoEditProtectionPageJson()); - verifyProtectedNoEditProtectionPage(props); - } - - @Test @SuppressWarnings("checkstyle:magicnumber") public void testThumbUrls() throws Throwable { - enqueueFromFile("page_lead_rb.json"); - TestObserver> observer = new TestObserver<>(); - getRestService().getLeadSection(CacheControl.FORCE_NETWORK.toString(), null, null, "foo").subscribe(observer); - observer.assertComplete() - .assertValue(result -> result.body().getLeadImageUrl(640).contains("640px") - && result.body().getThumbUrl().contains(preferredThumbSizeString()) - && result.body().getDescription().contains("Mexican boxer") - && result.body().getDescriptionSource().contains("central")); - } - - @NonNull @Override protected PageClient subject() { - return subject; - } -} diff --git a/data-client/src/test/java/org/wikipedia/dataclient/restbase/page/RbPageSummaryTest.java b/data-client/src/test/java/org/wikipedia/dataclient/restbase/page/RbPageSummaryTest.java deleted file mode 100644 index 822ea23a45..0000000000 --- a/data-client/src/test/java/org/wikipedia/dataclient/restbase/page/RbPageSummaryTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.wikipedia.dataclient.restbase.page; - -import org.junit.Before; -import org.junit.Test; -import org.wikipedia.feed.mostread.MostReadArticlesTest; - -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.nullValue; - -@SuppressWarnings("checkstyle:magicnumber") -public class RbPageSummaryTest { - private List subjects; - - @Before public void setUp() throws Throwable { - subjects = MostReadArticlesTest.unmarshal("most_read.json").articles(); - } - - @Test public void testUnmarshalThumbnails() { - RbPageSummary subject = subjects.get(3); - - assertThat(subject.getNormalizedTitle(), is("Marilyn Monroe")); - assertThat(subject.getTitle(), is("Marilyn_Monroe")); - assertThat(subject.getDescription(), is("American actress, model, and singer")); - - String thumbnail = "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Marilyn_Monroe_in_1952.jpg/229px-Marilyn_Monroe_in_1952.jpg"; - assertThat(subject.getThumbnailUrl(), is(thumbnail)); - } - - @Test public void testUnmarshalNoThumbnails() { - RbPageSummary subject = subjects.get(0); - - assertThat(subject.getNormalizedTitle(), is("Bicycle Race")); - assertThat(subject.getTitle(), is("Bicycle_Race")); - assertThat(subject.getDescription(), is("rock song by Queen")); - assertThat(subject.getThumbnailUrl(), nullValue()); - } -} diff --git a/data-client/src/test/java/org/wikipedia/edit/EditClientTest.java b/data-client/src/test/java/org/wikipedia/edit/EditClientTest.java deleted file mode 100644 index 9b2c6e66f9..0000000000 --- a/data-client/src/test/java/org/wikipedia/edit/EditClientTest.java +++ /dev/null @@ -1,147 +0,0 @@ -package org.wikipedia.edit; - -import androidx.annotation.NonNull; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.captcha.CaptchaResult; -import org.wikipedia.dataclient.Service; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.dataclient.mwapi.MwException; -import org.wikipedia.dataclient.okhttp.HttpStatusException; -import org.wikipedia.page.PageTitle; -import org.wikipedia.test.MockWebServerTest; - -import retrofit2.Call; - -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; -import static org.mockito.Matchers.isA; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; - -public class EditClientTest extends MockWebServerTest { - private EditClient subject = new EditClient(); - - @Test @SuppressWarnings("checkstyle:magicnumber") - public void testRequestSuccessHasResults() throws Throwable { - EditSuccessResult expected = new EditSuccessResult(761350490); - enqueueFromFile("edit_result_success.json"); - - EditClient.Callback cb = mock(EditClient.Callback.class); - Call call = request(cb, false); - - server().takeRequest(); - assertCallbackSuccess(call, cb, expected); - } - - @Test public void testRequestResponseAbuseFilter() throws Throwable { - EditAbuseFilterResult expected = new EditAbuseFilterResult("abusefilter-disallowed", - "Hit AbuseFilter: Editing user page by anonymous user", - "Warning: This action has been automatically identified as harmful.\nUnconstructive edits will be quickly reverted,\nand egregious or repeated unconstructive editing will result in your account or IP address being blocked.\nIf you believe this action to be constructive, you may submit it again to confirm it.\nA brief description of the abuse rule which your action matched is: Editing user page by anonymous user"); - enqueueFromFile("edit_abuse_filter_result.json"); - - EditClient.Callback cb = mock(EditClient.Callback.class); - Call call = request(cb, false); - - server().takeRequest(); - assertCallbackSuccess(call, cb, expected); - } - - @Test public void testRequestResponseSpamBlacklist() throws Throwable { - EditSpamBlacklistResult expected = new EditSpamBlacklistResult("s-e-x"); - enqueueFromFile("edit_result_spam_blacklist.json"); - - EditClient.Callback cb = mock(EditClient.Callback.class); - Call call = request(cb, false); - - server().takeRequest(); - assertCallbackSuccess(call, cb, expected); - } - - @Test @SuppressWarnings("checkstyle:magicnumber") - public void testRequestResponseCaptcha() throws Throwable { - CaptchaResult expected = new CaptchaResult("547159230"); - enqueueFromFile("edit_result_captcha.json"); - - EditClient.Callback cb = mock(EditClient.Callback.class); - Call call = request(cb, false); - - server().takeRequest(); - assertCallbackSuccess(call, cb, expected); - } - - @Test public void testRequestResponseAssertUserFailed() throws Throwable { - enqueueFromFile("api_error_assert_user_failed.json"); - - EditClient.Callback cb = mock(EditClient.Callback.class); - Call call = request(cb, true); - - server().takeRequest(); - assertCallbackFailure(call, cb, MwException.class); - } - - @Test public void testRequestResponseGenericApiError() throws Throwable { - enqueueFromFile("api_error.json"); - - EditClient.Callback cb = mock(EditClient.Callback.class); - Call call = request(cb, false); - - server().takeRequest(); - assertCallbackFailure(call, cb, MwException.class); - } - - @Test public void testRequestResponseApiError() throws Throwable { - enqueueFromFile("api_error.json"); - - EditClient.Callback cb = mock(EditClient.Callback.class); - Call call = request(cb, false); - - server().takeRequest(); - assertCallbackFailure(call, cb, MwException.class); - } - - @Test public void testRequestResponse404() throws Throwable { - enqueue404(); - - EditClient.Callback cb = mock(EditClient.Callback.class); - Call call = request(cb, false); - - server().takeRequest(); - assertCallbackFailure(call, cb, HttpStatusException.class); - } - - @Test public void testRequestResponseMalformed() throws Throwable { - enqueueMalformed(); - - EditClient.Callback cb = mock(EditClient.Callback.class); - Call call = request(cb, false); - - server().takeRequest(); - assertCallbackFailure(call, cb, MalformedJsonException.class); - } - - private void assertCallbackSuccess(@NonNull Call call, - @NonNull EditClient.Callback cb, - @NonNull EditResult expected) { - verify(cb).success(eq(call), eq(expected)); - //noinspection unchecked - verify(cb, never()).failure(any(Call.class), any(Throwable.class)); - } - - private void assertCallbackFailure(@NonNull Call call, - @NonNull EditClient.Callback cb, - @NonNull Class throwable) { - //noinspection unchecked - verify(cb, never()).success(any(Call.class), any(EditResult.class)); - verify(cb).failure(eq(call), isA(throwable)); - } - - private Call request(@NonNull EditClient.Callback cb, boolean loggedIn) { - PageTitle title = new PageTitle(null, "TEST", WikiSite.forLanguageCode("test")); - return subject.request(service(Service.class), title, 0, "new text", "token", - "summary", null, loggedIn, "captchaId", "captchaSubmission", cb); - } -} diff --git a/data-client/src/test/java/org/wikipedia/edit/EditUnitTest.java b/data-client/src/test/java/org/wikipedia/edit/EditUnitTest.java deleted file mode 100644 index fa2410aafc..0000000000 --- a/data-client/src/test/java/org/wikipedia/edit/EditUnitTest.java +++ /dev/null @@ -1,81 +0,0 @@ -package org.wikipedia.edit; - - -import androidx.annotation.NonNull; - -import org.junit.Test; -import org.mockito.ArgumentCaptor; -import org.wikipedia.dataclient.Service; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.edit.EditClient.Callback; -import org.wikipedia.page.PageTitle; -import org.wikipedia.test.MockWebServerTest; - -import retrofit2.Call; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; -import static org.mockito.Matchers.isA; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; - -public class EditUnitTest extends MockWebServerTest { - @NonNull private EditClient client = new EditClient(); - - @Test public void testAbuseFilterResult() throws Throwable { - enqueueFromFile("edit_abuse_filter_result.json"); - - Callback cb = mock(Callback.class); - Call call = request(cb); - - server().takeRequest(); - assertAbuseFilterEditResult(call, cb); - } - - @Test public void testBadToken() throws Throwable { - enqueueFromFile("edit_error_bad_token.json"); - - Callback cb = mock(Callback.class); - Call call = request(cb); - - server().takeRequest(); - assertExpectedEditError(call, cb, "Invalid token"); - } - - @Test public void testRequestUserNotLoggedIn() throws Throwable { - enqueueFromFile("edit_user_not_logged_in.json"); - - Callback cb = mock(Callback.class); - Call call = request(cb); - - server().takeRequest(); - assertExpectedEditError(call, cb, "Assertion that the user is logged in failed"); - } - - @NonNull private Call request(@NonNull Callback cb) { - return client.request(service(Service.class), new PageTitle("FAKE TITLE", - WikiSite.forLanguageCode("test")), 0, "FAKE EDIT TEXT", "+/", "FAKE SUMMARY", null, false, - null, null, cb); - } - - private void assertAbuseFilterEditResult(@NonNull Call call, - @NonNull Callback cb) { - verify(cb).success(eq(call), isA(EditAbuseFilterResult.class)); - //noinspection unchecked - verify(cb, never()).failure(any(Call.class), any(Throwable.class)); - } - - private void assertExpectedEditError(@NonNull Call call, - @NonNull Callback cb, - @NonNull String expectedCode) { - ArgumentCaptor captor = ArgumentCaptor.forClass(Throwable.class); - //noinspection unchecked - verify(cb, never()).success(any(Call.class), any(EditSuccessResult.class)); - verify(cb).failure(eq(call), captor.capture()); - Throwable t = captor.getValue(); - assertThat(t.getMessage(), is(expectedCode)); - } -} diff --git a/data-client/src/test/java/org/wikipedia/edit/preview/EditPreviewClientTest.java b/data-client/src/test/java/org/wikipedia/edit/preview/EditPreviewClientTest.java deleted file mode 100644 index f38ae35cf1..0000000000 --- a/data-client/src/test/java/org/wikipedia/edit/preview/EditPreviewClientTest.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.wikipedia.edit.preview; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.dataclient.mwapi.MwException; -import org.wikipedia.test.MockRetrofitTest; - -import io.reactivex.Observable; -import io.reactivex.observers.TestObserver; - -public class EditPreviewClientTest extends MockRetrofitTest { - - @Test public void testRequestSuccessHasResults() throws Throwable { - String expected = "

\\o/\\n\\ntest12\\n\\n3

\n\n\n\n\n
"; - - enqueueFromFile("edit_preview.json"); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(response -> response.result().equals(expected)); - } - - @Test public void testRequestResponseApiError() throws Throwable { - enqueueFromFile("api_error.json"); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertError(MwException.class); - } - - @Test public void testRequestResponseMalformed() { - enqueueMalformed(); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertError(MalformedJsonException.class); - } - - private Observable getObservable() { - return getApiService().postEditPreview("User:Mhollo/sandbox", "wikitext of change"); - } -} diff --git a/data-client/src/test/java/org/wikipedia/edit/wikitext/WikitextClientTest.java b/data-client/src/test/java/org/wikipedia/edit/wikitext/WikitextClientTest.java deleted file mode 100644 index 6fd0cfe3a4..0000000000 --- a/data-client/src/test/java/org/wikipedia/edit/wikitext/WikitextClientTest.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.wikipedia.edit.wikitext; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.dataclient.mwapi.MwException; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; -import org.wikipedia.test.MockRetrofitTest; - -import io.reactivex.Observable; -import io.reactivex.observers.TestObserver; - -public class WikitextClientTest extends MockRetrofitTest { - - @Test public void testRequestSuccessHasResults() throws Throwable { - enqueueFromFile("wikitext.json"); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(response -> response.query().firstPage().revisions().get(0).content().equals("\\o/\n\ntest12\n\n3") - && response.query().firstPage().revisions().get(0).timeStamp().equals("2018-03-18T18:10:54Z")); - } - - @Test public void testRequestResponseApiError() throws Throwable { - enqueueFromFile("api_error.json"); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertError(MwException.class); - } - - @Test public void testRequestResponseMalformed() { - enqueueMalformed(); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertError(MalformedJsonException.class); - } - - private Observable getObservable() { - return getApiService().getWikiTextForSection("User:Mhollo/sandbox", 0); - } -} diff --git a/data-client/src/test/java/org/wikipedia/feed/announcement/GeoIPCookieUnmarshallerTest.java b/data-client/src/test/java/org/wikipedia/feed/announcement/GeoIPCookieUnmarshallerTest.java deleted file mode 100644 index a167274cc7..0000000000 --- a/data-client/src/test/java/org/wikipedia/feed/announcement/GeoIPCookieUnmarshallerTest.java +++ /dev/null @@ -1,63 +0,0 @@ -package org.wikipedia.feed.announcement; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.Matchers.nullValue; - -@RunWith(RobolectricTestRunner.class) -public class GeoIPCookieUnmarshallerTest { - - private static final double LATITUDE = 37.33; - private static final double LONGITUDE = -121.89; - - @Test public void testGeoIPWithLocation() { - GeoIPCookie cookie = GeoIPCookieUnmarshaller.unmarshal("US:California:San Francisco:" + LATITUDE + ":" + LONGITUDE + ":v4"); - assertThat(cookie.country(), is("US")); - assertThat(cookie.region(), is("California")); - assertThat(cookie.city(), is("San Francisco")); - assertThat(cookie.location(), is(notNullValue())); - assertThat(cookie.location().getLatitude(), is(LATITUDE)); - assertThat(cookie.location().getLongitude(), is(LONGITUDE)); - } - - @Test public void testGeoIPWithoutLocation() { - GeoIPCookie cookie = GeoIPCookieUnmarshaller.unmarshal("FR::Paris:::v4"); - assertThat(cookie.country(), is("FR")); - assertThat(cookie.region(), is("")); - assertThat(cookie.city(), is("Paris")); - assertThat(cookie.location(), is(nullValue())); - } - - @Test public void testGeoIPEmpty() { - GeoIPCookie cookie = GeoIPCookieUnmarshaller.unmarshal(":::::v4"); - assertThat(cookie.country(), is("")); - assertThat(cookie.region(), is("")); - assertThat(cookie.city(), is("")); - assertThat(cookie.location(), is(nullValue())); - } - - @Test(expected = IllegalArgumentException.class) - public void testGeoIPWrongVersion() { - GeoIPCookieUnmarshaller.unmarshal("RU::Moscow:1:2:v5"); - } - - @Test(expected = IllegalArgumentException.class) - public void testGeoIPWrongParamCount() { - GeoIPCookieUnmarshaller.unmarshal("CA:Toronto:v4"); - } - - @Test(expected = IllegalArgumentException.class) - public void testGeoIPMalformed() { - GeoIPCookieUnmarshaller.unmarshal("foo"); - } - - @Test(expected = IllegalArgumentException.class) - public void testGeoIPWithBadLocation() { - GeoIPCookieUnmarshaller.unmarshal("US:California:San Francisco:foo:bar:v4"); - } -} diff --git a/data-client/src/test/java/org/wikipedia/feed/mostread/MostReadArticlesTest.java b/data-client/src/test/java/org/wikipedia/feed/mostread/MostReadArticlesTest.java deleted file mode 100644 index 64d749a23d..0000000000 --- a/data-client/src/test/java/org/wikipedia/feed/mostread/MostReadArticlesTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.wikipedia.feed.mostread; - -import androidx.annotation.NonNull; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.wikipedia.json.GsonUnmarshaller; -import org.wikipedia.test.TestFileUtil; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; -import java.util.TimeZone; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -@RunWith(RobolectricTestRunner.class) -@SuppressWarnings("checkstyle:magicnumber") -public class MostReadArticlesTest { - @NonNull public static MostReadArticles unmarshal(@NonNull String filename) throws Throwable { - String json = TestFileUtil.readRawFile(filename); - return GsonUnmarshaller.unmarshal(MostReadArticles.class, json); - } - - @Test public void testUnmarshalManyArticles() throws Throwable { - MostReadArticles subject = unmarshal("most_read.json"); - - assertThat(subject.date(), is(date("2016-06-01Z"))); - - assertThat(subject.articles(), notNullValue()); - assertThat(subject.articles().size(), is(40)); - } - - @NonNull private Date date(@NonNull String str) throws Throwable { - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'Z'", Locale.ROOT); - format.setTimeZone(TimeZone.getTimeZone("UTC")); - return format.parse(str); - } -} diff --git a/data-client/src/test/java/org/wikipedia/gallery/GalleryClientTest.java b/data-client/src/test/java/org/wikipedia/gallery/GalleryClientTest.java deleted file mode 100644 index b5cd77ee4b..0000000000 --- a/data-client/src/test/java/org/wikipedia/gallery/GalleryClientTest.java +++ /dev/null @@ -1,108 +0,0 @@ -package org.wikipedia.gallery; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.test.MockRetrofitTest; - -import java.util.List; - -import io.reactivex.Observable; -import io.reactivex.observers.TestObserver; - -public class GalleryClientTest extends MockRetrofitTest { - private static final String RAW_JSON_FILE = "gallery.json"; - - @Test - @SuppressWarnings("checkstyle:magicnumber") - public void testRequestAllSuccess() throws Throwable { - enqueueFromFile(RAW_JSON_FILE); - - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(gallery -> { - List result = gallery.getAllItems(); - return result != null - && result.get(0).getType().equals("image") - && result.get(2).getType().equals("audio") - && result.get(4).getType().equals("video"); - }); - } - - @Test - public void testRequestImageSuccess() throws Throwable { - enqueueFromFile(RAW_JSON_FILE); - - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(gallery -> { - List result = gallery.getItems("image"); - return result.size() == 2 - && result.get(0).getType().equals("image") - && result.get(0).getTitles().getCanonical().equals("File:Flag_of_the_United_States.svg") - && result.get(0).getThumbnail().getSource().equals("http://upload.wikimedia.org/wikipedia/en/thumb/a/a4/Flag_of_the_United_States.svg/320px-Flag_of_the_United_States.svg.png") - && result.get(0).getThumbnailUrl().equals("http://upload.wikimedia.org/wikipedia/en/thumb/a/a4/Flag_of_the_United_States.svg/320px-Flag_of_the_United_States.svg.png") - && result.get(0).getPreferredSizedImageUrl().equals("http://upload.wikimedia.org/wikipedia/en/thumb/a/a4/Flag_of_the_United_States.svg/1280px-Flag_of_the_United_States.svg.png"); - }); - } - - @Test - @SuppressWarnings("checkstyle:magicnumber") - public void testRequestVideoSuccess() throws Throwable { - enqueueFromFile(RAW_JSON_FILE); - - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(gallery -> { - List result = gallery.getItems("video"); - return result.get(0).getSources().size() == 6 - && result.get(0).getType().equals("video") - && result.get(0).getTitles().getCanonical().equals("File:Curiosity's_Seven_Minutes_of_Terror.ogv") - && result.get(0).getFilePage().equals("https://commons.wikimedia.org/wiki/File:Curiosity%27s_Seven_Minutes_of_Terror.ogv") - && result.get(0).getOriginalVideoSource().getOriginalUrl().equals("https://upload.wikimedia.org/wikipedia/commons/transcoded/9/96/Curiosity%27s_Seven_Minutes_of_Terror.ogv/Curiosity%27s_Seven_Minutes_of_Terror.ogv.720p.webm"); - }); - } - - @Test - @SuppressWarnings("checkstyle:magicnumber") - public void testRequestAudioSuccess() throws Throwable { - enqueueFromFile(RAW_JSON_FILE); - - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(gallery -> { - List result = gallery.getItems("audio"); - return result.size() == 2 - && result.get(0).getType().equals("audio") - && result.get(1).getTitles().getCanonical().equals("File:March,_Colonel_John_R._Bourgeois,_Director_·_John_Philip_Sousa_·_United_States_Marine_Band.ogg") - && result.get(1).getDuration() == 226.51766666667 - && result.get(0).getAudioType().equals("generic"); - }); - } - - @Test public void testRequestResponseFailure() { - enqueue404(); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseMalformed() { - enqueueMalformed(); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - observer.assertError(MalformedJsonException.class); - } - - private Observable getObservable() { - return getRestService().getMedia("foo"); - } -} diff --git a/data-client/src/test/java/org/wikipedia/gallery/ImageLicenseFetchClientTest.java b/data-client/src/test/java/org/wikipedia/gallery/ImageLicenseFetchClientTest.java deleted file mode 100644 index 0c1c745a64..0000000000 --- a/data-client/src/test/java/org/wikipedia/gallery/ImageLicenseFetchClientTest.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.wikipedia.gallery; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.dataclient.mwapi.MwQueryPage; -import org.wikipedia.page.PageTitle; -import org.wikipedia.test.MockRetrofitTest; - -import io.reactivex.observers.TestObserver; - -public class ImageLicenseFetchClientTest extends MockRetrofitTest { - private static final WikiSite WIKISITE_TEST = WikiSite.forLanguageCode("test"); - private static final PageTitle PAGE_TITLE_MARK_SELBY = - new PageTitle("File:Mark_Selby_at_Snooker_German_Masters_(DerHexer)_2015-02-04_02.jpg", - WIKISITE_TEST); - - @Test public void testRequestSuccess() throws Throwable { - enqueueFromFile("image_license.json"); - TestObserver observer = new TestObserver<>(); - - getApiService().getImageExtMetadata(PAGE_TITLE_MARK_SELBY.getPrefixedText()) - .map(response -> { - // noinspection ConstantConditions - MwQueryPage page = response.query().pages().get(0); - return page.imageInfo() != null && page.imageInfo().getMetadata() != null - ? new ImageLicense(page.imageInfo().getMetadata()) - : new ImageLicense(); - }) - .subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.getLicenseName().equals("cc-by-sa-4.0") - && result.getLicenseShortName().equals("CC BY-SA 4.0") - && result.getLicenseUrl().equals("http://creativecommons.org/licenses/by-sa/4.0")); - } - - @Test public void testRequestResponseApiError() throws Throwable { - enqueueFromFile("api_error.json"); - TestObserver observer = new TestObserver<>(); - - getApiService().getImageExtMetadata(PAGE_TITLE_MARK_SELBY.getPrefixedText()) - .map(response -> new ImageLicense()) - .subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseFailure() { - enqueue404(); - TestObserver observer = new TestObserver<>(); - - getApiService().getImageExtMetadata(PAGE_TITLE_MARK_SELBY.getPrefixedText()) - .map(response -> new ImageLicense()) - .subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseMalformed() { - enqueueMalformed(); - TestObserver observer = new TestObserver<>(); - - getApiService().getImageExtMetadata(PAGE_TITLE_MARK_SELBY.getPrefixedText()) - .map(response -> new ImageLicense()) - .subscribe(observer); - - observer.assertError(MalformedJsonException.class); - } -} diff --git a/data-client/src/test/java/org/wikipedia/json/NamespaceTypeAdapterTest.java b/data-client/src/test/java/org/wikipedia/json/NamespaceTypeAdapterTest.java deleted file mode 100644 index a827073b18..0000000000 --- a/data-client/src/test/java/org/wikipedia/json/NamespaceTypeAdapterTest.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.wikipedia.json; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.ParameterizedRobolectricTestRunner; -import org.robolectric.ParameterizedRobolectricTestRunner.Parameters; -import org.wikipedia.page.Namespace; - -import java.util.Arrays; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.wikipedia.json.GsonMarshaller.marshal; -import static org.wikipedia.json.GsonUnmarshaller.unmarshal; - -@RunWith(ParameterizedRobolectricTestRunner.class) public class NamespaceTypeAdapterTest { - @Parameters(name = "{0}") public static Iterable data() { - return Arrays.asList(new Object[][] {{DeferredParam.NULL}, {DeferredParam.SPECIAL}, - {DeferredParam.MAIN}, {DeferredParam.TALK}}); - } - - @Nullable private final Namespace namespace; - - public NamespaceTypeAdapterTest(@NonNull DeferredParam param) { - this.namespace = param.val(); - } - - @Test public void testWriteRead() { - Namespace result = unmarshal(Namespace.class, marshal(namespace)); - assertThat(result, is(namespace)); - } - - @Test public void testReadOldData() { - // Prior to 3210ce44, we marshaled Namespace as the name string of the enum, instead of - // the code number, and when we switched to using the code number, we didn't introduce - // backwards-compatible checks for the old-style strings that may still be present in - // some local serialized data. - // TODO: remove after April 2017? - String marshaledStr = namespace == null ? "null" : "\"" + namespace.name() + "\""; - Namespace ns = unmarshal(Namespace.class, marshaledStr); - assertThat(ns, is(namespace)); - } - - // SparseArray is a Roboelectric mocked class which is unavailable at static time; defer - // evaluation until TestRunner is executed - private enum DeferredParam { - NULL() { - @Nullable @Override - Namespace val() { - return null; - } - }, - SPECIAL() { - @NonNull @Override Namespace val() { - return Namespace.SPECIAL; - } - }, - MAIN() { - @NonNull @Override Namespace val() { - return Namespace.MAIN; - } - }, - TALK() { - @NonNull @Override Namespace val() { - return Namespace.TALK; - } - }; - - @Nullable abstract Namespace val(); - } -} diff --git a/data-client/src/test/java/org/wikipedia/json/RequiredFieldsCheckOnReadTypeAdapterFactoryTest.java b/data-client/src/test/java/org/wikipedia/json/RequiredFieldsCheckOnReadTypeAdapterFactoryTest.java deleted file mode 100644 index 35c52f677f..0000000000 --- a/data-client/src/test/java/org/wikipedia/json/RequiredFieldsCheckOnReadTypeAdapterFactoryTest.java +++ /dev/null @@ -1,184 +0,0 @@ -package org.wikipedia.json; - -import android.net.Uri; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.google.gson.Gson; -import com.google.gson.annotations.SerializedName; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.wikipedia.dataclient.Service; -import org.wikipedia.json.annotations.Required; -import org.wikipedia.model.BaseModel; - -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.nullValue; -import static org.junit.Assert.assertThat; -import static org.wikipedia.json.GsonMarshaller.marshal; -import static org.wikipedia.json.GsonUnmarshaller.unmarshal; - -@RunWith(RobolectricTestRunner.class) -public class RequiredFieldsCheckOnReadTypeAdapterFactoryTest { - private final Gson gson = GsonUtil.getDefaultGsonBuilder().serializeNulls().create(); - - @Test - public void testRequireNonNull() { - RequiredModel expected = new RequiredModel(); - expected.field = 1; - RequiredModel result = unmarshal(gson, RequiredModel.class, marshal(gson, expected)); - assertThat(result, is(expected)); - } - - @Test - public void testRequireNull() { - RequiredModel model = new RequiredModel(); - RequiredModel result = unmarshal(gson, RequiredModel.class, marshal(gson, model)); - assertThat(result, nullValue()); - } - - @Test - public void testRequireMissing() { - RequiredModel result = unmarshal(gson, RequiredModel.class, "{}"); - assertThat(result, nullValue()); - } - - @Test - public void testOptionalNonNull() { - OptionalModel expected = new OptionalModel(); - expected.field = 1; - OptionalModel result = unmarshal(gson, OptionalModel.class, marshal(gson, expected)); - assertThat(result, is(expected)); - } - - @Test - public void testOptionalNull() { - OptionalModel expected = new OptionalModel(); - OptionalModel result = unmarshal(gson, OptionalModel.class, marshal(gson, expected)); - assertThat(result, is(expected)); - } - - @Test - public void testOptionalMissing() { - OptionalModel expected = new OptionalModel(); - OptionalModel result = unmarshal(gson, OptionalModel.class, "{}"); - assertThat(result, is(expected)); - } - - @Test - public void testRequiredTypeAdapterNonNull() { - RequiredTypeAdapterModel expected = new RequiredTypeAdapterModel(); - expected.uri = Uri.parse(Service.WIKIPEDIA_URL); - RequiredTypeAdapterModel result = unmarshal(gson, RequiredTypeAdapterModel.class, marshal(gson, expected)); - assertThat(result, is(expected)); - } - - @Test - public void testRequiredTypeAdapterNull() { - RequiredTypeAdapterModel expected = new RequiredTypeAdapterModel(); - RequiredTypeAdapterModel result = unmarshal(gson, RequiredTypeAdapterModel.class, marshal(gson, expected)); - assertThat(result, nullValue()); - } - - @Test - public void testRequiredTypeAdapterMissing() { - RequiredTypeAdapterModel result = unmarshal(gson, RequiredTypeAdapterModel.class, "{}"); - assertThat(result, nullValue()); - } - - @Test - public void testOptionalTypeAdapterNonNull() { - OptionalTypeAdapterModel expected = new OptionalTypeAdapterModel(); - expected.uri = Uri.parse(Service.WIKIPEDIA_URL); - OptionalTypeAdapterModel result = unmarshal(gson, OptionalTypeAdapterModel.class, marshal(gson, expected)); - assertThat(result, is(expected)); - } - - @Test - public void testOptionalTypeAdapterNull() { - OptionalTypeAdapterModel expected = new OptionalTypeAdapterModel(); - OptionalTypeAdapterModel result = unmarshal(gson, OptionalTypeAdapterModel.class, marshal(gson, expected)); - assertThat(result, is(expected)); - } - - @Test - public void testOptionalTypeAdapterMissing() { - OptionalTypeAdapterModel expected = new OptionalTypeAdapterModel(); - OptionalTypeAdapterModel result = unmarshal(gson, OptionalTypeAdapterModel.class, "{}"); - assertThat(result, is(expected)); - } - - @Test - public void testRequiredSerializedNameNonNull() { - SerializedNameModel expected = new SerializedNameModel(); - expected.bar = "hello world"; - SerializedNameModel result = unmarshal(gson, SerializedNameModel.class, marshal(gson, expected)); - assertThat(result, is(expected)); - } - - @Test - public void testRequiredSerializedNameNull() { - SerializedNameModel expected = new SerializedNameModel(); - SerializedNameModel result = unmarshal(gson, SerializedNameModel.class, marshal(gson, expected)); - assertThat(result, nullValue()); - } - - @Test - public void testRequiredSerializedNameMissing() { - SerializedNameModel result = unmarshal(gson, SerializedNameModel.class, "{}"); - assertThat(result, nullValue()); - } - - @Test - public void testComposedValid() { - RequiredModel required = new RequiredModel(); - required.field = 1; - OptionalModel optional = new OptionalModel(); - ComposedModel expected = new ComposedModel(); - expected.required = required; - expected.optional = optional; - - ComposedModel result = unmarshal(gson, ComposedModel.class, marshal(gson, expected)); - assertThat(result, is(expected)); - } - - @Test - public void testComposedInvalid() { - RequiredModel required = new RequiredModel(); - OptionalModel optional = new OptionalModel(); - ComposedModel aggregated = new ComposedModel(); - aggregated.required = required; - aggregated.optional = optional; - - ComposedModel result = unmarshal(gson, ComposedModel.class, marshal(gson, aggregated)); - assertThat(result, nullValue()); - } - - private static class RequiredModel extends BaseModel { - @SuppressWarnings("NullableProblems") @Required @NonNull private Integer field; - } - - private static class OptionalModel extends BaseModel { - @Nullable private Integer field; - } - - private static class ComposedModel extends BaseModel { - @SuppressWarnings("NullableProblems") @Required @NonNull private RequiredModel required; - @Nullable private OptionalModel optional; - } - - private static class RequiredTypeAdapterModel extends BaseModel { - @SuppressWarnings("NullableProblems") @Required @NonNull private Uri uri; - } - - private static class OptionalTypeAdapterModel extends BaseModel { - @Nullable private Uri uri; - } - - private static class SerializedNameModel extends BaseModel { - @SuppressWarnings("NullableProblems") @SerializedName("foo") @Required @NonNull private String bar; - } -} diff --git a/data-client/src/test/java/org/wikipedia/json/UriTypeAdapterTest.java b/data-client/src/test/java/org/wikipedia/json/UriTypeAdapterTest.java deleted file mode 100644 index 01b3623492..0000000000 --- a/data-client/src/test/java/org/wikipedia/json/UriTypeAdapterTest.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.wikipedia.json; - -import android.net.Uri; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.ParameterizedRobolectricTestRunner; -import org.robolectric.ParameterizedRobolectricTestRunner.Parameters; -import org.wikipedia.dataclient.Service; - -import java.util.Arrays; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.wikipedia.json.GsonMarshaller.marshal; -import static org.wikipedia.json.GsonUnmarshaller.unmarshal; - -@RunWith(ParameterizedRobolectricTestRunner.class) public class UriTypeAdapterTest { - @Parameters(name = "{0}") public static Iterable data() { - return Arrays.asList(new Object[][] {{DeferredParam.NULL}, {DeferredParam.STRING}, - {DeferredParam.OPAQUE}, {DeferredParam.HIERARCHICAL}}); - } - - @Nullable private final Uri uri; - - public UriTypeAdapterTest(@NonNull DeferredParam param) { - this.uri = param.val(); - } - - @Test public void testWriteRead() { - Uri result = unmarshal(Uri.class, marshal(uri)); - assertThat(result, is(uri)); - } - - // Namespace uses a roboelectric mocked class internally, SparseArray, which is unavailable at - // static time; defer evaluation until TestRunner is executed - private enum DeferredParam { - NULL() { - @Nullable @Override Uri val() { - return null; - } - }, - STRING() { - @Nullable @Override Uri val() { - return Uri.parse(Service.WIKIPEDIA_URL); - } - }, - OPAQUE() { - @Nullable @Override Uri val() { - return Uri.fromParts("http", "mediawiki.org", null); - } - }, - HIERARCHICAL() { - @Nullable @Override Uri val() { - return Uri.EMPTY; - } - }; - - @Nullable abstract Uri val(); - } -} diff --git a/data-client/src/test/java/org/wikipedia/json/WikiSiteTypeAdapterTest.java b/data-client/src/test/java/org/wikipedia/json/WikiSiteTypeAdapterTest.java deleted file mode 100644 index 4f238c9e64..0000000000 --- a/data-client/src/test/java/org/wikipedia/json/WikiSiteTypeAdapterTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.wikipedia.json; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.wikipedia.dataclient.WikiSite; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.nullValue; -import static org.wikipedia.json.GsonMarshaller.marshal; -import static org.wikipedia.json.GsonUnmarshaller.unmarshal; - -@RunWith(RobolectricTestRunner.class) public class WikiSiteTypeAdapterTest { - @Test public void testWriteRead() { - WikiSite wiki = WikiSite.forLanguageCode("test"); - assertThat(unmarshal(WikiSite.class, marshal(wiki)), is(wiki)); - } - - @Test public void testReadNull() { - assertThat(unmarshal(WikiSite.class, null), nullValue()); - } - - @Test public void testReadLegacyString() { - String json = "\"https://test.wikipedia.org\""; - WikiSite expected = WikiSite.forLanguageCode("test"); - assertThat(unmarshal(WikiSite.class, json), is(expected)); - } - - @Test public void testReadLegacyUri() { - String json = "{\"domain\": \"test.wikipedia.org\", \"languageCode\": \"test\"}"; - WikiSite expected = WikiSite.forLanguageCode("test"); - assertThat(unmarshal(WikiSite.class, json), is(expected)); - } - - @Test public void testReadLegacyUriLang() { - String json = "{\"domain\": \"test.wikipedia.org\"}"; - WikiSite expected = WikiSite.forLanguageCode("test"); - assertThat(unmarshal(WikiSite.class, json), is(expected)); - } - - @Test public void testReadLegacyLang() { - String json = "{\"domain\": \"https://test.wikipedia.org\"}"; - WikiSite expected = WikiSite.forLanguageCode("test"); - assertThat(unmarshal(WikiSite.class, json), is(expected)); - } - -} diff --git a/data-client/src/test/java/org/wikipedia/language/LangLinksClientTest.java b/data-client/src/test/java/org/wikipedia/language/LangLinksClientTest.java deleted file mode 100644 index 60a1f89c66..0000000000 --- a/data-client/src/test/java/org/wikipedia/language/LangLinksClientTest.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.wikipedia.language; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; -import org.wikipedia.test.MockRetrofitTest; - -import io.reactivex.Observable; -import io.reactivex.observers.TestObserver; - -public class LangLinksClientTest extends MockRetrofitTest { - - @Test - public void testRequestSuccessHasResults() throws Throwable { - enqueueFromFile("lang_links.json"); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> - result.query().langLinks().get(0).getDisplayText().equals("Sciëntologie")); - } - - @Test - public void testRequestSuccessNoResults() throws Throwable { - enqueueFromFile("lang_links_empty.json"); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.query().langLinks().isEmpty()); - } - - @Test - public void testRequestResponseApiError() throws Throwable { - enqueueFromFile("api_error.json"); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test - public void testRequestResponseMalformed() { - enqueueMalformed(); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertError(MalformedJsonException.class); - } - - private Observable getObservable() { - return getApiService().getLangLinks("foo"); - } -} diff --git a/data-client/src/test/java/org/wikipedia/media/ImageUrlTest.java b/data-client/src/test/java/org/wikipedia/media/ImageUrlTest.java deleted file mode 100644 index 3794d62644..0000000000 --- a/data-client/src/test/java/org/wikipedia/media/ImageUrlTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.wikipedia.media; - -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.wikipedia.dataclient.Service.PREFERRED_THUMB_SIZE; -import static org.wikipedia.util.ImageUrlUtil.getUrlForSize; - -public class ImageUrlTest { - // Should rewrite URLs for larger images to the desired width, but leave smaller images and - // image URLs with no width alone. - @Test public void testImageUrlRewriting() { - String url1024 = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/90/Istanbul_Airport_Turkish-Airlines_2013-11-18.JPG/1024px-Istanbul_Airport_Turkish-Airlines_2013-11-18.JPG"; - String url320 = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/90/Istanbul_Airport_Turkish-Airlines_2013-11-18.JPG/320px-Istanbul_Airport_Turkish-Airlines_2013-11-18.JPG"; - String url244 = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/94/People%27s_Party_%28Spain%29_Logo.svg/244px-People%27s_Party_%28Spain%29_Logo.svg.png"; - String urlNoWidth = "https://upload.wikimedia.org/wikipedia/commons/6/6a/Mariano_Rajoy_2015e_%28cropped%29.jpg"; - - assertThat(getUrlForSize(url1024, PREFERRED_THUMB_SIZE), is(url320)); - assertThat(getUrlForSize(url244, PREFERRED_THUMB_SIZE), is(url244)); - assertThat(getUrlForSize(urlNoWidth, PREFERRED_THUMB_SIZE), is(urlNoWidth)); - } -} diff --git a/data-client/src/test/java/org/wikipedia/nearby/NearbyClientTest.java b/data-client/src/test/java/org/wikipedia/nearby/NearbyClientTest.java deleted file mode 100644 index d04d87b66c..0000000000 --- a/data-client/src/test/java/org/wikipedia/nearby/NearbyClientTest.java +++ /dev/null @@ -1,108 +0,0 @@ -package org.wikipedia.nearby; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.dataclient.mwapi.MwException; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; -import org.wikipedia.dataclient.mwapi.NearbyPage; -import org.wikipedia.test.MockRetrofitTest; - -import java.util.Collections; -import java.util.List; - -import io.reactivex.Observable; -import io.reactivex.functions.Function; -import io.reactivex.observers.TestObserver; - -@SuppressWarnings("checkstyle:magicnumber") -public class NearbyClientTest extends MockRetrofitTest { - - @Test public void testRequestSuccessHasResults() throws Throwable { - enqueueFromFile("nearby.json"); - TestObserver> observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(nearbyPages -> nearbyPages.get(0).getTitle().getDisplayText().equals("Bean Hollow State Beach") - && nearbyPages.get(0).getLocation().getLatitude() == 37.22583333 - && nearbyPages.get(0).getLocation().getLongitude() == -122.40888889); - } - - @Test public void testRequestNoResults() throws Throwable { - enqueueFromFile("nearby_empty.json"); - TestObserver> observer = new TestObserver<>(); - - getApiService().nearbySearch("0|0", 1) - .map((Function>) response - -> response.query() != null ? response.query().nearbyPages(WikiSite.forLanguageCode("en")) : Collections.emptyList()) - .subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(List::isEmpty); - } - - @Test public void testLocationMissingCoordsIsExcludedFromResults() throws Throwable { - enqueueFromFile("nearby_missing_coords.json"); - TestObserver> observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(List::isEmpty); - } - - @Test public void testLocationMissingLatOnlyIsExcludedFromResults() throws Throwable { - enqueueFromFile("nearby_missing_lat.json"); - TestObserver> observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(List::isEmpty); - } - - @Test public void testLocationMissingLonOnlyIsExcludedFromResults() throws Throwable { - enqueueFromFile("nearby_missing_lon.json"); - TestObserver> observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(List::isEmpty); - } - - @Test public void testRequestResponseApiError() throws Throwable { - enqueueFromFile("api_error.json"); - TestObserver> observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertError(MwException.class); - } - - @Test public void testRequestResponseFailure() { - enqueue404(); - TestObserver> observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseMalformed() { - enqueueMalformed(); - TestObserver> observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertError(MalformedJsonException.class); - } - - private Observable> getObservable() { - return getApiService().nearbySearch("0|0", 1) - .map(response -> response.query().nearbyPages(WikiSite.forLanguageCode("en"))); - } -} diff --git a/data-client/src/test/java/org/wikipedia/nearby/NearbyUnitTest.java b/data-client/src/test/java/org/wikipedia/nearby/NearbyUnitTest.java deleted file mode 100644 index 04d70fc18d..0000000000 --- a/data-client/src/test/java/org/wikipedia/nearby/NearbyUnitTest.java +++ /dev/null @@ -1,120 +0,0 @@ -package org.wikipedia.nearby; - -import android.location.Location; - -import androidx.annotation.NonNull; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.wikipedia.dataclient.Service; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.dataclient.mwapi.NearbyPage; -import org.wikipedia.page.PageTitle; - -import java.util.Collections; -import java.util.Comparator; -import java.util.LinkedList; -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -/** - * Unit tests for Nearby related classes. Probably should refactor this into a model class. - */ -@SuppressWarnings("checkstyle:magicnumber") @RunWith(RobolectricTestRunner.class) -public class NearbyUnitTest { - private static WikiSite TEST_WIKI_SITE = new WikiSite(Service.WIKIPEDIA_URL); - /** dist(origin, point a) */ - private static final int A = 111_319; - - private Location nextLocation; - private List nearbyPages; - - @Before - public void setUp() { - nextLocation = new Location("current"); - nextLocation.setLatitude(0.0d); - nextLocation.setLongitude(0.0d); - nearbyPages = new LinkedList<>(); - nearbyPages.add(constructNearbyPage("c", 0.0, 3.0)); - nearbyPages.add(constructNearbyPage("b", 0.0, 2.0)); - nearbyPages.add(constructNearbyPage("a", 0.0, 1.0)); - } - - @Test public void testSort() { - calcDistances(nearbyPages); - Collections.sort(nearbyPages, new NearbyDistanceComparator()); - assertThat("a", is(nearbyPages.get(0).getTitle().getDisplayText())); - assertThat("b", is(nearbyPages.get(1).getTitle().getDisplayText())); - assertThat("c", is(nearbyPages.get(2).getTitle().getDisplayText())); - } - - @Test public void testSortWithNullLocations() { - final Location location = null; - nearbyPages.add(new NearbyPage(new PageTitle("d", TEST_WIKI_SITE), location)); - nearbyPages.add(new NearbyPage(new PageTitle("e", TEST_WIKI_SITE), location)); - calcDistances(nearbyPages); - Collections.sort(nearbyPages, new NearbyDistanceComparator()); - assertThat("a", is(nearbyPages.get(0).getTitle().getDisplayText())); - assertThat("b", is(nearbyPages.get(1).getTitle().getDisplayText())); - assertThat("c", is(nearbyPages.get(2).getTitle().getDisplayText())); - // the two null location values come last but in the same order as from the original list: - assertThat("d", is(nearbyPages.get(3).getTitle().getDisplayText())); - assertThat("e", is(nearbyPages.get(4).getTitle().getDisplayText())); - } - - @Test public void testCompare() { - final Location location = null; - NearbyPage nullLocPage = new NearbyPage(new PageTitle("nowhere", TEST_WIKI_SITE), location); - - calcDistances(nearbyPages); - nullLocPage.setDistance(getDistance(nullLocPage.getLocation())); - assertThat(Integer.MAX_VALUE, is(nullLocPage.getDistance())); - - NearbyDistanceComparator comp = new NearbyDistanceComparator(); - assertThat(A, is(comp.compare(nearbyPages.get(1), nearbyPages.get(2)))); - assertThat(-1 * A, is(comp.compare(nearbyPages.get(2), nearbyPages.get(1)))); - assertThat(Integer.MAX_VALUE - A, is(comp.compare(nullLocPage, nearbyPages.get(2)))); - assertThat((Integer.MIN_VALUE + 1) + A, is(comp.compare(nearbyPages.get(2), nullLocPage))); // - (max - a) - assertThat(0, is(comp.compare(nullLocPage, nullLocPage))); - } - - private class NearbyDistanceComparator implements Comparator { - @Override - public int compare(NearbyPage a, NearbyPage b) { - return a.getDistance() - b.getDistance(); - } - } - - // - // UGLY: copy of production code - // - - /** - * Calculates the distances from the origin to the given pages. - * This method should be called before sorting. - */ - private void calcDistances(List pages) { - for (NearbyPage page : pages) { - page.setDistance(getDistance(page.getLocation())); - } - } - - private int getDistance(Location otherLocation) { - if (otherLocation == null) { - return Integer.MAX_VALUE; - } else { - return (int) nextLocation.distanceTo(otherLocation); - } - } - - private NearbyPage constructNearbyPage(@NonNull String title, double lat, double lon) { - Location location = new Location(""); - location.setLatitude(lat); - location.setLongitude(lon); - return new NearbyPage(new PageTitle(title, TEST_WIKI_SITE), location); - } -} diff --git a/data-client/src/test/java/org/wikipedia/notifications/NotificationClientTest.java b/data-client/src/test/java/org/wikipedia/notifications/NotificationClientTest.java deleted file mode 100644 index c084d3a269..0000000000 --- a/data-client/src/test/java/org/wikipedia/notifications/NotificationClientTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.wikipedia.notifications; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.dataclient.mwapi.MwQueryResponse; -import org.wikipedia.json.GsonUnmarshaller; -import org.wikipedia.test.MockRetrofitTest; -import org.wikipedia.test.TestFileUtil; - -import java.util.List; - -import io.reactivex.Observable; -import io.reactivex.observers.TestObserver; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -public class NotificationClientTest extends MockRetrofitTest { - - @Test public void testRequestSuccess() throws Throwable { - enqueueFromFile("notifications.json"); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(response -> { - List notifications = response.query().notifications().list(); - return notifications.get(0).type().equals("edit-thank") - && notifications.get(0).title().full().equals("PageTitle") - && notifications.get(0).agent().name().equals("User1"); - }); - } - - @Test public void testRequestMalformed() { - enqueueMalformed(); - TestObserver observer = new TestObserver<>(); - - getObservable().subscribe(observer); - - observer.assertError(MalformedJsonException.class); - } - - @Test public void testNotificationReverted() throws Throwable { - String json = TestFileUtil.readRawFile("notification_revert.json"); - Notification n = GsonUnmarshaller.unmarshal(Notification.class, json); - assertThat(n.type(), is(Notification.TYPE_REVERTED)); - assertThat(n.wiki(), is("wikidatawiki")); - assertThat(n.agent().name(), is("User1")); - assertThat(n.isFromWikidata(), is(true)); - } - - private Observable getObservable() { - return getApiService().getAllNotifications("*", "!read", null); - } -} diff --git a/data-client/src/test/java/org/wikipedia/page/NamespaceTest.java b/data-client/src/test/java/org/wikipedia/page/NamespaceTest.java deleted file mode 100644 index 8004fbb718..0000000000 --- a/data-client/src/test/java/org/wikipedia/page/NamespaceTest.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.wikipedia.page; - -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.wikipedia.dataclient.WikiSite; - -import java.util.Locale; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.nullValue; -import static org.wikipedia.page.Namespace.FILE; -import static org.wikipedia.page.Namespace.MAIN; -import static org.wikipedia.page.Namespace.MEDIA; -import static org.wikipedia.page.Namespace.SPECIAL; -import static org.wikipedia.page.Namespace.TALK; - -@RunWith(RobolectricTestRunner.class) public class NamespaceTest { - private static Locale PREV_DEFAULT_LOCALE; - - @BeforeClass public static void setUp() { - PREV_DEFAULT_LOCALE = Locale.getDefault(); - Locale.setDefault(Locale.ENGLISH); - } - - @AfterClass public static void tearDown() { - Locale.setDefault(PREV_DEFAULT_LOCALE); - } - - @Test public void testOf() { - assertThat(Namespace.of(SPECIAL.code()), is(SPECIAL)); - } - - @Test public void testFromLegacyStringMain() { - //noinspection deprecation - assertThat(Namespace.fromLegacyString(WikiSite.forLanguageCode("test"), null), is(MAIN)); - } - - @Test public void testFromLegacyStringFile() { - //noinspection deprecation - assertThat(Namespace.fromLegacyString(WikiSite.forLanguageCode("he"), "קובץ"), is(FILE)); - } - - @Test public void testFromLegacyStringSpecial() { - //noinspection deprecation - assertThat(Namespace.fromLegacyString(WikiSite.forLanguageCode("lez"), "Служебная"), is(SPECIAL)); - } - - @Test public void testFromLegacyStringTalk() { - //noinspection deprecation - assertThat(Namespace.fromLegacyString(WikiSite.forLanguageCode("en"), "stringTalk"), is(TALK)); - } - - @Test public void testCode() { - assertThat(MAIN.code(), is(0)); - assertThat(TALK.code(), is(1)); - } - - @Test public void testSpecial() { - assertThat(SPECIAL.special(), is(true)); - assertThat(MAIN.special(), is(false)); - } - - @Test public void testMain() { - assertThat(MAIN.main(), is(true)); - assertThat(TALK.main(), is(false)); - } - - @Test public void testFile() { - assertThat(FILE.file(), is(true)); - assertThat(MAIN.file(), is(false)); - } - - @Test public void testTalkNegative() { - assertThat(MEDIA.talk(), is(false)); - assertThat(SPECIAL.talk(), is(false)); - } - - @Test public void testTalkZero() { - assertThat(MAIN.talk(), is(false)); - } - - @Test public void testTalkOdd() { - assertThat(TALK.talk(), is(true)); - } - - @Test public void testToLegacyStringMain() { - //noinspection deprecation - assertThat(MAIN.toLegacyString(), nullValue()); - } - - @Test public void testToLegacyStringNonMain() { - //noinspection deprecation - assertThat(TALK.toLegacyString(), is("Talk")); - } -} diff --git a/data-client/src/test/java/org/wikipedia/page/PageTest.java b/data-client/src/test/java/org/wikipedia/page/PageTest.java deleted file mode 100644 index dcd8465e26..0000000000 --- a/data-client/src/test/java/org/wikipedia/page/PageTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.wikipedia.page; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.wikipedia.dataclient.WikiSite; - -import java.util.ArrayList; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; - -/** Unit tests for Page. */ -@RunWith(RobolectricTestRunner.class) -public class PageTest { - private static final WikiSite WIKI = WikiSite.forLanguageCode("en"); - - @Test - public void testMediaWikiMarshalling() { - PageTitle title = new PageTitle("Main page", WIKI, "//foo/thumb.jpg"); - PageProperties props = new PageProperties(title, true); - - Page page = new Page(title, new ArrayList<>(), props, false); - assertThat(page.isFromRestBase(), is(false)); - } - - @Test - public void testRestBaseMarshalling() { - PageTitle title = new PageTitle("Main page", WIKI, "//foo/thumb.jpg"); - PageProperties props = new PageProperties(title, true); - - Page page = new Page(title, new ArrayList<>(), props, true); - assertThat(page.isFromRestBase(), is(true)); - } -} diff --git a/data-client/src/test/java/org/wikipedia/page/PageTitleTest.java b/data-client/src/test/java/org/wikipedia/page/PageTitleTest.java deleted file mode 100644 index 0769436cce..0000000000 --- a/data-client/src/test/java/org/wikipedia/page/PageTitleTest.java +++ /dev/null @@ -1,139 +0,0 @@ -package org.wikipedia.page; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.wikipedia.dataclient.WikiSite; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.nullValue; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -@RunWith(RobolectricTestRunner.class) public class PageTitleTest { - @Test public void testEquals() { - assertThat(new PageTitle(null, "India", WikiSite.forLanguageCode("en")).equals(new PageTitle(null, "India", WikiSite.forLanguageCode("en"))), is(true)); - assertThat(new PageTitle("Talk", "India", WikiSite.forLanguageCode("en")).equals(new PageTitle("Talk", "India", WikiSite.forLanguageCode("en"))), is(true)); - - assertThat(new PageTitle(null, "India", WikiSite.forLanguageCode("ta")).equals(new PageTitle(null, "India", WikiSite.forLanguageCode("en"))), is(false)); - assertThat(new PageTitle("Talk", "India", WikiSite.forLanguageCode("ta")).equals(new PageTitle("Talk", "India", WikiSite.forLanguageCode("en"))), is(false)); - assertThat(new PageTitle("Talk", "India", WikiSite.forLanguageCode("ta")).equals("Something else"), is(false)); - } - - @Test public void testPrefixedText() { - WikiSite enwiki = WikiSite.forLanguageCode("en"); - - assertThat(new PageTitle(null, "Test title", enwiki).getPrefixedText(), is("Test__title")); - assertThat(new PageTitle(null, "Test title", enwiki).getPrefixedText(), is("Test_title")); - assertThat(new PageTitle("Talk", "Test title", enwiki).getPrefixedText(), is("Talk:Test_title")); - assertThat(new PageTitle(null, "Test title", enwiki).getText(), is("Test_title")); - } - - @Test public void testFromInternalLink() { - WikiSite enwiki = WikiSite.forLanguageCode("en"); - - assertThat(enwiki.titleForInternalLink("/wiki/India").getPrefixedText(), is("India")); - assertThat(enwiki.titleForInternalLink("/wiki/India").getNamespace(), nullValue()); - - assertThat(enwiki.titleForInternalLink("/wiki/Talk:India").getNamespace(), is("Talk")); - assertThat(enwiki.titleForInternalLink("/wiki/Talk:India").getText(), is("India")); - assertThat(enwiki.titleForInternalLink("/wiki/Talk:India").getFragment(), nullValue()); - - assertThat(enwiki.titleForInternalLink("/wiki/Talk:India#").getNamespace(), is("Talk")); - assertThat(enwiki.titleForInternalLink("/wiki/Talk:India#").getText(), is("India")); - assertThat(enwiki.titleForInternalLink("/wiki/Talk:India#").getFragment(), is("")); - - assertThat(enwiki.titleForInternalLink("/wiki/Talk:India#History").getNamespace(), is("Talk")); - assertThat(enwiki.titleForInternalLink("/wiki/Talk:India#History").getText(), is("India")); - assertThat(enwiki.titleForInternalLink("/wiki/Talk:India#History").getFragment(), is("History")); - } - - @Test public void testCanonicalURL() { - WikiSite enwiki = WikiSite.forLanguageCode("en"); - - assertThat(enwiki.titleForInternalLink("/wiki/India").getCanonicalUri(), is("https://en.wikipedia.org/wiki/India")); - assertThat(enwiki.titleForInternalLink("/wiki/India Gate").getCanonicalUri(), is("https://en.wikipedia.org/wiki/India_Gate")); - assertThat(enwiki.titleForInternalLink("/wiki/India's Gate").getCanonicalUri(), is("https://en.wikipedia.org/wiki/India%27s_Gate")); - } - - @Test public void testWikiSite() { - WikiSite enwiki = WikiSite.forLanguageCode("en"); - - assertThat(new PageTitle(null, "Test", enwiki).getWikiSite(), is(enwiki)); - assertThat(WikiSite.forLanguageCode("en"), is(enwiki)); - } - - @Test public void testParsing() { - WikiSite enwiki = WikiSite.forLanguageCode("en"); - - assertThat(new PageTitle("Hello", enwiki).getDisplayText(), is("Hello")); - assertThat(new PageTitle("Talk:Hello", enwiki).getDisplayText(), is("Talk:Hello")); - assertThat(new PageTitle("Talk:Hello", enwiki).getText(), is("Hello")); - assertThat(new PageTitle("Talk:Hello", enwiki).getNamespace(), is("Talk")); - assertThat(new PageTitle("Wikipedia_talk:Hello world", enwiki).getDisplayText(), is("Wikipedia talk:Hello world")); - } - - @Test public void testSpecial() { - assertThat(new PageTitle("Special:Version", WikiSite.forLanguageCode("en")).isSpecial(), is(true)); - assertThat(new PageTitle("特別:Version", WikiSite.forLanguageCode("ja")).isSpecial(), is(true)); - assertThat(new PageTitle("Special:Version", WikiSite.forLanguageCode("ja")).isSpecial(), is(true)); - assertThat(new PageTitle("特別:Version", WikiSite.forLanguageCode("en")).isSpecial(), is(false)); - } - - @Test public void testFile() { - assertThat(new PageTitle("File:SomethingSomething", WikiSite.forLanguageCode("en")).isFilePage(), is(true)); - assertThat(new PageTitle("ファイル:Version", WikiSite.forLanguageCode("ja")).isFilePage(), is(true)); - assertThat(new PageTitle("File:SomethingSomething", WikiSite.forLanguageCode("ja")).isFilePage(), is(true)); - assertThat(new PageTitle("ファイル:Version", WikiSite.forLanguageCode("en")).isFilePage(), is(false)); - } - - @Test public void testIsMainPageNoTitleNoProps() { - final String text = null; - WikiSite wiki = WikiSite.forLanguageCode("test"); - final String thumbUrl = null; - final String desc = null; - final PageProperties props = null; - PageTitle subject = new PageTitle(text, wiki, thumbUrl, desc, props); - - assertThat(subject.isMainPage(), is(false)); - } - - @Test public void testIsMainPageTitleNoProps() { - String text = "text"; - WikiSite wiki = WikiSite.forLanguageCode("test"); - final String thumbUrl = null; - final String desc = null; - final PageProperties props = null; - PageTitle subject = new PageTitle(text, wiki, thumbUrl, desc, props); - - assertThat(subject.isMainPage(), is(false)); - } - - @Test public void testIsMainPageProps() { - String text = "text"; - WikiSite wiki = WikiSite.forLanguageCode("test"); - final String thumbUrl = null; - final String desc = null; - PageProperties props = mock(PageProperties.class); - when(props.isMainPage()).thenReturn(true); - PageTitle subject = new PageTitle(text, wiki, thumbUrl, desc, props); - - assertThat(subject.isMainPage(), is(true)); - } - - /** https://bugzilla.wikimedia.org/66151 */ - @Test public void testHashChar() { - PageTitle pageTitle = new PageTitle("#", WikiSite.forLanguageCode("en")); - assertThat(pageTitle.getNamespace(), nullValue()); - assertThat(pageTitle.getText(), is("")); - assertThat(pageTitle.getFragment(), is("")); - } - - @Test public void testColonChar() { - PageTitle pageTitle = new PageTitle(":", WikiSite.forLanguageCode("en")); - assertThat(pageTitle.getNamespace(), is("")); - assertThat(pageTitle.getText(), is("")); - assertThat(pageTitle.getFragment(), nullValue()); - } -} diff --git a/data-client/src/test/java/org/wikipedia/page/SectionTest.java b/data-client/src/test/java/org/wikipedia/page/SectionTest.java deleted file mode 100644 index 4c1030a427..0000000000 --- a/data-client/src/test/java/org/wikipedia/page/SectionTest.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.wikipedia.page; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -@RunWith(RobolectricTestRunner.class) public class SectionTest { - @Test public void testSectionLead() { - // Section 0 is the lead - Section section = new Section(0, 0, "Heading", "Heading", "Content"); - assertThat(section.isLead(), is(true)); - - // Section 1 is not - section = new Section(1, 1, "Heading", "Heading", "Content"); - assertThat(section.isLead(), is(false)); - - // Section 1 is not, even if it's somehow at level 0 - section = new Section(1, 0, "Heading", "Heading", "Content"); - assertThat(section.isLead(), is(false)); - } - - @Test public void testJSONSerialization() { - Section parentSection = new Section(1, 1, null, null, "Hi there!"); - - assertThat(parentSection, is(Section.fromJson(parentSection.toJSON()))); - } -} diff --git a/data-client/src/test/java/org/wikipedia/random/RandomSummaryClientTest.java b/data-client/src/test/java/org/wikipedia/random/RandomSummaryClientTest.java deleted file mode 100644 index 88fc6d1186..0000000000 --- a/data-client/src/test/java/org/wikipedia/random/RandomSummaryClientTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.wikipedia.random; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.dataclient.restbase.page.RbPageSummary; -import org.wikipedia.test.MockRetrofitTest; - -import io.reactivex.Observable; -import io.reactivex.observers.TestObserver; - -public class RandomSummaryClientTest extends MockRetrofitTest { - - @Test - public void testRequestEligible() throws Throwable { - enqueueFromFile("rb_page_summary_valid.json"); - - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(summary -> summary != null - && summary.getDisplayTitle().equals("Fermat's Last Theorem") - && summary.getDescription().equals("theorem in number theory")); - } - - @Test public void testRequestMalformed() { - enqueueMalformed(); - - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - observer.assertError(MalformedJsonException.class); - } - - @Test public void testRequestFailure() { - enqueue404(); - - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - observer.assertError(Exception.class); - } - - private Observable getObservable() { - return getRestService().getRandomSummary(); - } -} diff --git a/data-client/src/test/java/org/wikipedia/search/FullTextSearchClientTest.java b/data-client/src/test/java/org/wikipedia/search/FullTextSearchClientTest.java deleted file mode 100644 index f7c8a12013..0000000000 --- a/data-client/src/test/java/org/wikipedia/search/FullTextSearchClientTest.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.wikipedia.search; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.test.MockRetrofitTest; - -import io.reactivex.Observable; -import io.reactivex.observers.TestObserver; - -public class FullTextSearchClientTest extends MockRetrofitTest { - private static final WikiSite TESTWIKI = new WikiSite("test.wikimedia.org"); - private static final int BATCH_SIZE = 20; - - private Observable getObservable() { - return getApiService().fullTextSearch("foo", BATCH_SIZE, null, null) - .map(response -> { - if (response.success()) { - // noinspection ConstantConditions - return new SearchResults(response.query().pages(), TESTWIKI, - response.continuation(), null); - } - return new SearchResults(); - }); - } - - @Test public void testRequestSuccessNoContinuation() throws Throwable { - enqueueFromFile("full_text_search_results.json"); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.getResults().get(0).getPageTitle().getDisplayText().equals("IND Queens Boulevard Line")); - - } - - @Test public void testRequestSuccessWithContinuation() throws Throwable { - enqueueFromFile("full_text_search_results.json"); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.getContinuation().get("continue").equals("gsroffset||") - && result.getContinuation().get("gsroffset").equals("20")); - } - - @Test public void testRequestSuccessNoResults() throws Throwable { - enqueueFromFile("full_text_search_results_empty.json"); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.getResults().isEmpty()); - } - - @Test public void testRequestResponseApiError() throws Throwable { - enqueueFromFile("api_error.json"); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseFailure() { - enqueue404(); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseMalformed() { - enqueueMalformed(); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertError(MalformedJsonException.class); - } -} diff --git a/data-client/src/test/java/org/wikipedia/search/PrefixSearchClientTest.java b/data-client/src/test/java/org/wikipedia/search/PrefixSearchClientTest.java deleted file mode 100644 index 6642ef1619..0000000000 --- a/data-client/src/test/java/org/wikipedia/search/PrefixSearchClientTest.java +++ /dev/null @@ -1,69 +0,0 @@ -package org.wikipedia.search; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.test.MockRetrofitTest; - -import io.reactivex.Observable; -import io.reactivex.observers.TestObserver; - -public class PrefixSearchClientTest extends MockRetrofitTest { - private static final WikiSite TESTWIKI = new WikiSite("test.wikimedia.org"); - private static final int BATCH_SIZE = 20; - - private Observable getObservable() { - return getApiService().prefixSearch("foo", BATCH_SIZE, "foo") - .map(response -> { - if (response != null && response.success() && response.query().pages() != null) { - // noinspection ConstantConditions - return new SearchResults(response.query().pages(), TESTWIKI, response.continuation(), - response.suggestion()); - } - return new SearchResults(); - }); - } - - @Test public void testRequestSuccess() throws Throwable { - enqueueFromFile("prefix_search_results.json"); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.getResults().get(0).getPageTitle().getDisplayText().equals("Narthecium")); - } - - @Test public void testRequestSuccessNoResults() throws Throwable { - enqueueFromFile("prefix_search_results_empty.json"); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.getResults().isEmpty()); - } - - @Test public void testRequestResponseApiError() throws Throwable { - enqueueFromFile("api_error.json"); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseFailure() { - enqueue404(); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseMalformed() { - enqueueMalformed(); - TestObserver observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertError(MalformedJsonException.class); - } -} diff --git a/data-client/src/test/java/org/wikipedia/search/RelatedPagesSearchClientTest.java b/data-client/src/test/java/org/wikipedia/search/RelatedPagesSearchClientTest.java deleted file mode 100644 index 0c73193097..0000000000 --- a/data-client/src/test/java/org/wikipedia/search/RelatedPagesSearchClientTest.java +++ /dev/null @@ -1,81 +0,0 @@ -package org.wikipedia.search; - -import com.google.gson.stream.MalformedJsonException; - -import org.junit.Test; -import org.wikipedia.dataclient.restbase.RbRelatedPages; -import org.wikipedia.dataclient.restbase.page.RbPageSummary; -import org.wikipedia.test.MockRetrofitTest; - -import java.util.List; - -import io.reactivex.Observable; -import io.reactivex.observers.TestObserver; - -public class RelatedPagesSearchClientTest extends MockRetrofitTest { - private static final String RAW_JSON_FILE = "related_pages_search_results.json"; - - @Test - @SuppressWarnings("checkstyle:magicnumber") - public void testRequestSuccessWithNoLimit() throws Throwable { - enqueueFromFile(RAW_JSON_FILE); - - TestObserver> observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.size() == 5 - && result.get(4).getThumbnailUrl().equals("https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Vizsla_r%C3%A1h%C3%BAz_a_vadra.jpg/320px-Vizsla_r%C3%A1h%C3%BAz_a_vadra.jpg") - && result.get(4).getDisplayTitle().equals("Dog intelligence") - && result.get(4).getDescription() == null); - } - - @Test - @SuppressWarnings("checkstyle:magicnumber") - public void testRequestSuccessWithLimit() throws Throwable { - enqueueFromFile(RAW_JSON_FILE); - - TestObserver> observer = new TestObserver<>(); - getRestService().getRelatedPages("foo") - .map(response -> response.getPages(3)) - .subscribe(observer); - - observer.assertComplete().assertNoErrors() - .assertValue(result -> result.size() == 3 - && result.get(0).getThumbnailUrl().equals("https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/European_grey_wolf_in_Prague_zoo.jpg/291px-European_grey_wolf_in_Prague_zoo.jpg") - && result.get(0).getDisplayTitle().equals("Wolf") - && result.get(0).getDescription().equals("species of mammal")); - } - - @Test public void testRequestResponseApiError() throws Throwable { - enqueueFromFile("api_error.json"); - - TestObserver> observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseFailure() { - enqueue404(); - - TestObserver> observer = new TestObserver<>(); - getRestService().getRelatedPages("foo") - .map(RbRelatedPages::getPages) - .subscribe(observer); - - observer.assertError(Exception.class); - } - - @Test public void testRequestResponseMalformed() { - enqueueMalformed(); - TestObserver> observer = new TestObserver<>(); - getObservable().subscribe(observer); - - observer.assertError(MalformedJsonException.class); - } - - private Observable> getObservable() { - return getRestService().getRelatedPages("foo").map(RbRelatedPages::getPages); - } -} diff --git a/data-client/src/test/java/org/wikipedia/search/SearchResultsRedirectProcessingTest.java b/data-client/src/test/java/org/wikipedia/search/SearchResultsRedirectProcessingTest.java deleted file mode 100644 index fc2f3e0964..0000000000 --- a/data-client/src/test/java/org/wikipedia/search/SearchResultsRedirectProcessingTest.java +++ /dev/null @@ -1,90 +0,0 @@ -package org.wikipedia.search; - -import org.junit.Before; -import org.junit.Test; -import org.wikipedia.dataclient.mwapi.MwQueryResult; -import org.wikipedia.json.GsonUtil; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -public class SearchResultsRedirectProcessingTest { - - private MwQueryResult result; - - @Before public void setUp() { - result = GsonUtil.getDefaultGson().fromJson(queryJson, MwQueryResult.class); - } - - @Test public void testRedirectHandling() { - assertThat(result.pages().size(), is(2)); - assertThat(result.pages().get(0).title(), is("Narthecium#Foo")); - assertThat(result.pages().get(0).redirectFrom(), is("Abama")); - assertThat(result.pages().get(1).title(), is("Amitriptyline")); - assertThat(result.pages().get(1).redirectFrom(), is("Abamax")); - } - - @Test public void testConvertTitleHandling() { - assertThat(result.pages().size(), is(2)); - assertThat(result.pages().get(0).title(), is("Narthecium#Foo")); - assertThat(result.pages().get(0).convertedFrom(), is("NotNarthecium")); - } - - private String queryJson = "{\n" - + " \"converted\": [\n" - + " {\n" - + " \"from\": \"NotNarthecium\",\n" - + " \"to\": \"Narthecium\"\n" - + " }\n" - + " ],\n" - + " \"redirects\": [\n" - + " {\n" - + " \"index\": 1,\n" - + " \"from\": \"Abama\",\n" - + " \"to\": \"Narthecium\",\n" - + " \"tofragment\": \"Foo\"\n" - + " },\n" - + " {\n" - + " \"index\": 2,\n" - + " \"from\": \"Abamax\",\n" - + " \"to\": \"Amitriptyline\"\n" - + " }\n" - + " ],\n" - + " \"pages\":[\n" - + " {\n" - + " \"pageid\": 2060913,\n" - + " \"ns\": 0,\n" - + " \"title\": \"Narthecium\",\n" - + " \"index\": 1,\n" - + " \"terms\": {\n" - + " \"description\": [\n" - + " \"genus of plants\"\n" - + " ]\n" - + " },\n" - + " \"thumbnail\": {\n" - + " \"source\": \"https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Narthecium_ossifragum_01.jpg/240px-Narthecium_ossifragum_01.jpg\",\n" - + " \"width\": 240,\n" - + " \"height\": 320\n" - + " }\n" - + " },\n" - + " {\n" - + " \"pageid\": 583678,\n" - + " \"ns\": 0,\n" - + " \"title\": \"Amitriptyline\",\n" - + " \"index\": 2,\n" - + " \"terms\": {\n" - + " \"description\": [\n" - + " \"chemical compound\",\n" - + " \"chemical compound\"\n" - + " ]\n" - + " },\n" - + " \"thumbnail\": {\n" - + " \"source\": \"https://upload.wikimedia.org/wikipedia/commons/thumb/6/68/Amitriptyline2DACS.svg/318px-Amitriptyline2DACS.svg.png\",\n" - + " \"width\": 318,\n" - + " \"height\": 320\n" - + " }\n" - + " }\n" - + " ]\n" - + " }"; - -} diff --git a/data-client/src/test/java/org/wikipedia/test/ImmediateExecutor.java b/data-client/src/test/java/org/wikipedia/test/ImmediateExecutor.java deleted file mode 100644 index 96560accd8..0000000000 --- a/data-client/src/test/java/org/wikipedia/test/ImmediateExecutor.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.wikipedia.test; - -import androidx.annotation.NonNull; - -import java.util.concurrent.Executor; - -public class ImmediateExecutor implements Executor { - @Override - public void execute(@NonNull Runnable runnable) { - runnable.run(); - } -} diff --git a/data-client/src/test/java/org/wikipedia/test/ImmediateExecutorService.java b/data-client/src/test/java/org/wikipedia/test/ImmediateExecutorService.java deleted file mode 100644 index 28d7325dbb..0000000000 --- a/data-client/src/test/java/org/wikipedia/test/ImmediateExecutorService.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.wikipedia.test; - -import androidx.annotation.NonNull; - -import java.util.List; -import java.util.concurrent.AbstractExecutorService; -import java.util.concurrent.TimeUnit; - -public final class ImmediateExecutorService extends AbstractExecutorService { - @Override public void shutdown() { - throw new UnsupportedOperationException(); - } - - @NonNull @Override public List shutdownNow() { - throw new UnsupportedOperationException(); - } - - @Override public boolean isShutdown() { - throw new UnsupportedOperationException(); - } - - @Override public boolean isTerminated() { - throw new UnsupportedOperationException(); - } - - @Override public boolean awaitTermination(long l, @NonNull TimeUnit timeUnit) - throws InterruptedException { - throw new UnsupportedOperationException(); - } - - @Override public void execute(@NonNull Runnable runnable) { - runnable.run(); - } -} diff --git a/data-client/src/test/java/org/wikipedia/test/MockRetrofitTest.java b/data-client/src/test/java/org/wikipedia/test/MockRetrofitTest.java deleted file mode 100644 index 71c7b87df3..0000000000 --- a/data-client/src/test/java/org/wikipedia/test/MockRetrofitTest.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.wikipedia.test; - -import android.net.Uri; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import org.junit.Before; -import org.wikipedia.dataclient.RestService; -import org.wikipedia.dataclient.Service; -import org.wikipedia.dataclient.WikiSite; -import org.wikipedia.json.NamespaceTypeAdapter; -import org.wikipedia.json.PostProcessingTypeAdapter; -import org.wikipedia.json.UriTypeAdapter; -import org.wikipedia.json.WikiSiteTypeAdapter; -import org.wikipedia.page.Namespace; - -import retrofit2.Retrofit; -import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; -import retrofit2.converter.gson.GsonConverterFactory; - -public abstract class MockRetrofitTest extends MockWebServerTest { - private Service apiService; - private RestService restService; - private WikiSite wikiSite = WikiSite.forLanguageCode("en"); - - protected WikiSite wikiSite() { - return wikiSite; - } - - @Override - @Before - public void setUp() throws Throwable { - super.setUp(); - Retrofit retrofit = new Retrofit.Builder() - .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) - .addConverterFactory(GsonConverterFactory.create(getGson())) - .baseUrl(server().getUrl()) - .build(); - apiService = retrofit.create(Service.class); - restService = retrofit.create(RestService.class); - } - - protected Service getApiService() { - return apiService; - } - - protected RestService getRestService() { - return restService; - } - - private Gson getGson() { - return new GsonBuilder() - .registerTypeHierarchyAdapter(Uri.class, new UriTypeAdapter().nullSafe()) - .registerTypeHierarchyAdapter(Namespace.class, new NamespaceTypeAdapter().nullSafe()) - .registerTypeAdapter(WikiSite.class, new WikiSiteTypeAdapter().nullSafe()) - .registerTypeAdapterFactory(new PostProcessingTypeAdapter()) - .create(); - } -} diff --git a/data-client/src/test/java/org/wikipedia/test/MockWebServerTest.java b/data-client/src/test/java/org/wikipedia/test/MockWebServerTest.java deleted file mode 100644 index 82bc3de98e..0000000000 --- a/data-client/src/test/java/org/wikipedia/test/MockWebServerTest.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.wikipedia.test; - -import androidx.annotation.NonNull; - -import org.junit.After; -import org.junit.Before; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.wikipedia.AppAdapter; -import org.wikipedia.TestAppAdapter; -import org.wikipedia.json.GsonUtil; - -import okhttp3.Dispatcher; -import okhttp3.OkHttpClient; -import okhttp3.mockwebserver.MockResponse; -import retrofit2.Retrofit; -import retrofit2.converter.gson.GsonConverterFactory; - -@RunWith(RobolectricTestRunner.class) -public abstract class MockWebServerTest { - private OkHttpClient okHttpClient; - private final TestWebServer server = new TestWebServer(); - - @Before public void setUp() throws Throwable { - AppAdapter.set(new TestAppAdapter()); - OkHttpClient.Builder builder = AppAdapter.get().getOkHttpClient().newBuilder(); - okHttpClient = builder.dispatcher(new Dispatcher(new ImmediateExecutorService())).build(); - server.setUp(); - } - - @After public void tearDown() throws Throwable { - server.tearDown(); - } - - @NonNull protected TestWebServer server() { - return server; - } - - protected void enqueueFromFile(@NonNull String filename) throws Throwable { - String json = TestFileUtil.readRawFile(filename); - server.enqueue(json); - } - - protected void enqueue404() { - final int code = 404; - server.enqueue(new MockResponse().setResponseCode(code).setBody("Not Found")); - } - - protected void enqueueMalformed() { - server.enqueue("(╯°□°)╯︵ ┻━┻"); - } - - protected void enqueueEmptyJson() { - server.enqueue(new MockResponse().setBody("{}")); - } - - @NonNull protected OkHttpClient okHttpClient() { - return okHttpClient; - } - - @NonNull protected T service(Class clazz) { - return service(clazz, server().getUrl()); - } - - @NonNull protected T service(Class clazz, @NonNull String url) { - return new Retrofit.Builder() - .baseUrl(url) - .callbackExecutor(new ImmediateExecutor()) - .client(okHttpClient) - .addConverterFactory(GsonConverterFactory.create(GsonUtil.getDefaultGson())) - .build() - .create(clazz); - } -} diff --git a/data-client/src/test/java/org/wikipedia/test/TestFileUtil.java b/data-client/src/test/java/org/wikipedia/test/TestFileUtil.java deleted file mode 100644 index 987613ecbc..0000000000 --- a/data-client/src/test/java/org/wikipedia/test/TestFileUtil.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.wikipedia.test; - -import android.annotation.TargetApi; - -import androidx.annotation.NonNull; - -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.StringWriter; -import java.nio.charset.StandardCharsets; - -public final class TestFileUtil { - private static final String RAW_DIR = "src/test/res/raw/"; - - public static File getRawFile(@NonNull String rawFileName) { - return new File(RAW_DIR + rawFileName); - } - - public static String readRawFile(String basename) throws IOException { - return readFile(getRawFile(basename)); - } - - @TargetApi(19) - private static String readFile(File file) throws IOException { - return FileUtils.readFileToString(file, StandardCharsets.UTF_8); - } - - @TargetApi(19) - public static String readStream(InputStream stream) throws IOException { - StringWriter writer = new StringWriter(); - IOUtils.copy(stream, writer, StandardCharsets.UTF_8); - return writer.toString(); - } - - private TestFileUtil() { } -} diff --git a/data-client/src/test/java/org/wikipedia/test/TestParcelUtil.java b/data-client/src/test/java/org/wikipedia/test/TestParcelUtil.java deleted file mode 100644 index a51d48e33f..0000000000 --- a/data-client/src/test/java/org/wikipedia/test/TestParcelUtil.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.wikipedia.test; - -import android.os.Parcel; -import android.os.Parcelable; - -import androidx.annotation.NonNull; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -public final class TestParcelUtil { - /** @param parcelable Must implement hashCode and equals */ - public static void test(Parcelable parcelable) throws Throwable { - Parcel parcel = parcel(parcelable); - - parcel.setDataPosition(0); - Parcelable unparceled = unparcel(parcel, parcelable.getClass()); - - assertThat(parcelable, is(unparceled)); - } - - @NonNull private static Parcelable unparcel(@NonNull Parcel parcel, - Class clazz) throws Throwable { - Parcelable.Creator creator = (Parcelable.Creator) clazz.getField("CREATOR").get(null); - return (Parcelable) creator.createFromParcel(parcel); - } - - @NonNull private static Parcel parcel(@NonNull Parcelable parcelable) { - Parcel parcel = Parcel.obtain(); - parcelable.writeToParcel(parcel, 0); - return parcel; - } - - private TestParcelUtil() { } -} diff --git a/data-client/src/test/java/org/wikipedia/test/TestWebServer.java b/data-client/src/test/java/org/wikipedia/test/TestWebServer.java deleted file mode 100644 index 0a2980dc33..0000000000 --- a/data-client/src/test/java/org/wikipedia/test/TestWebServer.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.wikipedia.test; - -import androidx.annotation.NonNull; - -import org.wikipedia.TestConstants; - -import java.io.IOException; - -import okhttp3.mockwebserver.MockResponse; -import okhttp3.mockwebserver.MockWebServer; -import okhttp3.mockwebserver.RecordedRequest; - -public class TestWebServer { - private final MockWebServer server; - - public TestWebServer() { - server = new MockWebServer(); - } - - public void setUp() throws IOException { - server.start(); - } - - public void tearDown() throws IOException { - server.shutdown(); - } - - public String getUrl() { - return getUrl(""); - } - - public String getUrl(String path) { - return server.url(path).url().toString(); - } - - public int getRequestCount() { - return server.getRequestCount(); - } - - public void enqueue(@NonNull String body) { - enqueue(new MockResponse().setBody(body)); - } - - public void enqueue(MockResponse response) { - server.enqueue(response); - } - - @NonNull public RecordedRequest takeRequest() throws InterruptedException { - RecordedRequest req = server.takeRequest(TestConstants.TIMEOUT_DURATION, - TestConstants.TIMEOUT_UNIT); - if (req == null) { - throw new InterruptedException("Timeout elapsed."); - } - return req; - } -} diff --git a/data-client/src/test/java/org/wikipedia/util/DateUtilTest.java b/data-client/src/test/java/org/wikipedia/util/DateUtilTest.java deleted file mode 100644 index a0098369c0..0000000000 --- a/data-client/src/test/java/org/wikipedia/util/DateUtilTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.wikipedia.util; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; - -@RunWith(RobolectricTestRunner.class) -public class DateUtilTest { - private static final String HTTP_DATE_HEADER = "Thu, 25 May 2017 21:13:47 GMT"; - - @Test - public void testGetHttpLastModifiedDate() throws Throwable { - assertThat(DateUtil.getExtraShortDateString(DateUtil.getHttpLastModifiedDate(HTTP_DATE_HEADER)), is("May 25")); - } - - @Test - public void testIso8601DateFormat() throws Throwable { - assertThat(DateUtil.iso8601DateFormat(DateUtil.getHttpLastModifiedDate(HTTP_DATE_HEADER)), is("2017-05-25T21:13:47Z")); - } - - @Test - public void testIso8601Identity() throws Throwable { - assertThat(DateUtil.iso8601DateFormat(DateUtil.iso8601DateParse("2017-05-25T21:13:47Z")), is("2017-05-25T21:13:47Z")); - } -} diff --git a/data-client/src/test/java/org/wikipedia/util/ImageUriUtilTest.java b/data-client/src/test/java/org/wikipedia/util/ImageUriUtilTest.java deleted file mode 100644 index 00b05e0a3e..0000000000 --- a/data-client/src/test/java/org/wikipedia/util/ImageUriUtilTest.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.wikipedia.util; - -import android.net.Uri; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; - -@RunWith(RobolectricTestRunner.class) -public class ImageUriUtilTest { - private static final int IMAGE_SIZE_1280 = 1280; - private static final int IMAGE_SIZE_200 = 200; - private static final String IMAGE_URL_200 = "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/PaeoniaSuffruticosa7.jpg/200px-PaeoniaSuffruticosa7.jpg"; - private static final String IMAGE_URL_320 = "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/PaeoniaSuffruticosa7.jpg/320px-PaeoniaSuffruticosa7.jpg"; - private static final String IMAGE_URL_1280 = "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/PaeoniaSuffruticosa7.jpg/1280px-PaeoniaSuffruticosa7.jpg"; - private static final String IMAGE_URL_WITH_NUMERIC_NAME_320 = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Paeonia_californica_2320679478.jpg/320px-Paeonia_californica_2320679478.jpg"; - private static final String IMAGE_URL_WITH_NUMERIC_NAME_1280 = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Paeonia_californica_2320679478.jpg/1280px-Paeonia_californica_2320679478.jpg"; - - @Test - public void testUrlForSizeURI() { - Uri uri = Uri.parse(IMAGE_URL_320); - assertThat(ImageUrlUtil.getUrlForSize(uri, IMAGE_SIZE_1280).toString(), is(IMAGE_URL_320)); - } - - @Test - public void testUrlForSizeStringWithLargeSize() { - assertThat(ImageUrlUtil.getUrlForSize(IMAGE_URL_320, IMAGE_SIZE_1280), is(IMAGE_URL_320)); - } - - @Test - public void testUrlForSizeStringWithSmallSize() { - assertThat(ImageUrlUtil.getUrlForSize(IMAGE_URL_320, IMAGE_SIZE_200), is(IMAGE_URL_200)); - } - - @Test - public void testUrlForPreferredSizeWithRegularName() { - assertThat(ImageUrlUtil.getUrlForPreferredSize(IMAGE_URL_320, IMAGE_SIZE_1280), is(IMAGE_URL_1280)); - } - - @Test - public void testUrlForPreferredSizeWithNumericName() { - assertThat(ImageUrlUtil.getUrlForPreferredSize(IMAGE_URL_WITH_NUMERIC_NAME_320, IMAGE_SIZE_1280), is(IMAGE_URL_WITH_NUMERIC_NAME_1280)); - } -} diff --git a/data-client/src/test/java/org/wikipedia/util/StringUtilTest.java b/data-client/src/test/java/org/wikipedia/util/StringUtilTest.java deleted file mode 100644 index a6f1c41a7d..0000000000 --- a/data-client/src/test/java/org/wikipedia/util/StringUtilTest.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.wikipedia.util; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; - -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; - -@RunWith(RobolectricTestRunner.class) -public class StringUtilTest { - @Test - @SuppressWarnings("checkstyle:magicnumber") - public void testGetBase26String() { - assertThat(StringUtil.getBase26String(1), is("A")); - assertThat(StringUtil.getBase26String(26), is("Z")); - assertThat(StringUtil.getBase26String(277), is("JQ")); - assertThat(StringUtil.getBase26String(2777), is("DBU")); - assertThat(StringUtil.getBase26String(27000), is("AMXL")); - assertThat(StringUtil.getBase26String(52), is("AZ")); - assertThat(StringUtil.getBase26String(53), is("BA")); - } - - @Test - public void testListToCsv() { - List stringList = new ArrayList<>(); - stringList.add("one"); - stringList.add("two"); - assertThat(StringUtil.listToCsv(stringList), is("one,two")); - } - - @Test - public void testCsvToList() { - List stringList = new ArrayList<>(); - stringList.add("one"); - stringList.add("two"); - assertThat(StringUtil.csvToList("one,two"), is(stringList)); - } - - @Test - public void testDelimiterStringToList() { - List stringList = new ArrayList<>(); - stringList.add("one"); - stringList.add("two"); - assertThat(StringUtil.delimiterStringToList("one,two", ","), is(stringList)); - } - - @Test - public void testMd5string() { - assertThat(StringUtil.md5string("test"), is("98f6bcd4621d373cade4e832627b4f6")); - } - - @Test - public void testStrip() { - assertThat(StringUtil.strip("test"), is("test")); - assertThat(StringUtil.strip(" test "), is("test")); - } - - @Test - public void testIntToHexStr() { - assertThat(StringUtil.intToHexStr(1), is("x00000001")); - } - - @Test - public void testAddUnderscores() { - assertThat(StringUtil.addUnderscores("te st"), is("te_st")); - } - - @Test - public void testRemoveUnderscores() { - assertThat(StringUtil.removeUnderscores("te_st"), is("te st")); - } - - @Test - public void testHasSectionAnchor() { - assertThat(StringUtil.hasSectionAnchor("te_st"), is(false)); - assertThat(StringUtil.hasSectionAnchor("#te_st"), is(true)); - } - - @Test - public void testRemoveSectionAnchor() { - assertThat(StringUtil.removeSectionAnchor("#te_st"), is("")); - assertThat(StringUtil.removeSectionAnchor("sec#te_st"), is("sec")); - } - - @Test - public void testRemoveHTMLTags() { - assertThat(StringUtil.removeHTMLTags("te_st"), is("te_st")); - } - - @Test - public void testSanitizeText() { - assertThat(StringUtil.sanitizeText(" [1] test"), is("test")); - assertThat(StringUtil.sanitizeText(" [1] (;test )"), is("(test )")); - } -} diff --git a/data-client/src/test/java/org/wikipedia/util/UriUtilTest.java b/data-client/src/test/java/org/wikipedia/util/UriUtilTest.java deleted file mode 100644 index ef9f15936e..0000000000 --- a/data-client/src/test/java/org/wikipedia/util/UriUtilTest.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.wikipedia.util; - -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; - -public class UriUtilTest { - /** - * Inspired by - * curl -s https://en.wikipedia.org/w/api.php?action=query&meta=siteinfo&format=json&siprop=general | jq .query.general.legaltitlechars - */ - private static final String TITLE - = " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z~\\x80-\\xFF+"; - - /** - * Inspired by - *from http://stackoverflow.com/questions/2849756/list-of-valid-characters-for-the-fragment-identifier-in-an-url - */ - private static final String LEGAL_FRAGMENT_CHARS - = "!$&'()*+,;=-._~:@/?abc0123456789%D8%f6"; - - @Test - public void testRemoveFragment() { - assertThat(UriUtil.removeFragment(TITLE + "#" + LEGAL_FRAGMENT_CHARS), is(TITLE)); - } - - @Test - public void testRemoveEmptyFragment() { - assertThat(UriUtil.removeFragment(TITLE + "#"), is(TITLE)); - } - - @Test - public void testRemoveFragmentWithHash() { - assertThat(UriUtil.removeFragment(TITLE + "##"), is(TITLE)); - } -} diff --git a/data-client/src/test/res/raw/announce_2016_11_21.json b/data-client/src/test/res/raw/announce_2016_11_21.json deleted file mode 100644 index 5059e0f3d2..0000000000 --- a/data-client/src/test/res/raw/announce_2016_11_21.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "announce": [ - { - "id": "EN1116SURVEYIOS", - "type": "survey", - "start_time": "2016-11-15T17:11:12Z", - "end_time": "2016-11-30T17:11:12Z", - "platforms": [ - "iOSApp" - ], - "text": "Answer three questions and help us improve Wikipedia.", - "action": { - "title": "Take the survey", - "url": "https://survey.url?survey_id=12345&source=iOS" - }, - "caption_HTML": "

Survey data handled by a third party. Privacy.

", - "countries": [ - "US", - "CA", - "GB" - ] - }, - { - "id": "EN11116SURVEYANDROID", - "type": "survey", - "start_time": "2016-11-15T17:11:12Z", - "end_time": "2016-11-30T17:11:12Z", - "platforms": [ - "AndroidAppV2" - ], - "text": "Answer three questions and help us improve Wikipedia.", - "action": { - "title": "Take the survey", - "url": "https://survey.url?survey_id=12345&source=android" - }, - "caption_HTML": "

Survey data handled by a third party. Privacy.

", - "countries": [ - "US", - "CA", - "GB" - ] - }, - { - "id": "EN11116FUNDRAISINGANDROID", - "type": "fundraising", - "start_time": "2016-11-15T17:11:12Z", - "end_time": "2016-11-30T17:11:12Z", - "platforms": [ - "AndroidAppV2" - ], - "text": "Help Wikipedia by making a donation.", - "image_url" : "https://image.url", - "action": { - "title": "Donate", - "url": "https://donate.url?campaign_id=12345&source=android" - }, - "caption_HTML": "By donating, you are agreeing to our donor privacy policy.", - "countries": [ - "US", - "CA", - "GB" - ] - }, - { - "id": "AnnouncementWithInvalidDates", - "type": "fundraising", - "start_time": null, - "end_time": null, - "platforms": [ - "AndroidAppV2" - ], - "text": "Help Wikipedia by making a donation.", - "action": { - "title": "Donate", - "url": "https://donate.url?campaign_id=12345&source=android" - }, - "countries": [ - "US", - "CA", - "GB" - ] - }, - { - "id": "AnnouncementWithNoDates", - "type": "fundraising", - "platforms": [ - "AndroidAppV2" - ], - "text": "Help Wikipedia by making a donation.", - "action": { - "title": "Donate", - "url": "https://donate.url?campaign_id=12345&source=android" - }, - "countries": [ - "US", - "CA", - "GB" - ] - }, - { - "id": "AnnouncementWithNoCountries", - "type": "fundraising", - "start_time": "2016-11-15T17:11:12Z", - "end_time": "2016-11-30T17:11:12Z", - "platforms": [ - "AndroidAppV2" - ], - "text": "Help Wikipedia by making a donation.", - "action": { - "title": "Donate", - "url": "https://donate.url?campaign_id=12345&source=android" - } - }, - { - "id": "AnnouncementForBetaWithVersions", - "type": "fundraising", - "start_time": "2016-11-15T17:11:12Z", - "end_time": "2016-11-30T17:11:12Z", - "platforms": [ - "AndroidAppV2" - ], - "text": "Help Wikipedia by making a donation.", - "image_url" : "https://image.url", - "action": { - "title": "Donate", - "url": "https://donate.url?campaign_id=12345&source=android" - }, - "caption_HTML": "By donating, you are agreeing to our donor privacy policy.", - "countries": [ - "US", - "CA", - "GB" - ], - "beta": true, - "min_version": 200, - "max_version": 10000 - }, - { - "id": "AnnouncementForOldVersion", - "type": "fundraising", - "start_time": "2016-11-15T17:11:12Z", - "end_time": "2016-11-30T17:11:12Z", - "platforms": [ - "AndroidAppV2" - ], - "text": "Help Wikipedia by making a donation.", - "image_url" : "https://image.url", - "action": { - "title": "Donate", - "url": "https://donate.url?campaign_id=12345&source=android" - }, - "caption_HTML": "By donating, you are agreeing to our donor privacy policy.", - "countries": [ - "US", - "CA", - "GB" - ], - "max_version": 200 - } - ] -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/api_error.json b/data-client/src/test/res/raw/api_error.json deleted file mode 100644 index 8bc56bb7ce..0000000000 --- a/data-client/src/test/res/raw/api_error.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "errors": [ - { - "code": "unknown_action", - "text": "Unrecognized value for parameter \"action\": oscillate." - } - ], - "docref": "See https://en.wikipedia.org/w/api.php for API usage.", - "servedby": "mw1286" -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/api_error_assert_user_failed.json b/data-client/src/test/res/raw/api_error_assert_user_failed.json deleted file mode 100644 index a5233585ca..0000000000 --- a/data-client/src/test/res/raw/api_error_assert_user_failed.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "errors": [ - { - "code": "assertuserfailed", - "text": "Assertion that the user is logged in failed." - } - ], - "docref": "See https://en.wikipedia.org/w/api.php for API usage.", - "servedby": "mw1225" -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/captcha.json b/data-client/src/test/res/raw/captcha.json deleted file mode 100644 index b42ed956ae..0000000000 --- a/data-client/src/test/res/raw/captcha.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "fancycaptchareload": { - "index": "1572672319" - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/create_account_failure.json b/data-client/src/test/res/raw/create_account_failure.json deleted file mode 100644 index 9a49ad44d0..0000000000 --- a/data-client/src/test/res/raw/create_account_failure.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "createaccount": { - "status": "FAIL", - "message": "Username entered already in use.\nPlease choose a different name." - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/create_account_info.json b/data-client/src/test/res/raw/create_account_info.json deleted file mode 100644 index bef5bd9388..0000000000 --- a/data-client/src/test/res/raw/create_account_info.json +++ /dev/null @@ -1,132 +0,0 @@ -{ - "batchcomplete": true, - "query": { - "authmanagerinfo": { - "canauthenticatenow": true, - "cancreateaccounts": true, - "canlinkaccounts": false, - "haspreservedstate": false, - "hasprimarypreservedstate": false, - "preservedusername": "", - "requests": [ - { - "id": "CaptchaAuthenticationRequest", - "metadata": { - "type": "image", - "mime": "image/png" - }, - "required": "required", - "provider": "CaptchaAuthenticationRequest", - "account": "CaptchaAuthenticationRequest", - "fields": { - "captchaId": { - "type": "hidden", - "value": "272460457", - "label": "CAPTCHA ID", - "help": "This value should be sent back unchanged.", - "optional": false, - "sensitive": false - }, - "captchaInfo": { - "type": "null", - "value": "/w/index.php?title=Special:Captcha/image&wpCaptchaId=272460457", - "label": "To edit this page, please enter the words that appear below in the box ([[Special:Captcha/help|more info]]):", - "help": "Description of the CAPTCHA.", - "optional": false, - "sensitive": false - }, - "captchaWord": { - "type": "string", - "label": "CAPTCHA", - "help": "Solution of the CAPTCHA.", - "optional": false, - "sensitive": false - } - } - }, - { - "id": "MediaWiki\\Auth\\PasswordAuthenticationRequest", - "metadata": {}, - "required": "primary-required", - "provider": "Password-based authentication", - "account": "", - "fields": { - "username": { - "type": "string", - "label": "Username", - "help": "Username for authentication.", - "optional": false, - "sensitive": false - }, - "password": { - "type": "password", - "label": "Password", - "help": "Password for authentication.", - "optional": false, - "sensitive": true - }, - "retype": { - "type": "password", - "label": "Retype password:", - "help": "Password again to confirm.", - "optional": false, - "sensitive": true - } - } - }, - { - "id": "CampaignsAuthenticationRequest", - "metadata": {}, - "required": "optional", - "provider": "CampaignsAuthenticationRequest", - "account": "CampaignsAuthenticationRequest", - "fields": { - "campaign": { - "type": "hidden", - "value": "", - "label": "Campaign", - "help": "Identifies the campaign leading to an account creation.", - "optional": true, - "sensitive": false - } - } - }, - { - "id": "MediaWiki\\Auth\\UsernameAuthenticationRequest", - "metadata": {}, - "required": "required", - "provider": "MediaWiki\\Auth\\UsernameAuthenticationRequest", - "account": "MediaWiki\\Auth\\UsernameAuthenticationRequest", - "fields": { - "username": { - "type": "string", - "label": "Username", - "help": "Username for authentication.", - "optional": false, - "sensitive": false - } - } - }, - { - "id": "MediaWiki\\Auth\\UserDataAuthenticationRequest", - "metadata": {}, - "required": "required", - "provider": "MediaWiki\\Auth\\UserDataAuthenticationRequest", - "account": "MediaWiki\\Auth\\UserDataAuthenticationRequest", - "fields": { - "email": { - "type": "string", - "label": "Email", - "help": "Email address", - "optional": true, - "sensitive": false - } - } - } - ] - }, - "tokens": { - "createaccounttoken": "5d78e6a823be0901eeae9f6486f752da59123760+\\" - } - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/create_account_success.json b/data-client/src/test/res/raw/create_account_success.json deleted file mode 100644 index cc831c236a..0000000000 --- a/data-client/src/test/res/raw/create_account_success.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "createaccount": { - "status": "PASS", - "username": "Farb0nucci" - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/csrf_token.json b/data-client/src/test/res/raw/csrf_token.json deleted file mode 100644 index 2b27097e23..0000000000 --- a/data-client/src/test/res/raw/csrf_token.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "batchcomplete": true, - "query": { - "tokens": { - "csrftoken": "b6f7bd58c013ab30735cb19ecc0aa08258122cba+\\" - } - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/description_edit.json b/data-client/src/test/res/raw/description_edit.json deleted file mode 100644 index 010d9a7b31..0000000000 --- a/data-client/src/test/res/raw/description_edit.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "entity": { - "descriptions": { - "en": { - "language": "en", - "value": "some new description" - } - }, - "id": "Q123", - "type": "item", - "lastrevid": 987654321 - }, - "success": 1 -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/description_edit_abusefilter_disallowed.json b/data-client/src/test/res/raw/description_edit_abusefilter_disallowed.json deleted file mode 100644 index 9aa33a25f6..0000000000 --- a/data-client/src/test/res/raw/description_edit_abusefilter_disallowed.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "errors": [ - { - "code": "failed-save", - "text": "This action has been automatically identified as harmful, and therefore disallowed.\nIf you believe your action was constructive, please inform an administrator of what you were trying to do.", - "data": { - "messages": [ - { - "name": "abusefilter-disallowed", - "parameters": [ - "global-123" - ], - "html": "This action has been automatically identified as harmful, and therefore disallowed.\nIf you believe your action was constructive, please inform an administrator of what you were trying to do." - } - ] - }, - "module": "main" - } - ], - "docref": "See https://www.wikidata.org/w/api.php for API usage", - "servedby": "mw1228" -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/description_edit_abusefilter_warning.json b/data-client/src/test/res/raw/description_edit_abusefilter_warning.json deleted file mode 100644 index bfc5526e0e..0000000000 --- a/data-client/src/test/res/raw/description_edit_abusefilter_warning.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "errors": [ - { - "code": "failed-save", - "text": "'''Warning:''' This action has been automatically identified as harmful.\nUnconstructive edits will be quickly reverted,\nand egregious or repeated unconstructive editing will result in your account or IP address being blocked.\nIf you believe this action to be constructive, you may submit it again to confirm it.\nA brief description of the abuse rule which your action matched is: Possible vandalism by adding badwords or similar trolling words", - "data": { - "messages": [ - { - "name": "abusefilter-warning", - "parameters": [ - "Possible vandalism by adding badwords or similar trolling words", - 11 - ], - "html": "Warning: This action has been automatically identified as harmful.\nUnconstructive edits will be quickly reverted,\nand egregious or repeated unconstructive editing will result in your account or IP address being blocked.\nIf you believe this action to be constructive, you may submit it again to confirm it.\nA brief description of the abuse rule which your action matched is: Possible vandalism by adding badwords or similar trolling words" - } - ] - }, - "module": "main" - } - ], - "docref": "See https://www.wikidata.org/w/api.php for API usage", - "servedby": "mw1228" -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/description_edit_unknown_site.json b/data-client/src/test/res/raw/description_edit_unknown_site.json deleted file mode 100644 index 718f81b7e7..0000000000 --- a/data-client/src/test/res/raw/description_edit_unknown_site.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "errors": [ - { - "code": "unknown_site", - "text": "Unrecognized value for parameter 'site': testwiki" - } - ], - "docref": "See https://www.wikidata.org/w/api.php for API usage", - "servedby": "mw1196" -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/edit_abuse_filter_result.json b/data-client/src/test/res/raw/edit_abuse_filter_result.json deleted file mode 100644 index 807e2dce29..0000000000 --- a/data-client/src/test/res/raw/edit_abuse_filter_result.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "edit": { - "code": "abusefilter-disallowed", - "message": { - "key": "abusefilter-warning/userpage_edit", - "params": [ - "Editing user page by anonymous user", - 94 - ] - }, - "abusefilter": { - "id": 94, - "description": "Editing user page by anonymous user", - "actions": [ - "tag", - "warn" - ] - }, - "info": "Hit AbuseFilter: Editing user page by anonymous user", - "warning": "Warning: This action has been automatically identified as harmful.\nUnconstructive edits will be quickly reverted,\nand egregious or repeated unconstructive editing will result in your account or IP address being blocked.\nIf you believe this action to be constructive, you may submit it again to confirm it.\nA brief description of the abuse rule which your action matched is: Editing user page by anonymous user", - "result": "Failure" - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/edit_error_bad_token.json b/data-client/src/test/res/raw/edit_error_bad_token.json deleted file mode 100644 index 9b79d895f0..0000000000 --- a/data-client/src/test/res/raw/edit_error_bad_token.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "errors": [ - { - "code": "badtoken", - "text": "Invalid token" - } - ], - "docref": "See https://en.wikipedia.org/w/api.php for API usage", - "servedby": "mw1222" -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/edit_preview.json b/data-client/src/test/res/raw/edit_preview.json deleted file mode 100644 index 7ccc8da8e6..0000000000 --- a/data-client/src/test/res/raw/edit_preview.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parse": { - "title": "User:Mhollo/sandbox", - "pageid": 46498401, - "text": "

\\o/\\n\\ntest12\\n\\n3

\n\n\n\n\n
" - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/edit_result_captcha.json b/data-client/src/test/res/raw/edit_result_captcha.json deleted file mode 100644 index 2ee004374e..0000000000 --- a/data-client/src/test/res/raw/edit_result_captcha.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "edit": { - "captcha": { - "type": "image", - "mime": "image/png", - "id": "547159230", - "url": "/w/index.php?title=Special:Captcha/image&wpCaptchaId=547159230" - }, - "result": "Failure" - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/edit_result_spam_blacklist.json b/data-client/src/test/res/raw/edit_result_spam_blacklist.json deleted file mode 100644 index f477fa50c4..0000000000 --- a/data-client/src/test/res/raw/edit_result_spam_blacklist.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "edit": { - "spamblacklist": "s-e-x", - "result": "Failure" - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/edit_result_success.json b/data-client/src/test/res/raw/edit_result_success.json deleted file mode 100644 index 2288416613..0000000000 --- a/data-client/src/test/res/raw/edit_result_success.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "edit": { - "result": "Success", - "pageid": 46498401, - "title": "User:Mhollo/sandbox", - "contentmodel": "wikitext", - "oldrevid": 760523240, - "newrevid": 761350490, - "newtimestamp": "2017-01-22T13:43:39Z" - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/edit_user_not_logged_in.json b/data-client/src/test/res/raw/edit_user_not_logged_in.json deleted file mode 100644 index 6b63b552af..0000000000 --- a/data-client/src/test/res/raw/edit_user_not_logged_in.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "errors": [ - { - "code": "assertuserfailed", - "text": "Assertion that the user is logged in failed" - } - ], - "docref": "See https://en.wikipedia.org/w/api.php for API usage", - "servedby": "mw1221" -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/featured_2016_11_07.json b/data-client/src/test/res/raw/featured_2016_11_07.json deleted file mode 100644 index ad1bf48cc0..0000000000 --- a/data-client/src/test/res/raw/featured_2016_11_07.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "type": "standard", - "title": "From The Doctor to my son Thomas", - "displaytitle": "From The Doctor to my son Thomas", - "namespace": { - "id": 0, - "text": "" - }, - "titles": { - "canonical": "From_The_Doctor_to_my_son_Thomas", - "normalized": "From The Doctor to my son Thomas", - "display": "From The Doctor to my son Thomas" - }, - "pageid": 44359985, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/b/b0/From_The_Doctor_to_my_son_Thomas.jpg/320px-From_The_Doctor_to_my_son_Thomas.jpg", - "width": 320, - "height": 180 - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/b/b0/From_The_Doctor_to_my_son_Thomas.jpg", - "width": 421, - "height": 237 - }, - "lang": "en", - "dir": "ltr", - "revision": "834131708", - "tid": "2f3a3ca2-37b4-11e8-872f-6606414e07f0", - "timestamp": "2018-04-04T02:59:21Z", - "description": "viral video recorded by actor Peter Capaldi", - "extract": "\"From The Doctor to my son Thomas\" is a viral video recorded by actor Peter Capaldi and sent to Thomas Goodall, an autistic nine-year-old boy in England, to console the child over grief from the death of Goodall's grandmother. Capaldi filmed the 42-second video in character as the 12th incarnation of The Doctor in the BBC science-fiction series Doctor Who. Capaldi's message had a positive effect on Thomas; his father said that the boy smiled for the first time since learning of his grandmother's death, and gained the courage to go to her funeral.", - "extract_html": "

"From The Doctor to my son Thomas" is a viral video recorded by actor Peter Capaldi and sent to Thomas Goodall, an autistic nine-year-old boy in England, to console the child over grief from the death of Goodall's grandmother. Capaldi filmed the 42-second video in character as the 12th incarnation of The Doctor in the BBC science-fiction series Doctor Who. Capaldi's message had a positive effect on Thomas; his father said that the boy smiled for the first time since learning of his grandmother's death, and gained the courage to go to her funeral.

", - "content_urls": { - "desktop": { - "page": "https://en.wikipedia.org/wiki/From_The_Doctor_to_my_son_Thomas", - "revisions": "https://en.wikipedia.org/wiki/From_The_Doctor_to_my_son_Thomas?action=history", - "edit": "https://en.wikipedia.org/wiki/From_The_Doctor_to_my_son_Thomas?action=edit", - "talk": "https://en.wikipedia.org/wiki/Talk:From_The_Doctor_to_my_son_Thomas" - }, - "mobile": { - "page": "https://en.m.wikipedia.org/wiki/From_The_Doctor_to_my_son_Thomas", - "revisions": "https://en.m.wikipedia.org/wiki/Special:History/From_The_Doctor_to_my_son_Thomas", - "edit": "https://en.m.wikipedia.org/wiki/From_The_Doctor_to_my_son_Thomas?action=edit", - "talk": "https://en.m.wikipedia.org/wiki/Talk:From_The_Doctor_to_my_son_Thomas" - } - }, - "api_urls": { - "summary": "https://en.wikipedia.org/api/rest_v1/page/summary/From_The_Doctor_to_my_son_Thomas", - "edit_html": "https://en.wikipedia.org/api/rest_v1/page/html/From_The_Doctor_to_my_son_Thomas", - "talk_page_html": "https://en.wikipedia.org/api/rest_v1/page/html/Talk:From_The_Doctor_to_my_son_Thomas" - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/full_text_search_results.json b/data-client/src/test/res/raw/full_text_search_results.json deleted file mode 100644 index 7206b11735..0000000000 --- a/data-client/src/test/res/raw/full_text_search_results.json +++ /dev/null @@ -1,277 +0,0 @@ -{ - "batchcomplete": true, - "continue": { - "gsroffset": 20, - "continue": "gsroffset||" - }, - "query": { - "pages": [ - { - "pageid": 45579, - "ns": 0, - "title": "Queens", - "index": 3, - "terms": { - "description": [ - "borough of New York City, New York, United States", - "borough of New York City, New York, United States" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Queens_Montage_2012_1.png/285px-Queens_Montage_2012_1.png", - "width": 285, - "height": 320 - } - }, - { - "pageid": 413863, - "ns": 0, - "title": "A (New York City Subway service)", - "index": 10, - "terms": { - "description": [ - "New York City Subway service" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/95/Northbound_R46_A_train_at_88_St.jpg/320px-Northbound_R46_A_train_at_88_St.jpg", - "width": 320, - "height": 239 - } - }, - { - "pageid": 426995, - "ns": 0, - "title": "E (New York City Subway service)", - "index": 7, - "terms": { - "description": [ - "New York City Subway service" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/R160_E_Train_at_Jamaica_Center.jpg/320px-R160_E_Train_at_Jamaica_Center.jpg", - "width": 320, - "height": 213 - } - }, - { - "pageid": 455504, - "ns": 0, - "title": "Independent Subway System", - "index": 12, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c7/BMT_100_Nostalgia_Ride_%2819329819685%29.jpg/320px-BMT_100_Nostalgia_Ride_%2819329819685%29.jpg", - "width": 320, - "height": 214 - } - }, - { - "pageid": 587752, - "ns": 0, - "title": "Briarwood, Queens", - "index": 6, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/Normal_Rd_160_St_Briarwood_jeh.jpg/320px-Normal_Rd_160_St_Briarwood_jeh.jpg", - "width": 320, - "height": 256 - } - }, - { - "pageid": 1256263, - "ns": 0, - "title": "Queens Boulevard", - "index": 2 - }, - { - "pageid": 1440202, - "ns": 0, - "title": "New York City Subway nomenclature", - "index": 14, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/InsideStation.JPG/320px-InsideStation.JPG", - "width": 320, - "height": 241 - } - }, - { - "pageid": 1458237, - "ns": 0, - "title": "IND Queens Boulevard Line", - "index": 1 - }, - { - "pageid": 1493748, - "ns": 0, - "title": "IND Crosstown Line", - "index": 9, - "terms": { - "description": [ - "railway line" - ] - } - }, - { - "pageid": 1495545, - "ns": 0, - "title": "63rd Street Lines", - "index": 17, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/NYCS-line-trans-63rd.svg/320px-NYCS-line-trans-63rd.svg.png", - "width": 320, - "height": 170 - } - }, - { - "pageid": 1510026, - "ns": 0, - "title": "F (New York City Subway service)", - "index": 19, - "terms": { - "description": [ - "New York City Subway service" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/71/MTA_NYC_Subway_F_train_arriving_at_Avenue_P.JPG/320px-MTA_NYC_Subway_F_train_arriving_at_Avenue_P.JPG", - "width": 320, - "height": 240 - } - }, - { - "pageid": 1619462, - "ns": 0, - "title": "Springfield Gardens, Queens", - "index": 15, - "terms": { - "description": [ - "neighborhood" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/NYTel_140_Av_183_St_jeh.JPG/320px-NYTel_140_Av_183_St_jeh.JPG", - "width": 320, - "height": 278 - } - }, - { - "pageid": 2243580, - "ns": 0, - "title": "Forest Hills–71st Avenue (IND Queens Boulevard Line)", - "index": 5, - "terms": { - "description": [ - "New York City IND Queens Boulevard Line subway station" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/Forest_Hills_-_Manhattan_Bound_Platform.jpg/320px-Forest_Hills_-_Manhattan_Bound_Platform.jpg", - "width": 320, - "height": 240 - } - }, - { - "pageid": 4573843, - "ns": 0, - "title": "Kew Gardens–Union Turnpike (IND Queens Boulevard Line)", - "index": 4, - "terms": { - "description": [ - "New York City IND Queens Boulevard Line subway station" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/04/Kew_Gardens_-_Jamaica_Bound_Platform.jpg/320px-Kew_Gardens_-_Jamaica_Bound_Platform.jpg", - "width": 320, - "height": 240 - } - }, - { - "pageid": 5641637, - "ns": 0, - "title": "Jackson Heights–Roosevelt Avenue/74th Street (New York City Subway)", - "index": 20, - "terms": { - "description": [ - "New York City subway station" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Jackson_Heights-Roosevelt_Avenue_Terminal.JPG/320px-Jackson_Heights-Roosevelt_Avenue_Terminal.JPG", - "width": 320, - "height": 240 - } - }, - { - "pageid": 5751551, - "ns": 0, - "title": "67th Avenue (IND Queens Boulevard Line)", - "index": 16, - "terms": { - "description": [ - "New York City IND Queens Boulevard Line subway station" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/67th_Avenue_-_Manhattan_Bound_Platform.jpg/320px-67th_Avenue_-_Manhattan_Bound_Platform.jpg", - "width": 320, - "height": 240 - } - }, - { - "pageid": 5751848, - "ns": 0, - "title": "Woodhaven Boulevard (IND Queens Boulevard Line)", - "index": 8, - "terms": { - "description": [ - "New York City IND Queens Boulevard Line subway station" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Woodhaven_Boulevard_-_Forest_Hills_Bound_Platform.jpg/320px-Woodhaven_Boulevard_-_Forest_Hills_Bound_Platform.jpg", - "width": 320, - "height": 240 - } - }, - { - "pageid": 6757992, - "ns": 0, - "title": "Woodhaven and Cross Bay Boulevards", - "index": 11, - "terms": { - "description": [ - "highway in New York" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/68/Woodhaven_Boulevard.jpg/320px-Woodhaven_Boulevard.jpg", - "width": 320, - "height": 240 - } - }, - { - "pageid": 7929179, - "ns": 0, - "title": "Union Turnpike (New York)", - "index": 18 - }, - { - "pageid": 24884614, - "ns": 0, - "title": "List of New York City Subway stations in Queens", - "index": 13, - "terms": { - "description": [ - "Wikimedia list article" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/04/NYC_subway-4D.svg/296px-NYC_subway-4D.svg.png", - "width": 296, - "height": 320 - } - } - ] - } -} diff --git a/data-client/src/test/res/raw/full_text_search_results_empty.json b/data-client/src/test/res/raw/full_text_search_results_empty.json deleted file mode 100644 index f6b209a36d..0000000000 --- a/data-client/src/test/res/raw/full_text_search_results_empty.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "batchcomplete": true, - "warnings": { - "search": { - "warnings": "No valid titles provided to 'morelike'." - } - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/gallery.json b/data-client/src/test/res/raw/gallery.json deleted file mode 100644 index 5efea5880e..0000000000 --- a/data-client/src/test/res/raw/gallery.json +++ /dev/null @@ -1,211 +0,0 @@ -{ - "revision": "854945118", - "tid": "048d1a3a-a007-11e8-a249-b9bc3181aba8", - "items": [{ - "section_id": 0, - "type": "image", - "showInGallery": true, - "titles": { - "canonical": "File:Flag_of_the_United_States.svg", - "normalized": "File:Flag of the United States.svg", - "display": "File:Flag of the United States.svg" - }, - "thumbnail": { - "source": "http://upload.wikimedia.org/wikipedia/en/thumb/a/a4/Flag_of_the_United_States.svg/320px-Flag_of_the_United_States.svg.png", - "width": 320, - "height": 168, - "mime": "image/png" - }, - "original": { - "source": "http://upload.wikimedia.org/wikipedia/en/a/a4/Flag_of_the_United_States.svg", - "mime": "image/svg+xml" - }, - "file_page": "http://en.wikipedia.org/wiki/File:Flag_of_the_United_States.svg", - "license": { - "type": "PD", - "code": "pd" - } - }, { - "section_id": 1, - "type": "image", - "showInGallery": true, - "titles": { - "canonical": "File:Great_Seal_of_the_United_States_(obverse).svg", - "normalized": "File:Great Seal of the United States (obverse).svg", - "display": "File:Great Seal of the United States (obverse).svg" - }, - "thumbnail": { - "source": "http://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Great_Seal_of_the_United_States_%28obverse%29.svg/320px-Great_Seal_of_the_United_States_%28obverse%29.svg.png", - "width": 320, - "height": 320, - "mime": "image/png" - }, - "original": { - "source": "http://upload.wikimedia.org/wikipedia/commons/5/5c/Great_Seal_of_the_United_States_%28obverse%29.svg", - "mime": "image/svg+xml" - }, - "file_page": "https://commons.wikimedia.org/wiki/File:Great_Seal_of_the_United_States_(obverse).svg", - "artist": { - "html": "U.S. Government", - "name": "U.S. Government" - }, - "credit": "Extracted from PDF version of Our Flag, available here (direct PDF URL here.)", - "license": { - "type": "Public domain", - "code": "pd" - }, - "description": { - "html": "Obverse of the Great Seal of the United States.", - "text": "Obverse of the Great Seal of the United States.", - "lang": "en" - } - }, { - "section_id": 2, - "type": "audio", - "audio_type": "generic", - "showInGallery": true, - "titles": { - "canonical": "File:Star_Spangled_Banner_instrumental.ogg", - "normalized": "File:Star Spangled Banner instrumental.ogg", - "display": "File:Star Spangled Banner instrumental.ogg" - }, - "thumbnail": { - "source": "http://en.wikipedia.org/w/resources/assets/file-type-icons/fileicon-ogg.png", - "width": 320, - "height": 320, - "mime": "image/jpeg" - }, - "original": { - "source": "http://upload.wikimedia.org/wikipedia/commons/6/65/Star_Spangled_Banner_instrumental.ogg", - "mime": "application/ogg" - }, - "file_page": "https://commons.wikimedia.org/wiki/File:Star_Spangled_Banner_instrumental.ogg", - "duration": 78.262857142857, - "credit": "

https://web.archive.org/web/20041019005037/http://www.navyband.navy.mil/anthems/ANTHEMS/United%20States.mp3\n

\n", - "license": { - "type": "Public domain", - "code": "pd" - }, - "description": { - "html": "The national anthem of the United States of America, originally, music of The Anacreontic Song, performed by the U.S. Navy Band.", - "text": "The national anthem of the United States of America, originally, music of The Anacreontic Song, performed by the U.S. Navy Band.", - "lang": "en" - } - }, { - "section_id": 3, - "type": "audio", - "audio_type": "generic", - "showInGallery": true, - "titles": { - "canonical": "File:March,_Colonel_John_R._Bourgeois,_Director_·_John_Philip_Sousa_·_United_States_Marine_Band.ogg", - "normalized": "File:March, \"The Stars and Stripes Forever\" · Colonel John R. Bourgeois, Director · John Philip Sousa · United States Marine Band.ogg", - "display": "File:March, \"The Stars and Stripes Forever\" · Colonel John R. Bourgeois, Director · John Philip Sousa · United States Marine Band.ogg" - }, - "thumbnail": { - "source": "http://en.wikipedia.org/w/resources/assets/file-type-icons/fileicon-ogg.png", - "width": 320, - "height": 320, - "mime": "image/jpeg" - }, - "original": { - "source": "http://upload.wikimedia.org/wikipedia/commons/7/7e/March%2C_%22The_Stars_and_Stripes_Forever%22_%C2%B7_Colonel_John_R._Bourgeois%2C_Director_%C2%B7_John_Philip_Sousa_%C2%B7_United_States_Marine_Band.ogg", - "mime": "application/ogg" - }, - "file_page": "https://commons.wikimedia.org/wiki/File:March,_%22The_Stars_and_Stripes_Forever%22_%C2%B7_Colonel_John_R._Bourgeois,_Director_%C2%B7_John_Philip_Sousa_%C2%B7_United_States_Marine_Band.ogg", - "duration": 226.51766666667, - "credit": "Album: \"On Tour\"", - "license": { - "type": "Public domain", - "code": "pd" - }, - "description": { - "html": "John Philip Sousa's march \"The Stars and Stripes Forever\", performed by the U.S. Marine Band.", - "text": "John Philip Sousa's march \"The Stars and Stripes Forever\", performed by the U.S. Marine Band.", - "lang": "en" - } - }, { - "section_id": 4, - "type": "video", - "caption": { - "html": "In a video, team members share the challenges of Mars Science Laboratory's (Curiosity) final minutes to landing on the surface of Mars.", - "text": "In a video, team members share the challenges of Mars Science Laboratory's (Curiosity) final minutes to landing on the surface of Mars." - }, - "sources": [{ - "url": "https://upload.wikimedia.org/wikipedia/commons/9/96/Curiosity%27s_Seven_Minutes_of_Terror.ogv", - "mime": "video/ogg", - "codecs": ["theora", "vorbis"], - "name": "Original Ogg file, 1,280 × 720 (2.39 Mbps)", - "short_name": "Ogg source", - "width": "1280", - "height": "720" - }, { - "url": "https://upload.wikimedia.org/wikipedia/commons/transcoded/9/96/Curiosity%27s_Seven_Minutes_of_Terror.ogv/Curiosity%27s_Seven_Minutes_of_Terror.ogv.160p.webm", - "mime": "video/webm", - "codecs": ["vp8", "vorbis"], - "name": "Low bandwidth WebM (160P)", - "short_name": "WebM 160P", - "width": "284", - "height": "160" - }, { - "url": "https://upload.wikimedia.org/wikipedia/commons/transcoded/9/96/Curiosity%27s_Seven_Minutes_of_Terror.ogv/Curiosity%27s_Seven_Minutes_of_Terror.ogv.240p.webm", - "mime": "video/webm", - "codecs": ["vp8", "vorbis"], - "name": "Small WebM (240P)", - "short_name": "WebM 240P", - "width": "426", - "height": "240" - }, { - "url": "https://upload.wikimedia.org/wikipedia/commons/transcoded/9/96/Curiosity%27s_Seven_Minutes_of_Terror.ogv/Curiosity%27s_Seven_Minutes_of_Terror.ogv.360p.webm", - "mime": "video/webm", - "codecs": ["vp8", "vorbis"], - "name": "WebM (360P)", - "short_name": "WebM 360P", - "width": "640", - "height": "360" - }, { - "url": "https://upload.wikimedia.org/wikipedia/commons/transcoded/9/96/Curiosity%27s_Seven_Minutes_of_Terror.ogv/Curiosity%27s_Seven_Minutes_of_Terror.ogv.480p.webm", - "mime": "video/webm", - "codecs": ["vp8", "vorbis"], - "name": "SD WebM (480P)", - "short_name": "WebM 480P", - "width": "854", - "height": "480" - }, { - "url": "https://upload.wikimedia.org/wikipedia/commons/transcoded/9/96/Curiosity%27s_Seven_Minutes_of_Terror.ogv/Curiosity%27s_Seven_Minutes_of_Terror.ogv.720p.webm", - "mime": "video/webm", - "codecs": ["vp8", "vorbis"], - "name": "HD WebM (720P)", - "short_name": "WebM 720P", - "width": "1280", - "height": "720" - }], - "showInGallery": true, - "titles": { - "canonical": "File:Curiosity's_Seven_Minutes_of_Terror.ogv", - "normalized": "File:Curiosity's Seven Minutes of Terror.ogv", - "display": "File:Curiosity's Seven Minutes of Terror.ogv" - }, - "thumbnail": { - "source": "http://upload.wikimedia.org/wikipedia/commons/thumb/9/96/Curiosity%27s_Seven_Minutes_of_Terror.ogv/320px--Curiosity%27s_Seven_Minutes_of_Terror.ogv.jpg", - "width": 320, - "height": 180, - "mime": "image/jpeg" - }, - "file_page": "https://commons.wikimedia.org/wiki/File:Curiosity%27s_Seven_Minutes_of_Terror.ogv", - "duration": 306.47283333333, - "artist": { - "html": "NASA", - "name": "NASA" - }, - "credit": "http://www.jpl.nasa.gov/video/details.php?id=1090", - "license": { - "type": "Public domain", - "code": "pd" - }, - "description": { - "html": "Team members share the challenges of Mars Science Laboratory's (Curiosity) final minutes to landing on the surface of Mars.", - "text": "Team members share the challenges of Mars Science Laboratory's (Curiosity) final minutes to landing on the surface of Mars.", - "lang": "en" - } - }] -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/image_license.json b/data-client/src/test/res/raw/image_license.json deleted file mode 100644 index 79141bd81c..0000000000 --- a/data-client/src/test/res/raw/image_license.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "batchcomplete": true, - "query": { - "normalized": [ - { - "fromencoded": false, - "from": "File:Mark_Selby_at_Snooker_German_Masters_(DerHexer)_2015-02-04_02.jpg", - "to": "File:Mark Selby at Snooker German Masters (DerHexer) 2015-02-04 02.jpg" - } - ], - "pages": [ - { - "ns": 6, - "title": "File:Mark Selby at Snooker German Masters (DerHexer) 2015-02-04 02.jpg", - "missing": true, - "known": true, - "imagerepository": "shared", - "imageinfo": [ - { - "extmetadata": { - "DateTime": { - "value": "2015-02-11 20:27:39", - "source": "mediawiki-metadata", - "hidden": "" - }, - "ObjectName": { - "value": "Mark Selby at Snooker German Masters (DerHexer) 2015-02-04 02", - "source": "mediawiki-metadata", - "hidden": "" - }, - "CommonsMetadataExtension": { - "value": 1.2, - "source": "extension", - "hidden": "" - }, - "Categories": { - "value": "Files by DerHexer|German Masters 2015-Day 1, Session 2|Images with extracted images|Mark Selby|Personality rights warning|Self-published work|Uploaded with VicuñaUploader", - "source": "commons-categories", - "hidden": "" - }, - "Assessments": { - "value": "", - "source": "commons-categories", - "hidden": "" - }, - "ImageDescription": { - "value": "Picture taken in Berlin during the Snooker German Masters in 2015. Mark Selby.", - "source": "commons-desc-page" - }, - "DateTimeOriginal": { - "value": "2015-02-04 15:19", - "source": "commons-desc-page" - }, - "Credit": { - "value": "Own work", - "source": "commons-desc-page", - "hidden": "" - }, - "Artist": { - "value": "DerHexer", - "source": "commons-desc-page" - }, - "LicenseShortName": { - "value": "CC BY-SA 4.0", - "source": "commons-desc-page", - "hidden": "" - }, - "UsageTerms": { - "value": "Creative Commons Attribution-Share Alike 4.0", - "source": "commons-desc-page", - "hidden": "" - }, - "AttributionRequired": { - "value": "true", - "source": "commons-desc-page", - "hidden": "" - }, - "Attribution": { - "value": "DerHexer, Wikimedia Commons, CC-by-sa 4.0", - "source": "commons-desc-page", - "hidden": "" - }, - "LicenseUrl": { - "value": "http://creativecommons.org/licenses/by-sa/4.0", - "source": "commons-desc-page", - "hidden": "" - }, - "Copyrighted": { - "value": "True", - "source": "commons-desc-page", - "hidden": "" - }, - "Restrictions": { - "value": "personality", - "source": "commons-desc-page", - "hidden": "" - }, - "License": { - "value": "cc-by-sa-4.0", - "source": "commons-templates", - "hidden": "" - } - } - } - ] - } - ] - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/lang_links.json b/data-client/src/test/res/raw/lang_links.json deleted file mode 100644 index 75d571656b..0000000000 --- a/data-client/src/test/res/raw/lang_links.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "batchcomplete": "", - "query": { - "pages": [ - { - "pageid": 13118744, - "ns": 0, - "title": "Scientology", - "langlinks": [ - { - "lang": "af", - "title": "Sciëntologie" - }, - { - "lang": "ar", - "title": "سينتولوجيا" - }, - { - "lang": "arz", - "title": "سيينتولوجيا" - } - ] - } - ] - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/lang_links_empty.json b/data-client/src/test/res/raw/lang_links_empty.json deleted file mode 100644 index ceac12053c..0000000000 --- a/data-client/src/test/res/raw/lang_links_empty.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "batchcomplete": "", - "query": { - "normalized": [ - { - "fromencoded": false, - "from": "Hot_Molasses", - "to": "Hot Molasses" - } - ], - "pages": [ - { - "pageid": 47002725, - "ns": 0, - "title": "Hot Molasses" - } - ] - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/most_read.json b/data-client/src/test/res/raw/most_read.json deleted file mode 100644 index 481f005564..0000000000 --- a/data-client/src/test/res/raw/most_read.json +++ /dev/null @@ -1,447 +0,0 @@ -{ - "date": "2016-06-01Z", - "articles": [ - { - "views": 330200, - "rank": 3, - "title": "Bicycle_Race", - "pageid": 3957496, - "normalizedtitle": "Bicycle Race", - "description": "rock song by Queen" - }, - { - "views": 265986, - "rank": 5, - "title": "Dare_to_Be_Stupid_(song)", - "pageid": 4082868, - "normalizedtitle": "Dare to Be Stupid (song)", - "description": "1985 \"Weird Al\" Yankovic song" - }, - { - "views": 258829, - "rank": 6, - "title": "Razak_Khan", - "pageid": 40626711, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Razak_Khan.jpg/241px-Razak_Khan.jpg", - "width": 241, - "height": 320 - }, - "normalizedtitle": "Razak Khan", - "description": "Indian actor" - }, - { - "views": 201439, - "rank": 8, - "title": "Marilyn_Monroe", - "pageid": 19318, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Marilyn_Monroe_in_1952.jpg/229px-Marilyn_Monroe_in_1952.jpg", - "width": 229, - "height": 320 - }, - "normalizedtitle": "Marilyn Monroe", - "description": "American actress, model, and singer" - }, - { - "views": 184527, - "rank": 9, - "title": "Het_Klokhuis", - "pageid": 3118503, - "normalizedtitle": "Het Klokhuis", - "description": "Dutch educational show" - }, - { - "views": 176512, - "rank": 10, - "title": "Big_Trouble_(2002_film)", - "pageid": 1703740, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/b/b5/Big_trouble_ver2.jpg/217px-Big_trouble_ver2.jpg", - "width": 217, - "height": 320 - }, - "normalizedtitle": "Big Trouble (2002 film)", - "description": "2002 American comedy film" - }, - { - "views": 136099, - "rank": 11, - "title": "X-Men:_Apocalypse", - "pageid": 43530847, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Englefield_House_-_geograph.org.uk_-_1824880.jpg/320px-Englefield_House_-_geograph.org.uk_-_1824880.jpg", - "width": 320, - "height": 213 - }, - "normalizedtitle": "X-Men: Apocalypse", - "description": "2016 superhero film" - }, - { - "views": 125269, - "rank": 12, - "title": "Gotthard_Base_Tunnel", - "pageid": 692624, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/20141120_gotthard-basistunnel02-wikipedia-hannes-ortlieb.jpg/320px-20141120_gotthard-basistunnel02-wikipedia-hannes-ortlieb.jpg", - "width": 320, - "height": 213 - }, - "normalizedtitle": "Gotthard Base Tunnel", - "description": "railway tunnel through the Swiss Alps" - }, - { - "views": 116784, - "rank": 14, - "title": "UEFA_Euro_2016", - "pageid": 7932564, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/f/f1/UEFA_Euro_2016_Logo.svg/227px-UEFA_Euro_2016_Logo.svg.png", - "width": 227, - "height": 320 - }, - "normalizedtitle": "UEFA Euro 2016", - "description": "football tournament held in 2016" - }, - { - "views": 98366, - "rank": 15, - "title": "Kunta_Kinte", - "pageid": 951527, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/IJzeren_voetring_voor_gevangenen_transparent_background.png/320px-IJzeren_voetring_voor_gevangenen_transparent_background.png", - "width": 320, - "height": 175 - }, - "normalizedtitle": "Kunta Kinte", - "description": "From Alex Haley's ''Roots''" - }, - { - "views": 96331, - "rank": 16, - "title": "98.6_(disambiguation)", - "pageid": 12124572, - "normalizedtitle": "98.6 (disambiguation)", - "description": "Wikipedia disambiguation page" - }, - { - "views": 92076, - "rank": 17, - "title": "Deaths_in_2016", - "pageid": 48857868, - "normalizedtitle": "Deaths in 2016", - "description": "Wikimedia list article" - }, - { - "views": 88800, - "rank": 18, - "title": "Amber_Heard", - "pageid": 10784468, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Amber_Heard_2011.jpg/231px-Amber_Heard_2011.jpg", - "width": 231, - "height": 320 - }, - "normalizedtitle": "Amber Heard", - "description": "American actress" - }, - { - "views": 86325, - "rank": 19, - "title": "Game_of_Thrones_(season_6)", - "pageid": 43186937, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Castillo_de_Zafra_-_Exterior.JPG/320px-Castillo_de_Zafra_-_Exterior.JPG", - "width": 320, - "height": 180 - }, - "normalizedtitle": "Game of Thrones (season 6)", - "description": "sixth season of the fantasy drama television series Game of Thrones" - }, - { - "views": 77042, - "rank": 20, - "title": "Roots_(2016_miniseries)", - "pageid": 49403994, - "normalizedtitle": "Roots (2016 miniseries)", - "description": "2016 miniseries" - }, - { - "views": 75046, - "rank": 21, - "title": "Game_of_Thrones", - "pageid": 20715044, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Game_of_Thrones_Oslo_exhibition_2014_-_Weapons.jpg/320px-Game_of_Thrones_Oslo_exhibition_2014_-_Weapons.jpg", - "width": 320, - "height": 253 - }, - "normalizedtitle": "Game of Thrones", - "description": "American fantasy drama television series" - }, - { - "views": 72363, - "rank": 23, - "title": "Roots_(miniseries)", - "pageid": 50676323, - "normalizedtitle": "Roots (miniseries)" - }, - { - "views": 69446, - "rank": 24, - "title": "Captain_America:_Civil_War", - "pageid": 41974496, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Cast_of_Captain_America_Civil_War.jpg/320px-Cast_of_Captain_America_Civil_War.jpg", - "width": 320, - "height": 187 - }, - "normalizedtitle": "Captain America: Civil War", - "description": "2016 superhero film produced by Marvel Studios" - }, - { - "views": 66186, - "rank": 25, - "title": "Dread_Pirate_Roberts", - "pageid": 592069, - "normalizedtitle": "Dread Pirate Roberts", - "description": "fictional pirate" - }, - { - "views": 65737, - "rank": 26, - "title": "State_of_Origin_series", - "pageid": 1954843, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/e/e8/First_State_of_Origin_Shield.jpg/301px-First_State_of_Origin_Shield.jpg", - "width": 301, - "height": 320 - }, - "normalizedtitle": "State of Origin series" - }, - { - "views": 65675, - "rank": 27, - "title": "Gorilla", - "pageid": 12546, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Male_gorilla_in_SF_zoo.jpg/287px-Male_gorilla_in_SF_zoo.jpg", - "width": 287, - "height": 320 - }, - "normalizedtitle": "Gorilla", - "description": "genus of mammals" - }, - { - "views": 62510, - "rank": 28, - "title": "Stephen_Curry", - "pageid": 5608488, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Stephen_Curry_dribbling_2016_%28cropped%29.jpg/178px-Stephen_Curry_dribbling_2016_%28cropped%29.jpg", - "width": 178, - "height": 320 - }, - "normalizedtitle": "Stephen Curry", - "description": "American basketball player" - }, - { - "views": 62441, - "rank": 29, - "title": "Maya_Rudolph", - "pageid": 511348, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Maya_Rudolph.jpg/318px-Maya_Rudolph.jpg", - "width": 318, - "height": 320 - }, - "normalizedtitle": "Maya Rudolph", - "description": "American comedic actress" - }, - { - "views": 62315, - "rank": 30, - "title": "Johnny_Depp", - "pageid": 71870, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/JohnnyDeppHWOFJune2013.jpg/273px-JohnnyDeppHWOFJune2013.jpg", - "width": 273, - "height": 320 - }, - "normalizedtitle": "Johnny Depp", - "description": "American actor, film producer, and musician" - }, - { - "views": 61229, - "rank": 31, - "title": "Donald_Trump", - "pageid": 4848272, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Donald_Trump_August_19%2C_2015_%28cropped%29.jpg/235px-Donald_Trump_August_19%2C_2015_%28cropped%29.jpg", - "width": 235, - "height": 320 - }, - "normalizedtitle": "Donald Trump", - "description": "German American business magnate, television personality, author and politician" - }, - { - "views": 60341, - "rank": 32, - "title": "Children's_Day", - "pageid": 494299, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/ad/Wikipedia_Children%27s_Day.png/320px-Wikipedia_Children%27s_Day.png", - "width": 320, - "height": 280 - }, - "normalizedtitle": "Children's Day", - "description": "day to honor children globally" - }, - { - "views": 58134, - "rank": 35, - "title": "Louis_XIV_of_France", - "pageid": 18553, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Louis_XIV_of_France.jpg/225px-Louis_XIV_of_France.jpg", - "width": 225, - "height": 320 - }, - "normalizedtitle": "Louis XIV of France", - "description": "King of France and Navarra, from 1643 to 1715" - }, - { - "views": 56939, - "rank": 36, - "title": "X-Men_(film_series)", - "pageid": 11891433, - "normalizedtitle": "X-Men (film series)", - "description": "film series" - }, - { - "views": 55852, - "rank": 37, - "title": "Michael_Jace", - "pageid": 4238332, - "normalizedtitle": "Michael Jace", - "description": "American actor" - }, - { - "views": 54683, - "rank": 38, - "title": "List_of_Bollywood_films_of_2016", - "pageid": 44953417, - "normalizedtitle": "List of Bollywood films of 2016", - "description": "Wikimedia list article" - }, - { - "views": 54645, - "rank": 39, - "title": "List_of_Person_of_Interest_episodes", - "pageid": 32796719, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Person_of_Interest_logo.svg/320px-Person_of_Interest_logo.svg.png", - "width": 320, - "height": 107 - }, - "normalizedtitle": "List of Person of Interest episodes", - "description": "Wikimedia list article" - }, - { - "views": 53441, - "rank": 40, - "title": "Stoner_(novel)", - "pageid": 21337639, - "normalizedtitle": "Stoner (novel)", - "description": "1965 novel by the American writer John Williams" - }, - { - "views": 52457, - "rank": 41, - "title": "Warcraft_(film)", - "pageid": 39701440, - "normalizedtitle": "Warcraft (film)", - "description": "2016 film" - }, - { - "views": 51324, - "rank": 42, - "title": "Rosenhan_experiment", - "pageid": 449532, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Center_building_at_Saint_Elizabeths%2C_August_23%2C_2006.jpg/320px-Center_building_at_Saint_Elizabeths%2C_August_23%2C_2006.jpg", - "width": 320, - "height": 241 - }, - "normalizedtitle": "Rosenhan experiment", - "description": "psychological experiment" - }, - { - "views": 51299, - "rank": 43, - "title": "Emilia_Clarke", - "pageid": 30175038, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Emilia_Clarke_by_Gage_Skidmore_2.jpg/260px-Emilia_Clarke_by_Gage_Skidmore_2.jpg", - "width": 260, - "height": 320 - }, - "normalizedtitle": "Emilia Clarke", - "description": "English actress" - }, - { - "views": 50895, - "rank": 44, - "title": "Elizabeth_Holmes", - "pageid": 43573275, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Elizabeth_Holmes_2014_%28cropped%29.jpg/277px-Elizabeth_Holmes_2014_%28cropped%29.jpg", - "width": 277, - "height": 320 - }, - "normalizedtitle": "Elizabeth Holmes", - "description": "American business executive" - }, - { - "views": 50728, - "rank": 46, - "title": "Stephen_Hawking", - "pageid": 19376148, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/Stephen_Hawking.StarChild.jpg/223px-Stephen_Hawking.StarChild.jpg", - "width": 223, - "height": 320 - }, - "normalizedtitle": "Stephen Hawking", - "description": "British theoretical physicist, cosmologist, and author" - }, - { - "views": 50408, - "rank": 48, - "title": "Harry_Potter_and_the_Cursed_Child", - "pageid": 47083555, - "normalizedtitle": "Harry Potter and the Cursed Child" - }, - { - "views": 49764, - "rank": 49, - "title": "Female_genital_mutilation", - "pageid": 11408, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Campaign_road_sign_against_female_genital_mutilation_%28cropped%29_2.jpg/320px-Campaign_road_sign_against_female_genital_mutilation_%28cropped%29_2.jpg", - "width": 320, - "height": 212 - }, - "normalizedtitle": "Female genital mutilation", - "description": "controversial cultural ritual" - }, - { - "views": 49670, - "rank": 50, - "title": "June_1", - "pageid": 15856, - "normalizedtitle": "June 1", - "description": "date" - } - ] -} diff --git a/data-client/src/test/res/raw/mostread_2016_11_07.json b/data-client/src/test/res/raw/mostread_2016_11_07.json deleted file mode 100644 index 621608f94c..0000000000 --- a/data-client/src/test/res/raw/mostread_2016_11_07.json +++ /dev/null @@ -1,700 +0,0 @@ -{ - "date": "2016-11-06Z", - "articles": [ - { - "views": 505068, - "rank": 4, - "title": "Elizabeth_II", - "pageid": 12153654, - "extract": "Elizabeth II (Elizabeth Alexandra Mary; born 21 April 1926) has been Queen of the United Kingdom, Canada, Australia, and New Zealand since 1952. She is also Head of the Commonwealth and the queen of 12 countries that have become independent since her accession: Jamaica, Barbados, the Bahamas, Grenada, Papua New Guinea, Solomon Islands, Tuvalu, Saint Lucia, Saint Vincent and the Grenadines, Belize, Antigua and Barbuda, and Saint Kitts and Nevis.\nElizabeth was born in London as the first child of the Duke and Duchess of York, later King George VI and Queen Elizabeth. She was educated privately at home. Her father acceded to the throne on the abdication of his brother Edward VIII in 1936, from which time she was the heir presumptive.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Queen_Elizabeth_II_March_2015.jpg/243px-Queen_Elizabeth_II_March_2015.jpg", - "width": 243, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-04T23:10:26Z", - "description": "monarch of 16 sovereign states, former monarch of another 16, and head of the Commonwealth of Nations", - "normalizedtitle": "Elizabeth II" - }, - { - "views": 338421, - "rank": 9, - "title": "George_VI", - "pageid": 46755, - "extract": "George VI (Albert Frederick Arthur George; 14 December 1895 – 6 February 1952) was King of the United Kingdom and the Dominions of the British Commonwealth from 11 December 1936 until his death. He was the last Emperor of India and the first Head of the Commonwealth.\nKnown as Albert until his accession, George VI was born in the reign of his great-grandmother Queen Victoria, and was named after his great-grandfather Albert, Prince Consort. As the second son of King George V, he was not expected to inherit the throne and spent his early life in the shadow of his elder brother, Edward. He attended naval college as a teenager, and served in the Royal Navy and Royal Air Force during the First World War.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/King_George_VI_of_England%2C_formal_photo_portrait%2C_circa_1940-1946.jpg/232px-King_George_VI_of_England%2C_formal_photo_portrait%2C_circa_1940-1946.jpg", - "width": 232, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T12:13:59Z", - "description": "King of the United Kingdom", - "normalizedtitle": "George VI" - }, - { - "views": 299955, - "rank": 10, - "title": "Princess_Margaret,_Countess_of_Snowdon", - "pageid": 38567, - "extract": "Princess Margaret, Countess of Snowdon, CI, GCVO, GCStJ (Margaret Rose; 21 August 1930 – 9 February 2002), often known as a child as Princess Margaret Rose but later simply as Princess Margaret, was the younger daughter of King George VI and Queen Elizabeth, and the only sibling of Queen Elizabeth II.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Princess_Margaret.jpg/205px-Princess_Margaret.jpg", - "width": 205, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-06T05:14:34Z", - "description": "sibling of Queen Elizabeth II", - "normalizedtitle": "Princess Margaret, Countess of Snowdon" - }, - { - "views": 292329, - "rank": 11, - "title": "Prince_Philip,_Duke_of_Edinburgh", - "pageid": 62093, - "extract": "Prince Philip, Duke of Edinburgh (Philip Mountbatten; born Prince Philip of Greece and Denmark on 10 June 1921) is the husband of Queen Elizabeth II.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Prince_Philip_March_2015.jpg/202px-Prince_Philip_March_2015.jpg", - "width": 202, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T09:44:32Z", - "description": "member of the British Royal Family, consort to Queen Elizabeth II", - "normalizedtitle": "Prince Philip, Duke of Edinburgh" - }, - { - "views": 264067, - "rank": 12, - "title": "Doctor_Strange_(film)", - "pageid": 41668588, - "extract": "Doctor Strange is a 2016 American superhero film featuring the Marvel Comics character of the same name, produced by Marvel Studios and distributed by Walt Disney Studios Motion Pictures. It is the fourteenth film of the Marvel Cinematic Universe (MCU). The film is directed by Scott Derrickson, who wrote the film with Jon Spaihts and C. Robert Cargill, and stars Benedict Cumberbatch, Chiwetel Ejiofor, Rachel McAdams, Benedict Wong, Michael Stuhlbarg, Benjamin Bratt, Scott Adkins, Mads Mikkelsen, and Tilda Swinton. In Doctor Strange, surgeon Stephen Strange learns the mystic arts from the Ancient One after a career-ending car accident.\nVarious incarnations of a Doctor Strange film have been in development since the mid-1980s until Paramount Pictures acquired the film rights in April 2005 on behalf of Marvel Studios.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Doctor_Strange_cast_by_Gage_Skidmore.jpg/320px-Doctor_Strange_cast_by_Gage_Skidmore.jpg", - "width": 320, - "height": 213 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T09:09:38Z", - "description": "2016 superhero film produced by Marvel Studios", - "normalizedtitle": "Doctor Strange (film)" - }, - { - "views": 259789, - "rank": 13, - "title": "Bum_flap", - "pageid": 2028361, - "extract": "The bum or butt flap is a piece of removable material that hangs from the waist to cover the rear end. The flap is of ambiguous origin, but probably was originally intended to reduce abrasive wear to pants. Pavement can rapidly wear the seat of pants, and flaps act as replaceable buffer material. They also provide some protection from damp or cold surfaces. The freely swinging flap dries faster than wet pants, and can be easier to clean.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Heavy_butt_flap.jpg/320px-Heavy_butt_flap.jpg", - "width": 320, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-06T11:39:26Z", - "normalizedtitle": "Bum flap" - }, - { - "views": 227664, - "rank": 14, - "title": "United_States_presidential_election,_2016", - "pageid": 21377251, - "extract": "The United States presidential election of 2016, scheduled for Tuesday, November 8, 2016, will be the 58th quadrennial U.S. presidential election.\nVoters will select presidential electors, who in turn will vote, based on the results of their jurisdiction, for a new president and vice president through the Electoral College. The term limit established in the Twenty-second Amendment to the United States Constitution prevents the incumbent president, Barack Obama of the Democratic Party, from being elected to a third term. The 2016 election will determine the 45th President and 48th Vice President of the United States.\nThe series of presidential primary elections and caucuses took place between February and June 2016, staggered among the 50 states, the District of Columbia and U.S. territories.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/ElectoralCollege2016.svg/320px-ElectoralCollege2016.svg.png", - "width": 320, - "height": 186 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T13:22:23Z", - "description": "58th election of President of the United States", - "normalizedtitle": "United States presidential election, 2016" - }, - { - "views": 213643, - "rank": 16, - "title": "New_Cult_Awareness_Network", - "pageid": 37917973, - "extract": "The \"New Cult Awareness Network\" (NCAN, often referred to as simply the \"Cult Awareness Network\", though other than inheriting the name, it is unrelated to that older group) is an organization that provides information about cults, and is owned and operated by associates of the Church of Scientology, itself categorized in many countries as a cult. It was formed in 1996, with the name purchased from the now defunct Cult Awareness Network, an organization that provided information on groups it considered to be cults, and that strongly opposed Scientology.\nThe \"New CAN\" organization (also known as the Foundation for Religious Freedom) has caused both confusion and controversy among academics and its opponents. Board members of the \"Old CAN\" have characterized it as a front group for the Church of Scientology. In December 1997, 60 Minutes profiled the controversy regarding the history of the \"Old CAN\" and the \"New CAN\", with host Lesley Stahl noting, \"Now, when you call looking for information about a cult, chances are the person you're talking to is a Scientologist\".", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/75/United_States_Bankruptcy_Court_Seal.png", - "width": 192, - "height": 192 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T01:01:52Z", - "normalizedtitle": "New Cult Awareness Network" - }, - { - "views": 203740, - "rank": 17, - "title": "The_Crown_(TV_series)", - "pageid": 47048067, - "extract": "The Crown is an American-British television drama series, created and written by Peter Morgan and produced by Left Bank Pictures for Netflix. The show is a biographical story about the reign of Queen Elizabeth II of the United Kingdom. The first season, comprising 10 one-hour episodes, was released in its entirety on November 4, 2016. A second season has already been commissioned.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Royal_Cypher_of_Queen_Elizabeth_II.svg/279px-Royal_Cypher_of_Queen_Elizabeth_II.svg.png", - "width": 279, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T13:53:33Z", - "normalizedtitle": "The Crown (TV series)" - }, - { - "views": 200110, - "rank": 18, - "title": "Donald_Trump", - "pageid": 4848272, - "extract": "Donald John Trump (born June 14, 1946) is an American businessman, television producer, and politician who is the Republican Party nominee for President of the United States in the 2016 election. He is the chairman and president of The Trump Organization, which is the principal holding company for his real estate ventures and other business interests. During his career, Trump has built office towers, hotels, casinos, golf courses, and other branded facilities worldwide.\nTrump was born and raised in New York City, attended the New York Military Academy from age 13, and received a bachelor's degree in economics from the Wharton School of the University of Pennsylvania in 1968. In 1971 he was given control of his father Fred Trump's real estate and construction firm and later renamed it The Trump Organization, rising to public prominence shortly thereafter.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Donald_Trump_August_19%2C_2015_%28cropped%29.jpg/240px-Donald_Trump_August_19%2C_2015_%28cropped%29.jpg", - "width": 240, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T13:02:18Z", - "description": "American business magnate, television personality, author and politician", - "normalizedtitle": "Donald Trump" - }, - { - "views": 199523, - "rank": 19, - "title": "Winston_Churchill", - "pageid": 33265, - "extract": "Sir Winston Leonard Spencer-Churchill, KG, OM, CH, TD, PC, DL, FRS, RA (30 November 1874 – 24 January 1965) was a British statesman who was the Prime Minister of the United Kingdom from 1940 to 1945 and again from 1951 to 1955. Churchill was also an officer in the British Army, a non-academic historian, a writer (as Winston S. Churchill), and an artist. He won the Nobel Prize in Literature in 1953 for his overall, lifetime body of work. In 1963, he was the first of only eight people to be made an honorary citizen of the United States.\nChurchill was born into the family of the Dukes of Marlborough, a branch of the Spencer family.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Sir_Winston_Churchill_-_19086236948.jpg/250px-Sir_Winston_Churchill_-_19086236948.jpg", - "width": 250, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-06T17:25:59Z", - "description": "Prime Minister of the United Kingdom during World War II", - "normalizedtitle": "Winston Churchill" - }, - { - "views": 180299, - "rank": 21, - "title": "Doctor_Strange", - "pageid": 150076, - "extract": "Dr. Stephen Vincent Strange, also known as Doctor Strange, is a fictional superhero appearing in American comic books published by Marvel Comics. Created by artist and character conceptualist Steve Ditko, the character first appeared in Strange Tales #110 (cover-dated July 1963). A former neurosurgeon, Strange serves as the Sorcerer Supreme, the primary protector of Earth against magical and mystical threats. Debuting in the Silver Age of comics, the character has been featured in several comic book series and adapted in a variety of media including video games, an animated television show, and films.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/f/f6/Doctor_Strange_Spider-Man.jpg", - "width": 250, - "height": 189 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T13:38:13Z", - "description": "superhero appearing in Marvel Comics publications and related media", - "normalizedtitle": "Doctor Strange" - }, - { - "views": 166624, - "rank": 22, - "title": "Edward_VIII", - "pageid": 18835362, - "extract": "Edward VIII (Edward Albert Christian George Andrew Patrick David; 23 June 1894 – 28 May 1972) was King of the United Kingdom and the Dominions of the British Empire, and Emperor of India, from 20 January 1936 until his abdication on 11 December the same year.\nEdward was the eldest son of King George V and Queen Mary. He was created Prince of Wales on his sixteenth birthday, nine weeks after his father succeeded as king. As a young man, he served in the British Army during the First World War and undertook several overseas tours on behalf of his father.\nEdward became king on his father's death in early 1936.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a3/HRH_The_Prince_of_Wales_No_4_%28HS85-10-36416%29.jpg/237px-HRH_The_Prince_of_Wales_No_4_%28HS85-10-36416%29.jpg", - "width": 237, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T08:07:59Z", - "description": "king of the United Kingdom and its dominions in 1936", - "normalizedtitle": "Edward VIII" - }, - { - "views": 156042, - "rank": 23, - "title": "The_Ultimate_Fighter:_Latin_America_3", - "pageid": 50694541, - "extract": "The Ultimate Fighter: Latin America 3 will be an installment of the Ultimate Fighting Championship (UFC)-produced reality television series The Ultimate Fighter.\nOn May 31, 2016 the UFC announced that the 16 competitors for the season would be made up of lightweight fighters from various locations around Latin America.\nThe cast consisted of fighters from 9 countries: Bedoya, from Colombia, Castillo, from Nicaragua, Cárdenas and Villaseca, from Chile, Chalo, from Venezuela, Flores, from Bolivia, Puelles, from Peru, Ganin and Rojo, from Argentina, Zamora, from Costa Rica and Bravo, Martínez, Quintanar, Rodríguez, Sabori and Villegas, from Mexico.\nThe coaches for the season are former UFC Light Heavyweight champions Forrest Griffin and Chuck Liddell. Both retired fighters have been coaches on previous The Ultimate Fighter installments.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-06T17:55:53Z", - "normalizedtitle": "The Ultimate Fighter: Latin America 3" - }, - { - "views": 143515, - "rank": 26, - "title": "Manny_Pacquiao", - "pageid": 916099, - "extract": "Emmanuel \"Manny\" Dapidran Pacquiao, PLH (/ˈpæki.aʊ/ PAK-ee-ow; Tagalog: [pɐkˈjaʊ]; born December 17, 1978) is a Filipino professional boxer and politician, currently serving as Senator of the Philippines. In boxing he has held the lineal welterweight title since April 2016, and the WBO welterweight title since November 2016.\nPacquiao is generally considered to be one of the greatest boxers of all time as he is the first and only eight-division world champion, having won ten major world titles, as well as being the first boxer to win the lineal championship in five different weight classes. Pacquiao is also the third boxer in history to win major world titles in three of the original eight weight divisions of boxing, also known as the \"glamour divisions\" (flyweight, featherweight, and welterweight).\nHe was named \"Fighter of the Decade\" for the 2000s by the Boxing Writers Association of America (BWAA), WBC, and WBO. He is also a three-time Ring magazine and BWAA Fighter of the Year, winning the award in 2006, 2008, and 2009; and the Best Fighter ESPY Award in 2009 and 2011.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/81/Sarangani_Lone_District_Representative_Manny_Pacquiao_%28cropped%29.jpg/244px-Sarangani_Lone_District_Representative_Manny_Pacquiao_%28cropped%29.jpg", - "width": 244, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T13:53:08Z", - "description": "Filipino professional boxer and politician", - "normalizedtitle": "Manny Pacquiao" - }, - { - "views": 141293, - "rank": 27, - "title": "Daylight_saving_time", - "pageid": 47548, - "extract": "Daylight saving time (DST) or summer time is the practice of advancing clocks during summer months by one hour so that evening daylight lasts an hour longer, while sacrificing normal sunrise times. Typically, regions with summer time adjust clocks forward one hour close to the start of spring and adjust them backward in the autumn to standard time.\nNew Zealander George Hudson proposed the idea of daylight saving in 1895. The German Empire and Austria-Hungary organized the first nationwide implementation, starting on April 30, 1916. Many countries have used it at various times since then, particularly since the energy crisis of the 1970s.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/16/DST_Countries_Map.png/320px-DST_Countries_Map.png", - "width": 320, - "height": 160 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T00:28:56Z", - "description": "practice of advancing clocks so that evenings have more daylight and mornings have less", - "normalizedtitle": "Daylight saving time" - }, - { - "views": 130636, - "rank": 29, - "title": "Ten_Commandments", - "pageid": 2539671, - "extract": "The Ten Commandments, also known as the Decalogue, are a set of biblical principles relating to ethics and worship, which play a fundamental role in Judaism and Christianity. The commandments include instructions to worship only God, to honour one's parents, and to keep the sabbath, as well as prohibitions against idolatry, blasphemy, murder, adultery, theft, dishonesty, and coveting. Different religious groups follow different traditions for interpreting and numbering them.\nThe Ten Commandments are listed twice in the Hebrew Bible, first at Exodus 20:1–17, and then at Deuteronomy 5:6–21. Both versions state that God inscribed them on two stone tablets, which he gave to Moses on Mount Sinai.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Vitrail_de_synagogue-Mus%C3%A9e_alsacien_de_Strasbourg.jpg/319px-Vitrail_de_synagogue-Mus%C3%A9e_alsacien_de_Strasbourg.jpg", - "width": 319, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-06T20:56:03Z", - "description": "Part of the Law of Moses appearing in Exodus 20, Deuteronomy in Hebrew Bible", - "normalizedtitle": "Ten Commandments" - }, - { - "views": 125859, - "rank": 30, - "title": "Hillary_Clinton", - "pageid": 5043192, - "extract": "Hillary Diane Rodham Clinton (/ˈhɪləri daɪˈæn ˈrɒdəm ˈklɪntən/; born October 26, 1947) is an American politician and the Democratic Party nominee for President of the United States in the 2016 election. She served as the 67th United States Secretary of State from 2009 to 2013, the junior United States Senator representing New York from 2001 to 2009, First Lady of the United States during the presidency of her husband Bill Clinton from 1993 to 2001, and First Lady of Arkansas during his governorship from 1979 to 1981 and again from 1983 to 1992.\nBorn in Chicago and raised in the suburban town of Park Ridge, Illinois, Clinton attended Wellesley College, graduating in 1969, and earned a J.D. from Yale Law School in 1973. After serving as a congressional legal counsel, she moved to Arkansas and married Bill Clinton in 1975. In 1977, she co-founded Arkansas Advocates for Children and Families.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Hillary_Clinton_official_Secretary_of_State_portrait_crop.jpg/256px-Hillary_Clinton_official_Secretary_of_State_portrait_crop.jpg", - "width": 256, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T11:28:52Z", - "description": "American politician, former First Lady of the United States, U.S. Senator, and U.S. Secretary of State", - "normalizedtitle": "Hillary Clinton" - }, - { - "views": 125325, - "rank": 31, - "title": "Benedict_Cumberbatch", - "pageid": 2275990, - "extract": "Benedict Timothy Carlton Cumberbatch CBE (born 19 July 1976) is an English actor and film producer who has performed in film, television, theatre and radio. The son of actors Timothy Carlton and Wanda Ventham, he graduated from the University of Manchester and continued his training at the London Academy of Music and Dramatic Art, obtaining a Master of Arts in Classical Acting. He first performed at the Open Air Theatre, Regent's Park in Shakespearean productions and has portrayed George Tesman in Richard Eyre's revival of Hedda Gabler in 2005. Since then he has starred in the Royal National Theatre productions After the Dance (2010) and Frankenstein (2011). In 2015, he played William Shakespeare's Hamlet at the Barbican Theatre.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Benedict_Cumberbatch_SDCC_2014.jpg/239px-Benedict_Cumberbatch_SDCC_2014.jpg", - "width": 239, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-06T00:37:22Z", - "description": "English actor and film producer", - "normalizedtitle": "Benedict Cumberbatch" - }, - { - "views": 122203, - "rank": 32, - "title": "Guy_Fawkes_Night", - "pageid": 979165, - "extract": "Guy Fawkes Night, also known as Guy Fawkes Day, Bonfire Night and Firework Night, is an annual commemoration observed on 5 November, primarily in Great Britain. Its history begins with the events of 5 November 1605, when Guy Fawkes, a member of the Gunpowder Plot, was arrested while guarding explosives the plotters had placed beneath the House of Lords. Celebrating the fact that King James I had survived the attempt on his life, people lit bonfires around London, and months later the introduction of the Observance of 5th November Act enforced an annual public day of thanksgiving for the plot's failure.\nWithin a few decades Gunpowder Treason Day, as it was known, became the predominant English state commemoration, but as it carried strong Protestant religious overtones it also became a focus for anti-Catholic sentiment. Puritans delivered sermons regarding the perceived dangers of popery, while during increasingly raucous celebrations common folk burnt effigies of popular hate-figures, such as the pope.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Windsor_castle_guyfawkesnight1776.jpg/320px-Windsor_castle_guyfawkesnight1776.jpg", - "width": 320, - "height": 208 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T03:13:18Z", - "description": "annual commemoration", - "normalizedtitle": "Guy Fawkes Night" - }, - { - "views": 121284, - "rank": 33, - "title": "Charles,_Prince_of_Wales", - "pageid": 125248, - "extract": "Charles, Prince of Wales (Charles Philip Arthur George; born 14 November 1948), is the eldest child and heir apparent of Queen Elizabeth II. Known alternatively in South West England as Duke of Cornwall and in Scotland as Duke of Rothesay, he is the longest-serving heir apparent in British history, having held the position since 1952. He is also the oldest person to be next in line to the throne since Sophia of Hanover (the heir presumptive to Queen Anne), who died in 1714 at the age of 83.\nCharles was born at Buckingham Palace as the first grandchild of King George VI and Queen Elizabeth. He was educated at Cheam and Gordonstoun Schools, which his father, Prince Philip, Duke of Edinburgh, had attended as a child, as well as the Timbertop campus of Geelong Grammar School in Victoria, Australia. After earning a bachelor of arts degree from Trinity College, Cambridge, Charles served in the Royal Navy from 1971 to 1976.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Charles%2C_Prince_of_Wales_at_COP21.jpg/256px-Charles%2C_Prince_of_Wales_at_COP21.jpg", - "width": 256, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-10-30T20:33:57Z", - "description": "son of Queen Elizabeth II of the United Kingdom", - "normalizedtitle": "Charles, Prince of Wales" - }, - { - "views": 114612, - "rank": 34, - "title": "Guy_Fawkes", - "pageid": 12707, - "extract": "Guy Fawkes (/ˈɡaɪ ˈfɔːks/; 13 April 1570 – 31 January 1606), also known as Guido Fawkes, the name he adopted while fighting for the Spanish, was a member of a group of provincial English Catholics who planned the failed Gunpowder Plot of 1605.\nFawkes was born and educated in York. His father died when Fawkes was eight years old, after which his mother married a recusant Catholic. Fawkes converted to Catholicism and left for the continent, where he fought in the Eighty Years' War on the side of Catholic Spain against Protestant Dutch reformers in the Low Countries. He travelled to Spain to seek support for a Catholic rebellion in England without success.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Guy_Fawkes_by_Cruikshank.jpg/272px-Guy_Fawkes_by_Cruikshank.jpg", - "width": 272, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-05T20:28:00Z", - "description": "member of the Gunpowder Plot of 1605", - "normalizedtitle": "Guy Fawkes" - }, - { - "views": 109640, - "rank": 35, - "title": "Peter_Townsend_(RAF_officer)", - "pageid": 3642068, - "extract": "Group Captain Peter Woolridge Townsend CVO, DSO, DFC & Bar (22 November 1914 – 19 June 1995) was Equerry to King George VI 1944–1952 and held the same position for Queen Elizabeth II 1952–1953. Group Captain Townsend is best known for his romance with Princess Margaret.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Royal_Air_Force_Fighter_Command%2C_1939-1945._CH89.jpg/320px-Royal_Air_Force_Fighter_Command%2C_1939-1945._CH89.jpg", - "width": 320, - "height": 242 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-06T01:05:09Z", - "description": "British flying ace", - "normalizedtitle": "Peter Townsend (RAF officer)" - }, - { - "views": 102322, - "rank": 36, - "title": "Westworld_(TV_series)", - "pageid": 43369485, - "extract": "Westworld is an American science fiction thriller television series created by Jonathan Nolan and Lisa Joy for HBO. It is based on the 1973 film of the same name, which was written and directed by American novelist Michael Crichton, and to a lesser extent on the 1976 sequel Futureworld. It is the second TV series based on the two films, the first being the short-lived 1980 series Beyond Westworld. Nolan and Joy serve as executive producers along with J. J. Abrams, Jerry Weintraub and Bryan Burk, with Nolan directing the pilot. The first episode premiered on October 2, 2016. The first season consists of ten episodes.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/MichaelCrichton_2.jpg/244px-MichaelCrichton_2.jpg", - "width": 244, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T11:05:55Z", - "description": "science fiction thriller television series", - "normalizedtitle": "Westworld (TV series)" - }, - { - "views": 101930, - "rank": 37, - "title": "List_of_search_engines", - "pageid": 429700, - "extract": "This is a list of search engines, including web search engines, selection-based search engines, metasearch engines, desktop search tools, and web portals and vertical market websites that have a search facility for online databases. For a list of search engine software, see List of enterprise search vendors.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-02T05:13:31Z", - "description": "Wikimedia list article", - "normalizedtitle": "List of search engines" - }, - { - "views": 100982, - "rank": 38, - "title": "Ae_Dil_Hai_Mushkil", - "pageid": 48207620, - "extract": "Ae Dil Hai Mushkil (English: Oh My Dear Heart, It's Tough) is a 2016 Indian romantic drama film written and directed by Karan Johar. It features Aishwarya Rai Bachchan, Ranbir Kapoor and Anushka Sharma in lead roles. It was released on 28 October 2016 on the Diwali weekend.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T11:47:46Z", - "description": "2016 Hindi film", - "normalizedtitle": "Ae Dil Hai Mushkil" - }, - { - "views": 100787, - "rank": 39, - "title": "List_of_wealthiest_historical_figures", - "pageid": 12944918, - "extract": "The list of the wealthiest historical figures gathers published estimates as to the (inflation-adjusted) net-worth and fortunes of the wealthiest historical figures in comparison. Due to problems arising from different definitions of wealth, ways of measuring it, various economic models throughout history, as well as multiple other reasons—this article discusses the wealthiest people in the following separate historical periods: Antiquity, Middle Ages and modern period. Accordingly—because of the previously mentioned difficulties—it is not possible to determine the single richest person in all of history.\nFor the modern period, wealth can be measured more or less objectively via inflation adjustment, e.g. comparing the nominal GDP of the United States of the respective periods, and then converting it into contemporary United States dollars.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/John_D._Rockefeller_1885.jpg/221px-John_D._Rockefeller_1885.jpg", - "width": 221, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T00:47:40Z", - "description": "Wikimedia list article", - "normalizedtitle": "List of wealthiest historical figures" - }, - { - "views": 94126, - "rank": 40, - "title": "Solange_Knowles", - "pageid": 543892, - "extract": "Solange Piaget Knowles (/soʊˈlɑːnʒ/; born June 24, 1986) is an American singer, songwriter, model, and actress. Knowles was born in Houston, Texas to Mathew and Tina Knowles. Expressing an interest in music from an early age, Knowles had several temporary stints in Destiny's Child, before signing with her father's Music World Entertainment label. At age 16, Knowles released her first studio album Solo Star (2002). In 2004, Knowles married Daniel Smith, eventually giving birth to their son Daniel Julez J. Smith Jr., which prompted a move to Idaho.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ed/2016-03-30_16h14_35.png/204px-2016-03-30_16h14_35.png", - "width": 204, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T07:50:47Z", - "description": "musician", - "normalizedtitle": "Solange Knowles" - }, - { - "views": 91733, - "rank": 41, - "title": "Mary_of_Teck", - "pageid": 48419, - "extract": "Mary of Teck (Victoria Mary Augusta Louise Olga Pauline Claudine Agnes; 26 May 1867 – 24 March 1953) was Queen of the United Kingdom and the British Dominions and Empress of India as the wife of King-Emperor George V.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Queenmaryformalportrait_edit3.jpg/229px-Queenmaryformalportrait_edit3.jpg", - "width": 229, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T13:43:50Z", - "description": "Queen consort of the United Kingdom Empress of India", - "normalizedtitle": "Mary of Teck" - }, - { - "views": 91593, - "rank": 42, - "title": "Queen_Elizabeth_The_Queen_Mother", - "pageid": 46744, - "extract": "Elizabeth Angela Marguerite Bowes-Lyon (4 August 1900 – 30 March 2002) was the wife of King George VI and the mother of Queen Elizabeth II and Princess Margaret, Countess of Snowdon. She was Queen consort of the United Kingdom and the Dominions from her husband's accession in 1936 until his death in 1952, after which she was known as Queen Elizabeth The Queen Mother, to avoid confusion with her daughter. She was the last Empress consort of India.\nBorn into a family of British nobility as The Honourable Elizabeth Bowes-Lyon, she became Lady Elizabeth Bowes-Lyon when her father inherited the Scottish Earldom of Strathmore and Kinghorne in 1904. She came to prominence in 1923 when she married Albert, Duke of York, the second son of King George V and Queen Mary.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Queen_Elizabeth_the_Queen_Mother_portrait.jpg/252px-Queen_Elizabeth_the_Queen_Mother_portrait.jpg", - "width": 252, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-02T16:49:39Z", - "description": "Queen consort of King George VI, mother of Queen Elizabeth II", - "normalizedtitle": "Queen Elizabeth The Queen Mother" - }, - { - "views": 91570, - "rank": 43, - "title": "Jessie_Vargas", - "pageid": 27158754, - "extract": "Jessie Vargas (born May 10, 1989) is an American professional boxer. He is a former two-weight world champion, having held the WBA (Regular) and IBO super lightweight titles in 2014, and the WBO welterweight title in 2016.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Jessie_Vargas_2010.jpg/279px-Jessie_Vargas_2010.jpg", - "width": 279, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T13:29:51Z", - "description": "American boxer", - "normalizedtitle": "Jessie Vargas" - }, - { - "views": 90709, - "rank": 44, - "title": "Electoral_College_(United_States)", - "pageid": 85533, - "extract": "The United States Electoral College is the body that elects the President and Vice President of the United States every four years. Citizens of the United States do not directly elect the president or the vice president; instead they choose \"electors\", who usually pledge to vote for particular candidates.\nThe number of electors in each state is equal to the number of members of Congress to which the state is entitled, while the Twenty-third Amendment grants the District of Columbia the same number of electors as the least populous state, currently three. Therefore, there are currently 538 electors, corresponding to the 435 Representatives and 100 Senators, plus the three additional electors from the District of Columbia. The Constitution bars any federal official, elected or appointed, from being an elector.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/ElectoralCollege2012.svg/320px-ElectoralCollege2012.svg.png", - "width": 320, - "height": 186 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T09:30:56Z", - "description": "institution that officially elects the President and Vice President of the United States", - "normalizedtitle": "Electoral College (United States)" - }, - { - "views": 89809, - "rank": 45, - "title": "Deaths_in_2016", - "pageid": 48857868, - "extract": "This is a chronology of deaths in 2016. Names are reported under the date of death. Names under each date are reported in alphabetical order by surname or pseudonym. Deaths of non-humans are reported here if they first have their own Wikipedia article. Notable persons without an article can be listed for one month after death to prompt creation of one.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T12:31:12Z", - "description": "Wikimedia list article", - "normalizedtitle": "Deaths in 2016" - }, - { - "views": 89602, - "rank": 46, - "title": "USS_Zumwalt", - "pageid": 4706917, - "extract": "USS Zumwalt (DDG-1000) is a guided missile destroyer of the United States Navy. She is the lead ship of the Zumwalt class and the first ship to be named for Admiral Elmo Zumwalt. Zumwalt has stealth capabilities, having a radar cross-section akin to a fishing boat despite her large size. On 7 December 2015, Zumwalt began her sea trial preparatory to joining the Pacific Fleet. The ship was commissioned in Baltimore on 15 October 2016.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/USS_Zumwalt_%28DDG-1000%29_at_night.jpg/320px-USS_Zumwalt_%28DDG-1000%29_at_night.jpg", - "width": 320, - "height": 213 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-10-25T23:32:29Z", - "description": "guided missile destroyer of the United States Navy", - "normalizedtitle": "USS Zumwalt" - }, - { - "views": 86474, - "rank": 47, - "title": "Anti-miscegenation_laws_in_the_United_States", - "pageid": 31646377, - "extract": "Anti-miscegenation laws were a part of American law since before the United States was established and remained so until ruled unconstitutional in 1967 by the U.S. Supreme Court in Loving v. Virginia. The term miscegenation was first used in 1863, during the American Civil War, by American journalists to discredit the abolitionist movement by stirring up debate over the prospect of black–white intermarriage after the abolition of slavery. In those of the original Thirteen Colonies that became states and enacted such laws, they were enacted as state law in the early 18th century; a century or more after the complete racialization of slavery.\nIn the United States, anti-miscegenation laws (also known as miscegenation laws) were state laws passed by individual states to prohibit miscegenation, nowadays more commonly referred to as interracial marriage and interracial sex.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/US_miscegenation.svg/320px-US_miscegenation.svg.png", - "width": 320, - "height": 198 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-05T21:43:47Z", - "normalizedtitle": "Anti-miscegenation laws in the United States" - }, - { - "views": 84013, - "rank": 48, - "title": "UFC_205", - "pageid": 50527598, - "extract": "UFC 205: Alvarez vs. McGregor is an upcoming mixed martial arts event promoted by the Ultimate Fighting Championship that will be held on November 12, 2016 at Madison Square Garden in New York City, New York.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/06/Eddie_Alvarez.jpg/274px-Eddie_Alvarez.jpg", - "width": 274, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T02:42:58Z", - "description": "mixed martial arts event", - "normalizedtitle": "UFC 205" - }, - { - "views": 82267, - "rank": 49, - "title": "Wallis_Simpson", - "pageid": 46854, - "extract": "Wallis, Duchess of Windsor (previously Wallis Simpson, Wallis Spencer, and Wallis Warfield; 19 June 1896 – 24 April 1986) was an American socialite. Her third husband, Prince Edward, Duke of Windsor, formerly King Edward VIII, abdicated his throne to marry her.\nWallis's father died shortly after her birth, and she and her widowed mother were partly supported by their wealthier relatives. Her first marriage, to U.S. naval officer Win Spencer, was punctuated by periods of separation and eventually ended in divorce. In 1934, during her second marriage, to Ernest Simpson, she allegedly became the mistress of Edward, Prince of Wales.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/33/Wallis_Simpson_-1936.JPG/252px-Wallis_Simpson_-1936.JPG", - "width": 252, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-06T19:54:20Z", - "description": "Wife of Edward VIII of the United Kingdom", - "normalizedtitle": "Wallis Simpson" - }, - { - "views": 82232, - "rank": 50, - "title": "Anne,_Princess_Royal", - "pageid": 125231, - "extract": "Anne, Princess Royal, KG KT GCVO GCStJ QSO GCL CD (Anne Elizabeth Alice Louise; born 15 August 1950) is the second child and only daughter of Queen Elizabeth II and Prince Philip, Duke of Edinburgh. At the time of her birth, she was third in the line of succession, behind her mother and elder brother Charles. She rose to second after her mother's accession, but is currently 12th in line.\nAnne is known for her charitable work, and is patron of over 200 organizations. She is also known for equestrian talents; she won two silver medals (1975) and one gold medal (1971) at the European Eventing Championships, and is the first member of the British Royal Family to have competed in the Olympic Games.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Princess_Anne_October_2015.jpg/216px-Princess_Anne_October_2015.jpg", - "width": 216, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-10-30T15:40:18Z", - "description": "daughter of Elizabeth II", - "normalizedtitle": "Anne, Princess Royal" - }, - { - "views": 80353, - "rank": 51, - "title": "Hacksaw_Ridge", - "pageid": 44490039, - "extract": "Hacksaw Ridge is a 2016 American biographical war film directed by Mel Gibson, written by Andrew Knight and Robert Schenkkan, and stars Andrew Garfield, Vince Vaughn, Sam Worthington, Luke Bracey, Hugo Weaving, Ryan Corr, Teresa Palmer, Richard Pyros and Rachel Griffiths. Principal photography began on September 29, 2015 in various locations around New South Wales including Sydney Olympic Park and lasted for 105 days, ending in December 2015.\nIt had its world premiere on September 4, 2016 at the 73rd Venice Film Festival, where it received a 10-minute standing ovation. The film was released in Australia on November 3, 2016 by Icon Film Distribution, and in United States on November 4, 2016, by Summit Entertainment. The film received positive reviews and has grossed $14 million.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Hacksaw_ridge.jpg/320px-Hacksaw_ridge.jpg", - "width": 320, - "height": 180 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T12:58:21Z", - "description": "2016 World War II biographical film", - "normalizedtitle": "Hacksaw Ridge" - }, - { - "views": 78798, - "rank": 52, - "title": "Emma_Stone", - "pageid": 3741746, - "extract": "Emily Jean \"Emma\" Stone (born November 6, 1988) is an American actress. Born and raised in Scottsdale, Arizona, Stone was drawn to acting as a child, and her first role was in a theater production of The Wind in the Willows in 2000. As a teenager, she relocated to Los Angeles with her mother, and made her television debut in VH1's In Search of the New Partridge Family (2004), a reality show that produced only an unsold pilot. After a series of small television roles, she won a Young Hollywood Award for her film debut in Superbad (2007), and received positive media attention for her role in Zombieland (2009).\nThe 2010 teen comedy Easy A was Stone's first starring role and earned her nominations for the BAFTA Rising Star Award and a Golden Globe Award.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/Emma_Stone_2014.jpg/248px-Emma_Stone_2014.jpg", - "width": 248, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T09:33:46Z", - "description": "American actress", - "normalizedtitle": "Emma Stone" - }, - { - "views": 77025, - "rank": 53, - "title": "Shivaay", - "pageid": 45605536, - "extract": "Shivaay is a 2016 Indian action thriller film directed and produced by Ajay Devgan under his banner Ajay Devgn FFilms. It features Ajay Devgn, Sayyeshaa Saigal, and Erika Kaar in lead roles. Mithoon has composed the film's score and soundtrack. British band The Vamps and composer Jasleen Royal are also a part of the music.\nShivaay was released on 28 October 2016 on the Diwali weekend.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/a/a1/Ajay_Devgan%27s_Shivaay_poster.jpg/240px-Ajay_Devgan%27s_Shivaay_poster.jpg", - "width": 240, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T14:05:12Z", - "normalizedtitle": "Shivaay" - }, - { - "views": 76293, - "rank": 54, - "title": "List_of_Black_Mirror_episodes", - "pageid": 38587686, - "extract": "Black Mirror is a British television series created by Charlie Brooker. The series is produced by Zeppotron for Endemol. Regarding the programme's content and structure, Brooker noted, \"each episode has a different cast, a different setting, even a different reality.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-05T15:28:08Z", - "description": "Wikimedia list article", - "normalizedtitle": "List of Black Mirror episodes" - }, - { - "views": 76068, - "rank": 55, - "title": "Tony_Ferguson", - "pageid": 31689180, - "extract": "Anthony Armand \"Tony\" Ferguson (born February 12, 1984) is an American professional mixed martial artist who is currently signed with the Ultimate Fighting Championship (UFC). Ferguson was the winner of The Ultimate Fighter 13. He competes in the lightweight division and is currently #3 in official UFC lightweight rankings.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T12:27:32Z", - "description": "American martial artist", - "normalizedtitle": "Tony Ferguson" - } - ] -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/nearby.json b/data-client/src/test/res/raw/nearby.json deleted file mode 100644 index 219d48e84b..0000000000 --- a/data-client/src/test/res/raw/nearby.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "batchcomplete": true, - "query": { - "pages": [ - { - "title": "Bean Hollow State Beach", - "coordinates": [ - { - "lat": 37.22583333, - "lon": -122.40888889, - "primary": "", - "globe": "earth" - } - ], - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Bean_Hollow_State_Beach_2003.jpg/320px-Bean_Hollow_State_Beach_2003.jpg", - "width": 320, - "height": 256 - }, - "terms": { - "description": [ - "state beach in California" - ] - } - }, - { - "title": "Pescadero, California", - "coordinates": [ - { - "lat": 37.255, - "lon": -122.38138889, - "primary": "", - "globe": "earth" - } - ], - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Pescadero_Main_Street.jpg/320px-Pescadero_Main_Street.jpg", - "width": 320, - "height": 263 - }, - "terms": { - "description": [ - "census-designated place in California, USA" - ] - } - }, - { - "title": "Pescadero State Beach", - "coordinates": [ - { - "lat": 37.26194444, - "lon": -122.41333333, - "primary": "", - "globe": "earth" - } - ], - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Pescadero_beach.JPG/320px-Pescadero_beach.JPG", - "width": 320, - "height": 213 - } - } - ] - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/nearby_empty.json b/data-client/src/test/res/raw/nearby_empty.json deleted file mode 100644 index 994604fcdd..0000000000 --- a/data-client/src/test/res/raw/nearby_empty.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "batchcomplete": true -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/nearby_missing_coords.json b/data-client/src/test/res/raw/nearby_missing_coords.json deleted file mode 100644 index 9c1279f507..0000000000 --- a/data-client/src/test/res/raw/nearby_missing_coords.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "batchcomplete": true, - "query": { - "pages": [ - { - "title": "Bean Hollow State Beach", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Bean_Hollow_State_Beach_2003.jpg/320px-Bean_Hollow_State_Beach_2003.jpg", - "width": 320, - "height": 256 - }, - "terms": { - "description": [ - "state beach in California" - ] - } - } - ] - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/nearby_missing_lat.json b/data-client/src/test/res/raw/nearby_missing_lat.json deleted file mode 100644 index e6e11d0ff1..0000000000 --- a/data-client/src/test/res/raw/nearby_missing_lat.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "batchcomplete": true, - "query": { - "pages": [ - { - "title": "Bean Hollow State Beach", - "coordinates": [ - { - "lon": -122.40888889, - "primary": "", - "globe": "earth" - } - ], - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Bean_Hollow_State_Beach_2003.jpg/320px-Bean_Hollow_State_Beach_2003.jpg", - "width": 320, - "height": 256 - }, - "terms": { - "description": [ - "state beach in California" - ] - } - } - ] - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/nearby_missing_lon.json b/data-client/src/test/res/raw/nearby_missing_lon.json deleted file mode 100644 index 250bb582ea..0000000000 --- a/data-client/src/test/res/raw/nearby_missing_lon.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "batchcomplete": true, - "query": { - "pages": [ - { - "title": "Bean Hollow State Beach", - "coordinates": [ - { - "lat": 37.22583333, - "primary": "", - "globe": "earth" - } - ], - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Bean_Hollow_State_Beach_2003.jpg/320px-Bean_Hollow_State_Beach_2003.jpg", - "width": 320, - "height": 256 - }, - "terms": { - "description": [ - "state beach in California" - ] - } - } - ] - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/news_2016_11_07.json b/data-client/src/test/res/raw/news_2016_11_07.json deleted file mode 100644 index e27ce14c67..0000000000 --- a/data-client/src/test/res/raw/news_2016_11_07.json +++ /dev/null @@ -1,226 +0,0 @@ -[ - { - "links": [ - { - "title": "2016_Chicago_Cubs_season", - "extract": "The 2016 Chicago Cubs season was the 145th season of the Chicago Cubs franchise, the 141st in the National League and the Cubs 101st season at Wrigley Field. To celebrate their 100 years at Wrigley, the Cubs wore a patch on their home uniforms and wore 1916 throwback uniforms on July 6.\nThey began the season on April 4, 2016 at the Los Angeles Angels and finished the regular season on October 2, 2016 at the Cincinnati Reds. They finished with the best record in Major League Baseball and won their first National League Central title since the 2008 season, winning by 17½ games. The team also reached the 100 win mark for the first time since 1935 and won 103 total games, the most wins for the franchise since 1910.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Union_Station_during_the_Cubs_2016_World_Series_run_IMG_6998.jpg/240px-Union_Station_during_the_Cubs_2016_World_Series_run_IMG_6998.jpg", - "width": 240, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T02:16:39Z", - "normalizedtitle": "2016 Chicago Cubs season" - }, - { - "title": "2016_Cleveland_Indians_season", - "extract": "The 2016 Cleveland Indians season was the 116th season for the franchise and the 23rd season at Progressive Field. The Indians won the American League Central Division for the first time since 2007 and also beat the Boston Red Sox in the Division Series for their first playoff win in nine years. They defeated the Toronto Blue Jays in five games in the American League Championship Series before losing to the Chicago Cubs in seven games in the 2016 World Series. This was their first appearance in the World Series since 1997.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-03T21:39:40Z", - "normalizedtitle": "2016 Cleveland Indians season" - }, - { - "title": "2016_World_Series", - "extract": "The 2016 World Series was the 112th edition of Major League Baseball's championship series, a best-of-seven playoff between the National League (NL) champion Chicago Cubs and the American League (AL) champion Cleveland Indians, the first meeting of those franchises in postseason history. The Indians had home-field advantage because the AL had won the 2016 All-Star Game. The Cubs defeated the Indians in seven games, their first World Series victory in 108 years. They clinched the Series in Game 7 with an 8–7 win in extra innings, marking the fifth time that a Game 7 had gone past nine innings, and the first one to have a rain delay, which happened just as the tenth inning was about to start. It was only the sixth time in World Series history that a team came back from a deficit of three games to one to win a championship.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Chicago_Cubs_Host_First_World_Series_Games_in_71_years.webm/320px--Chicago_Cubs_Host_First_World_Series_Games_in_71_years.webm.jpg", - "width": 320, - "height": 180 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T13:31:02Z", - "description": "112th edition of Major League Baseball's championship series", - "normalizedtitle": "2016 World Series" - }, - { - "title": "World_Series_Most_Valuable_Player_Award", - "extract": "The World Series Most Valuable Player (MVP) Award is given to the player deemed to have the most impact on his team's performance in the World Series, which is the final round of the Major League Baseball (MLB) postseason. The award was first presented in 1955 as the SPORT Magazine Award, but is now decided during the final game of the Series by a committee of reporters and officials present at the game.\nThe series follows a best-of-seven playoff format, and occurs after the Division Series and the League Championship Series (LCS). It is played by the winners of the National League Championship Series (NLCS) and the American League Championship Series (ALCS). The most recent champions are the Chicago Cubs, who won in the 2016 World Series.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Ben_Zobrist_with_2016_World_Series_MVP_trophy.jpg/213px-Ben_Zobrist_with_2016_World_Series_MVP_trophy.jpg", - "width": 213, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-05T16:04:29Z", - "description": "baseball award for the most important player in each World Series", - "normalizedtitle": "World Series Most Valuable Player Award" - }, - { - "title": "Ben_Zobrist", - "extract": "Benjamin Thomas Zobrist (/ˈzoʊbrɪst/; born May 26, 1981), nicknamed Zorilla, is an American professional baseball second baseman for the Chicago Cubs of Major League Baseball (MLB). He previously played for the Tampa Bay Devil Rays / Rays, his first MLB club and where he spend the majority of his career, and briefly for the Oakland Athletics and Kansas City Royals. A two-time World Series champion in consecutive seasons of 2015 with the Royals and 2016 with Cubs, Zobrist was the 2016 World Series Most Valuable Player.\nA versatile defender and a switch-hitter with a high walk rate, Zobrist has played roughly half his innings at second base, and has also spent significant time at shortstop and in right field. Thus, he has been often been referred to as a \"super utility player\".", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Ben_Zobrist_on_September_9%2C_2015.jpg/320px-Ben_Zobrist_on_September_9%2C_2015.jpg", - "width": 320, - "height": 264 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T05:03:33Z", - "description": "American professional baseball player", - "normalizedtitle": "Ben Zobrist" - } - ], - "story": "In baseball, the Chicago Cubs defeat the Cleveland Indians to win the World Series for the first time since 1908 (MVP Ben Zobrist pictured)." - }, - { - "links": [ - { - "title": "Hokkaido_Nippon-Ham_Fighters", - "extract": "The Hokkaido Nippon-Ham Fighters (北海道日本ハムファイターズ, Hokkaidō Nippon-Hamu Faitāzu) are a Japanese professional baseball team based in Sapporo, Hokkaidō. They compete in the Pacific League of Nippon Professional Baseball, playing the majority of their home games at the Sapporo Dome. The Fighters also host a select number of regional home games in cities across Hokkaidō, including Hakodate, Asahikawa, Kushiro, and Obihiro. The team's name comes from its parent organization, Nippon Ham, a major Japanese food processing company.\nFounded in 1946, the Fighters called Tokyo home for 58 years, as co-tenants of the Tokyo Dome with the Central League's Yomiuri Giants near the end of their tenure in the capital city.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/01/Nippon_Fighters_insignia.PNG", - "width": 125, - "height": 125 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T07:05:14Z", - "description": "Nippon Professional Baseball team in the Pacific League", - "normalizedtitle": "Hokkaido Nippon-Ham Fighters" - }, - { - "title": "Hiroshima_Toyo_Carp", - "extract": "The Hiroshima Toyo Carp (広島東洋カープ, Hiroshima Tōyō Kāpu) are a professional baseball team based in Hiroshima, Japan. They compete in the Central League of Nippon Professional Baseball. The team is primarily owned by the Matsuda family, led by Hajime Matsuda (松田元, Matsuda Hajime), who is a descendant of Mazda founder Jujiro Matsuda. Mazda is the largest single shareholder (34.2%), which is less than the portion owned by the Matsuda family (about 60%). Because of that, Mazda is not considered as the owner firm.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/08/Hiroshima_carp_insignia.png", - "width": 125, - "height": 125 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-07T10:09:01Z", - "description": "Nippon Professional Baseball team in the Central League", - "normalizedtitle": "Hiroshima Toyo Carp" - }, - { - "title": "2016_Japan_Series", - "extract": "The 2016 Japan Series was the 67th edition of Nippon Professional Baseball's postseason championship series. The Hiroshima Toyo Carp, champions of the Central League, played the Hokkaido Nippon-Ham Fighters, champions of the Pacific League, in a best-of-seven series beginning on October 22. The Japan Series was sponsored by the Sumitomo Mitsui Banking Corporation (SMBC) and was officially known as the 2016 SMBC Nippon Series.\nThe Fighters defeated the Carp in six games. Hiroshima took the first two games, and Hokkaido won the next four games to take the series.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Brad_Eldred_20130317_MAZDA_Zoom-Zoom_Stadium_Hiroshima.JPG/238px-Brad_Eldred_20130317_MAZDA_Zoom-Zoom_Stadium_Hiroshima.JPG", - "width": 238, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-04T10:11:46Z", - "normalizedtitle": "2016 Japan Series" - } - ], - "story": " In baseball, the Hokkaido Nippon-Ham Fighters defeat the Hiroshima Toyo Carp to win the Japan Series." - }, - { - "links": [ - { - "title": "Yazidis", - "extract": "The Yazidis (also Yezidis, Êzidî; /jəˈziːdiːz/ yə-ZEE-dees) are an ethnically Kurdish religious community or an ethno-religious group indigenous to northern Mesopotamia (see also Ezidkhan) who are strictly endogamous. Their religion, Yazidism is linked to ancient Mesopotamian religions and combines aspects of Zoroastrianism, Islam, Christianity and Judaism. Yazidis who marry with non-Yazidis are automatically considered to be converted to the religion of their partner and therefore are not permitted to call themselves Yazidis. They live primarily in the Nineveh Province of Iraq. Additional communities in Armenia, Georgia, Turkey, Iran, and Syria have been in decline since the 1990s as a result of significant migration to Europe, especially to Germany.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/Yezidis_of_Jabal.jpg/320px-Yezidis_of_Jabal.jpg", - "width": 320, - "height": 294 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-05T01:33:06Z", - "description": "religious and ethnic minority group of Kurds", - "normalizedtitle": "Yazidis" - }, - { - "title": "Nadia_Murad", - "extract": "Nadia Murad Basee Taha (Kurdish: نادیە موراد / Nadiye Murad‎; born 1993) is a Yazidi human rights activist, Nobel Peace Prize nominee and since September 2016 the first Goodwill Ambassador for the Dignity of Survivors of Human Trafficking of the United Nations. She was kidnapped and held by the Islamic State in August 2014.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-03T03:05:31Z", - "description": "Yazidi human rights activist, Nobel Peace Prize nominee and first Goodwill Ambassador for the Dignity of Survivors of Human Trafficking of the United Nations", - "normalizedtitle": "Nadia Murad" - }, - { - "title": "Lamiya_Aji_Bashar", - "extract": "Lamiya Aji Bashar (Kurdish: لمياء حجي بشار) is a Yazidi human rights activist. She was awarded the Sakharov Prize jointly with Nadia Murad in 2016.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-05T20:27:55Z", - "normalizedtitle": "Lamiya Aji Bashar" - }, - { - "title": "Sakharov_Prize", - "extract": "The Sakharov Prize for Freedom of Thought, commonly known as the Sakharov Prize, honours individuals and groups of people who have dedicated their lives to the defense of human rights and freedom of thought. Named after Russian scientist and dissident Andrei Sakharov, the prize was established in December 1988 by the European Parliament. A shortlist of nominees is drawn up by the Committee on Foreign Affairs and the Committee on Development, with the winner announced in October. The prize is accompanied by a monetary award of €50,000.\nThe first prize was awarded jointly to South African Nelson Mandela and Russian Anatoly Marchenko.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Remise_du_Prix_Sakharov_%C3%A0_Aung_San_Suu_Kyi_Strasbourg_22_octobre_2013-21.jpg/320px-Remise_du_Prix_Sakharov_%C3%A0_Aung_San_Suu_Kyi_Strasbourg_22_octobre_2013-21.jpg", - "width": 320, - "height": 213 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-04T13:22:10Z", - "description": "award", - "normalizedtitle": "Sakharov Prize" - } - ], - "story": " Yazidi human rights activists Nadia Murad and Lamiya Aji Bashar win the Sakharov Prize." - }, - { - "links": [ - { - "title": "2016_Quetta_police_training_college_attack", - "extract": "On 24 October 2016, three heavily armed terrorists carried out an attack on the Balochistan police training college in Quetta, Pakistan, killing 61 cadets and injuring more than 165 others. The Islamic State of Iraq and the Levant – Khorasan Province claimed responsibility for the attack, and Pakistan-based Lashkar-e-Jhangvi claimed to have collaborated with them. According to Pakistani authorities, the assailants came from Afghanistan and were in contact with their handlers there while perpetrating the attack.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-06T23:35:03Z", - "normalizedtitle": "2016 Quetta police training college attack" - }, - { - "title": "Quetta", - "extract": "Quetta (Urdu: کوئٹہ‎, Pashto: کوټه‎, Balochi: کویته pronunciation ) is the provincial capital of Balochistan, Pakistan and the ninth-largest city of Pakistan. The city is known as the fruit garden of Pakistan, due to the numerous fruit orchards in and around it, and the large variety of fruits and dry fruits produced there. The city was also known as Little Paris in the past due to its beauty and geographical location. The immediate area has long been one of pastures and mountains, with varied plants and animals relative to the dry plains to the west. Quetta is at an average elevation of 1,680 meters (5,510 feet) above sea level, making it Pakistan's only high-altitude major city.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Jinnah_Road%2C_Quetta.JPG/320px-Jinnah_Road%2C_Quetta.JPG", - "width": 320, - "height": 211 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-05T22:02:45Z", - "description": "city in Pakistan", - "normalizedtitle": "Quetta" - } - ], - "story": " More than 60 people are killed in an attack on a police training centre in Quetta, Pakistan." - }, - { - "links": [ - { - "title": "2016_Eséka_train_derailment", - "extract": "On 21 October 2016, a Camrail inter-city passenger train travelling from Cameroon's capital Yaoundé to its largest city Douala derailed in Eséka, Centre Region. By 30 October 2016, the official number of casualties had reached 79 dead, with 550 injured.\nIt was the deadliest rail accident on the African continent since the August 2007 Benaleka train accident.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/54/Cameroon_physical_map.svg/222px-Cameroon_physical_map.svg.png", - "width": 222, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-06T20:46:01Z", - "description": "train derailment in Cameroon", - "normalizedtitle": "2016 Eséka train derailment" - }, - { - "title": "Cameroon", - "extract": "Cameroon (/ˌkæməˈruːn/; French: Cameroun), officially the Republic of Cameroon (French: République du Cameroun), is a country in Central Africa . It is bordered by Nigeria to the west; Chad to the northeast; the Central African Republic to the east; and Equatorial Guinea, Gabon, and the Republic of the Congo to the south. Cameroon's coastline lies on the Bight of Bonny, part of the Gulf of Guinea and the Atlantic Ocean.\nCameroon is home to more than 1738 different linguistic groups. French and English are the official languages.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Flag_of_Cameroon.svg/320px-Flag_of_Cameroon.svg.png", - "width": 320, - "height": 213 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-03T00:25:57Z", - "description": "country in Africa", - "normalizedtitle": "Cameroon" - } - ], - "story": " At least 70 people are killed and around 600 others injured in a train derailment in Cameroon." - } -] \ No newline at end of file diff --git a/data-client/src/test/res/raw/notification_revert.json b/data-client/src/test/res/raw/notification_revert.json deleted file mode 100644 index 7241bc82af..0000000000 --- a/data-client/src/test/res/raw/notification_revert.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "wiki": "wikidatawiki", - "id": "100609428", - "type": "reverted", - "category": "reverted", - "timestamp": { - "utciso8601": "2017-01-05T17:10:56Z", - "utcunix": "1483636256", - "unix": "1483636256", - "utcmw": "20170105171056", - "mw": "20170105171056", - "date": "Today" - }, - "title": { - "full": "Q1140626", - "namespace": "", - "namespace-key": 0, - "text": "Q1140626" - }, - "agent": { - "id": 0, - "name": "User1" - }, - "revid": 424546621, - "read": "20170105172611", - "targetpages": [] -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/notifications.json b/data-client/src/test/res/raw/notifications.json deleted file mode 100644 index 81fff6ddec..0000000000 --- a/data-client/src/test/res/raw/notifications.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "batchcomplete": true, - "query": { - "notifications": { - "list": [ - { - "wiki": "enwiki", - "id": "87425134", - "type": "edit-thank", - "category": "edit-thank", - "timestamp": { - "utciso8601": "2016-09-07T18:16:25Z", - "utcunix": "1473272185", - "unix": "1473272185", - "utcmw": "20160907181625", - "mw": "20160907141625", - "date": "7 September" - }, - "title": { - "full": "PageTitle", - "namespace": "User", - "namespace-key": 2, - "text": "PageTitle" - }, - "agent": { - "id": 19707259, - "name": "User1" - }, - "revid": 738229987, - "read": "20170105211531", - "targetpages": [] - }, - { - "wiki": "wikidatawiki", - "id": "100609428", - "type": "reverted", - "category": "reverted", - "timestamp": { - "utciso8601": "2017-01-05T17:10:56Z", - "utcunix": "1483636256", - "unix": "1483636256", - "utcmw": "20170105171056", - "mw": "20170105171056", - "date": "Today" - }, - "title": { - "full": "Q1140626", - "namespace": "", - "namespace-key": 0, - "text": "Q1140626" - }, - "agent": { - "id": 0, - "name": "User2" - }, - "revid": 424546621, - "read": "20170105172611", - "targetpages": [] - } - ], - "continue": null - } - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/onthisday_02_06.json b/data-client/src/test/res/raw/onthisday_02_06.json deleted file mode 100644 index 513b897000..0000000000 --- a/data-client/src/test/res/raw/onthisday_02_06.json +++ /dev/null @@ -1,14207 +0,0 @@ -{ - "selected": [ - { - "text": "As the military dictatorship came to an end, Argentina's first democratic election in a decade resulted in Raúl Alfonsín (pictured) being elected President of Argentina.", - "pages": [ - { - "title": "National_Reorganization_Process", - "displaytitle": "National Reorganization Process", - "pageid": 2050402, - "extract": "The National Reorganization Process (Spanish: Proceso de Reorganización Nacional, often simply el Proceso, \"the Process\") was the name used by its leaders for the military dictatorship that ruled Argentina from 1976 to 1983. In Argentina it is often known simply as la última junta militar (the last military junta) or la última dictadura (the last dictatorship), because there have been several.\nThe Argentine military seized political power during the March 1976 coup, amid violent factional conflicts between supporters of recently deceased President Juan Domingo Perón. The junta continued the Dirty War.", - "extract_html": "

The National Reorganization Process (Spanish: Proceso de Reorganización Nacional, often simply el Proceso, \"the Process\") was the name used by its leaders for the military dictatorship that ruled Argentina from 1976 to 1983. In Argentina it is often known simply as la última junta militar (the last military junta) or la última dictadura (the last dictatorship), because there have been several.

\n

The Argentine military seized political power during the March 1976 coup, amid violent factional conflicts between supporters of recently deceased President Juan Domingo Perón. The junta continued the Dirty War.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Flag_of_Argentina.svg/320px-Flag_of_Argentina.svg.png", - "width": 320, - "height": 200, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/1a/Flag_of_Argentina.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/1a/Flag_of_Argentina.svg", - "width": 800, - "height": 500 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-24T16:08:20Z", - "normalizedtitle": "National Reorganization Process" - }, - { - "isTopic": true, - "title": "Argentine_general_election,_1983", - "displaytitle": "Argentine general election, 1983", - "pageid": 14097222, - "extract": "The Argentine general election of 1983 was held on 30 October and marked the return of constitutional rule following the self-styled National Reorganization Process dictatorship installed in 1976.", - "extract_html": "

The Argentine general election of 1983 was held on 30 October and marked the return of constitutional rule following the self-styled National Reorganization Process dictatorship installed in 1976.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/62/Alfonsin.jpg", - "width": 176, - "height": 280, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/62/Alfonsin.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/62/Alfonsin.jpg", - "width": 176, - "height": 280 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T10:10:54Z", - "normalizedtitle": "Argentine general election, 1983" - }, - { - "title": "Raúl_Alfonsín", - "displaytitle": "Raúl Alfonsín", - "pageid": 339517, - "extract": "Raúl Ricardo Alfonsín (12 March 1927 – 31 March 2009) was an Argentine lawyer and statesman who served as the President of Argentina from 10 December 1983 to 8 July 1989. Alfonsín was the first democratically-elected president after more than seven years of military dictatorship and is considered the \"father of modern democracy in Argentina\". Born in Chascomús, Buenos Aires Province, he began his studies of law at the National University of La Plata and was a graduate of the University of Buenos Aires. He was affiliated with the Radical Civic Union (UCR), joining the faction of Ricardo Balbín after the party split.\nHe was elected a deputy in the legislature of the Buenos Aires province in 1958, during the presidency of Arturo Frondizi, and a national deputy during the presidency of Arturo Umberto Illia. He opposed both sides of the Dirty War, and several times filed a writ of Habeas corpus, requesting the freedom of victims of forced disappearances, during the National Reorganization Process.", - "extract_html": "

Raúl Ricardo Alfonsín (12 March 1927 – 31 March 2009) was an Argentine lawyer and statesman who served as the President of Argentina from 10 December 1983 to 8 July 1989. Alfonsín was the first democratically-elected president after more than seven years of military dictatorship and is considered the \"father of modern democracy in Argentina\". Born in Chascomús, Buenos Aires Province, he began his studies of law at the National University of La Plata and was a graduate of the University of Buenos Aires. He was affiliated with the Radical Civic Union (UCR), joining the faction of Ricardo Balbín after the party split.

\n

He was elected a deputy in the legislature of the Buenos Aires province in 1958, during the presidency of Arturo Frondizi, and a national deputy during the presidency of Arturo Umberto Illia. He opposed both sides of the Dirty War, and several times filed a writ of Habeas corpus, requesting the freedom of victims of forced disappearances, during the National Reorganization Process.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Ra%C3%BAl_Alfonsin.jpg/217px-Ra%C3%BAl_Alfonsin.jpg", - "width": 217, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/c8/Ra%C3%BAl_Alfonsin.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/c8/Ra%C3%BAl_Alfonsin.jpg", - "width": 260, - "height": 383 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T20:58:08Z", - "description": "Former President of Argentina", - "normalizedtitle": "Raúl Alfonsín" - }, - { - "title": "President_of_Argentina", - "displaytitle": "President of Argentina", - "pageid": 229473, - "extract": "The President of the Argentine Republic (Spanish: Presidente de la Nación Argentina), usually known as the President of Argentina, is both head of state and head of government of Argentina. Under the national Constitution, the President is also the chief executive of the federal government and Commander-in-Chief of the armed forces.\nThrough Argentine history, the office of the Head of State has undergone many changes, both in its title as in its features and powers. Current President Mauricio Macri was sworn into office on 10 December 2015.", - "extract_html": "

The President of the Argentine Republic (Spanish: Presidente de la Nación Argentina), usually known as the President of Argentina, is both head of state and head of government of Argentina. Under the national Constitution, the President is also the chief executive of the federal government and Commander-in-Chief of the armed forces.

\n

Through Argentine history, the office of the Head of State has undergone many changes, both in its title as in its features and powers. Current President Mauricio Macri was sworn into office on 10 December 2015.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Presidential_Standard_of_Argentina.svg/320px-Presidential_Standard_of_Argentina.svg.png", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/da/Presidential_Standard_of_Argentina.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/da/Presidential_Standard_of_Argentina.svg", - "width": 900, - "height": 900 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-02T23:23:01Z", - "description": "Head of State of Argentina", - "normalizedtitle": "President of Argentina" - } - ], - "year": 1983 - }, - { - "text": "The Soviet hydrogen bomb Tsar Bomba, the largest nuclear weapon ever detonated, was set off over Novaya Zemlya in the Arctic Ocean as a test.", - "pages": [ - { - "isTopic": true, - "title": "Tsar_Bomba", - "displaytitle": "Tsar Bomba", - "pageid": 92214, - "extract": "\nTsar Bomba (Russian: Царь-бомба; \"Tsar-bomb\") was the Western nickname for the Soviet RDS-220 hydrogen bomb (code name Ivan or Vanya), the most powerful nuclear weapon ever detonated. Its test on 30 October 1961 remains the most powerful man-made explosion in history. It was also referred to as Kuzkina mat (Russian: Кузькина мать; \"Kuzma's mother\"), possibly referring to First secretary Nikita Khrushchev's promise to show the United States a Kuzkina mat (an idiom roughly translating to \"We'll show you!\") at a 1960 session of United Nations General Assembly.\nThe bomb had a yield of 50 megaton TNT (210 PJ). In theory, it had a maximum yield of 100 megatons if it were to have included a U-238 tamper, but because only one bomb was built, this was never demonstrated.", - "extract_html": "

\n

Tsar Bomba (Russian: Царь-бомба; \"Tsar-bomb\") was the Western nickname for the Soviet RDS-220 hydrogen bomb (code name Ivan or Vanya), the most powerful nuclear weapon ever detonated. Its test on 30 October 1961 remains the most powerful man-made explosion in history. It was also referred to as Kuzkina mat (Russian: Кузькина мать; \"Kuzma's mother\"), possibly referring to First secretary Nikita Khrushchev's promise to show the United States a Kuzkina mat (an idiom roughly translating to \"We'll show you!\") at a 1960 session of United Nations General Assembly.

\n

The bomb had a yield of 50 megaton TNT (210 PJ). In theory, it had a maximum yield of 100 megatons if it were to have included a U-238 tamper, but because only one bomb was built, this was never demonstrated.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/c/c9/Tsar_photo11.jpg/320px-Tsar_photo11.jpg", - "width": 320, - "height": 251, - "original": "https://upload.wikimedia.org/wikipedia/en/c/c9/Tsar_photo11.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/c/c9/Tsar_photo11.jpg", - "width": 325, - "height": 255 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T16:42:24Z", - "description": "most powerful nuclear weapon ever detonated, in 1961 (2015)", - "coordinates": { - "lat": 73.80722222, - "lon": 54.98166667 - }, - "normalizedtitle": "Tsar Bomba" - }, - { - "title": "Nuclear_weapon", - "displaytitle": "Nuclear weapon", - "pageid": 21785, - "extract": "A nuclear weapon is an explosive device that derives its destructive force from nuclear reactions, either fission (fission bomb) or from a combination of fission and fusion reactions (thermonuclear bomb). Both bomb types release large quantities of energy from relatively small amounts of matter. The first test of a fission (\"atomic\") bomb released an amount of energy approximately equal to 20,000 tons of TNT (84 TJ). The first thermonuclear (\"hydrogen\") bomb test released energy approximately equal to 10 million tons of TNT (42 PJ). A thermonuclear weapon weighing little more than 2,400 pounds (1,100 kg) can release energy equal to more than 1.2 million tons of TNT (5.0 PJ).", - "extract_html": "

A nuclear weapon is an explosive device that derives its destructive force from nuclear reactions, either fission (fission bomb) or from a combination of fission and fusion reactions (thermonuclear bomb). Both bomb types release large quantities of energy from relatively small amounts of matter. The first test of a fission (\"atomic\") bomb released an amount of energy approximately equal to 20,000 tons of TNT (84 TJ). The first thermonuclear (\"hydrogen\") bomb test released energy approximately equal to 10 million tons of TNT (42 PJ). A thermonuclear weapon weighing little more than 2,400 pounds (1,100 kg) can release energy equal to more than 1.2 million tons of TNT (5.0 PJ).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Nagasakibomb.jpg/268px-Nagasakibomb.jpg", - "width": 268, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/e0/Nagasakibomb.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e0/Nagasakibomb.jpg", - "width": 3245, - "height": 3877 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T20:02:06Z", - "description": "explosive device that derives its destructive force from nuclear reactions", - "normalizedtitle": "Nuclear weapon" - }, - { - "title": "Novaya_Zemlya", - "displaytitle": "Novaya Zemlya", - "pageid": 21031452, - "extract": "Novaya Zemlya (Russian: Но́вая Земля́; IPA: [ˈnovəjə zʲɪmˈlʲa], lit. new land), also known, especially in Dutch, as Nova Zembla, is an archipelago in the Arctic Ocean in northern Russia and the extreme northeast of Europe, the easternmost point of Europe lying at Cape Flissingsky on the Northern island. Novaya Zemlya is composed of two islands, the northern Severny Island and the southern Yuzhny Island, which are separated by Matochkin Strait. Administratively, it is incorporated as Novaya Zemlya District, one of the twenty-one in Arkhangelsk Oblast, Russia. Municipally, it is incorporated as Novaya Zemlya Urban Okrug.\nIts population as of the 2010 Census was 2,429, of which 1,972 resided in Belushya Guba, an urban-type settlement that is the administrative center of Novaya Zemlya District.", - "extract_html": "

Novaya Zemlya (Russian: Но́вая Земля́; IPA: [ˈnovəjə zʲɪmˈlʲa], lit. new land), also known, especially in Dutch, as Nova Zembla, is an archipelago in the Arctic Ocean in northern Russia and the extreme northeast of Europe, the easternmost point of Europe lying at Cape Flissingsky on the Northern island. Novaya Zemlya is composed of two islands, the northern Severny Island and the southern Yuzhny Island, which are separated by Matochkin Strait. Administratively, it is incorporated as Novaya Zemlya District, one of the twenty-one in Arkhangelsk Oblast, Russia. Municipally, it is incorporated as Novaya Zemlya Urban Okrug.

\n

Its population as of the 2010 Census was 2,429, of which 1,972 resided in Belushya Guba, an urban-type settlement that is the administrative center of Novaya Zemlya District.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Novaya_Zemlya.svg/227px-Novaya_Zemlya.svg.png", - "width": 227, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/83/Novaya_Zemlya.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/83/Novaya_Zemlya.svg", - "width": 448, - "height": 631 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T00:32:26Z", - "description": "Arctic archipelago", - "coordinates": { - "lat": 74, - "lon": 56 - }, - "normalizedtitle": "Novaya Zemlya" - } - ], - "year": 1961 - }, - { - "text": "The Armistice of Mudros was signed in Moudros in the Lesbos Prefecture, Greece, ending the hostilities in the Middle-Eastern theatre of World War I, and paving the way for the occupation of Constantinople and the subsequent partitioning of the Ottoman Empire.", - "pages": [ - { - "isTopic": true, - "title": "Armistice_of_Mudros", - "displaytitle": "Armistice of Mudros", - "pageid": 1891807, - "extract": "The Armistice of Mudros (Turkish: Mondros Mütarekesi), concluded on 30 October 1918, ended the hostilities, at noon the next day, in the Middle Eastern theatre between the Ottoman Empire and the Allies of World War I. It was signed by the Ottoman Minister of Marine Affairs Rauf Bey and the British Admiral Somerset Arthur Gough-Calthorpe, on board HMS Agamemnon in Moudros harbor on the Greek island of Lemnos.\nAs part of several conditions to the armistice, the Ottomans surrendered their remaining garrisons outside Anatolia, as well as granted the Allies the right to occupy forts controlling the Straits of the Dardanelles and the Bosporus; and the right to occupy the same \"in case of disorder\" any Ottoman territory in the event of a threat to their security. The Ottoman army including the Ottoman air force was demobilized, and all ports, railways, and other strategic points were made available for use by the Allies. In the Caucasus, the Ottomans had to retreat to within the pre-war borders between the Ottoman and the Russian Empires.\nThe armistice was followed by the occupation of Constantinople (Istanbul) and the subsequent partitioning of the Ottoman Empire. The Treaty of Sèvres (10 August 1920) which was signed in the aftermath of World War I was never ratified by the Ottoman Parliament in Istanbul (the Ottoman Parliament was disbanded by the Allies on 11 April 1920 due to the overwhelming opposition of the Turkish MPs to the provisions discussed in Sèvres).", - "extract_html": "

The Armistice of Mudros (Turkish: Mondros Mütarekesi), concluded on 30 October 1918, ended the hostilities, at noon the next day, in the Middle Eastern theatre between the Ottoman Empire and the Allies of World War I. It was signed by the Ottoman Minister of Marine Affairs Rauf Bey and the British Admiral Somerset Arthur Gough-Calthorpe, on board HMS Agamemnon in Moudros harbor on the Greek island of Lemnos.

\n

As part of several conditions to the armistice, the Ottomans surrendered their remaining garrisons outside Anatolia, as well as granted the Allies the right to occupy forts controlling the Straits of the Dardanelles and the Bosporus; and the right to occupy the same \"in case of disorder\" any Ottoman territory in the event of a threat to their security. The Ottoman army including the Ottoman air force was demobilized, and all ports, railways, and other strategic points were made available for use by the Allies. In the Caucasus, the Ottomans had to retreat to within the pre-war borders between the Ottoman and the Russian Empires.

\n

The armistice was followed by the occupation of Constantinople (Istanbul) and the subsequent partitioning of the Ottoman Empire. The Treaty of Sèvres (10 August 1920) which was signed in the aftermath of World War I was never ratified by the Ottoman Parliament in Istanbul (the Ottoman Parliament was disbanded by the Allies on 11 April 1920 due to the overwhelming opposition of the Turkish MPs to the provisions discussed in Sèvres).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Agamemnon_at_Mudros.jpg/320px-Agamemnon_at_Mudros.jpg", - "width": 320, - "height": 196, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/5f/Agamemnon_at_Mudros.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/5f/Agamemnon_at_Mudros.jpg", - "width": 408, - "height": 250 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-21T20:57:56Z", - "description": "peace treaty", - "normalizedtitle": "Armistice of Mudros" - }, - { - "title": "Moudros", - "displaytitle": "Moudros", - "pageid": 6245106, - "extract": "Moudros (Greek: Μούδρος) is a town and a former municipality on the island of Lemnos, North Aegean, Greece. Since the 2011 local government reform it is part of the municipality Lemnos, of which it is a municipal unit. It covers the entire eastern peninsula of the island, with a land area of 185.127 km², covering 38.8% of the island's territory. The municipal seat was the town of Moúdros (pop. 974).", - "extract_html": "

Moudros (Greek: Μούδρος) is a town and a former municipality on the island of Lemnos, North Aegean, Greece. Since the 2011 local government reform it is part of the municipality Lemnos, of which it is a municipal unit. It covers the entire eastern peninsula of the island, with a land area of 185.127 km², covering 38.8% of the island's territory. The municipal seat was the town of Moúdros (pop. 974).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Greece_location_map.svg/320px-Greece_location_map.svg.png", - "width": 320, - "height": 263, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/de/Greece_location_map.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/de/Greece_location_map.svg", - "width": 1003, - "height": 825 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-19T22:42:09Z", - "description": "village in Greece", - "coordinates": { - "lat": 39.86666667, - "lon": 25.26666667 - }, - "normalizedtitle": "Moudros" - }, - { - "title": "Lesbos_Prefecture", - "displaytitle": "Lesbos Prefecture", - "pageid": 54136, - "extract": "Lesbos Prefecture (Greek: Νομός Λέσβου) was one of the prefectures of Greece. It comprised three main islands: Lesbos itself, Lemnos, and the smaller island of Agios Efstratios. In 2011 the prefecture was abolished and the territory is now covered by the regional units of Lesbos and Lemnos.", - "extract_html": "

Lesbos Prefecture (Greek: Νομός Λέσβου) was one of the prefectures of Greece. It comprised three main islands: Lesbos itself, Lemnos, and the smaller island of Agios Efstratios. In 2011 the prefecture was abolished and the territory is now covered by the regional units of Lesbos and Lemnos.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Nomos_Lesvou.png/320px-Nomos_Lesvou.png", - "width": 320, - "height": 272, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/0e/Nomos_Lesvou.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/0e/Nomos_Lesvou.png", - "width": 800, - "height": 679 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2014-03-04T05:55:31Z", - "description": "prefecture of Greece", - "coordinates": { - "lat": 39.16666667, - "lon": 26.33333333 - }, - "normalizedtitle": "Lesbos Prefecture" - }, - { - "title": "Middle-Eastern_theatre_of_World_War_I", - "displaytitle": "Middle-Eastern theatre of World War I", - "pageid": 3093402, - "extract": "The Middle-Eastern theatre of World War I saw action between 29 October 1914 and 30 October 1918. The combatants were, on one side, the Ottoman Empire (including Kurds and some Arab tribes), with some assistance from the other Central Powers; and on the other side, the British (with the help of Jews, Greeks, Assyrians and the majority of the Arabs), the Russians (with the help of Armenians) and the French from among the Allies of World War I. There were five main campaigns: the Sinai and Palestine Campaign, the Mesopotamian Campaign, the Caucasus Campaign, the Persian Campaign, and the Gallipoli Campaign. There were also several minor campaigns: the Senussi Campaign, Arab Campaign, and South Arabia Campaign.\nBoth sides used local asymmetrical forces in the region. On the Allied side were Arabs who participated in the Arab Revolt and the Armenian militia who participated in the Armenian Resistance during the Armenian Genocide; along with Armenian volunteer units, the Armenian militia formed the Armenian Corps of the First Republic of Armenia in 1918. In addition, the Assyrians joined the Allies following the Assyrian genocide, instigating the Assyrian war of independence.", - "extract_html": "

The Middle-Eastern theatre of World War I saw action between 29 October 1914 and 30 October 1918. The combatants were, on one side, the Ottoman Empire (including Kurds and some Arab tribes), with some assistance from the other Central Powers; and on the other side, the British (with the help of Jews, Greeks, Assyrians and the majority of the Arabs), the Russians (with the help of Armenians) and the French from among the Allies of World War I. There were five main campaigns: the Sinai and Palestine Campaign, the Mesopotamian Campaign, the Caucasus Campaign, the Persian Campaign, and the Gallipoli Campaign. There were also several minor campaigns: the Senussi Campaign, Arab Campaign, and South Arabia Campaign.

\n

Both sides used local asymmetrical forces in the region. On the Allied side were Arabs who participated in the Arab Revolt and the Armenian militia who participated in the Armenian Resistance during the Armenian Genocide; along with Armenian volunteer units, the Armenian militia formed the Armenian Corps of the First Republic of Armenia in 1918. In addition, the Assyrians joined the Allies following the Assyrian genocide, instigating the Assyrian war of independence.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/G.C._18_March_1915_Gallipoli_Campaign_Article.jpg/235px-G.C._18_March_1915_Gallipoli_Campaign_Article.jpg", - "width": 235, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/4f/G.C._18_March_1915_Gallipoli_Campaign_Article.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/4f/G.C._18_March_1915_Gallipoli_Campaign_Article.jpg", - "width": 442, - "height": 601 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-09T22:12:18Z", - "description": "scene of action between 29 October 1914, and 30 October 1918", - "normalizedtitle": "Middle-Eastern theatre of World War I" - }, - { - "title": "Occupation_of_Constantinople", - "displaytitle": "Occupation of Constantinople", - "pageid": 8333286, - "extract": "The Occupation of Constantinople (Turkish: İstanbul'un İşgali) (November 13, 1918 – September 23, 1923), the capital of the Ottoman Empire, by British, French and Italian forces, took place in accordance with the Armistice of Mudros, which ended Ottoman participation in the First World War. The first French troops entered the city on November 12, 1918, followed by British troops the next day. The Italian troops landed in Galata on February 7, 1919.\nAllied troops occupied zones based on the sections of Constantinople (Istanbul) and set up an Allied military administration early in December 1918. The occupation had two stages: the initial phase in accordance with the Armistice gave way in 1920 to a more formal arrangement under the Treaty of Sèvres. Ultimately, the Treaty of Lausanne, signed July 24, 1923, led to the end of the occupation.", - "extract_html": "

The Occupation of Constantinople (Turkish: İstanbul'un İşgali) (November 13, 1918 – September 23, 1923), the capital of the Ottoman Empire, by British, French and Italian forces, took place in accordance with the Armistice of Mudros, which ended Ottoman participation in the First World War. The first French troops entered the city on November 12, 1918, followed by British troops the next day. The Italian troops landed in Galata on February 7, 1919.

\n

Allied troops occupied zones based on the sections of Constantinople (Istanbul) and set up an Allied military administration early in December 1918. The occupation had two stages: the initial phase in accordance with the Armistice gave way in 1920 to a more formal arrangement under the Treaty of Sèvres. Ultimately, the Treaty of Lausanne, signed July 24, 1923, led to the end of the occupation.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Occupation_of_Constantinople_2.jpg/320px-Occupation_of_Constantinople_2.jpg", - "width": 320, - "height": 195, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/85/Occupation_of_Constantinople_2.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/85/Occupation_of_Constantinople_2.jpg", - "width": 500, - "height": 305 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T05:06:40Z", - "normalizedtitle": "Occupation of Constantinople" - }, - { - "title": "Partition_of_the_Ottoman_Empire", - "displaytitle": "Partition of the Ottoman Empire", - "pageid": 7695456, - "extract": "The partition of the Ottoman Empire (Armistice of Mudros, 30 October 1918 – Abolition of the Ottoman Sultanate, 1 November 1922) was a political event that occurred after World War I and the occupation of Constantinople by British, French and Italian troops in November 1918. The partitioning was planned in several agreements made by the Allies early in the course of World War I, notably the Sykes-Picot Agreement. As world war loomed, the Ottoman Empire sought protection but was rejected by Britain, France, and Russia, and finally formed the Ottoman–German Alliance. The huge conglomeration of territories and peoples that formerly comprised the Ottoman Empire was divided into several new states. The Ottoman Empire had been the leading Islamic state in geopolitical, cultural and ideological terms.", - "extract_html": "

The partition of the Ottoman Empire (Armistice of Mudros, 30 October 1918 – Abolition of the Ottoman Sultanate, 1 November 1922) was a political event that occurred after World War I and the occupation of Constantinople by British, French and Italian troops in November 1918. The partitioning was planned in several agreements made by the Allies early in the course of World War I, notably the Sykes-Picot Agreement. As world war loomed, the Ottoman Empire sought protection but was rejected by Britain, France, and Russia, and finally formed the Ottoman–German Alliance. The huge conglomeration of territories and peoples that formerly comprised the Ottoman Empire was divided into several new states. The Ottoman Empire had been the leading Islamic state in geopolitical, cultural and ideological terms.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Osmanli-nisani.svg/269px-Osmanli-nisani.svg.png", - "width": 269, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2b/Osmanli-nisani.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2b/Osmanli-nisani.svg", - "width": 1643, - "height": 1955 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-17T15:56:52Z", - "description": "Wikimedia list article", - "normalizedtitle": "Partition of the Ottoman Empire" - } - ], - "year": 1918 - }, - { - "text": "King Lobengula of Matabeleland granted the Rudd Concession to agents of Cecil Rhodes, setting in motion the creation of the British South Africa Company.", - "pages": [ - { - "title": "Lobengula", - "displaytitle": "Lobengula", - "pageid": 641929, - "extract": "Lobengula Khumalo (1845–1894) was the second and last king of the Northern Ndebele people (historically called Matabele in English).", - "extract_html": "

Lobengula Khumalo (1845–1894) was the second and last king of the Northern Ndebele people (historically called Matabele in English).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Lobengula-image.jpg/227px-Lobengula-image.jpg", - "width": 227, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/63/Lobengula-image.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/63/Lobengula-image.jpg", - "width": 536, - "height": 754 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-21T01:28:43Z", - "description": "King of Matabeleland", - "normalizedtitle": "Lobengula" - }, - { - "title": "Matabeleland", - "displaytitle": "Matabeleland", - "pageid": 814066, - "extract": "Modern-day Matabeleland is a region in Zimbabwe divided into three provinces: Matabeleland North, Bulawayo and Matabeleland South. These provinces are in the west and south-west of Zimbabwe, between the Limpopo and Zambezi rivers. The region is named after its inhabitants the Ndebele people. Other ethnic groups who inhabit parts of Matabeleland include the Tonga, Kalanga, Venda, Chewa, Khoi Sani, Nambia, Shangaan, Swati, Sotho, Shona, Tswana, Xhosa and Zulu. As of August 2012, according to the ZIMSAT or Zimbabwe national statistics agency, the southern part of the region had 683,893 people, with the make up of 326,697 males and 356,926 females with an average size household of 4.4 in an area of 54,172 square kilometres (20,916 sq mi).", - "extract_html": "

Modern-day Matabeleland is a region in Zimbabwe divided into three provinces: Matabeleland North, Bulawayo and Matabeleland South. These provinces are in the west and south-west of Zimbabwe, between the Limpopo and Zambezi rivers. The region is named after its inhabitants the Ndebele people. Other ethnic groups who inhabit parts of Matabeleland include the Tonga, Kalanga, Venda, Chewa, Khoi Sani, Nambia, Shangaan, Swati, Sotho, Shona, Tswana, Xhosa and Zulu. As of August 2012, according to the ZIMSAT or Zimbabwe national statistics agency, the southern part of the region had 683,893 people, with the make up of 326,697 males and 356,926 females with an average size household of 4.4 in an area of 54,172 square kilometres (20,916 sq mi).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Matabeleland.svg/320px-Matabeleland.svg.png", - "width": 320, - "height": 292, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/a8/Matabeleland.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/a8/Matabeleland.svg", - "width": 250, - "height": 228 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-16T07:30:36Z", - "description": "region in Zimbabwe", - "coordinates": { - "lat": -19.83, - "lon": 28.16 - }, - "normalizedtitle": "Matabeleland" - }, - { - "isTopic": true, - "title": "Rudd_Concession", - "displaytitle": "Rudd Concession", - "pageid": 9544911, - "extract": "The Rudd Concession, a written concession for exclusive mining rights in Matabeleland, Mashonaland and other adjoining territories in what is today Zimbabwe, was granted by King Lobengula of Matabeleland to Charles Rudd, James Rochfort Maguire and Francis Thompson, three agents acting on behalf of the South African-based politician and businessman Cecil Rhodes, on 30 October 1888. Despite Lobengula's retrospective attempts to disavow it, it proved the foundation for the royal charter granted by the United Kingdom to Rhodes's British South Africa Company in October 1889, and thereafter for the Pioneer Column's occupation of Mashonaland in 1890, which marked the beginning of white settlement, administration and development in the country that eventually became Rhodesia, named after Rhodes, in 1895.\nRhodes's pursuit of the exclusive mining rights in Matabeleland, Mashonaland and the surrounding areas was motivated by his wish to annex them into the British Empire as part of his personal ambition for a Cape to Cairo Railway—winning the concession would enable him to gain a royal charter from the British government for a chartered company, empowered to annex and thereafter govern the Zambezi–Limpopo watershed on Britain's behalf. He laid the groundwork for concession negotiations during early 1888 by arranging a treaty of friendship between the British and Matabele peoples and then sent Rudd's team from South Africa to obtain the rights. Rudd succeeded following a race to the Matabele capital Bulawayo against Edward Arthur Maund, a bidding-rival employed by a London-based syndicate, and after long negotiations with the king and his council of izinDuna (tribal leaders).\nThe concession conferred on the grantees the sole rights to mine throughout Lobengula's country, as well as the power to defend this exclusivity by force, in return for weapons and a regular monetary stipend. Starting in early 1889, the king repeatedly tried to disavow the document on the grounds of alleged deceit by the concessionaires regarding the settled terms; he insisted that restrictions on the grantees' activities had been agreed orally, and apparently considered these part of the contract even though the written text had been translated and repeatedly explained to him just before he signed it.", - "extract_html": "

The Rudd Concession, a written concession for exclusive mining rights in Matabeleland, Mashonaland and other adjoining territories in what is today Zimbabwe, was granted by King Lobengula of Matabeleland to Charles Rudd, James Rochfort Maguire and Francis Thompson, three agents acting on behalf of the South African-based politician and businessman Cecil Rhodes, on 30 October 1888. Despite Lobengula's retrospective attempts to disavow it, it proved the foundation for the royal charter granted by the United Kingdom to Rhodes's British South Africa Company in October 1889, and thereafter for the Pioneer Column's occupation of Mashonaland in 1890, which marked the beginning of white settlement, administration and development in the country that eventually became Rhodesia, named after Rhodes, in 1895.

\n

Rhodes's pursuit of the exclusive mining rights in Matabeleland, Mashonaland and the surrounding areas was motivated by his wish to annex them into the British Empire as part of his personal ambition for a Cape to Cairo Railway—winning the concession would enable him to gain a royal charter from the British government for a chartered company, empowered to annex and thereafter govern the Zambezi–Limpopo watershed on Britain's behalf. He laid the groundwork for concession negotiations during early 1888 by arranging a treaty of friendship between the British and Matabele peoples and then sent Rudd's team from South Africa to obtain the rights. Rudd succeeded following a race to the Matabele capital Bulawayo against Edward Arthur Maund, a bidding-rival employed by a London-based syndicate, and after long negotiations with the king and his council of izinDuna (tribal leaders).

\n

The concession conferred on the grantees the sole rights to mine throughout Lobengula's country, as well as the power to defend this exclusivity by force, in return for weapons and a regular monetary stipend. Starting in early 1889, the king repeatedly tried to disavow the document on the grounds of alleged deceit by the concessionaires regarding the settled terms; he insisted that restrictions on the grantees' activities had been agreed orally, and apparently considered these part of the contract even though the written text had been translated and repeatedly explained to him just before he signed it.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Rudd_Concession.jpg/291px-Rudd_Concession.jpg", - "width": 291, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/3f/Rudd_Concession.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3f/Rudd_Concession.jpg", - "width": 553, - "height": 609 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T14:00:18Z", - "normalizedtitle": "Rudd Concession" - }, - { - "title": "Cecil_Rhodes", - "displaytitle": "Cecil Rhodes", - "pageid": 168006, - "extract": "Cecil John Rhodes PC (5 July 1853 – 26 March 1902) was a British businessman, mining magnate and politician in South Africa, who served as Prime Minister of the Cape Colony from 1890 to 1896. An ardent believer in British imperialism, Rhodes and his British South Africa Company founded the southern African territory of Rhodesia (now Zimbabwe and Zambia), which the company named after him in 1895. South Africa's Rhodes University is also named after him. Rhodes set up the provisions of the Rhodes Scholarship, which is funded by his estate, and put much effort towards his vision of a Cape to Cairo Railway through British territory.\nThe son of a vicar, Rhodes grew up in Bishop's Stortford, Hertfordshire, and was a sickly child. He was sent to South Africa by his family when he was 17 years old in the hope that the climate might improve his health.", - "extract_html": "

Cecil John Rhodes PC (5 July 1853 – 26 March 1902) was a British businessman, mining magnate and politician in South Africa, who served as Prime Minister of the Cape Colony from 1890 to 1896. An ardent believer in British imperialism, Rhodes and his British South Africa Company founded the southern African territory of Rhodesia (now Zimbabwe and Zambia), which the company named after him in 1895. South Africa's Rhodes University is also named after him. Rhodes set up the provisions of the Rhodes Scholarship, which is funded by his estate, and put much effort towards his vision of a Cape to Cairo Railway through British territory.

\n

The son of a vicar, Rhodes grew up in Bishop's Stortford, Hertfordshire, and was a sickly child. He was sent to South Africa by his family when he was 17 years old in the hope that the climate might improve his health.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Cecil_Rhodes_ww.jpg/225px-Cecil_Rhodes_ww.jpg", - "width": 225, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/de/Cecil_Rhodes_ww.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/de/Cecil_Rhodes_ww.jpg", - "width": 2500, - "height": 3554 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T09:41:02Z", - "description": "British businessman, mining magnate and politician in South Africa", - "normalizedtitle": "Cecil Rhodes" - }, - { - "title": "British_South_Africa_Company", - "displaytitle": "British South Africa Company", - "pageid": 822342, - "extract": "The British South Africa Company (BSAC or BSACo) was established following the amalgamation of Cecil Rhodes' Central Search Association and the London-based Exploring Company Ltd which had originally competed to exploit the expected mineral wealth of Mashonaland but united because of common economic interests and to secure British government backing. The company received a Royal Charter in 1889 modelled on that of the British East India Company. Its first directors included the Duke of Abercorn, Rhodes himself and the South African financier Alfred Beit. Rhodes hoped BSAC would promote colonisation and economic exploitation across much of south-central Africa, as part of the \"Scramble for Africa\". However, his main focus was south of the Zambezi, in Mashonaland and the coastal areas to its east, from which he believed the Portuguese could be removed by payment or force, and in the Transvaal, which he hoped would return to British control.\nIt has been suggested that Rhodes' ambition was to create a zone of British commercial and political influence from \"Cape to Cairo\", but this was far beyond the resources of any commercial company to achieve and would not have given investors the financial returns they expected.", - "extract_html": "

The British South Africa Company (BSAC or BSACo) was established following the amalgamation of Cecil Rhodes' Central Search Association and the London-based Exploring Company Ltd which had originally competed to exploit the expected mineral wealth of Mashonaland but united because of common economic interests and to secure British government backing. The company received a Royal Charter in 1889 modelled on that of the British East India Company. Its first directors included the Duke of Abercorn, Rhodes himself and the South African financier Alfred Beit. Rhodes hoped BSAC would promote colonisation and economic exploitation across much of south-central Africa, as part of the \"Scramble for Africa\". However, his main focus was south of the Zambezi, in Mashonaland and the coastal areas to its east, from which he believed the Portuguese could be removed by payment or force, and in the Transvaal, which he hoped would return to British control.

\n

It has been suggested that Rhodes' ambition was to create a zone of British commercial and political influence from \"Cape to Cairo\", but this was far beyond the resources of any commercial company to achieve and would not have given investors the financial returns they expected.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Flag_of_BSAC_edit.svg/320px-Flag_of_BSAC_edit.svg.png", - "width": 320, - "height": 160, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/a7/Flag_of_BSAC_edit.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/a7/Flag_of_BSAC_edit.svg", - "width": 1200, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-13T12:33:04Z", - "description": "former mining and colonial enterprises company", - "normalizedtitle": "British South Africa Company" - } - ], - "year": 1888 - }, - { - "text": "War of the Fourth Coalition: Believing they were massively outnumbered, the 5,300-man German garrison at Stettin, Prussia (now Szczecin, Poland), surrendered to a much smaller French force without a fight.", - "pages": [ - { - "title": "War_of_the_Fourth_Coalition", - "displaytitle": "War of the Fourth Coalition", - "pageid": 866457, - "extract": "The Fourth Coalition, which fought against Napoleon's French Empire was defeated in a war spanning 1806–1807. Coalition partners included Prussia, Russia, Saxony, Sweden, and Great Britain. Several members of the coalition had previously been fighting France as part of the Third Coalition, and there was no intervening period of general peace. On 9 October 1806, Prussia joined a renewed coalition, fearing the rise in French power after the defeat of Austria and establishment of the French-sponsored Confederation of the Rhine. Prussia and Russia mobilized for a fresh campaign, and Prussian troops massed in Saxony.\nNapoleon decisively defeated the Prussians in a lightning campaign that culminated at the Battle of Jena–Auerstedt on 14 October 1806.", - "extract_html": "

The Fourth Coalition, which fought against Napoleon's French Empire was defeated in a war spanning 1806–1807. Coalition partners included Prussia, Russia, Saxony, Sweden, and Great Britain. Several members of the coalition had previously been fighting France as part of the Third Coalition, and there was no intervening period of general peace. On 9 October 1806, Prussia joined a renewed coalition, fearing the rise in French power after the defeat of Austria and establishment of the French-sponsored Confederation of the Rhine. Prussia and Russia mobilized for a fresh campaign, and Prussian troops massed in Saxony.

\n

Napoleon decisively defeated the Prussians in a lightning campaign that culminated at the Battle of Jena–Auerstedt on 14 October 1806.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Charles_Meynier_-_Napoleon_in_Berlin.png/320px-Charles_Meynier_-_Napoleon_in_Berlin.png", - "width": 320, - "height": 214, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/63/Charles_Meynier_-_Napoleon_in_Berlin.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/63/Charles_Meynier_-_Napoleon_in_Berlin.png", - "width": 1400, - "height": 935 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-23T09:50:48Z", - "description": "part of the Napoleonic Wars", - "normalizedtitle": "War of the Fourth Coalition" - }, - { - "title": "Szczecin", - "displaytitle": "Szczecin", - "pageid": 28456, - "extract": "Szczecin (; Polish: [ˈʂt͡ʂɛt͡ɕin] ( listen); German and Swedish: Stettin, known also by other alternative names) is the capital and largest city of the West Pomeranian Voivodeship in Poland. Located near the Baltic Sea and the German border, it is a major seaport and Poland's seventh-largest city. As of June 2011, the population was 407,811.\nSzczecin is located on the Oder, south of the Szczecin Lagoon and the Bay of Pomerania. The city is situated along the southwestern shore of Dąbie Lake, on both sides of the Oder and on several large islands between the western and eastern branches of the river. Szczecin is adjacent to the town of Police and is the urban centre of the Szczecin agglomeration, an extended metropolitan area that includes communities in the German states of Brandenburg and Mecklenburg-Vorpommern.\nThe city's recorded history began in the 8th century as a Slavic Pomeranian stronghold, built at the site of the Ducal castle.", - "extract_html": "

Szczecin (; Polish: [ˈʂt͡ʂɛt͡ɕin] ( listen); German and Swedish: Stettin, known also by other alternative names) is the capital and largest city of the West Pomeranian Voivodeship in Poland. Located near the Baltic Sea and the German border, it is a major seaport and Poland's seventh-largest city. As of June 2011, the population was 407,811.

\n

Szczecin is located on the Oder, south of the Szczecin Lagoon and the Bay of Pomerania. The city is situated along the southwestern shore of Dąbie Lake, on both sides of the Oder and on several large islands between the western and eastern branches of the river. Szczecin is adjacent to the town of Police and is the urban centre of the Szczecin agglomeration, an extended metropolitan area that includes communities in the German states of Brandenburg and Mecklenburg-Vorpommern.

\n

The city's recorded history began in the 8th century as a Slavic Pomeranian stronghold, built at the site of the Ducal castle.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/09_Szczecin_SZN.jpg/225px-09_Szczecin_SZN.jpg", - "width": 225, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2c/09_Szczecin_SZN.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2c/09_Szczecin_SZN.jpg", - "width": 3563, - "height": 5062 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T22:54:14Z", - "description": "capital city of the West Pomeranian Voivodeship, Poland.", - "coordinates": { - "lat": 53.4325, - "lon": 14.54805556 - }, - "normalizedtitle": "Szczecin" - }, - { - "isTopic": true, - "title": "Capitulation_of_Stettin", - "displaytitle": "Capitulation of Stettin", - "pageid": 30467213, - "extract": "In the Capitulation of Stettin on 29–30 October 1806, Lieutenant General Friedrich Gisbert Wilhelm von Romberg surrendered the garrison and fortress to a much smaller French light cavalry brigade led by General of Brigade Antoine Lasalle. This event was one of a number of surrenders by demoralized Prussian soldiers to equal or inferior French forces after their disastrous defeat at the Battle of Jena-Auerstedt on 14 October. Stettin, now Szczecin, Poland, is a port city on the Oder River near the Baltic Sea, about 120 kilometres (75 mi) northeast of Berlin.\nAfter Jena-Auerstedt, the broken Prussian armies crossed the Elbe River and fled to the northeast in an attempt to reach the east bank of the Oder. Following a two-week chase, Marshal Joachim Murat intercepted over 10,000 Prussians at the Battle of Prenzlau and bluffed them into surrendering on 28 October. The following day, Lasalle's and another French light cavalry brigade induced 4,200 more Prussians to lay down their weapons in the Capitulation of Pasewalk.", - "extract_html": "

In the Capitulation of Stettin on 29–30 October 1806, Lieutenant General Friedrich Gisbert Wilhelm von Romberg surrendered the garrison and fortress to a much smaller French light cavalry brigade led by General of Brigade Antoine Lasalle. This event was one of a number of surrenders by demoralized Prussian soldiers to equal or inferior French forces after their disastrous defeat at the Battle of Jena-Auerstedt on 14 October. Stettin, now Szczecin, Poland, is a port city on the Oder River near the Baltic Sea, about 120 kilometres (75 mi) northeast of Berlin.

\n

After Jena-Auerstedt, the broken Prussian armies crossed the Elbe River and fled to the northeast in an attempt to reach the east bank of the Oder. Following a two-week chase, Marshal Joachim Murat intercepted over 10,000 Prussians at the Battle of Prenzlau and bluffed them into surrendering on 28 October. The following day, Lasalle's and another French light cavalry brigade induced 4,200 more Prussians to lay down their weapons in the Capitulation of Pasewalk.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Taking_of_Stettin_by_French_troops_1806.PNG/320px-Taking_of_Stettin_by_French_troops_1806.PNG", - "width": 320, - "height": 219, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/27/Taking_of_Stettin_by_French_troops_1806.PNG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/27/Taking_of_Stettin_by_French_troops_1806.PNG", - "width": 816, - "height": 558 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T11:58:08Z", - "normalizedtitle": "Capitulation of Stettin" - } - ], - "year": 1806 - } - ], - "events": [ - { - "text": "Sixty-four people are killed and more than 147 injuries after a fire in a nightclub in the Romanian capital Bucharest.", - "pages": [ - { - "title": "Colectiv_nightclub_fire", - "displaytitle": "Colectiv nightclub fire", - "pageid": 48420676, - "extract": "The Colectiv nightclub fire was a deadly fire in Bucharest, Romania, on 30 October 2015, which killed 64 people (26 on site, 38 in hospitals) and injured 147. The fire, the worst incident in Romania since the Balotești plane crash, occurred during a free concert performed by the metalcore band Goodbye to Gravity to celebrate the release of their new album, Mantras of War. The band's pyrotechnics, consisting of sparkler firework candles, ignited the club's flammable polyurethane acoustic foam, and the fire spread rapidly. Most of the victims were poisoned by toxins released from the burning foam. Overwhelmed by the high number of victims, Romanian authorities transferred some of the seriously injured to hospitals in Israel, the Netherlands, Belgium, Austria, the United Kingdom, Norway, Germany and France.", - "extract_html": "

The Colectiv nightclub fire was a deadly fire in Bucharest, Romania, on 30 October 2015, which killed 64 people (26 on site, 38 in hospitals) and injured 147. The fire, the worst incident in Romania since the Balotești plane crash, occurred during a free concert performed by the metalcore band Goodbye to Gravity to celebrate the release of their new album, Mantras of War. The band's pyrotechnics, consisting of sparkler firework candles, ignited the club's flammable polyurethane acoustic foam, and the fire spread rapidly. Most of the victims were poisoned by toxins released from the burning foam. Overwhelmed by the high number of victims, Romanian authorities transferred some of the seriously injured to hospitals in Israel, the Netherlands, Belgium, Austria, the United Kingdom, Norway, Germany and France.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/1/18/Colectiv_foc.png/320px-Colectiv_foc.png", - "width": 320, - "height": 179, - "original": "https://upload.wikimedia.org/wikipedia/en/1/18/Colectiv_foc.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/1/18/Colectiv_foc.png", - "width": 421, - "height": 236 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-04T18:59:10Z", - "description": "October 2015 fire in Bucharest, Romania", - "coordinates": { - "lat": 44.42127778, - "lon": 26.10780556 - }, - "normalizedtitle": "Colectiv nightclub fire" - }, - { - "title": "Bucharest", - "displaytitle": "Bucharest", - "pageid": 36877, - "extract": "Bucharest (; Romanian: București, pronounced [bukuˈreʃtʲ] listen ) is the capital and largest city of Romania, as well as its cultural, industrial, and financial centre. It is located in the southeast of the country, at 44°25′57″N 26°06′14″E, on the banks of the Dâmbovița River, less than 60 km (37.3 mi) north of the Danube River and the Bulgarian border.\nBucharest was first mentioned in documents in 1459. It became the capital of Romania in 1862 and is the centre of Romanian media, culture, and art. Its architecture is a mix of historical (neo-classical), interbellum (Bauhaus and art deco), communist-era and modern. In the period between the two World Wars, the city's elegant architecture and the sophistication of its elite earned Bucharest the nickname of \"Little Paris\" (Micul Paris).", - "extract_html": "

Bucharest (; Romanian: București, pronounced [bukuˈreʃtʲ] listen ) is the capital and largest city of Romania, as well as its cultural, industrial, and financial centre. It is located in the southeast of the country, at 44°25′57″N 26°06′14″E, on the banks of the Dâmbovița River, less than 60 km (37.3 mi) north of the Danube River and the Bulgarian border.

\n

Bucharest was first mentioned in documents in 1459. It became the capital of Romania in 1862 and is the centre of Romanian media, culture, and art. Its architecture is a mix of historical (neo-classical), interbellum (Bauhaus and art deco), communist-era and modern. In the period between the two World Wars, the city's elegant architecture and the sophistication of its elite earned Bucharest the nickname of \"Little Paris\" (Micul Paris).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/25/Ateneul_Rom%C3%A2n_1.jpg/320px-Ateneul_Rom%C3%A2n_1.jpg", - "width": 320, - "height": 223, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/25/Ateneul_Rom%C3%A2n_1.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/25/Ateneul_Rom%C3%A2n_1.jpg", - "width": 2110, - "height": 1470 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-19T12:03:37Z", - "description": "capital of Romania", - "coordinates": { - "lat": 44.4325, - "lon": 26.10388889 - }, - "normalizedtitle": "Bucharest" - } - ], - "year": 2015 - }, - { - "text": "Sweden is the first European Union member state to officially recognize the State of Palestine.", - "pages": [ - { - "title": "Sweden", - "displaytitle": "Sweden", - "pageid": 5058739, - "extract": "\nSweden (Swedish: Sverige), officially the Kingdom of Sweden, is a Scandinavian country in Northern Europe. It borders Norway to the west and north and Finland to the east, and is connected to Denmark in the southwest by a bridge-tunnel across the Öresund. At 450,295 square kilometres (173,860 sq mi) Sweden is the third-largest country in the European Union by area. Sweden has a total population of 10.0 million of which 2.3 million has a foreign background. It has a low population density of 22 inhabitants per square kilometre (57/sq mi); the highest concentration is in the southern half of the country.", - "extract_html": "

\n

Sweden (Swedish: Sverige), officially the Kingdom of Sweden, is a Scandinavian country in Northern Europe. It borders Norway to the west and north and Finland to the east, and is connected to Denmark in the southwest by a bridge-tunnel across the Öresund. At 450,295 square kilometres (173,860 sq mi) Sweden is the third-largest country in the European Union by area. Sweden has a total population of 10.0 million of which 2.3 million has a foreign background. It has a low population density of 22 inhabitants per square kilometre (57/sq mi); the highest concentration is in the southern half of the country.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/4/4c/Flag_of_Sweden.svg/320px-Flag_of_Sweden.svg.png", - "width": 320, - "height": 200, - "original": "https://upload.wikimedia.org/wikipedia/en/4/4c/Flag_of_Sweden.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/4/4c/Flag_of_Sweden.svg", - "width": 1600, - "height": 1000 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T17:11:59Z", - "description": "constitutional monarchy in Northern Europe", - "coordinates": { - "lat": 63, - "lon": 16 - }, - "normalizedtitle": "Sweden" - }, - { - "title": "European_Union", - "displaytitle": "European Union", - "pageid": 9317, - "extract": "The European Union (EU) is a political and economic union of 28 member states that are located primarily in Europe. It has an area of 4,475,757 km2 (1,728,099 sq mi), and an estimated population of over 510 million. The EU has developed an internal single market through a standardised system of laws that apply in all member states. EU policies aim to ensure the free movement of people, goods, services, and capital within the internal market, enact legislation in justice and home affairs, and maintain common policies on trade, agriculture, fisheries, and regional development. Within the Schengen Area, passport controls have been abolished.", - "extract_html": "

The European Union (EU) is a political and economic union of 28 member states that are located primarily in Europe. It has an area of 4,475,757 km2 (1,728,099 sq mi), and an estimated population of over 510 million. The EU has developed an internal single market through a standardised system of laws that apply in all member states. EU policies aim to ensure the free movement of people, goods, services, and capital within the internal market, enact legislation in justice and home affairs, and maintain common policies on trade, agriculture, fisheries, and regional development. Within the Schengen Area, passport controls have been abolished.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/Flag_of_Europe.svg/320px-Flag_of_Europe.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b7/Flag_of_Europe.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b7/Flag_of_Europe.svg", - "width": 810, - "height": 540 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T22:32:01Z", - "description": "economic and political union of states mostly located in Europe", - "normalizedtitle": "European Union" - }, - { - "title": "International_recognition_of_the_State_of_Palestine", - "displaytitle": "International recognition of the State of Palestine", - "pageid": 39270413, - "extract": "The international recognition of the State of Palestine has been the objective of the Palestine Liberation Organization (PLO) since the Palestinian Declaration of Independence proclaimed the establishment of the State of Palestine on 15 November 1988 in Algiers, Algeria at an extraordinary session in exile of the Palestinian National Council.\nThe declaration was promptly acknowledged by a range of countries, and by the end of the year the state was recognized by over 80 countries. In February 1989, at the United Nations Security Council, the PLO representative claimed recognition by 94 states. As part of an attempt to resolve the ongoing Israeli–Palestinian conflict, the Oslo Accords signed between Israel and PLO in September 1993 established the Palestinian National Authority (PNA) as a self-governing interim administration in the Palestinian territories. Israel does not recognize Palestine as a state and maintains de facto military control in all the territories.\nAs of 14 September 2015, 136 (70.5%) of the 193 member states of the United Nations and two non-member states have recognized the State of Palestine. Many of the countries that do not recognize the State of Palestine nevertheless recognize the PLO as the \"representative of the Palestinian people\".", - "extract_html": "

The international recognition of the State of Palestine has been the objective of the Palestine Liberation Organization (PLO) since the Palestinian Declaration of Independence proclaimed the establishment of the State of Palestine on 15 November 1988 in Algiers, Algeria at an extraordinary session in exile of the Palestinian National Council.

\n

The declaration was promptly acknowledged by a range of countries, and by the end of the year the state was recognized by over 80 countries. In February 1989, at the United Nations Security Council, the PLO representative claimed recognition by 94 states. As part of an attempt to resolve the ongoing Israeli–Palestinian conflict, the Oslo Accords signed between Israel and PLO in September 1993 established the Palestinian National Authority (PNA) as a self-governing interim administration in the Palestinian territories. Israel does not recognize Palestine as a state and maintains de facto military control in all the territories.

\n

As of 14 September 2015, 136 (70.5%) of the 193 member states of the United Nations and two non-member states have recognized the State of Palestine. Many of the countries that do not recognize the State of Palestine nevertheless recognize the PLO as the \"representative of the Palestinian people\".", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/08/Palestine_recognition_only.svg/320px-Palestine_recognition_only.svg.png", - "width": 320, - "height": 143, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/08/Palestine_recognition_only.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/08/Palestine_recognition_only.svg", - "width": 1376, - "height": 617 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T22:22:45Z", - "description": "Wikimedia list article", - "normalizedtitle": "International recognition of the State of Palestine" - }, - { - "title": "State_of_Palestine", - "displaytitle": "State of Palestine", - "pageid": 241405, - "extract": "\nPalestine (Arabic: فلسطين‎‎ Filasṭīn), officially the State of Palestine (Arabic: دولة فلسطين‎‎ Dawlat Filasṭīn), is a de jure sovereign state in the Middle East claiming the West Bank (bordering Israel and Jordan) and Gaza Strip (bordering Israel and Egypt) with East Jerusalem as the designated capital although its administrative center is located in Ramallah. Most of the areas claimed by the State of Palestine have been occupied by Israel since 1967 in the consequence of the Six-Day War. The population is 4,550,368 as of 2014, ranked 123rd in the world.\nAfter World War II, in 1947, the United Nations adopted a Partition Plan for Mandatory Palestine recommending the creation of independent Arab and Jewish states and an internationalized Jerusalem. After the establishment of a Jewish state in Eretz Israel, to be known as the State of Israel on 14 May 1948, neighboring Arab armies invaded the former British mandate on the next day and fought the Israeli forces. Later, the All-Palestine Government was established by the Arab League on 22 September 1948 to govern the Egyptian-controlled enclave in Gaza.", - "extract_html": "

\n

Palestine (Arabic: فلسطين‎‎ Filasṭīn), officially the State of Palestine (Arabic: دولة فلسطين‎‎ Dawlat Filasṭīn), is a de jure sovereign state in the Middle East claiming the West Bank (bordering Israel and Jordan) and Gaza Strip (bordering Israel and Egypt) with East Jerusalem as the designated capital although its administrative center is located in Ramallah. Most of the areas claimed by the State of Palestine have been occupied by Israel since 1967 in the consequence of the Six-Day War. The population is 4,550,368 as of 2014, ranked 123rd in the world.

\n

After World War II, in 1947, the United Nations adopted a Partition Plan for Mandatory Palestine recommending the creation of independent Arab and Jewish states and an internationalized Jerusalem. After the establishment of a Jewish state in Eretz Israel, to be known as the State of Israel on 14 May 1948, neighboring Arab armies invaded the former British mandate on the next day and fought the Israeli forces. Later, the All-Palestine Government was established by the Arab League on 22 September 1948 to govern the Egyptian-controlled enclave in Gaza.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Flag_of_Palestine.svg/320px-Flag_of_Palestine.svg.png", - "width": 320, - "height": 160, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/00/Flag_of_Palestine.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/00/Flag_of_Palestine.svg", - "width": 1200, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T15:03:37Z", - "description": "country in the Middle East", - "coordinates": { - "lat": 32, - "lon": 35.25 - }, - "normalizedtitle": "State of Palestine" - } - ], - "year": 2014 - }, - { - "text": "The rebuilt Dresden Frauenkirche (destroyed in the firebombing of Dresden during World War II) is reconsecrated after a thirteen-year rebuilding project.", - "pages": [ - { - "title": "Dresden_Frauenkirche", - "displaytitle": "Dresden Frauenkirche", - "pageid": 188921, - "extract": "The Dresden Frauenkirche (German: Dresdner Frauenkirche, IPA: [ˈfʁaʊənˌkɪʁçə], Church of Our Lady) is a Lutheran church in Dresden, the capital of the German state of Saxony. An earlier church building was Roman Catholic until it became Protestant during the Reformation, and was replaced in the 18th century by a larger Baroque Lutheran building. It is considered an outstanding example of Protestant sacred architecture, featuring one of the largest domes in Europe. It now also serves as a symbol of reconciliation between former warring enemies.\nBuilt in the 18th century, the church was destroyed in the bombing of Dresden during World War II. The remaining ruins were left for 50 years as a war memorial, following decisions of local East German leaders. The church was rebuilt after the reunification of Germany, starting in 1994.", - "extract_html": "

The Dresden Frauenkirche (German: Dresdner Frauenkirche, IPA: [ˈfʁaʊənˌkɪʁçə], Church of Our Lady) is a Lutheran church in Dresden, the capital of the German state of Saxony. An earlier church building was Roman Catholic until it became Protestant during the Reformation, and was replaced in the 18th century by a larger Baroque Lutheran building. It is considered an outstanding example of Protestant sacred architecture, featuring one of the largest domes in Europe. It now also serves as a symbol of reconciliation between former warring enemies.

\n

Built in the 18th century, the church was destroyed in the bombing of Dresden during World War II. The remaining ruins were left for 50 years as a war memorial, following decisions of local East German leaders. The church was rebuilt after the reunification of Germany, starting in 1994.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Frauenkirche_bei_Nacht.jpg/213px-Frauenkirche_bei_Nacht.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/7a/Frauenkirche_bei_Nacht.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/7a/Frauenkirche_bei_Nacht.jpg", - "width": 2591, - "height": 3886 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-15T08:51:23Z", - "description": "Lutheran church in Dresden, Germany", - "coordinates": { - "lat": 51.05194444, - "lon": 13.74166667 - }, - "normalizedtitle": "Dresden Frauenkirche" - }, - { - "title": "Bombing_of_Dresden_in_World_War_II", - "displaytitle": "Bombing of Dresden in World War II", - "pageid": 64692, - "extract": "The bombing of Dresden was a British/American aerial bombing attack on the city of Dresden, the capital of the German state of Saxony, that took place during the Second World War in the European Theatre. In four raids between 13 and 15 February 1945, 722 heavy bombers of the British Royal Air Force (RAF) and 527 of the United States Army Air Forces (USAAF) dropped more than 3,900 tons of high-explosive bombs and incendiary devices on the city. The bombing and the resulting firestorm destroyed over 1,600 acres (6.5 km2) of the city centre. An estimated 22,700 to 25,000 people were killed, although inflated casualty figures have been claimed over the years. Three more USAAF air raids followed, two occurring on 2 March aimed at the city's railroad marshaling yard and one small raid on 17 April aimed at industrial areas.\nImmediate German propaganda claims following the attacks and post-war discussions on whether the attacks were justified has led to the bombing becoming one of the moral causes célèbres of the war.", - "extract_html": "

The bombing of Dresden was a British/American aerial bombing attack on the city of Dresden, the capital of the German state of Saxony, that took place during the Second World War in the European Theatre. In four raids between 13 and 15 February 1945, 722 heavy bombers of the British Royal Air Force (RAF) and 527 of the United States Army Air Forces (USAAF) dropped more than 3,900 tons of high-explosive bombs and incendiary devices on the city. The bombing and the resulting firestorm destroyed over 1,600 acres (6.5 km2) of the city centre. An estimated 22,700 to 25,000 people were killed, although inflated casualty figures have been claimed over the years. Three more USAAF air raids followed, two occurring on 2 March aimed at the city's railroad marshaling yard and one small raid on 17 April aimed at industrial areas.

\n

Immediate German propaganda claims following the attacks and post-war discussions on whether the attacks were justified has led to the bombing becoming one of the moral causes célèbres of the war.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/17/Bundesarchiv_Bild_146-1994-041-07%2C_Dresden%2C_zerst%C3%B6rtes_Stadtzentrum.jpg/320px-Bundesarchiv_Bild_146-1994-041-07%2C_Dresden%2C_zerst%C3%B6rtes_Stadtzentrum.jpg", - "width": 320, - "height": 211, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/17/Bundesarchiv_Bild_146-1994-041-07%2C_Dresden%2C_zerst%C3%B6rtes_Stadtzentrum.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/17/Bundesarchiv_Bild_146-1994-041-07%2C_Dresden%2C_zerst%C3%B6rtes_Stadtzentrum.jpg", - "width": 800, - "height": 527 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T20:28:08Z", - "description": "UK/US aerial bombing attack on the city of Dresden", - "coordinates": { - "lat": 51.03333333, - "lon": 13.73333333 - }, - "normalizedtitle": "Bombing of Dresden in World War II" - } - ], - "year": 2005 - }, - { - "text": "Quebec citizens narrowly vote (50.58% to 49.42%) in favour of remaining a province of Canada in their second referendum on national sovereignty.", - "pages": [ - { - "title": "Quebec", - "displaytitle": "Quebec", - "pageid": 7954867, - "extract": "Quebec ( ( listen) or ; French: Québec [kebɛk] ( listen)) is one of the 13 provinces and territories of Canada. It is bordered to the west by the province of Ontario, James Bay, and Hudson Bay; to the north by Hudson Strait and Ungava Bay; to the east by the Gulf of Saint Lawrence and the province of Newfoundland and Labrador; and to the south by the province of New Brunswick and the US states of Maine, New Hampshire, Vermont, and New York. It also shares maritime borders with Nunavut, Prince Edward Island, and Nova Scotia. Quebec is Canada's largest province by area and its second-largest administrative division; only the territory of Nunavut is larger. It is historically and politically considered to be part of Central Canada (with Ontario).\nQuebec is the second-most populous province of Canada, after Ontario.", - "extract_html": "

Quebec ( ( listen) or ; French: Québec [kebɛk] ( listen)) is one of the 13 provinces and territories of Canada. It is bordered to the west by the province of Ontario, James Bay, and Hudson Bay; to the north by Hudson Strait and Ungava Bay; to the east by the Gulf of Saint Lawrence and the province of Newfoundland and Labrador; and to the south by the province of New Brunswick and the US states of Maine, New Hampshire, Vermont, and New York. It also shares maritime borders with Nunavut, Prince Edward Island, and Nova Scotia. Quebec is Canada's largest province by area and its second-largest administrative division; only the territory of Nunavut is larger. It is historically and politically considered to be part of Central Canada (with Ontario).

\n

Quebec is the second-most populous province of Canada, after Ontario.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Flag_of_Quebec.svg/320px-Flag_of_Quebec.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/5f/Flag_of_Quebec.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/5f/Flag_of_Quebec.svg", - "width": 600, - "height": 400 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T19:42:29Z", - "description": "province of Canada", - "coordinates": { - "lat": 53, - "lon": -70 - }, - "normalizedtitle": "Quebec" - }, - { - "title": "Canada", - "displaytitle": "Canada", - "pageid": 5042916, - "extract": "\nCanada ( ( listen); French: [kanadɑ]) is a country in the northern part of North America. Its ten provinces and three territories extend from the Atlantic to the Pacific and northward into the Arctic Ocean, covering 9.98 million square kilometres (3.85 million square miles), making it the world's second-largest country by total area and the fourth-largest country by land area. Canada's southern border with the United States is the world's longest bi-national land border. The majority of the country has a cold or severely cold winter climate, but southerly areas are warm in summer. Canada is sparsely populated, the majority of its land territory being dominated by forest and tundra and the Rocky Mountains.", - "extract_html": "

\n

Canada ( ( listen); French: [kanadɑ]) is a country in the northern part of North America. Its ten provinces and three territories extend from the Atlantic to the Pacific and northward into the Arctic Ocean, covering 9.98 million square kilometres (3.85 million square miles), making it the world's second-largest country by total area and the fourth-largest country by land area. Canada's southern border with the United States is the world's longest bi-national land border. The majority of the country has a cold or severely cold winter climate, but southerly areas are warm in summer. Canada is sparsely populated, the majority of its land territory being dominated by forest and tundra and the Rocky Mountains.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Flag_of_Canada_%28Pantone%29.svg/320px-Flag_of_Canada_%28Pantone%29.svg.png", - "width": 320, - "height": 160, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d9/Flag_of_Canada_%28Pantone%29.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d9/Flag_of_Canada_%28Pantone%29.svg", - "width": 1000, - "height": 500 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T13:28:59Z", - "description": "country in North America", - "coordinates": { - "lat": 60, - "lon": -95 - }, - "normalizedtitle": "Canada" - }, - { - "title": "Quebec_referendum,_1995", - "displaytitle": "Quebec referendum, 1995", - "pageid": 424806, - "extract": "The 1995 Quebec referendum was the second referendum to ask voters in the Canadian French-speaking province of Quebec whether Quebec should proclaim national sovereignty and become an independent country, with the condition precedent of offering a political and economic agreement to Canada.\nThe culmination of multiple years of debate and planning after the failure of the Meech Lake and Charlottetown constitutional accords, the referendum was launched solely by the provincial Parti Québécois government of Jacques Parizeau. Despite initial predictions of a heavy sovereignist defeat, an eventful and complex campaign followed, with the \"Yes\" side flourishing after being taken over by charismatic Bloc Québécois leader Lucien Bouchard.\nThe fast rise of the \"Yes\" campaign and apparent inability of the personalities of the \"No\" campaign to counter their message created an atmosphere of great uncertainty, both in the federal government and across Canada.\nVoting took place on October 30, 1995, and featured the largest voter turnout in Quebec's history (93.52%). The \"No\" option carried by 54,288 votes (50.58%). Parizeau, who retired the following day, would later state that he would have quickly proceeded with a unilateral declaration of independence had the result been affirmative and negotiations failed or been refused, the latter of which was later revealed as the federal position in the event of a \"Yes\" victory.\nControversies over both the provincial vote counting and direct federal financial involvement in the final days of the campaign reverberated in Canadian politics for over a decade after the referendum took place.", - "extract_html": "

The 1995 Quebec referendum was the second referendum to ask voters in the Canadian French-speaking province of Quebec whether Quebec should proclaim national sovereignty and become an independent country, with the condition precedent of offering a political and economic agreement to Canada.

\n

The culmination of multiple years of debate and planning after the failure of the Meech Lake and Charlottetown constitutional accords, the referendum was launched solely by the provincial Parti Québécois government of Jacques Parizeau. Despite initial predictions of a heavy sovereignist defeat, an eventful and complex campaign followed, with the \"Yes\" side flourishing after being taken over by charismatic Bloc Québécois leader Lucien Bouchard.

\n

The fast rise of the \"Yes\" campaign and apparent inability of the personalities of the \"No\" campaign to counter their message created an atmosphere of great uncertainty, both in the federal government and across Canada.

\n

Voting took place on October 30, 1995, and featured the largest voter turnout in Quebec's history (93.52%). The \"No\" option carried by 54,288 votes (50.58%). Parizeau, who retired the following day, would later state that he would have quickly proceeded with a unilateral declaration of independence had the result been affirmative and negotiations failed or been refused, the latter of which was later revealed as the federal position in the event of a \"Yes\" victory.

\n

Controversies over both the provincial vote counting and direct federal financial involvement in the final days of the campaign reverberated in Canadian politics for over a decade after the referendum took place.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/39/Quebec_referendum%2C_1995_-_Results_By_Riding.svg/320px-Quebec_referendum%2C_1995_-_Results_By_Riding.svg.png", - "width": 320, - "height": 207, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/39/Quebec_referendum%2C_1995_-_Results_By_Riding.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/39/Quebec_referendum%2C_1995_-_Results_By_Riding.svg", - "width": 2059, - "height": 1329 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T07:09:23Z", - "normalizedtitle": "Quebec referendum, 1995" - } - ], - "year": 1995 - }, - { - "text": "The Troubles: Loyalists carry out a mass shooting at a Halloween party in Greysteel, Northern Ireland, killing eight civilians, six Catholics and two Protestants.", - "pages": [ - { - "title": "The_Troubles", - "displaytitle": "The Troubles", - "pageid": 30770, - "extract": "The Troubles (Irish: Na Trioblóidí) was an ethno-nationalist conflict in Northern Ireland during the late 20th century. Also known internationally as the Northern Ireland conflict, it is sometimes described as a \"guerrilla war\" or a \"low-level war\". The conflict began in the late 1960s and it is usually deemed to have ended with the Good Friday Agreement of 1998. Although the Troubles mainly took place in Northern Ireland, at times the violence spilled over into parts of the Republic of Ireland, England and mainland Europe.\nThe conflict was primarily political and nationalistic, fuelled by historical events. It also had an ethnic or sectarian dimension, although it was not a religious conflict.", - "extract_html": "

The Troubles (Irish: Na Trioblóidí) was an ethno-nationalist conflict in Northern Ireland during the late 20th century. Also known internationally as the Northern Ireland conflict, it is sometimes described as a \"guerrilla war\" or a \"low-level war\". The conflict began in the late 1960s and it is usually deemed to have ended with the Good Friday Agreement of 1998. Although the Troubles mainly took place in Northern Ireland, at times the violence spilled over into parts of the Republic of Ireland, England and mainland Europe.

\n

The conflict was primarily political and nationalistic, fuelled by historical events. It also had an ethnic or sectarian dimension, although it was not a religious conflict.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Ireland-Capitals.PNG/251px-Ireland-Capitals.PNG", - "width": 251, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/63/Ireland-Capitals.PNG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/63/Ireland-Capitals.PNG", - "width": 1630, - "height": 2078 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T14:31:58Z", - "description": "ethno-political conflict in Northern Ireland", - "normalizedtitle": "The Troubles" - }, - { - "title": "Greysteel_massacre", - "displaytitle": "Greysteel massacre", - "pageid": 4766700, - "extract": "The Greysteel massacre was a mass shooting that happened on the evening of 30 October 1993 in Greysteel, County Londonderry, Northern Ireland. Three members of the Ulster Defence Association (UDA), a loyalist paramilitary group, opened fire in a crowded pub during a Halloween party, killing eight civilians and wounding thirteen. The pub was in an Irish Catholic and Irish nationalist area.", - "extract_html": "

The Greysteel massacre was a mass shooting that happened on the evening of 30 October 1993 in Greysteel, County Londonderry, Northern Ireland. Three members of the Ulster Defence Association (UDA), a loyalist paramilitary group, opened fire in a crowded pub during a Halloween party, killing eight civilians and wounding thirteen. The pub was in an Irish Catholic and Irish nationalist area.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/7/79/Rising_sun_bar.jpg/320px-Rising_sun_bar.jpg", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/en/7/79/Rising_sun_bar.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/7/79/Rising_sun_bar.jpg", - "width": 800, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T18:47:15Z", - "coordinates": { - "lat": 55.032, - "lon": -7.122 - }, - "normalizedtitle": "Greysteel massacre" - }, - { - "title": "Halloween", - "displaytitle": "Halloween", - "pageid": 13855, - "extract": "Halloween or Hallowe'en (a contraction of All Hallows' Evening), also known as Allhalloween, All Hallows' Eve, or All Saints' Eve, is a celebration observed in a number of countries on 31 October, the eve of the Western Christian feast of All Hallows' Day. It begins the three-day observance of Allhallowtide, the time in the liturgical year dedicated to remembering the dead, including saints (hallows), martyrs, and all the faithful departed.\nIt is widely believed that many Halloween traditions originated from ancient Celtic harvest festivals, particularly the Gaelic festival Samhain; that such festivals may have had pagan roots; and that Samhain itself was Christianized as Halloween by the early Church. Some believe, however, that Halloween began solely as a Christian holiday, separate from ancient festivals like Samhain.\nHalloween activities include trick-or-treating (or the related guising), attending Halloween costume parties, carving pumpkins into jack-o'-lanterns, lighting bonfires, apple bobbing, divination games, playing pranks, visiting haunted attractions, telling scary stories and watching horror films. In many parts of the world, the Christian religious observances of All Hallows' Eve, including attending church services and lighting candles on the graves of the dead, remain popular, although elsewhere it is a more commercial and secular celebration.", - "extract_html": "

Halloween or Hallowe'en (a contraction of All Hallows' Evening), also known as Allhalloween, All Hallows' Eve, or All Saints' Eve, is a celebration observed in a number of countries on 31 October, the eve of the Western Christian feast of All Hallows' Day. It begins the three-day observance of Allhallowtide, the time in the liturgical year dedicated to remembering the dead, including saints (hallows), martyrs, and all the faithful departed.

\n

It is widely believed that many Halloween traditions originated from ancient Celtic harvest festivals, particularly the Gaelic festival Samhain; that such festivals may have had pagan roots; and that Samhain itself was Christianized as Halloween by the early Church. Some believe, however, that Halloween began solely as a Christian holiday, separate from ancient festivals like Samhain.

\n

Halloween activities include trick-or-treating (or the related guising), attending Halloween costume parties, carving pumpkins into jack-o'-lanterns, lighting bonfires, apple bobbing, divination games, playing pranks, visiting haunted attractions, telling scary stories and watching horror films. In many parts of the world, the Christian religious observances of All Hallows' Eve, including attending church services and lighting candles on the graves of the dead, remain popular, although elsewhere it is a more commercial and secular celebration.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Jack-o%27-Lantern_2003-10-31.jpg/320px-Jack-o%27-Lantern_2003-10-31.jpg", - "width": 320, - "height": 314, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/a2/Jack-o%27-Lantern_2003-10-31.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/a2/Jack-o%27-Lantern_2003-10-31.jpg", - "width": 1042, - "height": 1024 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T08:01:00Z", - "description": "holiday celebrated October 31", - "normalizedtitle": "Halloween" - }, - { - "title": "Greysteel", - "displaytitle": "Greysteel", - "pageid": 3922550, - "extract": "Greysteel or Gresteel is a village in County Londonderry, Northern Ireland. It lies 9 miles (14 km) to the east of Derry and 7 miles (11 km) to the west of Limavady on the main A2 coast road between Limavady and Derry, overlooking Lough Foyle. It is designated as a Large Village and in the 2001 Census it had a population of 1,229 people, an increase of almost 20% compared to 1991.", - "extract_html": "

Greysteel or Gresteel is a village in County Londonderry, Northern Ireland. It lies 9 miles (14 km) to the east of Derry and 7 miles (11 km) to the west of Limavady on the main A2 coast road between Limavady and Derry, overlooking Lough Foyle. It is designated as a Large Village and in the 2001 Census it had a population of 1,229 people, an increase of almost 20% compared to 1991.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/United_Kingdom_Northern_Ireland_adm_location_map.svg/320px-United_Kingdom_Northern_Ireland_adm_location_map.svg.png", - "width": 320, - "height": 272, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/3d/United_Kingdom_Northern_Ireland_adm_location_map.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3d/United_Kingdom_Northern_Ireland_adm_location_map.svg", - "width": 1208, - "height": 1026 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-04T03:06:42Z", - "description": "village in Northern Ireland", - "coordinates": { - "lat": 55.031667, - "lon": -7.120556 - }, - "normalizedtitle": "Greysteel" - }, - { - "title": "Northern_Ireland", - "displaytitle": "Northern Ireland", - "pageid": 21265, - "extract": "Northern Ireland (Irish: Tuaisceart Éireann [ˈt̪ˠuəʃcəɾˠt̪ˠ ˈeːɾʲən̪ˠ] ( listen); Ulster-Scots: Norlin Airlann) is a part of the United Kingdom in the north-east of the island of Ireland, variously described as a country, province or region. Northern Ireland shares a border to the south and west with the Republic of Ireland. In 2011, its population was 1,810,863, constituting about 30% of the island's total population and about 3% of the UK's population. Established by the Northern Ireland Act 1998 as part of the Good Friday Agreement, the Northern Ireland Assembly holds responsibility for a range of devolved policy matters, while other areas are reserved for the British government. Northern Ireland co-operates with the Republic of Ireland in some areas, and the Agreement granted the Republic the ability to \"put forward views and proposals\" with \"determined efforts to resolve disagreements between the two governments\".\nNorthern Ireland was created in 1921, when Ireland was partitioned between Northern Ireland and Southern Ireland by the Government of Ireland Act 1920.", - "extract_html": "

Northern Ireland (Irish: Tuaisceart Éireann [ˈt̪ˠuəʃcəɾˠt̪ˠ ˈeːɾʲən̪ˠ] ( listen); Ulster-Scots: Norlin Airlann) is a part of the United Kingdom in the north-east of the island of Ireland, variously described as a country, province or region. Northern Ireland shares a border to the south and west with the Republic of Ireland. In 2011, its population was 1,810,863, constituting about 30% of the island's total population and about 3% of the UK's population. Established by the Northern Ireland Act 1998 as part of the Good Friday Agreement, the Northern Ireland Assembly holds responsibility for a range of devolved policy matters, while other areas are reserved for the British government. Northern Ireland co-operates with the Republic of Ireland in some areas, and the Agreement granted the Republic the ability to \"put forward views and proposals\" with \"determined efforts to resolve disagreements between the two governments\".

\n

Northern Ireland was created in 1921, when Ireland was partitioned between Northern Ireland and Southern Ireland by the Government of Ireland Act 1920.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Northern_Ireland_in_the_UK_and_Europe.svg/320px-Northern_Ireland_in_the_UK_and_Europe.svg.png", - "width": 320, - "height": 269, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/fb/Northern_Ireland_in_the_UK_and_Europe.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/fb/Northern_Ireland_in_the_UK_and_Europe.svg", - "width": 2045, - "height": 1720 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T14:31:46Z", - "description": "region in north-west Europe, part of the United Kingdom", - "normalizedtitle": "Northern Ireland" - } - ], - "year": 1993 - }, - { - "text": "In Japan, NEC releases the first 16-bit (fourth generation) video game console, the PC Engine, which is later sold in other markets under the name TurboGrafx-16.", - "pages": [ - { - "title": "NEC", - "displaytitle": "NEC", - "pageid": 383687, - "extract": "NEC Corporation (日本電気株式会社, Nippon Denki Kabushiki Gaisha) is a Japanese multinational provider of information technology (IT) services and products, headquartered in Minato, Tokyo, Japan. It provides IT and network solutions to business enterprises, communications services providers and to government agencies, and has also been the biggest PC vendor in Japan since the 1980s. The company was known as the Nippon Electric Company, Limited, before rebranding in 1983 as just NEC. Its NEC Semiconductors business unit was one of the worldwide top 20 semiconductor sales leaders before merging with Renesas Electronics.", - "extract_html": "

NEC Corporation (日本電気株式会社, Nippon Denki Kabushiki Gaisha) is a Japanese multinational provider of information technology (IT) services and products, headquartered in Minato, Tokyo, Japan. It provides IT and network solutions to business enterprises, communications services providers and to government agencies, and has also been the biggest PC vendor in Japan since the 1980s. The company was known as the Nippon Electric Company, Limited, before rebranding in 1983 as just NEC. Its NEC Semiconductors business unit was one of the worldwide top 20 semiconductor sales leaders before merging with Renesas Electronics.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/30/NEC_Super_Tower.jpg/240px-NEC_Super_Tower.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/30/NEC_Super_Tower.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/30/NEC_Super_Tower.jpg", - "width": 480, - "height": 640 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T08:15:34Z", - "description": "Japanese technology corporation", - "normalizedtitle": "NEC" - }, - { - "title": "Fourth_generation_of_video_game_consoles", - "displaytitle": "Fourth generation of video game consoles", - "pageid": 437385, - "extract": "In the history of computer and video games, the fourth generation (more commonly referred to as the 16-bit era) of games consoles began on October 30, 1987 with the Japanese release of NEC Home Electronics' PC Engine (known as the TurboGrafx-16 in North America). This generation saw strong console wars. Although NEC released the first fourth generation console, and was second to the Super Famicom in Japan, this era's sales were mostly dominated by the rivalry between Nintendo and Sega's consoles in North America: the Super Nintendo Entertainment System (the Super Famicom in Japan) and the Sega Genesis (named the Mega Drive in other regions). Nintendo was able to capitalize on its previous success in the third generation and managed to win the largest worldwide market share in the fourth generation as well. Sega was extremely successful in this generation and began a new franchise, Sonic the Hedgehog, to compete with Nintendo's Mario series of games.", - "extract_html": "

In the history of computer and video games, the fourth generation (more commonly referred to as the 16-bit era) of games consoles began on October 30, 1987 with the Japanese release of NEC Home Electronics' PC Engine (known as the TurboGrafx-16 in North America). This generation saw strong console wars. Although NEC released the first fourth generation console, and was second to the Super Famicom in Japan, this era's sales were mostly dominated by the rivalry between Nintendo and Sega's consoles in North America: the Super Nintendo Entertainment System (the Super Famicom in Japan) and the Sega Genesis (named the Mega Drive in other regions). Nintendo was able to capitalize on its previous success in the third generation and managed to win the largest worldwide market share in the fourth generation as well. Sega was extremely successful in this generation and began a new franchise, Sonic the Hedgehog, to compete with Nintendo's Mario series of games.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-05T00:44:16Z", - "description": "video game generation including Super Nintendo and Sega Genesis", - "normalizedtitle": "Fourth generation of video game consoles" - }, - { - "title": "TurboGrafx-16", - "displaytitle": "TurboGrafx-16", - "pageid": 31268, - "extract": "The TurboGrafx-16 Entertainment SuperSystem, known in Japan and France as the PC Engine (PCエンジン, Pī Shī Enjin), is a home video game console jointly developed by Hudson Soft and NEC Home Electronics, released in Japan on October 30, 1987 and in the United States on August 29, 1989. It also had a limited release in the United Kingdom and Spain in 1990, known as simply TurboGrafx and based on the American model, whilst the Japanese model was imported and distributed in France in 1989. It was the first console released in the 16-bit era, albeit still utilizing an 8-bit CPU. Originally intended to compete with the Nintendo Entertainment System (NES), it ended up competing with the Sega Genesis, and later on the Super Nintendo Entertainment System (SNES).\nThe TurboGrafx-16 has an 8-bit CPU, a 16-bit video color encoder, and a 16-bit video display controller. The GPUs are capable of displaying 482 colors simultaneously, out of 512. With dimensions of just 14 cm×14 cm×3.8 cm (5.5 in×5.5 in×1.5 in), the Japanese PC Engine is the smallest major home game console ever made.", - "extract_html": "

The TurboGrafx-16 Entertainment SuperSystem, known in Japan and France as the PC Engine (PCエンジン, Pī Shī Enjin), is a home video game console jointly developed by Hudson Soft and NEC Home Electronics, released in Japan on October 30, 1987 and in the United States on August 29, 1989. It also had a limited release in the United Kingdom and Spain in 1990, known as simply TurboGrafx and based on the American model, whilst the Japanese model was imported and distributed in France in 1989. It was the first console released in the 16-bit era, albeit still utilizing an 8-bit CPU. Originally intended to compete with the Nintendo Entertainment System (NES), it ended up competing with the Sega Genesis, and later on the Super Nintendo Entertainment System (SNES).

\n

The TurboGrafx-16 has an 8-bit CPU, a 16-bit video color encoder, and a 16-bit video display controller. The GPUs are capable of displaying 482 colors simultaneously, out of 512. With dimensions of just 14 cm×14 cm×3.8 cm (5.5 in×5.5 in×1.5 in), the Japanese PC Engine is the smallest major home game console ever made.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/4/4e/PC_Engine_logo.png/320px-PC_Engine_logo.png", - "width": 320, - "height": 171, - "original": "https://upload.wikimedia.org/wikipedia/en/4/4e/PC_Engine_logo.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/4/4e/PC_Engine_logo.png", - "width": 465, - "height": 248 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-19T23:52:14Z", - "description": "video game console", - "normalizedtitle": "TurboGrafx-16" - }, - { - "title": "TurboGrafx-16", - "displaytitle": "TurboGrafx-16", - "pageid": 31268, - "extract": "The TurboGrafx-16 Entertainment SuperSystem, known in Japan and France as the PC Engine (PCエンジン, Pī Shī Enjin), is a home video game console jointly developed by Hudson Soft and NEC Home Electronics, released in Japan on October 30, 1987 and in the United States on August 29, 1989. It also had a limited release in the United Kingdom and Spain in 1990, known as simply TurboGrafx and based on the American model, whilst the Japanese model was imported and distributed in France in 1989. It was the first console released in the 16-bit era, albeit still utilizing an 8-bit CPU. Originally intended to compete with the Nintendo Entertainment System (NES), it ended up competing with the Sega Genesis, and later on the Super Nintendo Entertainment System (SNES).\nThe TurboGrafx-16 has an 8-bit CPU, a 16-bit video color encoder, and a 16-bit video display controller. The GPUs are capable of displaying 482 colors simultaneously, out of 512. With dimensions of just 14 cm×14 cm×3.8 cm (5.5 in×5.5 in×1.5 in), the Japanese PC Engine is the smallest major home game console ever made.", - "extract_html": "

The TurboGrafx-16 Entertainment SuperSystem, known in Japan and France as the PC Engine (PCエンジン, Pī Shī Enjin), is a home video game console jointly developed by Hudson Soft and NEC Home Electronics, released in Japan on October 30, 1987 and in the United States on August 29, 1989. It also had a limited release in the United Kingdom and Spain in 1990, known as simply TurboGrafx and based on the American model, whilst the Japanese model was imported and distributed in France in 1989. It was the first console released in the 16-bit era, albeit still utilizing an 8-bit CPU. Originally intended to compete with the Nintendo Entertainment System (NES), it ended up competing with the Sega Genesis, and later on the Super Nintendo Entertainment System (SNES).

\n

The TurboGrafx-16 has an 8-bit CPU, a 16-bit video color encoder, and a 16-bit video display controller. The GPUs are capable of displaying 482 colors simultaneously, out of 512. With dimensions of just 14 cm×14 cm×3.8 cm (5.5 in×5.5 in×1.5 in), the Japanese PC Engine is the smallest major home game console ever made.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/4/4e/PC_Engine_logo.png/320px-PC_Engine_logo.png", - "width": 320, - "height": 171, - "original": "https://upload.wikimedia.org/wikipedia/en/4/4e/PC_Engine_logo.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/4/4e/PC_Engine_logo.png", - "width": 465, - "height": 248 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-19T23:52:14Z", - "description": "video game console", - "normalizedtitle": "TurboGrafx-16" - } - ], - "year": 1987 - }, - { - "text": "Space Shuttle Challenger lifts off for mission STS-61-A, its final successful mission.", - "pages": [ - { - "title": "Space_Shuttle_Challenger", - "displaytitle": "Space Shuttle Challenger", - "pageid": 28235, - "extract": "Space Shuttle Challenger (Orbiter Vehicle Designation: OV-099) was the second orbiter of NASA's space shuttle program to be put into service following Columbia. The shuttle was built by Rockwell International's Space Transportation Systems Division in Downey, California. Its maiden flight, STS-6, started on April 4, 1983. It launched and landed nine times before breaking apart 73 seconds into its tenth mission, STS-51-L, on January 28, 1986, resulting in the death of all seven crew members, including a civilian school teacher. It was the first of two shuttles to be destroyed in flight, the other being Columbia in 2003.", - "extract_html": "

Space Shuttle Challenger (Orbiter Vehicle Designation: OV-099) was the second orbiter of NASA's space shuttle program to be put into service following Columbia. The shuttle was built by Rockwell International's Space Transportation Systems Division in Downey, California. Its maiden flight, STS-6, started on April 4, 1983. It launched and landed nine times before breaking apart 73 seconds into its tenth mission, STS-51-L, on January 28, 1986, resulting in the death of all seven crew members, including a civilian school teacher. It was the first of two shuttles to be destroyed in flight, the other being Columbia in 2003.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Space_Shuttle_Challenger_%2804-04-1983%29.JPEG/320px-Space_Shuttle_Challenger_%2804-04-1983%29.JPEG", - "width": 320, - "height": 256, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/44/Space_Shuttle_Challenger_%2804-04-1983%29.JPEG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/44/Space_Shuttle_Challenger_%2804-04-1983%29.JPEG", - "width": 2996, - "height": 2400 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T20:44:02Z", - "description": "space shuttle orbiter", - "normalizedtitle": "Space Shuttle Challenger" - }, - { - "title": "STS-61-A", - "displaytitle": "STS-61-A", - "pageid": 497712, - "extract": "STS-61-A (also known as D-1) was the 22nd mission of NASA's Space Shuttle program. It was a scientific Spacelab mission, funded and directed by West Germany – hence the non-NASA designation of D-1 (for Deutschland-1). STS-61-A was the ninth and final successful flight of Space Shuttle Challenger. STS-61-A holds the current record for the largest crew - eight people - aboard any single spacecraft for the entire period from launch to landing.\nThe mission carried the NASA/ESA Spacelab module into orbit with 76 scientific experiments on board, and was declared a success.", - "extract_html": "

STS-61-A (also known as D-1) was the 22nd mission of NASA's Space Shuttle program. It was a scientific Spacelab mission, funded and directed by West Germany – hence the non-NASA designation of D-1 (for Deutschland-1). STS-61-A was the ninth and final successful flight of Space Shuttle Challenger. STS-61-A holds the current record for the largest crew - eight people - aboard any single spacecraft for the entire period from launch to landing.

\n

The mission carried the NASA/ESA Spacelab module into orbit with 76 scientific experiments on board, and was declared a success.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/STS-61A_launch.jpg/320px-STS-61A_launch.jpg", - "width": 320, - "height": 260, - "original": "http://upload.wikimedia.org/wikipedia/commons/b/be/STS-61A_launch.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/be/STS-61A_launch.jpg", - "width": 574, - "height": 467 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-06T21:47:44Z", - "description": "human spaceflight", - "normalizedtitle": "STS-61-A" - } - ], - "year": 1985 - }, - { - "text": "The first democratic elections in Argentina after seven years of military rule are held.", - "pages": [ - { - "title": "Argentina", - "displaytitle": "Argentina", - "pageid": 18951905, - "extract": "\nArgentina ( ( listen); Spanish: [aɾxenˈtina]), officially the Argentine Republic (Spanish: República Argentina), is a federal republic in the southern portion of South America. Sharing the bulk of the Southern Cone with its neighbor Chile to the west, the country is also bordered by Bolivia and Paraguay to the north, Brazil to the northeast, Uruguay and the South Atlantic Ocean to the east, and the Drake Passage to the south. With a mainland area of 2,780,400 km2 (1,073,500 sq mi), Argentina is the eighth-largest country in the world, the second largest in Latin America, and the largest Spanish-speaking one. The country is subdivided into twenty-three provinces (Spanish: provincias, singular provincia) and one autonomous city (ciudad autónoma), Buenos Aires, which is the federal capital of the nation (Spanish: Capital Federal) as decided by Congress. The provinces and the capital have their own constitutions, but exist under a federal system.\nArgentina claims sovereignty over part of Antarctica, the Falkland Islands (Spanish: Islas Malvinas), and South Georgia and the South Sandwich Islands.", - "extract_html": "

\n

Argentina ( ( listen); Spanish: [aɾxenˈtina]), officially the Argentine Republic (Spanish: República Argentina), is a federal republic in the southern portion of South America. Sharing the bulk of the Southern Cone with its neighbor Chile to the west, the country is also bordered by Bolivia and Paraguay to the north, Brazil to the northeast, Uruguay and the South Atlantic Ocean to the east, and the Drake Passage to the south. With a mainland area of 2,780,400 km2 (1,073,500 sq mi), Argentina is the eighth-largest country in the world, the second largest in Latin America, and the largest Spanish-speaking one. The country is subdivided into twenty-three provinces (Spanish: provincias, singular provincia) and one autonomous city (ciudad autónoma), Buenos Aires, which is the federal capital of the nation (Spanish: Capital Federal) as decided by Congress. The provinces and the capital have their own constitutions, but exist under a federal system.

\n

Argentina claims sovereignty over part of Antarctica, the Falkland Islands (Spanish: Islas Malvinas), and South Georgia and the South Sandwich Islands.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Flag_of_Argentina.svg/320px-Flag_of_Argentina.svg.png", - "width": 320, - "height": 200, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/1a/Flag_of_Argentina.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/1a/Flag_of_Argentina.svg", - "width": 800, - "height": 500 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-21T00:50:03Z", - "description": "federal republic in South America", - "coordinates": { - "lat": -34, - "lon": -64 - }, - "normalizedtitle": "Argentina" - } - ], - "year": 1983 - }, - { - "text": "El Salvador and Honduras sign a peace treaty to put the border dispute fought over in 1969's Football War before the International Court of Justice.", - "pages": [ - { - "title": "El_Salvador", - "displaytitle": "El Salvador", - "pageid": 9356, - "extract": "\nEl Salvador ( ( listen); Spanish: [el salβaˈðor]), officially the Republic of El Salvador (Spanish: República de El Salvador, literally \"Republic of The Savior\"), is the smallest and the most densely populated country in Central America. El Salvador's capital and largest city is San Salvador. As of 2016, the country had a population of approximately 6.34 million, consisting largely of Mestizos of European and Indigenous American descent.\nEl Salvador was for centuries inhabited by several Mesoamerican nations, especially the Cuzcatlecs, as well as the Lenca and Maya. In the early 16th century, the Spanish Empire conquered the territory, incorporating it into the Viceroyalty of New Spain ruled from Mexico City. In 1821, the country achieved independence from Spain as part of the First Mexican Empire, only to further secede as part of the Federal Republic of Central America in 1823.", - "extract_html": "

\n

El Salvador ( ( listen); Spanish: [el salβaˈðor]), officially the Republic of El Salvador (Spanish: República de El Salvador, literally \"Republic of The Savior\"), is the smallest and the most densely populated country in Central America. El Salvador's capital and largest city is San Salvador. As of 2016, the country had a population of approximately 6.34 million, consisting largely of Mestizos of European and Indigenous American descent.

\n

El Salvador was for centuries inhabited by several Mesoamerican nations, especially the Cuzcatlecs, as well as the Lenca and Maya. In the early 16th century, the Spanish Empire conquered the territory, incorporating it into the Viceroyalty of New Spain ruled from Mexico City. In 1821, the country achieved independence from Spain as part of the First Mexican Empire, only to further secede as part of the Federal Republic of Central America in 1823.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Flag_of_El_Salvador.svg/320px-Flag_of_El_Salvador.svg.png", - "width": 320, - "height": 180, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/34/Flag_of_El_Salvador.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/34/Flag_of_El_Salvador.svg", - "width": 1064, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-26T17:16:30Z", - "description": "country in Central America", - "coordinates": { - "lat": 13.83333333, - "lon": -88.91666667 - }, - "normalizedtitle": "El Salvador" - }, - { - "title": "Honduras", - "displaytitle": "Honduras", - "pageid": 13394, - "extract": "\nHonduras ( ( listen); Spanish: [onˈduɾas]), officially the Republic of Honduras (Spanish: República de Honduras), is a republic in Central America. It has at times been referred to as Spanish Honduras to differentiate it from British Honduras, which became modern-day Belize. Honduras is bordered to the west by Guatemala, to the southwest by El Salvador, to the southeast by Nicaragua, to the south by the Pacific Ocean at the Gulf of Fonseca, and to the north by the Gulf of Honduras, a large inlet of the Caribbean Sea.\nHonduras was home to several important Mesoamerican cultures, most notably the Maya, before the Spanish invaded in the sixteenth century. The Spanish introduced Roman Catholicism and the now predominant Spanish language, along with numerous customs that have blended with the indigenous culture. Honduras became independent in 1821 and has since been a republic, although it has consistently endured much social strife and political instability, and remains one of the poorest countries in the Western Hemisphere.", - "extract_html": "

\n

Honduras ( ( listen); Spanish: [onˈduɾas]), officially the Republic of Honduras (Spanish: República de Honduras), is a republic in Central America. It has at times been referred to as Spanish Honduras to differentiate it from British Honduras, which became modern-day Belize. Honduras is bordered to the west by Guatemala, to the southwest by El Salvador, to the southeast by Nicaragua, to the south by the Pacific Ocean at the Gulf of Fonseca, and to the north by the Gulf of Honduras, a large inlet of the Caribbean Sea.

\n

Honduras was home to several important Mesoamerican cultures, most notably the Maya, before the Spanish invaded in the sixteenth century. The Spanish introduced Roman Catholicism and the now predominant Spanish language, along with numerous customs that have blended with the indigenous culture. Honduras became independent in 1821 and has since been a republic, although it has consistently endured much social strife and political instability, and remains one of the poorest countries in the Western Hemisphere.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Flag_of_Honduras.svg/320px-Flag_of_Honduras.svg.png", - "width": 320, - "height": 160, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/82/Flag_of_Honduras.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/82/Flag_of_Honduras.svg", - "width": 1000, - "height": 500 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T23:51:26Z", - "description": "republic in Central America", - "coordinates": { - "lat": 15, - "lon": -86.5 - }, - "normalizedtitle": "Honduras" - }, - { - "title": "1969", - "displaytitle": "1969", - "pageid": 34610, - "extract": "1969 (MCMLXIX) was a common year starting on Wednesday of the Gregorian calendar, the 1969th year of the Common Era (CE) and Anno Domini (AD) designations, the 969th year of the 2nd millennium, the 69th year of the 20th century, and the 10th and last year of the 1960s decade.", - "extract_html": "

1969 (MCMLXIX) was a common year starting on Wednesday of the Gregorian calendar, the 1969th year of the Common Era (CE) and Anno Domini (AD) designations, the 969th year of the 2nd millennium, the 69th year of the 20th century, and the 10th and last year of the 1960s decade.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T12:09:34Z", - "description": "year", - "normalizedtitle": "1969" - }, - { - "title": "Football_War", - "displaytitle": "Football War", - "pageid": 57596, - "extract": "The Football War (Spanish: La guerra del fútbol), also known as the Soccer War or 100 Hour War, was a brief war fought between El Salvador and Honduras in 1969. Existing tensions between the two countries coincided with rioting during a 1970 FIFA World Cup qualifier. The war began on 14 July 1969, when the Salvadoran military launched an attack against Honduras. The Organization of American States (OAS) negotiated a cease-fire on the night of 18 July (hence \"100 Hour War\"), which took full effect on 20 July.", - "extract_html": "

The Football War (Spanish: La guerra del fútbol), also known as the Soccer War or 100 Hour War, was a brief war fought between El Salvador and Honduras in 1969. Existing tensions between the two countries coincided with rioting during a 1970 FIFA World Cup qualifier. The war began on 14 July 1969, when the Salvadoran military launched an attack against Honduras. The Organization of American States (OAS) negotiated a cease-fire on the night of 18 July (hence \"100 Hour War\"), which took full effect on 20 July.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/Honduras-CIA_WFB_Map.png/298px-Honduras-CIA_WFB_Map.png", - "width": 298, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/ef/Honduras-CIA_WFB_Map.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/ef/Honduras-CIA_WFB_Map.png", - "width": 330, - "height": 354 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T02:34:06Z", - "description": "brief war fought by El Salvador and Honduras in 1969", - "normalizedtitle": "Football War" - }, - { - "title": "International_Court_of_Justice", - "displaytitle": "International Court of Justice", - "pageid": 14918, - "extract": "The International Court of Justice (French: Cour internationale de justice; commonly referred to as the World Court, ICJ or The Hague) is the primary judicial branch of the United Nations (UN).", - "extract_html": "

The International Court of Justice (French: Cour internationale de justice; commonly referred to as the World Court, ICJ or The Hague) is the primary judicial branch of the United Nations (UN).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/International_Court_of_Justice_Seal.svg/320px-International_Court_of_Justice_Seal.svg.png", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/f4/International_Court_of_Justice_Seal.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/f4/International_Court_of_Justice_Seal.svg", - "width": 231, - "height": 231 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T19:43:02Z", - "description": "primary judicial organ of the United Nations", - "coordinates": { - "lat": 52.0866, - "lon": 4.2955 - }, - "normalizedtitle": "International Court of Justice" - } - ], - "year": 1980 - }, - { - "text": "Prince Juan Carlos becomes Spain's acting head of state, taking over for the country's ailing dictator, Gen. Francisco Franco.", - "pages": [ - { - "title": "Juan_Carlos_I_of_Spain", - "displaytitle": "Juan Carlos I of Spain", - "pageid": 75795, - "extract": "Juan Carlos (Spanish: [xwaŋˈkaɾlos]; Juan Carlos Alfonso Víctor María de Borbón y Borbón-Dos Sicilias, born 5 January 1938) reigned as King of Spain from 1975 until his abdication in 2014.\nJuan Carlos is the grandson of Alfonso XIII, the last king of Spain prior to the monarchy's abolition in 1931 and the subsequent declaration of the Second Spanish Republic. Juan Carlos was born in Rome, Italy, during his family's exile. Following his victory in the Spanish Civil War in 1939, Generalísimo Francisco Franco, the Spanish dictator, took over the government of Spain and in 1947, Spain's status as a monarchy was affirmed and a law was passed allowing Franco to choose his successor. Juan Carlos's father, Juan, was the fourth child of Alfonso, who had renounced his claims to the throne in January 1941. Juan was seen by Franco to be too liberal and in 1969, was bypassed in favour of Juan Carlos as Franco's successor and next head of state.\nJuan Carlos spent his early years in Italy and came to Spain in 1947 to continue his studies.", - "extract_html": "

Juan Carlos (Spanish: [xwaŋˈkaɾlos]; Juan Carlos Alfonso Víctor María de Borbón y Borbón-Dos Sicilias, born 5 January 1938) reigned as King of Spain from 1975 until his abdication in 2014.

\n

Juan Carlos is the grandson of Alfonso XIII, the last king of Spain prior to the monarchy's abolition in 1931 and the subsequent declaration of the Second Spanish Republic. Juan Carlos was born in Rome, Italy, during his family's exile. Following his victory in the Spanish Civil War in 1939, Generalísimo Francisco Franco, the Spanish dictator, took over the government of Spain and in 1947, Spain's status as a monarchy was affirmed and a law was passed allowing Franco to choose his successor. Juan Carlos's father, Juan, was the fourth child of Alfonso, who had renounced his claims to the throne in January 1941. Juan was seen by Franco to be too liberal and in 1969, was bypassed in favour of Juan Carlos as Franco's successor and next head of state.

\n

Juan Carlos spent his early years in Italy and came to Spain in 1947 to continue his studies.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Rey_Juan_Carlos_2013.jpg/237px-Rey_Juan_Carlos_2013.jpg", - "width": 237, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/9e/Rey_Juan_Carlos_2013.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/9e/Rey_Juan_Carlos_2013.jpg", - "width": 730, - "height": 987 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T08:42:39Z", - "description": "King of Spain", - "normalizedtitle": "Juan Carlos I of Spain" - }, - { - "title": "Francisco_Franco", - "displaytitle": "Francisco Franco", - "pageid": 11466, - "extract": "Francisco Franco Bahamonde (Spanish pronunciation: [fɾanˈθisko ˈfɾaŋko βa.aˈmonde]; 4 December 1892 – 20 November 1975) was a Spanish general who ruled over Spain as a military dictator from 1939 until his death in 1975.\nAs a conservative and a monarchist, Franco opposed the abolition of the monarchy and the establishment of a socialist secular republic in 1931. With the 1936 elections, the conservative Spanish Confederation of Autonomous Right-wing Groups lost by a narrow margin, and the leftist Popular Front came to power. Intending to overthrow the republic, Franco followed other generals in attempting a failed coup that precipitated the Spanish Civil War. With the death of the other generals, Franco quickly became his faction's only leader. Franco gained military support from various regimes and groups, especially Nazi Germany and Fascist Italy, while the Republican side was supported by Spanish communists and anarchists as well as the Soviet Union, Mexico, and the International Brigades.", - "extract_html": "

Francisco Franco Bahamonde (Spanish pronunciation: [fɾanˈθisko ˈfɾaŋko βa.aˈmonde]; 4 December 1892 – 20 November 1975) was a Spanish general who ruled over Spain as a military dictator from 1939 until his death in 1975.

\n

As a conservative and a monarchist, Franco opposed the abolition of the monarchy and the establishment of a socialist secular republic in 1931. With the 1936 elections, the conservative Spanish Confederation of Autonomous Right-wing Groups lost by a narrow margin, and the leftist Popular Front came to power. Intending to overthrow the republic, Franco followed other generals in attempting a failed coup that precipitated the Spanish Civil War. With the death of the other generals, Franco quickly became his faction's only leader. Franco gained military support from various regimes and groups, especially Nazi Germany and Fascist Italy, while the Republican side was supported by Spanish communists and anarchists as well as the Soviet Union, Mexico, and the International Brigades.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Franco0001.PNG/236px-Franco0001.PNG", - "width": 236, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/f7/Franco0001.PNG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/f7/Franco0001.PNG", - "width": 310, - "height": 420 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T15:31:38Z", - "description": "Spanish general and dictator", - "normalizedtitle": "Francisco Franco" - } - ], - "year": 1975 - }, - { - "text": "The Rumble in the Jungle boxing match between Muhammad Ali and George Foreman takes place in Kinshasa, Zaire.", - "pages": [ - { - "title": "The_Rumble_in_the_Jungle", - "displaytitle": "The Rumble in the Jungle", - "pageid": 188163, - "extract": "The Rumble in the Jungle was a historic boxing event in Kinshasa, Zaire (now Democratic Republic of the Congo) on October 30, 1974 (at 4:00 am). Held at the 20th of May Stadium (now the Stade Tata Raphaël), it pitted the undefeated world heavyweight champion George Foreman against challenger Muhammad Ali, a former heavyweight champion; the attendance was 60,000. Ali won by knockout, putting Foreman down just before the end of the eighth round. It has been called \"arguably the greatest sporting event of the 20th century\".", - "extract_html": "

The Rumble in the Jungle was a historic boxing event in Kinshasa, Zaire (now Democratic Republic of the Congo) on October 30, 1974 (at 4:00 am). Held at the 20th of May Stadium (now the Stade Tata Raphaël), it pitted the undefeated world heavyweight champion George Foreman against challenger Muhammad Ali, a former heavyweight champion; the attendance was 60,000. Ali won by knockout, putting Foreman down just before the end of the eighth round. It has been called \"arguably the greatest sporting event of the 20th century\".", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/6/6d/The_Rumble_in_the_Jungle_poster.jpg/255px-The_Rumble_in_the_Jungle_poster.jpg", - "width": 255, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/en/6/6d/The_Rumble_in_the_Jungle_poster.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/6/6d/The_Rumble_in_the_Jungle_poster.jpg", - "width": 354, - "height": 444 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T14:24:17Z", - "description": "sporting event", - "coordinates": { - "lat": -4.338, - "lon": 15.322 - }, - "normalizedtitle": "The Rumble in the Jungle" - }, - { - "title": "Muhammad_Ali", - "displaytitle": "Muhammad Ali", - "pageid": 63747, - "extract": "Muhammad Ali (; born Cassius Marcellus Clay Jr.; January 17, 1942 – June 3, 2016) was an American professional boxer and activist. He is widely regarded as one of the most significant and celebrated sports figures of the 20th century. From early in his career, Ali was known as an inspiring, controversial, and polarizing figure both inside and outside the ring.\nCassius Clay was born and raised in Louisville, Kentucky, and began training as an amateur boxer when he was 12 years old. At age 18, he won a gold medal in the light heavyweight division at the 1960 Summer Olympics in Rome and turned professional later that year. At age 22 in 1964, he won the WBA, WBC, and lineal heavyweight titles from Sonny Liston in a big upset.", - "extract_html": "

Muhammad Ali (; born Cassius Marcellus Clay Jr.; January 17, 1942 – June 3, 2016) was an American professional boxer and activist. He is widely regarded as one of the most significant and celebrated sports figures of the 20th century. From early in his career, Ali was known as an inspiring, controversial, and polarizing figure both inside and outside the ring.

\n

Cassius Clay was born and raised in Louisville, Kentucky, and began training as an amateur boxer when he was 12 years old. At age 18, he won a gold medal in the light heavyweight division at the 1960 Summer Olympics in Rome and turned professional later that year. At age 22 in 1964, he won the WBA, WBC, and lineal heavyweight titles from Sonny Liston in a big upset.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Muhammad_Ali_NYWTS.jpg/256px-Muhammad_Ali_NYWTS.jpg", - "width": 256, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/89/Muhammad_Ali_NYWTS.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/89/Muhammad_Ali_NYWTS.jpg", - "width": 2932, - "height": 3669 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T04:50:37Z", - "description": "African American boxer, philanthropist and activist", - "normalizedtitle": "Muhammad Ali" - }, - { - "title": "George_Foreman", - "displaytitle": "George Foreman", - "pageid": 150091, - "extract": "George Edward Foreman (born January 10, 1949) is an American former professional boxer who competed from 1969 to 1977, and from 1987 to 1997. Nicknamed \"Big George\", he is a two-time world heavyweight champion and an Olympic gold medalist. Outside the sport he is an ordained minister, author, and entrepreneur.\nAfter a troubled childhood Foreman took up amateur boxing and won a gold medal in the heavyweight division at the 1968 Summer Olympics. Having turned professional the next year, he won the world heavyweight title with a second-round knockout of then-undefeated Joe Frazier in 1973. Two successful title defenses were made before Foreman's first professional loss to Muhammad Ali in \"The Rumble in the Jungle\" in 1974.", - "extract_html": "

George Edward Foreman (born January 10, 1949) is an American former professional boxer who competed from 1969 to 1977, and from 1987 to 1997. Nicknamed \"Big George\", he is a two-time world heavyweight champion and an Olympic gold medalist. Outside the sport he is an ordained minister, author, and entrepreneur.

\n

After a troubled childhood Foreman took up amateur boxing and won a gold medal in the heavyweight division at the 1968 Summer Olympics. Having turned professional the next year, he won the world heavyweight title with a second-round knockout of then-undefeated Joe Frazier in 1973. Two successful title defenses were made before Foreman's first professional loss to Muhammad Ali in \"The Rumble in the Jungle\" in 1974.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/George_Foreman_071516.jpg/240px-George_Foreman_071516.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/50/George_Foreman_071516.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/50/George_Foreman_071516.jpg", - "width": 1706, - "height": 2269 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-22T00:42:51Z", - "description": "a retired American professional boxer, ordained Baptist minister, author and entrepreneur", - "normalizedtitle": "George Foreman" - }, - { - "title": "Kinshasa", - "displaytitle": "Kinshasa", - "pageid": 45773, - "extract": "Kinshasa (; French: [kɛ̃.ʃa.za]; formerly Léopoldville (French: Léopoldville or Dutch Leopoldstad )) is the capital and the largest city of the Democratic Republic of the Congo. It is situated on the Congo River.\nOnce a site of fishing and trading villages, Kinshasa is now a megacity with an estimated population of more than 11 million. It faces Brazzaville, the capital of the neighbouring Republic of the Congo, which can be seen in the distance across the wide Congo River, making them the two closest capital cities on Earth after Rome and the Vatican City. The city of Kinshasa is also one of the DRC's 26 provinces. Because the administrative boundaries of the city-province cover a vast area, over 90 percent of the city-province's land is rural in nature, and the urban area occupies a small but expanding section on the western side.\nKinshasa is Africa's third-largest urban area after Cairo and Lagos.", - "extract_html": "

Kinshasa (; French: [kɛ̃.ʃa.za]; formerly Léopoldville (French: Léopoldville or Dutch Leopoldstad )) is the capital and the largest city of the Democratic Republic of the Congo. It is situated on the Congo River.

\n

Once a site of fishing and trading villages, Kinshasa is now a megacity with an estimated population of more than 11 million. It faces Brazzaville, the capital of the neighbouring Republic of the Congo, which can be seen in the distance across the wide Congo River, making them the two closest capital cities on Earth after Rome and the Vatican City. The city of Kinshasa is also one of the DRC's 26 provinces. Because the administrative boundaries of the city-province cover a vast area, over 90 percent of the city-province's land is rural in nature, and the urban area occupies a small but expanding section on the western side.

\n

Kinshasa is Africa's third-largest urban area after Cairo and Lagos.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2e/Kinshasa_-Gombe.JPG/320px-Kinshasa_-Gombe.JPG", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2e/Kinshasa_-Gombe.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2e/Kinshasa_-Gombe.JPG", - "width": 2048, - "height": 2048 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T00:23:56Z", - "description": "capital city of the Democratic Republic of the Congo", - "coordinates": { - "lat": -4.325, - "lon": 15.32222222 - }, - "normalizedtitle": "Kinshasa" - }, - { - "title": "Zaire", - "displaytitle": "Zaire", - "pageid": 34421, - "extract": "Zaire (), officially the Republic of Zaire (French: République du Zaïre; French pronunciation: ​[za.iʁ]), was the name for the Democratic Republic of the Congo that existed between 1971 and 1997 in Central Africa. The country was a one-party state and dictatorship, run by Mobutu Sese Seko and his ruling Popular Movement of the Revolution party. Zaire was established following Mobutu's seizure of power in a military coup in 1965, following five years of political upheaval following independence known as the Congo Crisis. Zaire had a strongly centralist constitution and foreign assets were nationalised. The period is sometimes referred to as the Second Congolese Republic.\nA wider campaign of Authenticité, ridding the country of the influences from the colonial era of the Belgian Congo, was also launched under Mobutu's direction.", - "extract_html": "

Zaire (), officially the Republic of Zaire (French: République du Zaïre; French pronunciation: ​[za.iʁ]), was the name for the Democratic Republic of the Congo that existed between 1971 and 1997 in Central Africa. The country was a one-party state and dictatorship, run by Mobutu Sese Seko and his ruling Popular Movement of the Revolution party. Zaire was established following Mobutu's seizure of power in a military coup in 1965, following five years of political upheaval following independence known as the Congo Crisis. Zaire had a strongly centralist constitution and foreign assets were nationalised. The period is sometimes referred to as the Second Congolese Republic.

\n

A wider campaign of Authenticité, ridding the country of the influences from the colonial era of the Belgian Congo, was also launched under Mobutu's direction.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_Zaire.svg/320px-Flag_of_Zaire.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/5c/Flag_of_Zaire.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/5c/Flag_of_Zaire.svg", - "width": 750, - "height": 500 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T21:31:55Z", - "description": "country in Africa now known as the Democratic Republic of the Congo", - "normalizedtitle": "Zaire" - } - ], - "year": 1974 - }, - { - "text": "The Bosphorus Bridge in Istanbul, Turkey is completed, connecting the continents of Europe and Asia over the Bosphorus for the second time.", - "pages": [ - { - "title": "Bosphorus_Bridge", - "displaytitle": "Bosphorus Bridge", - "pageid": 4096049, - "extract": "The 15 July Martyrs Bridge (Turkish: 15 Temmuz Şehitler Köprüsü) or unofficially the Bosphorus Bridge (Turkish: Boğaziçi Köprüsü), also called the First Bridge (Turkish: Birinci Köprü), is one of the three suspension bridges spanning the Bosphorus strait (Turkish: Boğaziçi) in Istanbul, Turkey, thus connecting Europe and Asia (alongside Fatih Sultan Mehmet Bridge and Yavuz Sultan Selim Bridge). The bridge extends between Ortaköy (in Europe) and Beylerbeyi (in Asia).\nIt is a gravity-anchored suspension bridge with steel towers and inclined hangers. The aerodynamic deck hangs on zigzag steel cables. It is 1,560 m (5,118 ft) long with a deck width of 33.40 m (110 ft). The distance between the towers (main span) is 1,074 m (3,524 ft) and the total height of the towers is 165 m (541 ft).", - "extract_html": "

The 15 July Martyrs Bridge (Turkish: 15 Temmuz Şehitler Köprüsü) or unofficially the Bosphorus Bridge (Turkish: Boğaziçi Köprüsü), also called the First Bridge (Turkish: Birinci Köprü), is one of the three suspension bridges spanning the Bosphorus strait (Turkish: Boğaziçi) in Istanbul, Turkey, thus connecting Europe and Asia (alongside Fatih Sultan Mehmet Bridge and Yavuz Sultan Selim Bridge). The bridge extends between Ortaköy (in Europe) and Beylerbeyi (in Asia).

\n

It is a gravity-anchored suspension bridge with steel towers and inclined hangers. The aerodynamic deck hangs on zigzag steel cables. It is 1,560 m (5,118 ft) long with a deck width of 33.40 m (110 ft). The distance between the towers (main span) is 1,074 m (3,524 ft) and the total height of the towers is 165 m (541 ft).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Bosphorus_Bridge.jpg/320px-Bosphorus_Bridge.jpg", - "width": 320, - "height": 181, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/76/Bosphorus_Bridge.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/76/Bosphorus_Bridge.jpg", - "width": 2048, - "height": 1161 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T07:03:44Z", - "description": "bridge on Bosphorus in Istanbul, Turkey", - "coordinates": { - "lat": 41.04527778, - "lon": 29.03444444 - }, - "normalizedtitle": "Bosphorus Bridge" - }, - { - "title": "Istanbul", - "displaytitle": "Istanbul", - "pageid": 3391396, - "extract": "Istanbul (UK: , or US: ; Turkish: İstanbul [isˈtɑnbuɫ] ( listen)), historically known as Constantinople and Byzantium, is the most populous city in Turkey and the country's economic, cultural, and historic center. Istanbul is a transcontinental city in Eurasia, straddling the Bosphorus strait (which separates Europe and Asia) between the Sea of Marmara and the Black Sea. Its commercial and historical center lies on the European side and about a third of its population lives on the Asian side. The city is the administrative center of the Istanbul Metropolitan Municipality (coterminous with Istanbul Province), both hosting a population of around 14.7 million residents. Istanbul is one of the world's most populous cities and ranks as the world's 7th-largest city proper and the largest European city.\nFounded under the name of Byzantion (Βυζάντιον) on the Sarayburnu promontory around 660 BCE, the city developed to become one of the most significant in history.", - "extract_html": "

Istanbul (UK: , or US: ; Turkish: İstanbul [isˈtɑnbuɫ] ( listen)), historically known as Constantinople and Byzantium, is the most populous city in Turkey and the country's economic, cultural, and historic center. Istanbul is a transcontinental city in Eurasia, straddling the Bosphorus strait (which separates Europe and Asia) between the Sea of Marmara and the Black Sea. Its commercial and historical center lies on the European side and about a third of its population lives on the Asian side. The city is the administrative center of the Istanbul Metropolitan Municipality (coterminous with Istanbul Province), both hosting a population of around 14.7 million residents. Istanbul is one of the world's most populous cities and ranks as the world's 7th-largest city proper and the largest European city.

\n

Founded under the name of Byzantion (Βυζάντιον) on the Sarayburnu promontory around 660 BCE, the city developed to become one of the most significant in history.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Istanbul_collage_5j.jpg/191px-Istanbul_collage_5j.jpg", - "width": 191, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/ba/Istanbul_collage_5j.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/ba/Istanbul_collage_5j.jpg", - "width": 502, - "height": 838 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T15:50:24Z", - "description": "largest city in Turkey", - "coordinates": { - "lat": 41.01361111, - "lon": 28.955 - }, - "normalizedtitle": "Istanbul" - }, - { - "title": "Bosphorus", - "displaytitle": "Bosphorus", - "pageid": 3705, - "extract": "The Bosphorus ( or ) or Bosporus (; Ancient Greek: Βόσπορος, Bósporos, pronounced Vosporos in modern Greek; Turkish: Boğaziçi, pronounced [boːaziˈt͡ʃi]) is a narrow, natural strait and an internationally significant waterway located in northwestern Turkey. It forms part of the continental boundary between Europe and Asia, and separates Asian Turkey from European Turkey.", - "extract_html": "

The Bosphorus ( or ) or Bosporus (; Ancient Greek: Βόσπορος, Bósporos, pronounced Vosporos in modern Greek; Turkish: Boğaziçi, pronounced [boːaziˈt͡ʃi]) is a narrow, natural strait and an internationally significant waterway located in northwestern Turkey. It forms part of the continental boundary between Europe and Asia, and separates Asian Turkey from European Turkey.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Locator_map_of_Turkey.svg/320px-Locator_map_of_Turkey.svg.png", - "width": 320, - "height": 245, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2a/Locator_map_of_Turkey.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2a/Locator_map_of_Turkey.svg", - "width": 680, - "height": 520 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-15T08:22:19Z", - "description": "strait that forms part of the boundary between Europe and Asia", - "coordinates": { - "lat": 41.11944444, - "lon": 29.07527778 - }, - "normalizedtitle": "Bosphorus" - } - ], - "year": 1973 - }, - { - "text": "In Vietnam, the worst monsoon to hit the area in six years causes severe floods, kills 293, leaves 200,000 homeless and virtually halts the Vietnam War.", - "pages": [ - { - "title": "Vietnam", - "displaytitle": "Vietnam", - "pageid": 202354, - "extract": "\nVietnam (UK: , US: ( listen); Vietnamese: Việt Nam [vîət nāːm] ( listen)), officially the Socialist Republic of Vietnam (Vietnamese: Cộng hòa xã hội chủ nghĩa Việt Nam ( listen)), is the easternmost country on the Indochina Peninsula in Southeast Asia. With an estimated 94.6 million inhabitants as of 2016, it is the world's 14th-most-populous country, and the ninth-most-populous Asian country. Vietnam is bordered by China to the north, Laos to the northwest, Cambodia to the southwest, Thailand across the Gulf of Thailand to the southwest, and the Philippines, Malaysia and Indonesia across the South China Sea to the east and southeast. Its capital city has been Hanoi since the reunification of North and South Vietnam in 1976, with Ho Chi Minh City as a historical city as well.\nThe northern part of Vietnam was part of Imperial China for over a millennium, from 111 BC to AD 939. An independent Vietnamese state was formed in 939, following a Vietnamese victory in the Battle of Bạch Đằng River.", - "extract_html": "

\n

Vietnam (UK: , US: ( listen); Vietnamese: Việt Nam [vîət nāːm] ( listen)), officially the Socialist Republic of Vietnam (Vietnamese: Cộng hòa xã hội chủ nghĩa Việt Nam ( listen)), is the easternmost country on the Indochina Peninsula in Southeast Asia. With an estimated 94.6 million inhabitants as of 2016, it is the world's 14th-most-populous country, and the ninth-most-populous Asian country. Vietnam is bordered by China to the north, Laos to the northwest, Cambodia to the southwest, Thailand across the Gulf of Thailand to the southwest, and the Philippines, Malaysia and Indonesia across the South China Sea to the east and southeast. Its capital city has been Hanoi since the reunification of North and South Vietnam in 1976, with Ho Chi Minh City as a historical city as well.

\n

The northern part of Vietnam was part of Imperial China for over a millennium, from 111 BC to AD 939. An independent Vietnamese state was formed in 939, following a Vietnamese victory in the Battle of Bạch Đằng River.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Flag_of_Vietnam.svg/320px-Flag_of_Vietnam.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/21/Flag_of_Vietnam.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/21/Flag_of_Vietnam.svg", - "width": 900, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T12:52:57Z", - "description": "republic in Southeast Asia", - "coordinates": { - "lat": 16.16666667, - "lon": 107.83333333 - }, - "normalizedtitle": "Vietnam" - }, - { - "title": "Monsoon", - "displaytitle": "Monsoon", - "pageid": 57630, - "extract": "Monsoon () is traditionally defined as a seasonal reversing wind accompanied by corresponding changes in precipitation, but is now used to describe seasonal changes in atmospheric circulation and precipitation associated with the asymmetric heating of land and sea. Usually, the term monsoon is used to refer to the rainy phase of a seasonally changing pattern, although technically there is also a dry phase. The term is sometimes incorrectly used for locally heavy but short-term rains, although these rains meet the dictionary definition of monsoon.\nThe major monsoon systems of the world consist of the West African and Asia-Australian monsoons.", - "extract_html": "

Monsoon () is traditionally defined as a seasonal reversing wind accompanied by corresponding changes in precipitation, but is now used to describe seasonal changes in atmospheric circulation and precipitation associated with the asymmetric heating of land and sea. Usually, the term monsoon is used to refer to the rainy phase of a seasonally changing pattern, although technically there is also a dry phase. The term is sometimes incorrectly used for locally heavy but short-term rains, although these rains meet the dictionary definition of monsoon.

\n

The major monsoon systems of the world consist of the West African and Asia-Australian monsoons.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Monsoon_clouds_near_Nagercoil.jpg/320px-Monsoon_clouds_near_Nagercoil.jpg", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2d/Monsoon_clouds_near_Nagercoil.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2d/Monsoon_clouds_near_Nagercoil.jpg", - "width": 1151, - "height": 863 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-02T14:04:29Z", - "description": "seasonal changes in atmospheric circulation and precipitation associated with the asymmetric heating of land and sea", - "normalizedtitle": "Monsoon" - }, - { - "title": "Vietnam_War", - "displaytitle": "Vietnam War", - "pageid": 32611, - "extract": "The Vietnam War (Vietnamese: Chiến tranh Việt Nam), also known as the Second Indochina War, and known in Vietnam as the Resistance War Against America (Vietnamese: Kháng chiến chống Mỹ) or simply the American War, was a war that occurred in Vietnam, Laos, and Cambodia from 1 November 1955 to the fall of Saigon on 30 April 1975. It was the second of the Indochina Wars and was officially fought between North Vietnam and the government of South Vietnam. The North Vietnamese army was supported by the Soviet Union, China and other communist allies and the South Vietnamese army was supported by the United States, South Korea, Australia, Thailand and other anti-communist allies. The war is therefore considered a Cold War-era proxy war.\nThe Viet Cong (also known as the National Liberation Front, or NLF), a South Vietnamese communist common front aided by the North, fought a guerrilla war against anti-communist forces in the region, while the People's Army of Vietnam, also known as the North Vietnamese Army (NVA), engaged in more conventional warfare, at times committing large units to battle. As the war continued, the military actions of the Viet Cong decreased as the role and engagement of the NVA grew.", - "extract_html": "

The Vietnam War (Vietnamese: Chiến tranh Việt Nam), also known as the Second Indochina War, and known in Vietnam as the Resistance War Against America (Vietnamese: Kháng chiến chống Mỹ) or simply the American War, was a war that occurred in Vietnam, Laos, and Cambodia from 1 November 1955 to the fall of Saigon on 30 April 1975. It was the second of the Indochina Wars and was officially fought between North Vietnam and the government of South Vietnam. The North Vietnamese army was supported by the Soviet Union, China and other communist allies and the South Vietnamese army was supported by the United States, South Korea, Australia, Thailand and other anti-communist allies. The war is therefore considered a Cold War-era proxy war.

\n

The Viet Cong (also known as the National Liberation Front, or NLF), a South Vietnamese communist common front aided by the North, fought a guerrilla war against anti-communist forces in the region, while the People's Army of Vietnam, also known as the North Vietnamese Army (NVA), engaged in more conventional warfare, at times committing large units to battle. As the war continued, the military actions of the Viet Cong decreased as the role and engagement of the NVA grew.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/VNWarMontage.png/302px-VNWarMontage.png", - "width": 302, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/43/VNWarMontage.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/43/VNWarMontage.png", - "width": 788, - "height": 834 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T22:46:14Z", - "description": "1959-1975 conflict in Vietnam", - "normalizedtitle": "Vietnam War" - } - ], - "year": 1970 - }, - { - "text": "English model Jean Shrimpton causes a global sensation by wearing a daring white minidress to Derby Day at Flemington Racecourse in Melbourne, Australia.", - "pages": [ - { - "title": "Jean_Shrimpton", - "displaytitle": "Jean Shrimpton", - "pageid": 2492371, - "extract": "Jean Rosemary Shrimpton (born 6 November 1942) is an English model and actress. She was an icon of Swinging London and is considered to be one of the world's first supermodels. She appeared on numerous magazine covers including Vogue, Harper's Bazaar, Vanity Fair, Glamour, Elle, Ladies' Home Journal, Newsweek, and Time. In 2009, Shrimpton was named by Harper's Bazaar as one of the 26 best models of all time and in 2012, by Time as one of the 100 most influential fashion icons of all time.", - "extract_html": "

Jean Rosemary Shrimpton (born 6 November 1942) is an English model and actress. She was an icon of Swinging London and is considered to be one of the world's first supermodels. She appeared on numerous magazine covers including Vogue, Harper's Bazaar, Vanity Fair, Glamour, Elle, Ladies' Home Journal, Newsweek, and Time. In 2009, Shrimpton was named by Harper's Bazaar as one of the 26 best models of all time and in 2012, by Time as one of the 100 most influential fashion icons of all time.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Jean_Shrimpton_%281965%29.jpg/240px-Jean_Shrimpton_%281965%29.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/48/Jean_Shrimpton_%281965%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/48/Jean_Shrimpton_%281965%29.jpg", - "width": 1313, - "height": 1751 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-13T04:24:18Z", - "description": "English model and actress", - "normalizedtitle": "Jean Shrimpton" - }, - { - "title": "White_shift_dress_of_Jean_Shrimpton", - "displaytitle": "White shift dress of Jean Shrimpton", - "pageid": 44138340, - "extract": "On 1965 Derby Day at Flemington Racecourse in Melbourne, Australia, English model Jean Shrimpton wore a white minidress that sparked controversy and was later described as a pivotal moment in women's fashion.", - "extract_html": "

On 1965 Derby Day at Flemington Racecourse in Melbourne, Australia, English model Jean Shrimpton wore a white minidress that sparked controversy and was later described as a pivotal moment in women's fashion.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/2/26/White_shift_dress_of_Jean_Shrimpton.jpg/149px-White_shift_dress_of_Jean_Shrimpton.jpg", - "width": 149, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/en/2/26/White_shift_dress_of_Jean_Shrimpton.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/2/26/White_shift_dress_of_Jean_Shrimpton.jpg", - "width": 159, - "height": 340 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T03:56:29Z", - "normalizedtitle": "White shift dress of Jean Shrimpton" - }, - { - "title": "Victoria_Derby", - "displaytitle": "Victoria Derby", - "pageid": 2782759, - "extract": "The Victoria Derby is a Victoria Racing Club Group 1 Thoroughbred horse race for three-year-olds held under Set Weights conditions over a distance of 2,500 metres at Flemington Racecourse, Melbourne, Australia scheduled annually on the first day of VRC Spring Carnival, Victoria Derby Day.", - "extract_html": "

The Victoria Derby is a Victoria Racing Club Group 1 Thoroughbred horse race for three-year-olds held under Set Weights conditions over a distance of 2,500 metres at Flemington Racecourse, Melbourne, Australia scheduled annually on the first day of VRC Spring Carnival, Victoria Derby Day.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/LUCRATIVE_1940_VRC_DERBY_MAURICE_McCARTEN.JPG/226px-LUCRATIVE_1940_VRC_DERBY_MAURICE_McCARTEN.JPG", - "width": 226, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b7/LUCRATIVE_1940_VRC_DERBY_MAURICE_McCARTEN.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b7/LUCRATIVE_1940_VRC_DERBY_MAURICE_McCARTEN.JPG", - "width": 327, - "height": 463 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-14T03:11:28Z", - "description": "annual horse race in Australia since 1855", - "normalizedtitle": "Victoria Derby" - }, - { - "title": "Flemington_Racecourse", - "displaytitle": "Flemington Racecourse", - "pageid": 232440, - "extract": "Flemington Racecourse is a major horse racing venue located in Melbourne, Victoria, Australia. It is most notable for hosting the Melbourne Cup, which is Australia's richest horse race. The racecourse is situated on low alluvial flats, next to the Maribyrnong River.", - "extract_html": "

Flemington Racecourse is a major horse racing venue located in Melbourne, Victoria, Australia. It is most notable for hosting the Melbourne Cup, which is Australia's richest horse race. The racecourse is situated on low alluvial flats, next to the Maribyrnong River.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-20T12:23:52Z", - "coordinates": { - "lat": -37.79027778, - "lon": 144.9125 - }, - "normalizedtitle": "Flemington Racecourse" - }, - { - "title": "Melbourne", - "displaytitle": "Melbourne", - "pageid": 17306237, - "extract": "Melbourne ( locally [ˈmɛɫbn̩] ( listen)) is the state capital and most populous city of the Australian state of Victoria, and the second-most populous city in Australia and Oceania. The name \"Melbourne\" covers an urban agglomeration spanning 2,664 km2 (1,029 sq mi), which comprises the broader metropolitan area, as well as being the common name for its city centre. The metropolis is located on the large natural bay of Port Phillip and expands into the hinterlands towards the Dandenong and Macedon mountain ranges, Mornington Peninsula and Yarra Valley. Melbourne consists of 31 municipalities. It has a population of 4,641,636 as of 2016, and its inhabitants are called Melburnians.\nFounded by free settlers from the British Crown colony of Van Diemen's Land on 30 August 1835, in what was then the colony of New South Wales, it was incorporated as a Crown settlement in 1837.", - "extract_html": "

Melbourne ( locally [ˈmɛɫbn̩] ( listen)) is the state capital and most populous city of the Australian state of Victoria, and the second-most populous city in Australia and Oceania. The name \"Melbourne\" covers an urban agglomeration spanning 2,664 km2 (1,029 sq mi), which comprises the broader metropolitan area, as well as being the common name for its city centre. The metropolis is located on the large natural bay of Port Phillip and expands into the hinterlands towards the Dandenong and Macedon mountain ranges, Mornington Peninsula and Yarra Valley. Melbourne consists of 31 municipalities. It has a population of 4,641,636 as of 2016, and its inhabitants are called Melburnians.

\n

Founded by free settlers from the British Crown colony of Van Diemen's Land on 30 August 1835, in what was then the colony of New South Wales, it was incorporated as a Crown settlement in 1837.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d8/Melbourne_city_montage.jpg/240px-Melbourne_city_montage.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d8/Melbourne_city_montage.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d8/Melbourne_city_montage.jpg", - "width": 1230, - "height": 1642 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T13:37:37Z", - "description": "capital city of Victoria, Australia", - "coordinates": { - "lat": -37.81361111, - "lon": 144.96305556 - }, - "normalizedtitle": "Melbourne" - } - ], - "year": 1965 - }, - { - "text": "Vietnam War: United States Marines repel an intense attack by Viet Cong forces and killing 56 guerrillas near Da Nang.", - "pages": [ - { - "title": "Vietnam_War", - "displaytitle": "Vietnam War", - "pageid": 32611, - "extract": "The Vietnam War (Vietnamese: Chiến tranh Việt Nam), also known as the Second Indochina War, and known in Vietnam as the Resistance War Against America (Vietnamese: Kháng chiến chống Mỹ) or simply the American War, was a war that occurred in Vietnam, Laos, and Cambodia from 1 November 1955 to the fall of Saigon on 30 April 1975. It was the second of the Indochina Wars and was officially fought between North Vietnam and the government of South Vietnam. The North Vietnamese army was supported by the Soviet Union, China and other communist allies and the South Vietnamese army was supported by the United States, South Korea, Australia, Thailand and other anti-communist allies. The war is therefore considered a Cold War-era proxy war.\nThe Viet Cong (also known as the National Liberation Front, or NLF), a South Vietnamese communist common front aided by the North, fought a guerrilla war against anti-communist forces in the region, while the People's Army of Vietnam, also known as the North Vietnamese Army (NVA), engaged in more conventional warfare, at times committing large units to battle. As the war continued, the military actions of the Viet Cong decreased as the role and engagement of the NVA grew.", - "extract_html": "

The Vietnam War (Vietnamese: Chiến tranh Việt Nam), also known as the Second Indochina War, and known in Vietnam as the Resistance War Against America (Vietnamese: Kháng chiến chống Mỹ) or simply the American War, was a war that occurred in Vietnam, Laos, and Cambodia from 1 November 1955 to the fall of Saigon on 30 April 1975. It was the second of the Indochina Wars and was officially fought between North Vietnam and the government of South Vietnam. The North Vietnamese army was supported by the Soviet Union, China and other communist allies and the South Vietnamese army was supported by the United States, South Korea, Australia, Thailand and other anti-communist allies. The war is therefore considered a Cold War-era proxy war.

\n

The Viet Cong (also known as the National Liberation Front, or NLF), a South Vietnamese communist common front aided by the North, fought a guerrilla war against anti-communist forces in the region, while the People's Army of Vietnam, also known as the North Vietnamese Army (NVA), engaged in more conventional warfare, at times committing large units to battle. As the war continued, the military actions of the Viet Cong decreased as the role and engagement of the NVA grew.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/VNWarMontage.png/302px-VNWarMontage.png", - "width": 302, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/43/VNWarMontage.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/43/VNWarMontage.png", - "width": 788, - "height": 834 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T22:46:14Z", - "description": "1959-1975 conflict in Vietnam", - "normalizedtitle": "Vietnam War" - }, - { - "title": "United_States_Marine_Corps", - "displaytitle": "United States Marine Corps", - "pageid": 17349325, - "extract": "The United States Marine Corps (USMC), also known as the United States Marines, is a branch of the United States Armed Forces responsible for conducting amphibious operations with the United States Navy. The U.S. Marine Corps is one of the four armed service branches in the U.S. Department of Defense (DoD) and one of the seven uniformed services of the United States.\nThe Marine Corps has been a component of the U.S. Department of the Navy since 30 June 1834, working closely with naval forces. The USMC operates installations on land and aboard sea-going amphibious warfare ships around the world. Additionally, several of the Marines' tactical aviation squadrons, primarily Marine Fighter Attack squadrons, are also embedded in Navy carrier air wings and operate from the aircraft carriers.\nThe history of the Marine Corps began when two battalions of Continental Marines were formed on 10 November 1775 in Philadelphia as a service branch of infantry troops capable of fighting on both at sea and on shore. By the mid-20th century, the U.S. Marine Corps had become a major theorist of amphibious warfare, which were utilized in the Pacific theater of World War II. As of 2016, the USMC has around 182,000 active duty members and some 38,500 reserve Marines.", - "extract_html": "

The United States Marine Corps (USMC), also known as the United States Marines, is a branch of the United States Armed Forces responsible for conducting amphibious operations with the United States Navy. The U.S. Marine Corps is one of the four armed service branches in the U.S. Department of Defense (DoD) and one of the seven uniformed services of the United States.

\n

The Marine Corps has been a component of the U.S. Department of the Navy since 30 June 1834, working closely with naval forces. The USMC operates installations on land and aboard sea-going amphibious warfare ships around the world. Additionally, several of the Marines' tactical aviation squadrons, primarily Marine Fighter Attack squadrons, are also embedded in Navy carrier air wings and operate from the aircraft carriers.

\n

The history of the Marine Corps began when two battalions of Continental Marines were formed on 10 November 1775 in Philadelphia as a service branch of infantry troops capable of fighting on both at sea and on shore. By the mid-20th century, the U.S. Marine Corps had become a major theorist of amphibious warfare, which were utilized in the Pacific theater of World War II. As of 2016, the USMC has around 182,000 active duty members and some 38,500 reserve Marines.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Emblem_of_the_United_States_Marine_Corps.svg/320px-Emblem_of_the_United_States_Marine_Corps.svg.png", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/9f/Emblem_of_the_United_States_Marine_Corps.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/9f/Emblem_of_the_United_States_Marine_Corps.svg", - "width": 720, - "height": 720 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T16:54:42Z", - "description": "branch of the United States Armed Forces", - "normalizedtitle": "United States Marine Corps" - }, - { - "title": "Viet_Cong", - "displaytitle": "Viet Cong", - "pageid": 68286, - "extract": "The Việt Cộng (Vietnamese: [vîət kə̂wŋmˀ] ( listen)), also known as the National Liberation Front, was a communist political organization with its own army – the People's Liberation Armed Forces of South Vietnam (PLAF) – in South Vietnam and Cambodia that fought the United States and South Vietnamese governments, eventually emerging on the winning side. It had both guerrilla and regular army units, as well as a network of cadres who organized peasants in the territory it controlled. Many soldiers were recruited in South Vietnam, but others were attached to the People's Army of Vietnam (PAVN), the regular North Vietnamese army. During the war, communists and anti-war activists insisted the Việt Cộng was an insurgency indigenous to the South, while the U.S. and South Vietnamese governments portrayed the group as a tool of Hanoi. Although the terminology distinguishes northerners from the southerners, communist forces were under a single command structure set up in 1958.\nNorth Vietnam established the National Liberation Front on December 20, 1960, to foment insurgency in the South.", - "extract_html": "

The Việt Cộng (Vietnamese: [vîət kə̂wŋmˀ] ( listen)), also known as the National Liberation Front, was a communist political organization with its own army – the People's Liberation Armed Forces of South Vietnam (PLAF) – in South Vietnam and Cambodia that fought the United States and South Vietnamese governments, eventually emerging on the winning side. It had both guerrilla and regular army units, as well as a network of cadres who organized peasants in the territory it controlled. Many soldiers were recruited in South Vietnam, but others were attached to the People's Army of Vietnam (PAVN), the regular North Vietnamese army. During the war, communists and anti-war activists insisted the Việt Cộng was an insurgency indigenous to the South, while the U.S. and South Vietnamese governments portrayed the group as a tool of Hanoi. Although the terminology distinguishes northerners from the southerners, communist forces were under a single command structure set up in 1958.

\n

North Vietnam established the National Liberation Front on December 20, 1960, to foment insurgency in the South.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/FNL_Flag.svg/320px-FNL_Flag.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/4a/FNL_Flag.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/4a/FNL_Flag.svg", - "width": 900, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-22T17:41:23Z", - "description": "political organization with its own army", - "normalizedtitle": "Viet Cong" - }, - { - "title": "Da_Nang", - "displaytitle": "Da Nang", - "pageid": 425140, - "extract": "Da Nang (Vietnamese: Đà Nẵng, [ɗâː nǎˀŋ] ( listen)) is the third largest city in Vietnam after Ho Chi Minh city and Ha Noi in terms of urbanization and economy and one of the major port cities, in addition to Ho Chi Minh City, Ha Noi and Hai Phong. Situated on the coast of the South China Sea, at the opening end of the Han River, it is the biggest city in Central Vietnam. It is governed as one of the five direct-controlled municipalities of the SRV and is thus under direct administration of the central government.\nDa Nang is the commercial and educational center of Central Vietnam, with a well-sheltered, easily accessible port; its location on the path of National Route 1A and the North–South Railway makes it a hub for transportation. It is located within 100 km of several UNESCO World Heritage Sites, including the Imperial City of Hue, the Old Town of Hoi An, and the My Son ruins. The city was previously known as Cửa Hàn during early Đại Việt settlement, and as Tourane (or Turon) during French colonial rule.", - "extract_html": "

Da Nang (Vietnamese: Đà Nẵng, [ɗâː nǎˀŋ] ( listen)) is the third largest city in Vietnam after Ho Chi Minh city and Ha Noi in terms of urbanization and economy and one of the major port cities, in addition to Ho Chi Minh City, Ha Noi and Hai Phong. Situated on the coast of the South China Sea, at the opening end of the Han River, it is the biggest city in Central Vietnam. It is governed as one of the five direct-controlled municipalities of the SRV and is thus under direct administration of the central government.

\n

Da Nang is the commercial and educational center of Central Vietnam, with a well-sheltered, easily accessible port; its location on the path of National Route 1A and the North–South Railway makes it a hub for transportation. It is located within 100 km of several UNESCO World Heritage Sites, including the Imperial City of Hue, the Old Town of Hoi An, and the My Son ruins. The city was previously known as Cửa Hàn during early Đại Việt settlement, and as Tourane (or Turon) during French colonial rule.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Da_Nang_Montage.jpg/213px-Da_Nang_Montage.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/21/Da_Nang_Montage.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/21/Da_Nang_Montage.jpg", - "width": 800, - "height": 1200 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T15:14:12Z", - "description": "municipality of Vietnam", - "coordinates": { - "lat": 16.06666667, - "lon": 108.23333333 - }, - "normalizedtitle": "Da Nang" - } - ], - "year": 1965 - }, - { - "text": "Due to \"violations of Vladimir Lenin's precepts\", it is decreed that Stalin's body be removed from its place of honour inside Lenin's tomb and buried near the Kremlin Wall with a plain granite marker instead.", - "pages": [ - { - "title": "Vladimir_Lenin", - "displaytitle": "Vladimir Lenin", - "pageid": 11015252, - "extract": "Vladimir Ilyich Ulyanov, better known by the alias Lenin (; 22 April [O.S. 10 April] 1870 – 21 January 1924), was a Russian communist revolutionary, politician and political theorist. He served as head of government of the Russian Republic from 1917 to 1918, of the Russian Soviet Federative Socialist Republic from 1918 to 1924 and of the Soviet Union from 1922 to 1924. Under his administration, Russia and then the wider Soviet Union became a one-party communist state governed by the Russian Communist Party. Ideologically a Marxist, he developed political theories known as Leninism.\nBorn to a wealthy middle-class family in Simbirsk, Lenin embraced revolutionary socialist politics following his brother's execution in 1887. Expelled from Kazan Imperial University for participating in protests against the Russian Empire's Tsarist government, he devoted the following years to a law degree.", - "extract_html": "

Vladimir Ilyich Ulyanov, better known by the alias Lenin (; 22 April [O.S. 10 April] 1870 – 21 January 1924), was a Russian communist revolutionary, politician and political theorist. He served as head of government of the Russian Republic from 1917 to 1918, of the Russian Soviet Federative Socialist Republic from 1918 to 1924 and of the Soviet Union from 1922 to 1924. Under his administration, Russia and then the wider Soviet Union became a one-party communist state governed by the Russian Communist Party. Ideologically a Marxist, he developed political theories known as Leninism.

\n

Born to a wealthy middle-class family in Simbirsk, Lenin embraced revolutionary socialist politics following his brother's execution in 1887. Expelled from Kazan Imperial University for participating in protests against the Russian Empire's Tsarist government, he devoted the following years to a law degree.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c6/Bundesarchiv_Bild_183-71043-0003%2C_Wladimir_Iljitsch_Lenin.jpg/205px-Bundesarchiv_Bild_183-71043-0003%2C_Wladimir_Iljitsch_Lenin.jpg", - "width": 205, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/c6/Bundesarchiv_Bild_183-71043-0003%2C_Wladimir_Iljitsch_Lenin.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/c6/Bundesarchiv_Bild_183-71043-0003%2C_Wladimir_Iljitsch_Lenin.jpg", - "width": 511, - "height": 796 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T10:24:34Z", - "description": "Russian politician, led the October Revolution", - "normalizedtitle": "Vladimir Lenin" - }, - { - "title": "Joseph_Stalin", - "displaytitle": "Joseph Stalin", - "pageid": 15641, - "extract": "Joseph Vissarionovich Stalin (18 December 1878 – 5 March 1953) was a Georgian-born Soviet revolutionary and political leader. Governing the Soviet Union as its dictator from the mid-1920s until his death in 1953, he served as General Secretary of the Central Committee of the Communist Party of the Soviet Union from 1922 to 1952 and as Premier of the Soviet Union from 1941 to 1953. Ideologically a Marxist and a Leninist, Stalin helped to formalise these ideas as Marxism–Leninism while his own policies became known as Stalinism.\nBorn to a poor family in Gori, Russian Empire, as a youth Stalin joined the Marxist Russian Social Democratic Labour Party. He edited the party newspaper Pravda and raised funds for Vladimir Lenin's Bolshevik faction via robberies, kidnappings, and protection rackets. Repeatedly arrested, he underwent several internal exiles.", - "extract_html": "

Joseph Vissarionovich Stalin (18 December 1878 – 5 March 1953) was a Georgian-born Soviet revolutionary and political leader. Governing the Soviet Union as its dictator from the mid-1920s until his death in 1953, he served as General Secretary of the Central Committee of the Communist Party of the Soviet Union from 1922 to 1952 and as Premier of the Soviet Union from 1941 to 1953. Ideologically a Marxist and a Leninist, Stalin helped to formalise these ideas as Marxism–Leninism while his own policies became known as Stalinism.

\n

Born to a poor family in Gori, Russian Empire, as a youth Stalin joined the Marxist Russian Social Democratic Labour Party. He edited the party newspaper Pravda and raised funds for Vladimir Lenin's Bolshevik faction via robberies, kidnappings, and protection rackets. Repeatedly arrested, he underwent several internal exiles.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/97/Stalin_Potsdam_1945_%28cropped%29.jpg/231px-Stalin_Potsdam_1945_%28cropped%29.jpg", - "width": 231, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/97/Stalin_Potsdam_1945_%28cropped%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/97/Stalin_Potsdam_1945_%28cropped%29.jpg", - "width": 243, - "height": 337 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T19:57:05Z", - "description": "General secretary of the Communist Party of the Soviet Union", - "normalizedtitle": "Joseph Stalin" - }, - { - "title": "Moscow_Kremlin_Wall", - "displaytitle": "Moscow Kremlin Wall", - "pageid": 2242282, - "extract": "The Moscow Kremlin Wall is a defensive wall that surrounds the Moscow Kremlin, recognisable by the characteristic notches and its Kremlin towers.", - "extract_html": "

The Moscow Kremlin Wall is a defensive wall that surrounds the Moscow Kremlin, recognisable by the characteristic notches and its Kremlin towers.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Kreml-Mauer_Moskwa_a.jpg/320px-Kreml-Mauer_Moskwa_a.jpg", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/df/Kreml-Mauer_Moskwa_a.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/df/Kreml-Mauer_Moskwa_a.jpg", - "width": 1390, - "height": 1042 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-08T22:13:39Z", - "coordinates": { - "lat": 55.74916667, - "lon": 37.61666667 - }, - "normalizedtitle": "Moscow Kremlin Wall" - } - ], - "year": 1961 - }, - { - "text": "The Soviet Union detonates the Tsar Bomba over Novaya Zemlya; equivalent to 57 megatons of TNT, it remains the largest explosive device ever detonated, nuclear or otherwise.", - "pages": [ - { - "title": "Tsar_Bomba", - "displaytitle": "Tsar Bomba", - "pageid": 92214, - "extract": "\nTsar Bomba (Russian: Царь-бомба; \"Tsar-bomb\") was the Western nickname for the Soviet RDS-220 hydrogen bomb (code name Ivan or Vanya), the most powerful nuclear weapon ever detonated. Its test on 30 October 1961 remains the most powerful man-made explosion in history. It was also referred to as Kuzkina mat (Russian: Кузькина мать; \"Kuzma's mother\"), possibly referring to First secretary Nikita Khrushchev's promise to show the United States a Kuzkina mat (an idiom roughly translating to \"We'll show you!\") at a 1960 session of United Nations General Assembly.\nThe bomb had a yield of 50 megaton TNT (210 PJ). In theory, it had a maximum yield of 100 megatons if it were to have included a U-238 tamper, but because only one bomb was built, this was never demonstrated.", - "extract_html": "

\n

Tsar Bomba (Russian: Царь-бомба; \"Tsar-bomb\") was the Western nickname for the Soviet RDS-220 hydrogen bomb (code name Ivan or Vanya), the most powerful nuclear weapon ever detonated. Its test on 30 October 1961 remains the most powerful man-made explosion in history. It was also referred to as Kuzkina mat (Russian: Кузькина мать; \"Kuzma's mother\"), possibly referring to First secretary Nikita Khrushchev's promise to show the United States a Kuzkina mat (an idiom roughly translating to \"We'll show you!\") at a 1960 session of United Nations General Assembly.

\n

The bomb had a yield of 50 megaton TNT (210 PJ). In theory, it had a maximum yield of 100 megatons if it were to have included a U-238 tamper, but because only one bomb was built, this was never demonstrated.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/c/c9/Tsar_photo11.jpg/320px-Tsar_photo11.jpg", - "width": 320, - "height": 251, - "original": "https://upload.wikimedia.org/wikipedia/en/c/c9/Tsar_photo11.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/c/c9/Tsar_photo11.jpg", - "width": 325, - "height": 255 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T16:42:24Z", - "description": "most powerful nuclear weapon ever detonated, in 1961 (2015)", - "coordinates": { - "lat": 73.80722222, - "lon": 54.98166667 - }, - "normalizedtitle": "Tsar Bomba" - }, - { - "title": "TNT_equivalent", - "displaytitle": "TNT equivalent", - "pageid": 4689328, - "extract": "TNT equivalent is a convention for expressing energy, typically used to describe the energy released in an explosion.", - "extract_html": "

TNT equivalent is a convention for expressing energy, typically used to describe the energy released in an explosion.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nukecloud.png/320px-Nukecloud.png", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/66/Nukecloud.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/66/Nukecloud.png", - "width": 1600, - "height": 1200 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T18:55:25Z", - "description": "unit of measurement", - "normalizedtitle": "TNT equivalent" - } - ], - "year": 1961 - }, - { - "text": "Dr.Michael Woodruff performs the first successful kidney transplant in the United Kingdom at the Edinburgh Royal Infirmary.", - "pages": [ - { - "title": "Michael_Woodruff", - "displaytitle": "Michael Woodruff", - "pageid": 4829979, - "extract": "Sir Michael Francis Addison Woodruff, FRS, FRCS (3 April 1911 – 10 March 2001) was an English surgeon and scientist principally remembered for his research into organ transplantation. Though born in London, Woodruff spent his youth in Australia, where he earned degrees in electrical engineering and medicine. Having completed his studies shortly after the outbreak of World War II, he joined the Australian Army Medical Corps, but was soon captured by Japanese forces and imprisoned in the Changi Prison Camp. While there, he devised an ingenious method of extracting nutrients from agricultural wastes to prevent malnutrition among his fellow POWs.\nAt the conclusion of the war, Woodruff returned to England and began a long career as an academic surgeon, mixing clinical work and research. Woodruff principally studied transplant rejection and immunosuppression.", - "extract_html": "

Sir Michael Francis Addison Woodruff, FRS, FRCS (3 April 1911 – 10 March 2001) was an English surgeon and scientist principally remembered for his research into organ transplantation. Though born in London, Woodruff spent his youth in Australia, where he earned degrees in electrical engineering and medicine. Having completed his studies shortly after the outbreak of World War II, he joined the Australian Army Medical Corps, but was soon captured by Japanese forces and imprisoned in the Changi Prison Camp. While there, he devised an ingenious method of extracting nutrients from agricultural wastes to prevent malnutrition among his fellow POWs.

\n

At the conclusion of the war, Woodruff returned to England and began a long career as an academic surgeon, mixing clinical work and research. Woodruff principally studied transplant rejection and immunosuppression.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/5/59/Sir_michael_woodruff.jpg", - "width": 192, - "height": 255, - "original": "https://upload.wikimedia.org/wikipedia/en/5/59/Sir_michael_woodruff.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/5/59/Sir_michael_woodruff.jpg", - "width": 192, - "height": 255 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T15:36:11Z", - "description": "English surgeon and biologist; transplantation and cancer researcher", - "normalizedtitle": "Michael Woodruff" - }, - { - "title": "Kidney_transplantation", - "displaytitle": "Kidney transplantation", - "pageid": 1584036, - "extract": "Kidney transplantation or renal transplantation is the organ transplant of a kidney into a patient with end-stage renal disease. Kidney transplantation is typically classified as deceased-donor (formerly known as cadaveric) or living-donor transplantation depending on the source of the donor organ. Living-donor renal transplants are further characterized as genetically related (living-related) or non-related (living-unrelated) transplants, depending on whether a biological relationship exists between the donor and recipient. Exchanges and chains are a novel approach to expand the living donor pool. In February 2012, this novel approach to expand the living donor pool resulted in the largest chain in the world, involving 60 participants organized by the National Kidney Registry.", - "extract_html": "

Kidney transplantation or renal transplantation is the organ transplant of a kidney into a patient with end-stage renal disease. Kidney transplantation is typically classified as deceased-donor (formerly known as cadaveric) or living-donor transplantation depending on the source of the donor organ. Living-donor renal transplants are further characterized as genetically related (living-related) or non-related (living-unrelated) transplants, depending on whether a biological relationship exists between the donor and recipient. Exchanges and chains are a novel approach to expand the living donor pool. In February 2012, this novel approach to expand the living donor pool resulted in the largest chain in the world, involving 60 participants organized by the National Kidney Registry.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/Kidtransplant.svg/291px-Kidtransplant.svg.png", - "width": 291, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/4e/Kidtransplant.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/4e/Kidtransplant.svg", - "width": 874, - "height": 960 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T15:39:15Z", - "description": "surgical operation", - "normalizedtitle": "Kidney transplantation" - }, - { - "title": "Royal_Infirmary_of_Edinburgh", - "displaytitle": "Royal Infirmary of Edinburgh", - "pageid": 5023510, - "extract": "\nThe Royal Infirmary of Edinburgh, or RIE, often (but incorrectly) known as the Edinburgh Royal Infirmary, or ERI, was established in 1729 and is the oldest voluntary hospital in Scotland. The new buildings of 1879 were claimed to be the largest voluntary hospital in the United Kingdom, and later on, the Empire. The hospital moved to a new 900 bed site in 2003 in Little France. It is the site of clinical medicine teaching as well as a teaching hospital for the University of Edinburgh Medical School. It is currently run by NHS Lothian.", - "extract_html": "

\n

The Royal Infirmary of Edinburgh, or RIE, often (but incorrectly) known as the Edinburgh Royal Infirmary, or ERI, was established in 1729 and is the oldest voluntary hospital in Scotland. The new buildings of 1879 were claimed to be the largest voluntary hospital in the United Kingdom, and later on, the Empire. The hospital moved to a new 900 bed site in 2003 in Little France. It is the site of clinical medicine teaching as well as a teaching hospital for the University of Edinburgh Medical School. It is currently run by NHS Lothian.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-05T15:29:15Z", - "coordinates": { - "lat": 55.922853, - "lon": -3.136642 - }, - "normalizedtitle": "Royal Infirmary of Edinburgh" - } - ], - "year": 1960 - }, - { - "text": "Cold War: U.S. President Dwight D. Eisenhower formally approves the top secret document National Security Council Paper No. 162/2, which states that the United States' arsenal of nuclear weapons must be maintained and expanded to counter the communist threat.", - "pages": [ - { - "title": "Cold_War", - "displaytitle": "Cold War", - "pageid": 325329, - "extract": "The Cold War was a state of geopolitical tension after World War II between powers in the Eastern Bloc (the Soviet Union and its satellite states) and powers in the Western Bloc (the United States, its NATO allies and others). Historians do not fully agree on the dates, but a common timeframe is the period between 1947, the year the Truman Doctrine (a U.S. foreign policy pledging to aid nations threatened by Soviet expansionism) was announced, and 1991, the year the Soviet Union collapsed. The term \"cold\" is used because there was no large-scale fighting directly between the two sides involved in the conflict, although there were major regional wars, known as proxy wars, supported by the two sides.\nThe Cold War split the temporary wartime alliance against Nazi Germany, leaving the Soviet Union and the United States as two superpowers with profound economic and political differences. The USSR was a Marxist–Leninist state led by its Communist Party of the Soviet Union, which in turn was dominated by a leader with different titles over time, and a small committee called the Politburo. The Party controlled the press, the military, the economy and many organizations.", - "extract_html": "

The Cold War was a state of geopolitical tension after World War II between powers in the Eastern Bloc (the Soviet Union and its satellite states) and powers in the Western Bloc (the United States, its NATO allies and others). Historians do not fully agree on the dates, but a common timeframe is the period between 1947, the year the Truman Doctrine (a U.S. foreign policy pledging to aid nations threatened by Soviet expansionism) was announced, and 1991, the year the Soviet Union collapsed. The term \"cold\" is used because there was no large-scale fighting directly between the two sides involved in the conflict, although there were major regional wars, known as proxy wars, supported by the two sides.

\n

The Cold War split the temporary wartime alliance against Nazi Germany, leaving the Soviet Union and the United States as two superpowers with profound economic and political differences. The USSR was a Marxist–Leninist state led by its Communist Party of the Soviet Union, which in turn was dominated by a leader with different titles over time, and a small committee called the Politburo. The Party controlled the press, the military, the economy and many organizations.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/80/Berlin_Wall_1961-11-20.jpg/320px-Berlin_Wall_1961-11-20.jpg", - "width": 320, - "height": 225, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/80/Berlin_Wall_1961-11-20.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/80/Berlin_Wall_1961-11-20.jpg", - "width": 500, - "height": 352 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T22:23:49Z", - "description": "opposites between the USA and the USSR with allies between 1945-1991", - "normalizedtitle": "Cold War" - }, - { - "title": "Dwight_D._Eisenhower", - "displaytitle": "Dwight D. Eisenhower", - "pageid": 8182, - "extract": "Dwight David Eisenhower ( EYE-zən-how-ər; October 14, 1890 – March 28, 1969) was an American Army general and statesman who served as the 34th President of the United States from 1953 to 1961. During World War II, he was a five-star general in the United States Army and served as Supreme Commander of the Allied Expeditionary Forces in Europe. He was responsible for planning and supervising the invasion of North Africa in Operation Torch in 1942–43 and the successful invasion of France and Germany in 1944–45 from the Western Front.\nEisenhower was born in Denison, Texas, and raised in Kansas in a large family of mostly Pennsylvania Dutch ancestry; his parents had a strong religious background. His mother was born a Lutheran, married as a River Brethren and later joined the International Bible Students Association. Eisenhower did not belong to any organized church until 1952.", - "extract_html": "

Dwight David Eisenhower ( EYE-zən-how-ər; October 14, 1890 – March 28, 1969) was an American Army general and statesman who served as the 34th President of the United States from 1953 to 1961. During World War II, he was a five-star general in the United States Army and served as Supreme Commander of the Allied Expeditionary Forces in Europe. He was responsible for planning and supervising the invasion of North Africa in Operation Torch in 1942–43 and the successful invasion of France and Germany in 1944–45 from the Western Front.

\n

Eisenhower was born in Denison, Texas, and raised in Kansas in a large family of mostly Pennsylvania Dutch ancestry; his parents had a strong religious background. His mother was born a Lutheran, married as a River Brethren and later joined the International Bible Students Association. Eisenhower did not belong to any organized church until 1952.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Dwight_D._Eisenhower%2C_official_photo_portrait%2C_May_29%2C_1959.jpg/255px-Dwight_D._Eisenhower%2C_official_photo_portrait%2C_May_29%2C_1959.jpg", - "width": 255, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/63/Dwight_D._Eisenhower%2C_official_photo_portrait%2C_May_29%2C_1959.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/63/Dwight_D._Eisenhower%2C_official_photo_portrait%2C_May_29%2C_1959.jpg", - "width": 2782, - "height": 3484 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T22:39:54Z", - "description": "American general and politician, 34th president of the United States (in office from 1953 to 1961)", - "normalizedtitle": "Dwight D. Eisenhower" - }, - { - "title": "Classified_information", - "displaytitle": "Classified information", - "pageid": 252857, - "extract": "Classified information is material that a government body claims is sensitive information that requires protection of confidentiality, integrity, or availability. Access is restricted by law or regulation to particular groups of people, and mishandling can incur criminal penalties and loss of respect. A formal security clearance is often required to handle classified documents or access classified data. The clearance process usually requires a satisfactory background investigation. Documents and other information assets are typically marked with one of several (hierarchical) levels of sensitivity—e.g.", - "extract_html": "

Classified information is material that a government body claims is sensitive information that requires protection of confidentiality, integrity, or availability. Access is restricted by law or regulation to particular groups of people, and mishandling can incur criminal penalties and loss of respect. A formal security clearance is often required to handle classified documents or access classified data. The clearance process usually requires a satisfactory background investigation. Documents and other information assets are typically marked with one of several (hierarchical) levels of sensitivity—e.g.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/54/NSALibertyReport.p13.jpg/250px-NSALibertyReport.p13.jpg", - "width": 250, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/54/NSALibertyReport.p13.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/54/NSALibertyReport.p13.jpg", - "width": 614, - "height": 787 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-19T17:43:23Z", - "normalizedtitle": "Classified information" - }, - { - "title": "United_States_National_Security_Council", - "displaytitle": "United States National Security Council", - "pageid": 44026, - "extract": "The White House National Security Council (NSC) is the principal forum used by the president of the United States for consideration of national security and foreign policy matters with senior national security advisors and Cabinet officials and is part of the executive office of the president of the United States. Since its inception under Harry S. Truman, the function of the Council has been to advise and assist the president on national security and foreign policies. The Council also serves as the president's principal arm for coordinating these policies among various government agencies.", - "extract_html": "

The White House National Security Council (NSC) is the principal forum used by the president of the United States for consideration of national security and foreign policy matters with senior national security advisors and Cabinet officials and is part of the executive office of the president of the United States. Since its inception under Harry S. Truman, the function of the Council has been to advise and assist the president on national security and foreign policies. The Council also serves as the president's principal arm for coordinating these policies among various government agencies.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Seal_of_the_Executive_Office_of_the_President_of_the_United_States_2014.svg/320px-Seal_of_the_Executive_Office_of_the_President_of_the_United_States_2014.svg.png", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/bc/Seal_of_the_Executive_Office_of_the_President_of_the_United_States_2014.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/bc/Seal_of_the_Executive_Office_of_the_President_of_the_United_States_2014.svg", - "width": 1000, - "height": 1000 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T02:13:24Z", - "normalizedtitle": "United States National Security Council" - }, - { - "title": "Nuclear_weapon", - "displaytitle": "Nuclear weapon", - "pageid": 21785, - "extract": "A nuclear weapon is an explosive device that derives its destructive force from nuclear reactions, either fission (fission bomb) or from a combination of fission and fusion reactions (thermonuclear bomb). Both bomb types release large quantities of energy from relatively small amounts of matter. The first test of a fission (\"atomic\") bomb released an amount of energy approximately equal to 20,000 tons of TNT (84 TJ). The first thermonuclear (\"hydrogen\") bomb test released energy approximately equal to 10 million tons of TNT (42 PJ). A thermonuclear weapon weighing little more than 2,400 pounds (1,100 kg) can release energy equal to more than 1.2 million tons of TNT (5.0 PJ).", - "extract_html": "

A nuclear weapon is an explosive device that derives its destructive force from nuclear reactions, either fission (fission bomb) or from a combination of fission and fusion reactions (thermonuclear bomb). Both bomb types release large quantities of energy from relatively small amounts of matter. The first test of a fission (\"atomic\") bomb released an amount of energy approximately equal to 20,000 tons of TNT (84 TJ). The first thermonuclear (\"hydrogen\") bomb test released energy approximately equal to 10 million tons of TNT (42 PJ). A thermonuclear weapon weighing little more than 2,400 pounds (1,100 kg) can release energy equal to more than 1.2 million tons of TNT (5.0 PJ).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Nagasakibomb.jpg/268px-Nagasakibomb.jpg", - "width": 268, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/e0/Nagasakibomb.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e0/Nagasakibomb.jpg", - "width": 3245, - "height": 3877 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T20:02:06Z", - "description": "explosive device that derives its destructive force from nuclear reactions", - "normalizedtitle": "Nuclear weapon" - }, - { - "title": "Communism", - "displaytitle": "Communism", - "pageid": 9209651, - "extract": "In political and social sciences, communism (from Latin communis, \"common, universal\") is the philosophical, social, political and economic ideology and movement whose ultimate goal is the establishment of the communist society, which is a socioeconomic order structured upon the common ownership of the means of production and the absence of social classes, money and the state.\nCommunism includes a variety of schools of thought, which broadly include Marxism, anarchism (anarchist communism) and the political ideologies grouped around both. All of these share the analysis that the current order of society stems from its economic system, capitalism; that in this system there are two major social classes: the working class—who must work to survive and who make up the majority within society—and the capitalist class—a minority who derives profit from employing the working class, through private ownership of the means of production—and that conflict between these two classes will trigger a revolution.", - "extract_html": "

In political and social sciences, communism (from Latin communis, \"common, universal\") is the philosophical, social, political and economic ideology and movement whose ultimate goal is the establishment of the communist society, which is a socioeconomic order structured upon the common ownership of the means of production and the absence of social classes, money and the state.

\n

Communism includes a variety of schools of thought, which broadly include Marxism, anarchism (anarchist communism) and the political ideologies grouped around both. All of these share the analysis that the current order of society stems from its economic system, capitalism; that in this system there are two major social classes: the working class—who must work to survive and who make up the majority within society—and the capitalist class—a minority who derives profit from employing the working class, through private ownership of the means of production—and that conflict between these two classes will trigger a revolution.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Communist_star.svg/320px-Communist_star.svg.png", - "width": 320, - "height": 304, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/8f/Communist_star.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/8f/Communist_star.svg", - "width": 1235, - "height": 1175 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-19T15:16:16Z", - "description": "socialist political movement and ideology", - "normalizedtitle": "Communism" - } - ], - "year": 1953 - }, - { - "text": "Pope Pius XII witnesses the \"Miracle of the Sun\" while at the Vatican.", - "pages": [ - { - "title": "Pope_Pius_XII", - "displaytitle": "Pope Pius XII", - "pageid": 23808, - "extract": "Pope Pius XII (Italian: Pio XII), born Eugenio Maria Giuseppe Giovanni Pacelli (Italian pronunciation: [euˈdʒɛːnjo maˈriːa dʒuˈzɛppe dʒoˈvanni paˈtʃɛlli]; 2 March 1876 – 9 October 1958), was head of the Catholic Church from 2 March 1939 to his death in 1958. Before his election to the papacy, Pacelli served as secretary of the Department of Extraordinary Ecclesiastical Affairs, papal nuncio to Germany (1917–1929), and Cardinal Secretary of State, in which capacity he worked to conclude treaties with European and Latin American nations, most notably the Reichskonkordat with Nazi Germany, with which most historians believe the Vatican sought to protect the Church in Germany while Adolf Hitler sought the destruction of \"political Catholicism\". A pre-war critic of Nazism, Pius XII lobbied world leaders to avoid war and, as Pope at the outbreak of war, issued Summi Pontificatus, expressing dismay at the invasion of Poland, reiterating Church teaching against racial persecution and calling for love, compassion and charity to prevail over war.\nWhile the Vatican was officially neutral during the war, Pius XII maintained links to the German Resistance, used diplomacy to aid the victims of the war and lobby for peace, and spoke out against race-based murders and other atrocities. The Reichskonkordat of 1933 and Pius's leadership of the Catholic Church during World War II remain the subject of controversy—including allegations of public silence and inaction about the fate of the Jews. After the war, Pius XII advocated peace and reconciliation, including lenient policies towards Axis and Axis-satellite nations.", - "extract_html": "

Pope Pius XII (Italian: Pio XII), born Eugenio Maria Giuseppe Giovanni Pacelli (Italian pronunciation: [euˈdʒɛːnjo maˈriːa dʒuˈzɛppe dʒoˈvanni paˈtʃɛlli]; 2 March 1876 – 9 October 1958), was head of the Catholic Church from 2 March 1939 to his death in 1958. Before his election to the papacy, Pacelli served as secretary of the Department of Extraordinary Ecclesiastical Affairs, papal nuncio to Germany (1917–1929), and Cardinal Secretary of State, in which capacity he worked to conclude treaties with European and Latin American nations, most notably the Reichskonkordat with Nazi Germany, with which most historians believe the Vatican sought to protect the Church in Germany while Adolf Hitler sought the destruction of \"political Catholicism\". A pre-war critic of Nazism, Pius XII lobbied world leaders to avoid war and, as Pope at the outbreak of war, issued Summi Pontificatus, expressing dismay at the invasion of Poland, reiterating Church teaching against racial persecution and calling for love, compassion and charity to prevail over war.

\n

While the Vatican was officially neutral during the war, Pius XII maintained links to the German Resistance, used diplomacy to aid the victims of the war and lobby for peace, and spoke out against race-based murders and other atrocities. The Reichskonkordat of 1933 and Pius's leadership of the Catholic Church during World War II remain the subject of controversy—including allegations of public silence and inaction about the fate of the Jews. After the war, Pius XII advocated peace and reconciliation, including lenient policies towards Axis and Axis-satellite nations.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d8/His_Holiness_Pope_Pius_XII.png/223px-His_Holiness_Pope_Pius_XII.png", - "width": 223, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d8/His_Holiness_Pope_Pius_XII.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d8/His_Holiness_Pope_Pius_XII.png", - "width": 418, - "height": 599 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-26T14:41:02Z", - "description": "260th Pope of the Catholic Church", - "normalizedtitle": "Pope Pius XII" - }, - { - "title": "Miracle_of_the_Sun", - "displaytitle": "Miracle of the Sun", - "pageid": 3502474, - "extract": "The Miracle of the Sun (Portuguese: O milagre do sol), also known as the Miracle of Fátima, refers to an event that allegedly occurred on 13 October 1917 above a large crowd who had gathered near Fátima, Portugal, in response to a prophecy made by three shepherd children. The prophecy was that the Virgin Mary (referred to as Our Lady of Fatima), would appear and perform miracles on that date. Newspapers published testimony from reporters and other people who claimed to have witnessed extraordinary solar activity, such as the sun appearing to \"dance\" or zig-zag in the sky, careen towards the earth, or emit multicolored light and radiant colors. According to these reports, the event lasted approximately ten minutes.\nThe local bishop opened a canonical investigation of the event in November 1917, to review witness accounts and assess whether the alleged private revelation from Mary were compatible with Catholic theology. The local priest conducting the investigation was particularly convinced by the concurring testimony of extraordinary solar phenomena from secular reporters, government officials, and other skeptics in attendance.", - "extract_html": "

The Miracle of the Sun (Portuguese: O milagre do sol), also known as the Miracle of Fátima, refers to an event that allegedly occurred on 13 October 1917 above a large crowd who had gathered near Fátima, Portugal, in response to a prophecy made by three shepherd children. The prophecy was that the Virgin Mary (referred to as Our Lady of Fatima), would appear and perform miracles on that date. Newspapers published testimony from reporters and other people who claimed to have witnessed extraordinary solar activity, such as the sun appearing to \"dance\" or zig-zag in the sky, careen towards the earth, or emit multicolored light and radiant colors. According to these reports, the event lasted approximately ten minutes.

\n

The local bishop opened a canonical investigation of the event in November 1917, to review witness accounts and assess whether the alleged private revelation from Mary were compatible with Catholic theology. The local priest conducting the investigation was particularly convinced by the concurring testimony of extraordinary solar phenomena from secular reporters, government officials, and other skeptics in attendance.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/Newspaper_fatima.jpg/208px-Newspaper_fatima.jpg", - "width": 208, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/56/Newspaper_fatima.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/56/Newspaper_fatima.jpg", - "width": 1000, - "height": 1535 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T08:42:24Z", - "description": "Notre-Dame de Fátima", - "normalizedtitle": "Miracle of the Sun" - }, - { - "title": "Vatican_City", - "displaytitle": "Vatican City", - "pageid": 32408, - "extract": "\nVatican City ( ( listen); Italian: Città del Vaticano [tʃitˈta ddel vatiˈkaːno]; Latin: Civitas Vaticana), officially Vatican City State or the State of Vatican City (Italian: Stato della Città del Vaticano; Latin: Status Civitatis Vaticanae), is a country located within the city of Rome. With an area of approximately 44 hectares (110 acres), and a population of 1,000, it is the smallest state in the world by both area and population. However, formally it is not sovereign, with sovereignty being held by the Holy See.\nIt is an ecclesiastical or sacerdotal-monarchical state (a type of theocracy) ruled by the Bishop of Rome – the Pope. The highest state functionaries are all Catholic clergy of various national origins. Since the return of the popes from Avignon in 1377, they have generally resided at the Apostolic Palace within what is now Vatican City, although at times residing instead in the Quirinal Palace in Rome or elsewhere.\nVatican City is distinct from the Holy See (Latin: Sancta Sedes), which dates back to early Christianity and is the main episcopal see of 1.2 billion Latin and Eastern Catholic adherents around the globe.", - "extract_html": "

\n

Vatican City ( ( listen); Italian: Città del Vaticano [tʃitˈta ddel vatiˈkaːno]; Latin: Civitas Vaticana), officially Vatican City State or the State of Vatican City (Italian: Stato della Città del Vaticano; Latin: Status Civitatis Vaticanae), is a country located within the city of Rome. With an area of approximately 44 hectares (110 acres), and a population of 1,000, it is the smallest state in the world by both area and population. However, formally it is not sovereign, with sovereignty being held by the Holy See.

\n

It is an ecclesiastical or sacerdotal-monarchical state (a type of theocracy) ruled by the Bishop of Rome – the Pope. The highest state functionaries are all Catholic clergy of various national origins. Since the return of the popes from Avignon in 1377, they have generally resided at the Apostolic Palace within what is now Vatican City, although at times residing instead in the Quirinal Palace in Rome or elsewhere.

\n

Vatican City is distinct from the Holy See (Latin: Sancta Sedes), which dates back to early Christianity and is the main episcopal see of 1.2 billion Latin and Eastern Catholic adherents around the globe.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Flag_of_the_Vatican_City.svg/320px-Flag_of_the_Vatican_City.svg.png", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/00/Flag_of_the_Vatican_City.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/00/Flag_of_the_Vatican_City.svg", - "width": 500, - "height": 500 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T09:40:22Z", - "description": "country in southern Europe under the sovereignty of the Holy See", - "coordinates": { - "lat": 41.9, - "lon": 12.45 - }, - "normalizedtitle": "Vatican City" - } - ], - "year": 1950 - }, - { - "text": "The General Agreement on Tariffs and Trade (GATT), which is the foundation of the World Trade Organisation (WTO), is founded.", - "pages": [ - { - "title": "General_Agreement_on_Tariffs_and_Trade", - "displaytitle": "General Agreement on Tariffs and Trade", - "pageid": 12831, - "extract": "General Agreement on Tariffs and Trade (GATT) was a legal agreement between many countries, whose overall purpose was to promote international trade by reducing or eliminating trade barriers such as tariffs or quotas. According to its preamble, its purpose was the \"substantial reduction of tariffs and other trade barriers and the elimination of preferences, on a reciprocal and mutually advantageous basis.\"\nIt was first discussed during the United Nations Conference on Trade and Employment and was the outcome of the failure of negotiating governments to create the International Trade Organization (ITO). GATT was signed by 23 nations in Geneva on October 30, 1947, and took effect on January 1, 1948. It remained in effect until the signature by 123 nations in Marrakesh on April 14, 1994, of the Uruguay Round Agreements, which established the World Trade Organization (WTO) on January 1, 1995. The WTO is in some ways a successor to GATT, and the original GATT text (GATT 1947) is still in effect under the WTO framework, subject to the modifications of GATT 1994.\nGATT, and it successor WTO, have successfully reduced tariffs.", - "extract_html": "

General Agreement on Tariffs and Trade (GATT) was a legal agreement between many countries, whose overall purpose was to promote international trade by reducing or eliminating trade barriers such as tariffs or quotas. According to its preamble, its purpose was the \"substantial reduction of tariffs and other trade barriers and the elimination of preferences, on a reciprocal and mutually advantageous basis.\"

\n

It was first discussed during the United Nations Conference on Trade and Employment and was the outcome of the failure of negotiating governments to create the International Trade Organization (ITO). GATT was signed by 23 nations in Geneva on October 30, 1947, and took effect on January 1, 1948. It remained in effect until the signature by 123 nations in Marrakesh on April 14, 1994, of the Uruguay Round Agreements, which established the World Trade Organization (WTO) on January 1, 1995. The WTO is in some ways a successor to GATT, and the original GATT text (GATT 1947) is still in effect under the WTO framework, subject to the modifications of GATT 1994.

\n

GATT, and it successor WTO, have successfully reduced tariffs.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T11:22:51Z", - "description": "a multilateral agreement regulating international trade", - "normalizedtitle": "General Agreement on Tariffs and Trade" - }, - { - "title": "World_Trade_Organization", - "displaytitle": "World Trade Organization", - "pageid": 33873, - "extract": "The World Trade Organization (WTO) is an intergovernmental organization that regulates international trade. The WTO officially commenced on 1 January 1995 under the Marrakesh Agreement, signed by 123 nations on 15 April 1994, replacing the General Agreement on Tariffs and Trade (GATT), which commenced in 1948. It is the largest international economic organization in the world. The WTO deals with regulation of trade in goods, services and intellectual property between participating countries by providing a framework for negotiating trade agreements and a dispute resolution process aimed at enforcing participants' adherence to WTO agreements, which are signed by representatives of member governments and ratified by their parliaments. Most of the issues that the WTO focuses on derive from previous trade negotiations, especially from the Uruguay Round (1986–1994).\nThe WTO is attempting to complete negotiations on the Doha Development Round, which was launched in 2001 with an explicit focus on developing countries.", - "extract_html": "

The World Trade Organization (WTO) is an intergovernmental organization that regulates international trade. The WTO officially commenced on 1 January 1995 under the Marrakesh Agreement, signed by 123 nations on 15 April 1994, replacing the General Agreement on Tariffs and Trade (GATT), which commenced in 1948. It is the largest international economic organization in the world. The WTO deals with regulation of trade in goods, services and intellectual property between participating countries by providing a framework for negotiating trade agreements and a dispute resolution process aimed at enforcing participants' adherence to WTO agreements, which are signed by representatives of member governments and ratified by their parliaments. Most of the issues that the WTO focuses on derive from previous trade negotiations, especially from the Uruguay Round (1986–1994).

\n

The WTO is attempting to complete negotiations on the Doha Development Round, which was launched in 2001 with an explicit focus on developing countries.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/WTO_members_and_observers.svg/320px-WTO_members_and_observers.svg.png", - "width": 320, - "height": 164, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/9a/WTO_members_and_observers.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/9a/WTO_members_and_observers.svg", - "width": 863, - "height": 443 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T20:30:31Z", - "description": "organization that intends to supervise and liberalize international trade", - "coordinates": { - "lat": 46.12, - "lon": 6.09 - }, - "normalizedtitle": "World Trade Organization" - } - ], - "year": 1947 - }, - { - "text": "Jackie Robinson of the Kansas City Monarchs signs a contract for the Brooklyn Dodgers to break the baseball color line.", - "pages": [ - { - "title": "Jackie_Robinson", - "displaytitle": "Jackie Robinson", - "pageid": 16193, - "extract": "Jack Roosevelt Robinson (January 31, 1919 – October 24, 1972) was an American professional baseball second baseman who became the first African American to play in Major League Baseball (MLB) in the modern era. Robinson broke the baseball color line when the Brooklyn Dodgers started him at first base on April 15, 1947. When the Dodgers signed Robinson, they heralded the end of racial segregation in professional baseball that had relegated black players to the Negro leagues since the 1880s. Robinson was inducted into the Baseball Hall of Fame in 1962.\nRobinson had an exceptional 10-year baseball career. He was the recipient of the inaugural MLB Rookie of the Year Award in 1947, was an All-Star for six consecutive seasons from 1949 through 1954, and won the National League Most Valuable Player Award in 1949—the first black player so honored.", - "extract_html": "

Jack Roosevelt Robinson (January 31, 1919 – October 24, 1972) was an American professional baseball second baseman who became the first African American to play in Major League Baseball (MLB) in the modern era. Robinson broke the baseball color line when the Brooklyn Dodgers started him at first base on April 15, 1947. When the Dodgers signed Robinson, they heralded the end of racial segregation in professional baseball that had relegated black players to the Negro leagues since the 1880s. Robinson was inducted into the Baseball Hall of Fame in 1962.

\n

Robinson had an exceptional 10-year baseball career. He was the recipient of the inaugural MLB Rookie of the Year Award in 1947, was an All-Star for six consecutive seasons from 1949 through 1954, and won the National League Most Valuable Player Award in 1949—the first black player so honored.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Jackie_Robinson%2C_Brooklyn_Dodgers%2C_1954.jpg/249px-Jackie_Robinson%2C_Brooklyn_Dodgers%2C_1954.jpg", - "width": 249, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2d/Jackie_Robinson%2C_Brooklyn_Dodgers%2C_1954.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2d/Jackie_Robinson%2C_Brooklyn_Dodgers%2C_1954.jpg", - "width": 3234, - "height": 4146 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-18T17:16:59Z", - "description": "American baseball player", - "normalizedtitle": "Jackie Robinson" - }, - { - "title": "Kansas_City_Monarchs", - "displaytitle": "Kansas City Monarchs", - "pageid": 648088, - "extract": "The Kansas City Monarchs were the longest-running franchise in the history of baseball's Negro Leagues. Operating in Kansas City, Missouri and owned by J. L. Wilkinson, they were charter members of the Negro National League from 1920 to 1930. J. L. Wilkinson was the first Caucasian owner at the time of the establishment of the team. In 1930, the Monarchs became the first professional baseball team to use a portable lighting system which was transported from game to game in trucks to play games at night, five years before any major league team did. The Monarchs won ten league championships before integration, and triumphed in the first Negro League World Series in 1924.", - "extract_html": "

The Kansas City Monarchs were the longest-running franchise in the history of baseball's Negro Leagues. Operating in Kansas City, Missouri and owned by J. L. Wilkinson, they were charter members of the Negro National League from 1920 to 1930. J. L. Wilkinson was the first Caucasian owner at the time of the establishment of the team. In 1930, the Monarchs became the first professional baseball team to use a portable lighting system which was transported from game to game in trucks to play games at night, five years before any major league team did. The Monarchs won ten league championships before integration, and triumphed in the first Negro League World Series in 1924.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-22T18:20:55Z", - "description": "baseball team", - "normalizedtitle": "Kansas City Monarchs" - }, - { - "title": "History_of_the_Brooklyn_Dodgers", - "displaytitle": "History of the Brooklyn Dodgers", - "pageid": 25036634, - "extract": "The Brooklyn Dodgers was an American baseball team in the National League, that was active in the major leagues from 1884 until 1957, after which the club moved to Los Angeles, where it continued its history as the Los Angeles Dodgers. The team's name derived from the reputed skill of Brooklyn residents at evading the city's trolley streetcar network. The Dodgers played in two stadiums in South Brooklyn, each named Washington Park, and at Eastern Park in the neighborhood of Brownsville before moving to Ebbets Field in the neighborhood of Flatbush in 1913.", - "extract_html": "

The Brooklyn Dodgers was an American baseball team in the National League, that was active in the major leagues from 1884 until 1957, after which the club moved to Los Angeles, where it continued its history as the Los Angeles Dodgers. The team's name derived from the reputed skill of Brooklyn residents at evading the city's trolley streetcar network. The Dodgers played in two stadiums in South Brooklyn, each named Washington Park, and at Eastern Park in the neighborhood of Brownsville before moving to Ebbets Field in the neighborhood of Flatbush in 1913.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Brooklyn_Dodgers_Team_Photograph%2C_1913.jpg/320px-Brooklyn_Dodgers_Team_Photograph%2C_1913.jpg", - "width": 320, - "height": 187, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/50/Brooklyn_Dodgers_Team_Photograph%2C_1913.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/50/Brooklyn_Dodgers_Team_Photograph%2C_1913.jpg", - "width": 1024, - "height": 597 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T23:09:41Z", - "description": "historical Baseball team", - "normalizedtitle": "History of the Brooklyn Dodgers" - }, - { - "title": "Baseball_color_line", - "displaytitle": "Baseball color line", - "pageid": 757798, - "extract": "The color line in American baseball excluded players of Black African descent from Major League Baseball and its affiliated Minor Leagues until 1947 (with a few notable exceptions in the 19th century before the line was firmly established). Racial segregation in professional baseball was sometimes called a gentlemen's agreement, meaning a tacit understanding, as there was no written policy at the highest level of organized baseball, the major leagues. But a high minor league's vote in 1887 against allowing new contracts with black players within its league sent a powerful signal that eventually led to the disappearance of blacks from the sport's other minor leagues later that century, including the low minors.\nAfter the line was in virtually full effect in the early 20th century, many black baseball clubs were established, especially during the 1920s to 1940s when there were several Negro Leagues. During this period some light-skinned Hispanic players, Native Americans, and native Hawaiians were able to play in the Major Leagues.\nThe color line was broken for good when Jackie Robinson signed with the Brooklyn Dodgers organization for the 1946 season. In 1947, both Robinson in the National League and Larry Doby with the American League's Cleveland Indians appeared in games for their teams.", - "extract_html": "

The color line in American baseball excluded players of Black African descent from Major League Baseball and its affiliated Minor Leagues until 1947 (with a few notable exceptions in the 19th century before the line was firmly established). Racial segregation in professional baseball was sometimes called a gentlemen's agreement, meaning a tacit understanding, as there was no written policy at the highest level of organized baseball, the major leagues. But a high minor league's vote in 1887 against allowing new contracts with black players within its league sent a powerful signal that eventually led to the disappearance of blacks from the sport's other minor leagues later that century, including the low minors.

\n

After the line was in virtually full effect in the early 20th century, many black baseball clubs were established, especially during the 1920s to 1940s when there were several Negro Leagues. During this period some light-skinned Hispanic players, Native Americans, and native Hawaiians were able to play in the Major Leagues.

\n

The color line was broken for good when Jackie Robinson signed with the Brooklyn Dodgers organization for the 1946 season. In 1947, both Robinson in the National League and Larry Doby with the American League's Cleveland Indians appeared in games for their teams.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-06T19:17:29Z", - "normalizedtitle": "Baseball color line" - } - ], - "year": 1945 - }, - { - "text": "Anne and Margot Frank are deported from Auschwitz to the Bergen-Belsen concentration camp, where they die from disease the following year, shortly before the end of WWII.", - "pages": [ - { - "title": "Anne_Frank", - "displaytitle": "Anne Frank", - "pageid": 804581, - "extract": "Annelies Marie \"Anne\" Frank (German pronunciation: [ʔanəliːs maˈʁiː ˈʔanə ˈfʁaŋk]; Dutch pronunciation: [ʔɑnəˈlis maˈri ˈʔɑnə ˈfrɑŋk]; 12 June 1929 – February or March 1945) was a German-born diarist. One of the most discussed Jewish victims of the Holocaust, she gained fame posthumously with the publication of The Diary of a Young Girl (originally Het Achterhuis; English: The Secret Annex), in which she documents her life in hiding from 1942 to 1944, during the German occupation of the Netherlands in World War II. It is one of the world's most widely known books and has been the basis for several plays and films.\nBorn in Frankfurt, Germany, she lived most of her life in or near Amsterdam, Netherlands, having moved there with her family at the age of four-and-a-half when the Nazis gained control over Germany. Born a German national, Frank lost her citizenship in 1941 and thus became stateless. By May 1940, the Franks were trapped in Amsterdam by the German occupation of the Netherlands. As persecutions of the Jewish population increased in July 1942, the family went into hiding in some concealed rooms behind a bookcase in the building where Anne's father worked.", - "extract_html": "

Annelies Marie \"Anne\" Frank (German pronunciation: [ʔanəliːs maˈʁiː ˈʔanə ˈfʁaŋk]; Dutch pronunciation: [ʔɑnəˈlis maˈri ˈʔɑnə ˈfrɑŋk]; 12 June 1929 – February or March 1945) was a German-born diarist. One of the most discussed Jewish victims of the Holocaust, she gained fame posthumously with the publication of The Diary of a Young Girl (originally Het Achterhuis; English: The Secret Annex), in which she documents her life in hiding from 1942 to 1944, during the German occupation of the Netherlands in World War II. It is one of the world's most widely known books and has been the basis for several plays and films.

\n

Born in Frankfurt, Germany, she lived most of her life in or near Amsterdam, Netherlands, having moved there with her family at the age of four-and-a-half when the Nazis gained control over Germany. Born a German national, Frank lost her citizenship in 1941 and thus became stateless. By May 1940, the Franks were trapped in Amsterdam by the German occupation of the Netherlands. As persecutions of the Jewish population increased in July 1942, the family went into hiding in some concealed rooms behind a bookcase in the building where Anne's father worked.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/AnneFrank1940.jpg/199px-AnneFrank1940.jpg", - "width": 199, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/74/AnneFrank1940.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/74/AnneFrank1940.jpg", - "width": 1048, - "height": 1687 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-17T16:14:49Z", - "description": "victim of the Holocaust and author of a diary", - "normalizedtitle": "Anne Frank" - }, - { - "title": "Margot_Frank", - "displaytitle": "Margot Frank", - "pageid": 1797476, - "extract": "Margot Betti Frank (February 16, 1926 – February 1945) was the eldest daughter of Otto Frank and Edith Frank and the older sister of Anne Frank. Margot's deportation order from the Gestapo hastened the Frank family into hiding. According to the diary of her younger sister, Anne, Margot kept a diary of her own, but no trace of Margot's diary has ever been found.", - "extract_html": "

Margot Betti Frank (February 16, 1926 – February 1945) was the eldest daughter of Otto Frank and Edith Frank and the older sister of Anne Frank. Margot's deportation order from the Gestapo hastened the Frank family into hiding. According to the diary of her younger sister, Anne, Margot kept a diary of her own, but no trace of Margot's diary has ever been found.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/3/35/Margot_Frank%2CMay_1942.JPG", - "width": 283, - "height": 310, - "original": "https://upload.wikimedia.org/wikipedia/en/3/35/Margot_Frank%2CMay_1942.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/3/35/Margot_Frank%2CMay_1942.JPG", - "width": 283, - "height": 310 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-24T23:37:34Z", - "description": "older sister of Anne Frank", - "normalizedtitle": "Margot Frank" - }, - { - "title": "Auschwitz_concentration_camp", - "displaytitle": "Auschwitz concentration camp", - "pageid": 2006, - "extract": "Auschwitz concentration camp (German: Konzentrationslager Auschwitz, pronounced [kɔntsɛntʁaˈtsi̯oːnsˌlaːɡɐ ˈʔaʊʃvɪts] ( listen), also KZ Auschwitz or KL Auschwitz) was a network of German Nazi concentration camps and extermination camps built and operated by the Third Reich in Polish areas annexed by Nazi Germany during World War II. It consisted of Auschwitz I (the original camp), Auschwitz II–Birkenau (a combination concentration/extermination camp), Auschwitz III–Monowitz (a labor camp to staff an IG Farben factory), and 45 satellite camps.\nAuschwitz I was first constructed to hold Polish political prisoners, who began to arrive in May 1940. The first extermination of prisoners took place in September 1941, and Auschwitz II–Birkenau went on to become a major site of the Nazi Final Solution to the Jewish Question. From early 1942 until late 1944, transport trains delivered Jews to the camp's gas chambers from all over German-occupied Europe, where they were killed en masse with the pesticide Zyklon B. An estimated 1.3 million people were sent to the camp, of whom at least 1.1 million died. Around 90 percent of those killed were Jewish; approximately 1 in 6 Jews killed in the Holocaust died at the camp. Others deported to Auschwitz included 150,000 Poles, 23,000 Romani and Sinti, 15,000 Soviet prisoners of war, 400 Jehovah's Witnesses, and tens of thousands of others of diverse nationalities, including an unknown number of homosexuals.", - "extract_html": "

Auschwitz concentration camp (German: Konzentrationslager Auschwitz, pronounced [kɔntsɛntʁaˈtsi̯oːnsˌlaːɡɐ ˈʔaʊʃvɪts] ( listen), also KZ Auschwitz or KL Auschwitz) was a network of German Nazi concentration camps and extermination camps built and operated by the Third Reich in Polish areas annexed by Nazi Germany during World War II. It consisted of Auschwitz I (the original camp), Auschwitz II–Birkenau (a combination concentration/extermination camp), Auschwitz III–Monowitz (a labor camp to staff an IG Farben factory), and 45 satellite camps.

\n

Auschwitz I was first constructed to hold Polish political prisoners, who began to arrive in May 1940. The first extermination of prisoners took place in September 1941, and Auschwitz II–Birkenau went on to become a major site of the Nazi Final Solution to the Jewish Question. From early 1942 until late 1944, transport trains delivered Jews to the camp's gas chambers from all over German-occupied Europe, where they were killed en masse with the pesticide Zyklon B. An estimated 1.3 million people were sent to the camp, of whom at least 1.1 million died. Around 90 percent of those killed were Jewish; approximately 1 in 6 Jews killed in the Holocaust died at the camp. Others deported to Auschwitz included 150,000 Poles, 23,000 Romani and Sinti, 15,000 Soviet prisoners of war, 400 Jehovah's Witnesses, and tens of thousands of others of diverse nationalities, including an unknown number of homosexuals.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Auschwitz-birkenau-main_track.jpg/320px-Auschwitz-birkenau-main_track.jpg", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/f9/Auschwitz-birkenau-main_track.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/f9/Auschwitz-birkenau-main_track.jpg", - "width": 600, - "height": 450 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T23:07:53Z", - "description": "network of concentration and extermination camps", - "coordinates": { - "lat": 50.03583333, - "lon": 19.17833333 - }, - "normalizedtitle": "Auschwitz concentration camp" - }, - { - "title": "Bergen-Belsen_concentration_camp", - "displaytitle": "Bergen-Belsen concentration camp", - "pageid": 150011, - "extract": "Bergen-Belsen [ˈbɛʁɡn̩.bɛlsn̩], or Belsen, was a Nazi concentration camp in what is today Lower Saxony in northern Germany, southwest of the town of Bergen near Celle. Originally established as a prisoner of war camp, in 1943, parts of it became a concentration camp. Initially this was an \"exchange camp\", where Jewish hostages were held with the intention of exchanging them for German prisoners of war held overseas. The camp was later expanded to accommodate Jews from other concentration camps.\nAfter 1945 the name was applied to the displaced persons camp established nearby, but it is most commonly associated with the concentration camp. From 1941 to 1945, almost 20,000 Soviet prisoners of war and a further 50,000 inmates died there.", - "extract_html": "

Bergen-Belsen [ˈbɛʁɡn̩.bɛlsn̩], or Belsen, was a Nazi concentration camp in what is today Lower Saxony in northern Germany, southwest of the town of Bergen near Celle. Originally established as a prisoner of war camp, in 1943, parts of it became a concentration camp. Initially this was an \"exchange camp\", where Jewish hostages were held with the intention of exchanging them for German prisoners of war held overseas. The camp was later expanded to accommodate Jews from other concentration camps.

\n

After 1945 the name was applied to the displaced persons camp established nearby, but it is most commonly associated with the concentration camp. From 1941 to 1945, almost 20,000 Soviet prisoners of war and a further 50,000 inmates died there.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2e/Bergen-belsen.jpg/320px-Bergen-belsen.jpg", - "width": 320, - "height": 234, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2e/Bergen-belsen.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2e/Bergen-belsen.jpg", - "width": 631, - "height": 461 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-09T19:51:08Z", - "description": "Nazi concentration camp", - "coordinates": { - "lat": 52.75777778, - "lon": 9.90777778 - }, - "normalizedtitle": "Bergen-Belsen concentration camp" - } - ], - "year": 1944 - }, - { - "text": "Lt. Tony Fasson, Able Seaman Colin Grazier and canteen assistant Tommy Brown from HMS Petard board U-559, retrieving material which would lead to the decryption of the German Enigma code.", - "pages": [ - { - "title": "Tony_Fasson", - "displaytitle": "Tony Fasson", - "pageid": 14203761, - "extract": "Lieutenant Francis Anthony Blair Fasson, (17 July 1913 – 30 October 1942), known as Tony Fasson, was a British Royal Navy officer.", - "extract_html": "

Lieutenant Francis Anthony Blair Fasson, (17 July 1913 – 30 October 1942), known as Tony Fasson, was a British Royal Navy officer.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-10T12:35:34Z", - "description": "British naval officer", - "coordinates": { - "lat": 32.5, - "lon": 33 - }, - "normalizedtitle": "Tony Fasson" - }, - { - "title": "Colin_Grazier", - "displaytitle": "Colin Grazier", - "pageid": 14203782, - "extract": "Able Seaman Colin Grazier, GC was posthumously awarded the George Cross for the \"outstanding bravery and steadfast devotion to duty in the face of danger\" which he displayed on 30 October 1942 in action in the eastern Mediterranean when capturing codebooks vital for the breaking of the German naval \"Shark\" Enigma cipher from the sinking German submarine U-559.", - "extract_html": "

Able Seaman Colin Grazier, GC was posthumously awarded the George Cross for the \"outstanding bravery and steadfast devotion to duty in the face of danger\" which he displayed on 30 October 1942 in action in the eastern Mediterranean when capturing codebooks vital for the breaking of the German naval \"Shark\" Enigma cipher from the sinking German submarine U-559.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-18T23:00:21Z", - "description": "George Cross recipient in World War II", - "normalizedtitle": "Colin Grazier" - }, - { - "title": "Tommy_Brown_(NAAFI_assistant)", - "displaytitle": "Tommy Brown (NAAFI assistant)", - "pageid": 29543715, - "extract": "Thomas William Brown GM (c. 1926 – 13 February 1945) was an English recipient of the George Medal, the youngest person to have ever received that award. In October 1942, as a NAAFI canteen assistant, he was involved in the action between Petard and U-559, being one of three men to board the sinking submarine in an effort to retrieve vital documents, and was the only one of the three to survive. These documents would later lead the Bletchley Park codebreakers to crack the German Enigma code. After this heroic deed, it was revealed that he was underage to be at sea. He returned home to North Shields.", - "extract_html": "

Thomas William Brown GM (c. 1926 – 13 February 1945) was an English recipient of the George Medal, the youngest person to have ever received that award. In October 1942, as a NAAFI canteen assistant, he was involved in the action between Petard and U-559, being one of three men to board the sinking submarine in an effort to retrieve vital documents, and was the only one of the three to survive. These documents would later lead the Bletchley Park codebreakers to crack the German Enigma code. After this heroic deed, it was revealed that he was underage to be at sea. He returned home to North Shields.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-02-01T22:27:45Z", - "description": "Royal Navy officer", - "normalizedtitle": "Tommy Brown (NAAFI assistant)" - }, - { - "title": "HMS_Petard_(G56)", - "displaytitle": "HMS Petard (G56)", - "pageid": 8272273, - "extract": "HMS Petard was a P-class destroyer of the British Royal Navy that saw service during World War II. She was one of only three P-class ships, out of the original eight, to survive the war in a serviceable condition.\nOriginally to have been named HMS Persistent, Petard was launched in March 1941.", - "extract_html": "

HMS Petard was a P-class destroyer of the British Royal Navy that saw service during World War II. She was one of only three P-class ships, out of the original eight, to survive the war in a serviceable condition.

\n

Originally to have been named HMS Persistent, Petard was launched in March 1941.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/HMS_Petard_1943_IWM_A_21715.jpg/320px-HMS_Petard_1943_IWM_A_21715.jpg", - "width": 320, - "height": 221, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d4/HMS_Petard_1943_IWM_A_21715.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d4/HMS_Petard_1943_IWM_A_21715.jpg", - "width": 1427, - "height": 984 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-21T05:08:22Z", - "description": "P-class destroyer of the British Royal Navy", - "normalizedtitle": "HMS Petard (G56)" - }, - { - "title": "German_submarine_U-559", - "displaytitle": "German submarine U-559", - "pageid": 256201, - "extract": "German submarine U-559 was a Type VIIC U-boat built for Nazi Germany's Kriegsmarine for service during World War II.\nLaid down on 1 February 1940 at the Blohm & Voss shipyards in Hamburg as \"Baunummer 535\" (\"Yard number 535\"), she was launched on 8 January 1941 and commissioned on 27 February under Kapitänleutnant Hans Heidtmann.\nShe began her service career with the 1st U-boat Flotilla, undergoing training before being declared operational on 1 June 1941. She moved to the 29th U-boat Flotilla on 15 April 1942. She sank five ships but is perhaps best remembered for an incident during her sinking in the Mediterranean Sea in 1942, in which British sailors seized cryptographic material from U-559.", - "extract_html": "

German submarine U-559 was a Type VIIC U-boat built for Nazi Germany's Kriegsmarine for service during World War II.

\n

Laid down on 1 February 1940 at the Blohm & Voss shipyards in Hamburg as \"Baunummer 535\" (\"Yard number 535\"), she was launched on 8 January 1941 and commissioned on 27 February under Kapitänleutnant Hans Heidtmann.

\n

She began her service career with the 1st U-boat Flotilla, undergoing training before being declared operational on 1 June 1941. She moved to the 29th U-boat Flotilla on 15 April 1942. She sank five ships but is perhaps best remembered for an incident during her sinking in the Mediterranean Sea in 1942, in which British sailors seized cryptographic material from U-559.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T06:49:31Z", - "coordinates": { - "lat": 32.5, - "lon": 33 - }, - "normalizedtitle": "German submarine U-559" - }, - { - "title": "Enigma_machine", - "displaytitle": "Enigma machine", - "pageid": 9256, - "extract": "The Enigma machines were a series of electro-mechanical rotor cipher machines developed and used in the early- to mid-20th century to protect commercial, diplomatic and military communication. Enigma was invented by the German engineer Arthur Scherbius at the end of World War I. Early models were used commercially from the early 1920s, and adopted by military and government services of several countries, most notably Nazi Germany before and during World War II. Several different Enigma models were produced, but the German military models, having a plugboard, were the most complex. Japanese and Italian models were also in use.\nAround December 1932, Marian Rejewski of the Polish Cipher Bureau used the theory of permutations and flaws in the German military message procedures to break the message keys of the plugboard Enigma machine. Rejewski achieved this result without knowledge of the wiring of the machine, so the result did not allow the Poles to decrypt actual messages. The French had a spy – Hans Thilo Schmidt – with access to German cipher materials that included the daily keys used in September and October 1932.", - "extract_html": "

The Enigma machines were a series of electro-mechanical rotor cipher machines developed and used in the early- to mid-20th century to protect commercial, diplomatic and military communication. Enigma was invented by the German engineer Arthur Scherbius at the end of World War I. Early models were used commercially from the early 1920s, and adopted by military and government services of several countries, most notably Nazi Germany before and during World War II. Several different Enigma models were produced, but the German military models, having a plugboard, were the most complex. Japanese and Italian models were also in use.

\n

Around December 1932, Marian Rejewski of the Polish Cipher Bureau used the theory of permutations and flaws in the German military message procedures to break the message keys of the plugboard Enigma machine. Rejewski achieved this result without knowledge of the wiring of the machine, so the result did not allow the Poles to decrypt actual messages. The French had a spy – Hans Thilo Schmidt – with access to German cipher materials that included the daily keys used in September and October 1932.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Enigma_%28crittografia%29_-_Museo_scienza_e_tecnologia_Milano.jpg/293px-Enigma_%28crittografia%29_-_Museo_scienza_e_tecnologia_Milano.jpg", - "width": 293, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/bd/Enigma_%28crittografia%29_-_Museo_scienza_e_tecnologia_Milano.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/bd/Enigma_%28crittografia%29_-_Museo_scienza_e_tecnologia_Milano.jpg", - "width": 1039, - "height": 1133 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T21:59:07Z", - "description": "German cipher machine", - "normalizedtitle": "Enigma machine" - } - ], - "year": 1942 - }, - { - "text": "One thousand and five hundred Jews from Pidhaytsi (in western Ukraine) are sent by Nazis to Bełżec extermination camp.", - "pages": [ - { - "title": "Pidhaitsi", - "displaytitle": "Pidhaitsi", - "pageid": 4426880, - "extract": "Pidhaitsi (Ukrainian: Підгайці, Pidhajci, Polish: Podhajce) is a small city in the Ternopil Oblast (province) of western Ukraine. It is the administrative center of the Pidhaitsi Raion (district), and is located at around 49°16′10″N 25°8′10″E. Pidhaitsi is situated ca. 15.5 mi south of Berezhany, 43.5 mi from Ternopil and ca. 62 mi south-east of Lviv. In 1939 Pidhaitsi obtained the formal status of a city. During Soviet rule (1945–1991) it was part of the Berezhanskyi Raion.", - "extract_html": "

Pidhaitsi (Ukrainian: Підгайці, Pidhajci, Polish: Podhajce) is a small city in the Ternopil Oblast (province) of western Ukraine. It is the administrative center of the Pidhaitsi Raion (district), and is located at around 49°16′10″N 25°8′10″E. Pidhaitsi is situated ca. 15.5 mi south of Berezhany, 43.5 mi from Ternopil and ca. 62 mi south-east of Lviv. In 1939 Pidhaitsi obtained the formal status of a city. During Soviet rule (1945–1991) it was part of the Berezhanskyi Raion.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1f/%D0%9F%D1%96%D0%B4%D0%B3%D0%B0%D0%B9%D1%86%D1%96_2015_1.JPG/320px-%D0%9F%D1%96%D0%B4%D0%B3%D0%B0%D0%B9%D1%86%D1%96_2015_1.JPG", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/1f/%D0%9F%D1%96%D0%B4%D0%B3%D0%B0%D0%B9%D1%86%D1%96_2015_1.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/1f/%D0%9F%D1%96%D0%B4%D0%B3%D0%B0%D0%B9%D1%86%D1%96_2015_1.JPG", - "width": 4608, - "height": 3456 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-12T21:17:07Z", - "description": "city of Ukraine", - "coordinates": { - "lat": 49.26944444, - "lon": 25.13611111 - }, - "normalizedtitle": "Pidhaitsi" - }, - { - "title": "Ukraine", - "displaytitle": "Ukraine", - "pageid": 31750, - "extract": "Ukraine ( ( listen); Ukrainian: Україна, translit. Ukrajina [ukrɑˈjinɑ]), sometimes called the Ukraine, is a sovereign state in Eastern Europe, bordered by Russia to the east and northeast, Belarus to the northwest, Poland, Hungary and Slovakia to the west, Romania, and Moldova to the southwest, and the Black Sea and Sea of Azov to the south and southeast, respectively. Ukraine is currently in territorial dispute with Russia over the Crimean Peninsula which Russia annexed in 2014 but which Ukraine and most of the international community recognise as Ukrainian. Including Crimea, Ukraine has an area of 603,628 km2 (233,062 sq mi), making it the largest country entirely within Europe and the 46th largest country in the world. Excluding Crimea, Ukraine has a population of about 42.5 million, making it the 32nd most populous country in the world.\nThe territory of modern Ukraine has been inhabited since 32,000 BC. During the Middle Ages, the area was a key centre of East Slavic culture, with the powerful state of Kievan Rus' forming the basis of Ukrainian identity. Following its fragmentation in the 13th century, the territory was contested, ruled and divided by a variety of powers, including Lithuania, Poland, the Ottoman Empire, Austria-Hungary, and Russia.", - "extract_html": "

Ukraine ( ( listen); Ukrainian: Україна, translit. Ukrajina [ukrɑˈjinɑ]), sometimes called the Ukraine, is a sovereign state in Eastern Europe, bordered by Russia to the east and northeast, Belarus to the northwest, Poland, Hungary and Slovakia to the west, Romania, and Moldova to the southwest, and the Black Sea and Sea of Azov to the south and southeast, respectively. Ukraine is currently in territorial dispute with Russia over the Crimean Peninsula which Russia annexed in 2014 but which Ukraine and most of the international community recognise as Ukrainian. Including Crimea, Ukraine has an area of 603,628 km2 (233,062 sq mi), making it the largest country entirely within Europe and the 46th largest country in the world. Excluding Crimea, Ukraine has a population of about 42.5 million, making it the 32nd most populous country in the world.

\n

The territory of modern Ukraine has been inhabited since 32,000 BC. During the Middle Ages, the area was a key centre of East Slavic culture, with the powerful state of Kievan Rus' forming the basis of Ukrainian identity. Following its fragmentation in the 13th century, the territory was contested, ruled and divided by a variety of powers, including Lithuania, Poland, the Ottoman Empire, Austria-Hungary, and Russia.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Flag_of_Ukraine.svg/320px-Flag_of_Ukraine.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg", - "width": 1200, - "height": 800 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T05:24:38Z", - "description": "country in Eastern Europe", - "coordinates": { - "lat": 49, - "lon": 32 - }, - "normalizedtitle": "Ukraine" - }, - { - "title": "Nazism", - "displaytitle": "Nazism", - "pageid": 31045316, - "extract": "National Socialism (German: Nationalsozialismus), more commonly known as Nazism or Naziism (). (), is the ideology and set of practices associated with the 20th-century German Nazi Party, Nazi Germany and other far-right groups. Usually characterized as a form of fascism that incorporates scientific racism and antisemitism, Nazism's development was influenced by German nationalism (especially Pan-Germanism), the Völkisch movement and the anti-Communist Freikorps paramilitary groups that emerged during the Weimar Republic after Germany's defeat in the First World War.\nNazism subscribed to theories of racial hierarchy and Social Darwinism, identifying the Germans as a part of what the Nazis regarded as an Aryan or Nordic master race. It aimed to overcome social divisions and create a German homogeneous society based on racial purity which represented a people's community (Volksgemeinschaft). The Nazis aimed to unite all Germans living in historically German territory, as well as gain additional lands for German expansion under the doctrine of Lebensraum and exclude those who they deemed either community aliens or \"inferior\" races.", - "extract_html": "

National Socialism (German: Nationalsozialismus), more commonly known as Nazism or Naziism (). (), is the ideology and set of practices associated with the 20th-century German Nazi Party, Nazi Germany and other far-right groups. Usually characterized as a form of fascism that incorporates scientific racism and antisemitism, Nazism's development was influenced by German nationalism (especially Pan-Germanism), the Völkisch movement and the anti-Communist Freikorps paramilitary groups that emerged during the Weimar Republic after Germany's defeat in the First World War.

\n

Nazism subscribed to theories of racial hierarchy and Social Darwinism, identifying the Germans as a part of what the Nazis regarded as an Aryan or Nordic master race. It aimed to overcome social divisions and create a German homogeneous society based on racial purity which represented a people's community (Volksgemeinschaft). The Nazis aimed to unite all Germans living in historically German territory, as well as gain additional lands for German expansion under the doctrine of Lebensraum and exclude those who they deemed either community aliens or \"inferior\" races.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T00:43:47Z", - "description": "ideology and practice associated with the 20th-century German Nazi Party and state", - "normalizedtitle": "Nazism" - }, - { - "title": "Bełżec_extermination_camp", - "displaytitle": "Bełżec extermination camp", - "pageid": 140611, - "extract": "Bełżec (pronounced [ˈbɛu̯ʐɛt͡s], in German: Belzec) was a Nazi German extermination camp built by the SS for the purpose of implementing the secretive Operation Reinhard, the plan to eradicate Polish Jewry, a key part of the \"Final Solution\" which entailed the murder of some 6 million Jews in the Holocaust. The camp operated from 17 March 1942 to the end of December 1942. It was situated about 0.5 km (0.31 mi) south of the local railroad station of Bełżec, in the new Distrikt Lublin of the semi-colonial General Government territory of German-occupied Poland. The burning of exhumed corpses on five open-air grids and bone crushing continued until March 1943.\nBetween 430,000 and 500,000 Jews are believed to have been murdered by the SS at Bełżec. This makes it the third worst extermination camp, exceeded only by Treblinka and Auschwitz.", - "extract_html": "

Bełżec (pronounced [ˈbɛu̯ʐɛt͡s], in German: Belzec) was a Nazi German extermination camp built by the SS for the purpose of implementing the secretive Operation Reinhard, the plan to eradicate Polish Jewry, a key part of the \"Final Solution\" which entailed the murder of some 6 million Jews in the Holocaust. The camp operated from 17 March 1942 to the end of December 1942. It was situated about 0.5 km (0.31 mi) south of the local railroad station of Bełżec, in the new Distrikt Lublin of the semi-colonial General Government territory of German-occupied Poland. The burning of exhumed corpses on five open-air grids and bone crushing continued until March 1943.

\n

Between 430,000 and 500,000 Jews are believed to have been murdered by the SS at Bełżec. This makes it the third worst extermination camp, exceeded only by Treblinka and Auschwitz.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/PL_Belzec_extermination_camp_1.jpg/320px-PL_Belzec_extermination_camp_1.jpg", - "width": 320, - "height": 180, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/66/PL_Belzec_extermination_camp_1.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/66/PL_Belzec_extermination_camp_1.jpg", - "width": 3264, - "height": 1839 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T18:03:40Z", - "coordinates": { - "lat": 50.37166667, - "lon": 23.4575 - }, - "normalizedtitle": "Bełżec extermination camp" - } - ], - "year": 1941 - }, - { - "text": "World War II: Franklin D. Roosevelt approves U.S. $1 billion in Lend-Lease aid to the Allied nations.", - "pages": [ - { - "title": "Franklin_D._Roosevelt", - "displaytitle": "Franklin D. Roosevelt", - "pageid": 10979, - "extract": "Franklin Delano Roosevelt (, his own pronunciation, or ; January 30, 1882 – April 12, 1945), commonly known as FDR, was an American statesman and political leader who served as the 32nd President of the United States from 1933 until his death in 1945. A Democrat, he won a record four presidential elections and emerged as a central figure in world events during the mid-20th century. He directed the United States government during most of the Great Depression, implementing his New Deal domestic agenda in response to the worst economic crisis in U.S. history. As a dominant leader of his party, he built the New Deal Coalition, realigning American politics into the Fifth Party System and defining American liberalism throughout the middle third of the 20th century. His third and fourth terms were dominated by World War II. He is often rated by scholars as one of the three greatest U.S. Presidents, along with George Washington and Abraham Lincoln.\nRoosevelt was born in 1882 to a prominent Dutch-American New York family and attended Groton School.", - "extract_html": "

Franklin Delano Roosevelt (, his own pronunciation, or ; January 30, 1882 – April 12, 1945), commonly known as FDR, was an American statesman and political leader who served as the 32nd President of the United States from 1933 until his death in 1945. A Democrat, he won a record four presidential elections and emerged as a central figure in world events during the mid-20th century. He directed the United States government during most of the Great Depression, implementing his New Deal domestic agenda in response to the worst economic crisis in U.S. history. As a dominant leader of his party, he built the New Deal Coalition, realigning American politics into the Fifth Party System and defining American liberalism throughout the middle third of the 20th century. His third and fourth terms were dominated by World War II. He is often rated by scholars as one of the three greatest U.S. Presidents, along with George Washington and Abraham Lincoln.

\n

Roosevelt was born in 1882 to a prominent Dutch-American New York family and attended Groton School.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/30/FDR_1944_Color_Portrait.tif/lossy-page1-222px-FDR_1944_Color_Portrait.tif.jpg", - "width": 222, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/30/FDR_1944_Color_Portrait.tif" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/30/FDR_1944_Color_Portrait.tif", - "width": 2754, - "height": 3969 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T22:33:29Z", - "description": "32nd US president", - "normalizedtitle": "Franklin D. Roosevelt" - }, - { - "title": "Lend-Lease", - "displaytitle": "Lend-Lease", - "pageid": 55832, - "extract": "The Lend-Lease policy, formally titled \"An Act to Promote the Defense of the United States\", (Pub.L. 77–11, H.R. 1776, 55 Stat. 31, enacted March 11, 1941) was a program under which the United States supplied Free France, the United Kingdom, the Republic of China, and later the Soviet Union and other Allied nations with food, oil, and materiel between 1941 and August 1945. This included warships and warplanes, along with other weaponry. It was signed into law on March 11, 1941 and ended in September 1945. In general the aid was free, although some hardware, such as ships, were returned after the war. In return, the U.S. was given leases on army and naval bases in Allied territory during the war.", - "extract_html": "

The Lend-Lease policy, formally titled \"An Act to Promote the Defense of the United States\", (Pub.L. 77–11, H.R. 1776, 55 Stat. 31, enacted March 11, 1941) was a program under which the United States supplied Free France, the United Kingdom, the Republic of China, and later the Soviet Union and other Allied nations with food, oil, and materiel between 1941 and August 1945. This included warships and warplanes, along with other weaponry. It was signed into law on March 11, 1941 and ended in September 1945. In general the aid was free, although some hardware, such as ships, were returned after the war. In return, the U.S. was given leases on army and naval bases in Allied territory during the war.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/President_Franklin_D._Roosevelt-1941.jpg/320px-President_Franklin_D._Roosevelt-1941.jpg", - "width": 320, - "height": 253, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/8d/President_Franklin_D._Roosevelt-1941.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/8d/President_Franklin_D._Roosevelt-1941.jpg", - "width": 610, - "height": 482 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T22:44:09Z", - "description": "United States foreign policy during World War II", - "normalizedtitle": "Lend-Lease" - }, - { - "title": "Allies_of_World_War_II", - "displaytitle": "Allies of World War II", - "pageid": 2198844, - "extract": "The Allies of World War II, called the United Nations from the 1 January 1942 declaration, were the countries that together opposed the Axis powers during the Second World War (1939–1945). The Allies promoted the alliance as seeking to stop German, Japanese and Italian aggression.\nAt the start of the war on 1 September 1939, the Allies consisted of France, Poland and the United Kingdom, and dependent states, such as the British India. Within days they were joined by the independent Dominions of the British Commonwealth: Australia, Canada, New Zealand and South Africa. After the start of the German invasion of North Europe till the Balkan Campaign, the Netherlands, Belgium, Greece and Yugoslavia joined the Allies. After first having cooperated with Germany in invading Poland whilst remaining neutral in the Allied-Axis conflict, the Soviet Union perforce joined the Allies in June 1941 after being invaded by Germany.", - "extract_html": "

The Allies of World War II, called the United Nations from the 1 January 1942 declaration, were the countries that together opposed the Axis powers during the Second World War (1939–1945). The Allies promoted the alliance as seeking to stop German, Japanese and Italian aggression.

\n

At the start of the war on 1 September 1939, the Allies consisted of France, Poland and the United Kingdom, and dependent states, such as the British India. Within days they were joined by the independent Dominions of the British Commonwealth: Australia, Canada, New Zealand and South Africa. After the start of the German invasion of North Europe till the Balkan Campaign, the Netherlands, Belgium, Greece and Yugoslavia joined the Allies. After first having cooperated with Germany in invading Poland whilst remaining neutral in the Allied-Axis conflict, the Soviet Union perforce joined the Allies in June 1941 after being invaded by Germany.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Map_of_participants_in_World_War_II.png/320px-Map_of_participants_in_World_War_II.png", - "width": 320, - "height": 135, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/21/Map_of_participants_in_World_War_II.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/21/Map_of_participants_in_World_War_II.png", - "width": 1480, - "height": 625 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T23:32:51Z", - "description": "grouping of the victorious countries of World War II", - "normalizedtitle": "Allies of World War II" - } - ], - "year": 1941 - }, - { - "text": "Orson Welles broadcasts his radio play of H. G. Wells's The War of the Worlds, causing anxiety in some of the audience in the United States.", - "pages": [ - { - "title": "Orson_Welles", - "displaytitle": "Orson Welles", - "pageid": 22196, - "extract": "George Orson Welles (; May 6, 1915 – October 10, 1985) was an American actor, director, writer, and producer who worked in theatre, radio, and film. He is remembered for his innovative work in all three: in theatre, most notably Caesar (1937), a Broadway adaptation of William Shakespeare's Julius Caesar; in radio, the legendary 1938 broadcast \"The War of the Worlds\"; and in film, Citizen Kane (1941), consistently ranked as one of the greatest films ever made.\nIn his 20s, Welles directed a number of high-profile stage productions for the Federal Theatre Project, including an adaptation of Macbeth with an entirely African American cast, and the political musical The Cradle Will Rock. In 1937 he and John Houseman founded the Mercury Theatre, an independent repertory theatre company that presented a series of productions on Broadway through 1941. Welles found national and international fame as the director and narrator of a 1938 radio adaptation of H. G. Wells' novel The War of the Worlds performed for his radio anthology series The Mercury Theatre on the Air. It reportedly caused widespread panic when listeners thought that an invasion by extraterrestrial beings was actually occurring.", - "extract_html": "

George Orson Welles (; May 6, 1915 – October 10, 1985) was an American actor, director, writer, and producer who worked in theatre, radio, and film. He is remembered for his innovative work in all three: in theatre, most notably Caesar (1937), a Broadway adaptation of William Shakespeare's Julius Caesar; in radio, the legendary 1938 broadcast \"The War of the Worlds\"; and in film, Citizen Kane (1941), consistently ranked as one of the greatest films ever made.

\n

In his 20s, Welles directed a number of high-profile stage productions for the Federal Theatre Project, including an adaptation of Macbeth with an entirely African American cast, and the political musical The Cradle Will Rock. In 1937 he and John Houseman founded the Mercury Theatre, an independent repertory theatre company that presented a series of productions on Broadway through 1941. Welles found national and international fame as the director and narrator of a 1938 radio adaptation of H. G. Wells' novel The War of the Worlds performed for his radio anthology series The Mercury Theatre on the Air. It reportedly caused widespread panic when listeners thought that an invasion by extraterrestrial beings was actually occurring.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Orson_Welles_1937.jpg/250px-Orson_Welles_1937.jpg", - "width": 250, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/ff/Orson_Welles_1937.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/ff/Orson_Welles_1937.jpg", - "width": 2853, - "height": 3655 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T11:19:40Z", - "description": "American actor, director, writer and producer", - "normalizedtitle": "Orson Welles" - }, - { - "title": "H._G._Wells", - "displaytitle": "H. G. Wells", - "pageid": 13459, - "extract": "Herbert George Wells (21 September 1866 – 13 August 1946), usually referred to as H. G. Wells, was an English writer. He was prolific in many genres, writing dozens of novels, short stories, and works of social commentary, satire, biography, and autobiography, including even a book on war games. He is now best remembered for his science fiction novels and is often called a \"father of science fiction\", along with Jules Verne and Hugo Gernsback. During his own lifetime, however, he was most prominent as a forward-looking, even prophetic social critic who devoted his literary talents to the development of a progressive vision on a global scale. A futurist, he wrote a number of utopian works and foresaw the advent of airplanes, tanks, space travel, nuclear weapons, satellite television and something resembling the world wide web.", - "extract_html": "

Herbert George Wells (21 September 1866 – 13 August 1946), usually referred to as H. G. Wells, was an English writer. He was prolific in many genres, writing dozens of novels, short stories, and works of social commentary, satire, biography, and autobiography, including even a book on war games. He is now best remembered for his science fiction novels and is often called a \"father of science fiction\", along with Jules Verne and Hugo Gernsback. During his own lifetime, however, he was most prominent as a forward-looking, even prophetic social critic who devoted his literary talents to the development of a progressive vision on a global scale. A futurist, he wrote a number of utopian works and foresaw the advent of airplanes, tanks, space travel, nuclear weapons, satellite television and something resembling the world wide web.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/H.G._Wells_by_Beresford.jpg/229px-H.G._Wells_by_Beresford.jpg", - "width": 229, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/4b/H.G._Wells_by_Beresford.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/4b/H.G._Wells_by_Beresford.jpg", - "width": 573, - "height": 800 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T06:17:28Z", - "description": "English writer", - "normalizedtitle": "H. G. Wells" - }, - { - "title": "The_War_of_the_Worlds_(radio_drama)", - "displaytitle": "The War of the Worlds (radio drama)", - "pageid": 143247, - "extract": "The War of the Worlds is an episode of the American radio drama anthology series The Mercury Theatre on the Air. It was performed as a Halloween episode of the series on Sunday, October 30, 1938, and aired over the Columbia Broadcasting System radio network. Directed and narrated by actor and future filmmaker Orson Welles, the episode was an adaptation of H. G. Wells' novel The War of the Worlds (1898). It became famous for allegedly causing mass panic, although the scale of the panic is disputed as the program had relatively few listeners.\nThe first two-thirds of the one-hour broadcast was presented as a series of simulated news bulletins. The first news update interrupted a program of dance music to report that a series of odd explosions had been spotted on Mars, which was followed soon thereafter by a seemingly unrelated report of an unusual object falling on a farm in Grover's Mill, New Jersey.", - "extract_html": "

The War of the Worlds is an episode of the American radio drama anthology series The Mercury Theatre on the Air. It was performed as a Halloween episode of the series on Sunday, October 30, 1938, and aired over the Columbia Broadcasting System radio network. Directed and narrated by actor and future filmmaker Orson Welles, the episode was an adaptation of H. G. Wells' novel The War of the Worlds (1898). It became famous for allegedly causing mass panic, although the scale of the panic is disputed as the program had relatively few listeners.

\n

The first two-thirds of the one-hour broadcast was presented as a series of simulated news bulletins. The first news update interrupted a program of dance music to report that a series of odd explosions had been spotted on Mars, which was followed soon thereafter by a seemingly unrelated report of an unusual object falling on a farm in Grover's Mill, New Jersey.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Orson_Welles_War_of_the_Worlds_1938.jpg/320px-Orson_Welles_War_of_the_Worlds_1938.jpg", - "width": 320, - "height": 243, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d7/Orson_Welles_War_of_the_Worlds_1938.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d7/Orson_Welles_War_of_the_Worlds_1938.jpg", - "width": 900, - "height": 684 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T18:56:57Z", - "description": "1938 radio drama by Orson Welles", - "normalizedtitle": "The War of the Worlds (radio drama)" - } - ], - "year": 1938 - }, - { - "text": "The Stuttgart Cable Car is constructed in Stuttgart, Germany.", - "pages": [ - { - "title": "Standseilbahn_Stuttgart", - "displaytitle": "Standseilbahn Stuttgart", - "pageid": 2626280, - "extract": "The Standseilbahn Stuttgart or Stuttgart Cable Car is a funicular railway in the city of Stuttgart, Germany. The line links the Südheimer Platz valley station with the Stuttgart Degerloch forest cemetery in the south quarters of Heslach. Operated by Stuttgarter Straßenbahnen AG (SSB), it was opened on 30 October 1929 to facilitate visitors to the forest cemetery which is located 90 metres (295 ft) above Stuttgart Heslach.", - "extract_html": "

The Standseilbahn Stuttgart or Stuttgart Cable Car is a funicular railway in the city of Stuttgart, Germany. The line links the Südheimer Platz valley station with the Stuttgart Degerloch forest cemetery in the south quarters of Heslach. Operated by Stuttgarter Straßenbahnen AG (SSB), it was opened on 30 October 1929 to facilitate visitors to the forest cemetery which is located 90 metres (295 ft) above Stuttgart Heslach.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Standseilbahn_Stuttgart2.jpg/320px-Standseilbahn_Stuttgart2.jpg", - "width": 320, - "height": 262, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/82/Standseilbahn_Stuttgart2.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/82/Standseilbahn_Stuttgart2.jpg", - "width": 600, - "height": 491 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-01T12:19:23Z", - "description": "funicular railway in the city of Stuttgart, Germany", - "coordinates": { - "lat": 48.75583333, - "lon": 9.14222222 - }, - "normalizedtitle": "Standseilbahn Stuttgart" - }, - { - "title": "Stuttgart", - "displaytitle": "Stuttgart", - "pageid": 28565, - "extract": "Stuttgart ( SHTUUT-gart; German: [ˈʃtʊtɡaʁt] ( listen); Swabian: Schduagert, pronounced [ˈʒ̊d̥ua̯ɡ̊ɛʕd̥]; names in other languages) is the capital and largest city of the German state of Baden-Württemberg.\nStuttgart is located on the Neckar river in a fertile valley locally known as the \"Stuttgart Cauldron\" an hour from the Swabian Jura and the Black Forest, and its urban area has a population of 609,219, making it the sixth largest city in Germany. 2.7 million people live in the city's administrative region and another 5.3 million people in its metropolitan area, making it the fourth largest metropolitan area in Germany.\nThe city and metropolitan area are consistently ranked among the top 20 European metropolitan areas by GDP; Mercer listed Stuttgart as 21st on its 2015 list of cities by quality of living, innovation agency 2thinknow ranked the city 24th globally out of 442 cities and the Globalization and World Cities Research Network ranked the city as a Beta-status world city in their 2014 survey.\nSince the 6th millennium BC, the Stuttgart area has been an important agricultural area and has been host to a number of cultures seeking to utilize the rich soil of the Neckar valley. The Roman Empire conquered the area in 83 AD and built a massive castrum near Bad Cannstatt, making it the most important regional center for several centuries. Stuttgart's roots were truly laid in the 10th century with its founding by Liudolf, Duke of Swabia, as a stud farm for his warhorses. Overshadowed by nearby Cannstatt, the town grew steadily and was granted a charter in 1320.", - "extract_html": "

Stuttgart ( SHTUUT-gart; German: [ˈʃtʊtɡaʁt] ( listen); Swabian: Schduagert, pronounced [ˈʒ̊d̥ua̯ɡ̊ɛʕd̥]; names in other languages) is the capital and largest city of the German state of Baden-Württemberg.

\n

Stuttgart is located on the Neckar river in a fertile valley locally known as the \"Stuttgart Cauldron\" an hour from the Swabian Jura and the Black Forest, and its urban area has a population of 609,219, making it the sixth largest city in Germany. 2.7 million people live in the city's administrative region and another 5.3 million people in its metropolitan area, making it the fourth largest metropolitan area in Germany.

\n

The city and metropolitan area are consistently ranked among the top 20 European metropolitan areas by GDP; Mercer listed Stuttgart as 21st on its 2015 list of cities by quality of living, innovation agency 2thinknow ranked the city 24th globally out of 442 cities and the Globalization and World Cities Research Network ranked the city as a Beta-status world city in their 2014 survey.

\n

Since the 6th millennium BC, the Stuttgart area has been an important agricultural area and has been host to a number of cultures seeking to utilize the rich soil of the Neckar valley. The Roman Empire conquered the area in 83 AD and built a massive castrum near Bad Cannstatt, making it the most important regional center for several centuries. Stuttgart's roots were truly laid in the 10th century with its founding by Liudolf, Duke of Swabia, as a stud farm for his warhorses. Overshadowed by nearby Cannstatt, the town grew steadily and was granted a charter in 1320.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Stuttgart_collage.jpg/240px-Stuttgart_collage.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/de/Stuttgart_collage.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/de/Stuttgart_collage.jpg", - "width": 3841, - "height": 5120 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T15:49:37Z", - "description": "capital city of German federated state Baden-Württemberg", - "coordinates": { - "lat": 48.78333333, - "lon": 9.18333333 - }, - "normalizedtitle": "Stuttgart" - } - ], - "year": 1929 - }, - { - "text": "John Logie Baird creates Britain's first television transmitter.", - "pages": [ - { - "title": "John_Logie_Baird", - "displaytitle": "John Logie Baird", - "pageid": 39570, - "extract": "John Logie Baird FRSE (; 14 August 1888 – 14 June 1946) was a Scottish engineer, innovator, one of the inventors of the mechanical television, demonstrating the first working television system on 26 January 1926, and inventor of both the first publicly demonstrated colour television system, and the first purely electronic colour television picture tube.\nIn 1928 the Baird Television Development Company achieved the first transatlantic television transmission. Baird's early technological successes and his role in the practical introduction of broadcast television for home entertainment have earned him a prominent place in television's history.\nBaird was ranked number 44 in the BBC's list of the 100 Greatest Britons following a UK-wide vote in 2002. In 2006, Baird was named as one of the 10 greatest Scottish scientists in history, having been listed in the National Library of Scotland's 'Scottish Science Hall of Fame'.", - "extract_html": "

John Logie Baird FRSE (; 14 August 1888 – 14 June 1946) was a Scottish engineer, innovator, one of the inventors of the mechanical television, demonstrating the first working television system on 26 January 1926, and inventor of both the first publicly demonstrated colour television system, and the first purely electronic colour television picture tube.

\n

In 1928 the Baird Television Development Company achieved the first transatlantic television transmission. Baird's early technological successes and his role in the practical introduction of broadcast television for home entertainment have earned him a prominent place in television's history.

\n

Baird was ranked number 44 in the BBC's list of the 100 Greatest Britons following a UK-wide vote in 2002. In 2006, Baird was named as one of the 10 greatest Scottish scientists in history, having been listed in the National Library of Scotland's 'Scottish Science Hall of Fame'.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/80/John_Logie_Baird_in_1917.jpg/232px-John_Logie_Baird_in_1917.jpg", - "width": 232, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/80/John_Logie_Baird_in_1917.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/80/John_Logie_Baird_in_1917.jpg", - "width": 3918, - "height": 5397 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T11:05:18Z", - "description": "Scottish scientist, engineer, innovator and inventor of the world's first television", - "normalizedtitle": "John Logie Baird" - }, - { - "title": "Television_transmitter", - "displaytitle": "Television transmitter", - "pageid": 2056235, - "extract": "A television transmitter is a device which broadcasts an electromagnetic signal to the television receivers.", - "extract_html": "

A television transmitter is a device which broadcasts an electromagnetic signal to the television receivers.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-01T03:31:39Z", - "description": "device for broadcasting television signals", - "normalizedtitle": "Television transmitter" - } - ], - "year": 1925 - }, - { - "text": "The Communist Party of Australia is founded in Sydney.", - "pages": [ - { - "title": "Communist_Party_of_Australia", - "displaytitle": "Communist Party of Australia", - "pageid": 321409, - "extract": "The Communist Party of Australia (CPA) was founded in 1920 and dissolved in 1991. The CPA achieved its greatest political strength in the 1940s and faced an attempted ban in 1951.", - "extract_html": "

The Communist Party of Australia (CPA) was founded in 1920 and dissolved in 1991. The CPA achieved its greatest political strength in the 1940s and faced an attempted ban in 1951.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T12:13:22Z", - "description": "Australian political party (1920–1991)", - "normalizedtitle": "Communist Party of Australia" - } - ], - "year": 1920 - }, - { - "text": "The Ottoman Empire signs the Armistice of Mudros with the Allies.", - "pages": [ - { - "title": "Ottoman_Empire", - "displaytitle": "Ottoman Empire", - "pageid": 22278, - "extract": "The Ottoman Empire (/ˈɒtəmən/; Ottoman Turkish: دولت عليه عثمانیه‎‎, Devlet-i ʿAlīye-i ʿOsmānīye, literally The Exalted Ottoman State; Modern Turkish: Osmanlı İmparatorluğu or Osmanlı Devleti; also historically known in Western Europe as the Turkish Empire, Ottoman Turkey or simply Turkey) was an empire founded at the end of the 13th century in northwestern Anatolia in the town of Söğüt (modern-day Bicelik Province) by the Oghuz Turkish tribal leader Osman. After 1354, the Ottomans crossed into Europe, and with the conquest of the Balkans, the Ottoman Beylik was transformed into a transcontinental empire. The Ottomans ended the Byzantine Empire with the 1453 conquest of Constantinople by Mehmed the Conqueror.\nDuring the 16th and 17th centuries, at the height of its power under the reign of Suleiman the Magnificent, the Ottoman Empire was a multinational, multilingual empire controlling most of Southeast Europe, parts of Central Europe, Western Asia, parts of Eastern Europe and the Caucasus, North Africa, and the Horn of Africa. At the beginning of the 17th century, the empire contained 32 provinces and numerous vassal states. Some of these were later absorbed into the Ottoman Empire, while others were granted various types of autonomy during the course of centuries.\nWith Constantinople as its capital and control of lands around the Mediterranean basin, the Ottoman Empire was at the centre of interactions between the Eastern and Western worlds for six centuries.", - "extract_html": "

The Ottoman Empire (/ˈɒtəmən/; Ottoman Turkish: دولت عليه عثمانیه‎‎, Devlet-i ʿAlīye-i ʿOsmānīye, literally The Exalted Ottoman State; Modern Turkish: Osmanlı İmparatorluğu or Osmanlı Devleti; also historically known in Western Europe as the Turkish Empire, Ottoman Turkey or simply Turkey) was an empire founded at the end of the 13th century in northwestern Anatolia in the town of Söğüt (modern-day Bicelik Province) by the Oghuz Turkish tribal leader Osman. After 1354, the Ottomans crossed into Europe, and with the conquest of the Balkans, the Ottoman Beylik was transformed into a transcontinental empire. The Ottomans ended the Byzantine Empire with the 1453 conquest of Constantinople by Mehmed the Conqueror.

\n

During the 16th and 17th centuries, at the height of its power under the reign of Suleiman the Magnificent, the Ottoman Empire was a multinational, multilingual empire controlling most of Southeast Europe, parts of Central Europe, Western Asia, parts of Eastern Europe and the Caucasus, North Africa, and the Horn of Africa. At the beginning of the 17th century, the empire contained 32 provinces and numerous vassal states. Some of these were later absorbed into the Ottoman Empire, while others were granted various types of autonomy during the course of centuries.

\n

With Constantinople as its capital and control of lands around the Mediterranean basin, the Ottoman Empire was at the centre of interactions between the Eastern and Western worlds for six centuries.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Flag_of_the_Ottoman_Empire.svg/320px-Flag_of_the_Ottoman_Empire.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/35/Flag_of_the_Ottoman_Empire.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/35/Flag_of_the_Ottoman_Empire.svg", - "width": 1200, - "height": 800 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T00:59:27Z", - "description": "former empire in Asia, Europe and Africa", - "normalizedtitle": "Ottoman Empire" - }, - { - "title": "Armistice_of_Mudros", - "displaytitle": "Armistice of Mudros", - "pageid": 1891807, - "extract": "The Armistice of Mudros (Turkish: Mondros Mütarekesi), concluded on 30 October 1918, ended the hostilities, at noon the next day, in the Middle Eastern theatre between the Ottoman Empire and the Allies of World War I. It was signed by the Ottoman Minister of Marine Affairs Rauf Bey and the British Admiral Somerset Arthur Gough-Calthorpe, on board HMS Agamemnon in Moudros harbor on the Greek island of Lemnos.\nAs part of several conditions to the armistice, the Ottomans surrendered their remaining garrisons outside Anatolia, as well as granted the Allies the right to occupy forts controlling the Straits of the Dardanelles and the Bosporus; and the right to occupy the same \"in case of disorder\" any Ottoman territory in the event of a threat to their security. The Ottoman army including the Ottoman air force was demobilized, and all ports, railways, and other strategic points were made available for use by the Allies. In the Caucasus, the Ottomans had to retreat to within the pre-war borders between the Ottoman and the Russian Empires.\nThe armistice was followed by the occupation of Constantinople (Istanbul) and the subsequent partitioning of the Ottoman Empire. The Treaty of Sèvres (10 August 1920) which was signed in the aftermath of World War I was never ratified by the Ottoman Parliament in Istanbul (the Ottoman Parliament was disbanded by the Allies on 11 April 1920 due to the overwhelming opposition of the Turkish MPs to the provisions discussed in Sèvres).", - "extract_html": "

The Armistice of Mudros (Turkish: Mondros Mütarekesi), concluded on 30 October 1918, ended the hostilities, at noon the next day, in the Middle Eastern theatre between the Ottoman Empire and the Allies of World War I. It was signed by the Ottoman Minister of Marine Affairs Rauf Bey and the British Admiral Somerset Arthur Gough-Calthorpe, on board HMS Agamemnon in Moudros harbor on the Greek island of Lemnos.

\n

As part of several conditions to the armistice, the Ottomans surrendered their remaining garrisons outside Anatolia, as well as granted the Allies the right to occupy forts controlling the Straits of the Dardanelles and the Bosporus; and the right to occupy the same \"in case of disorder\" any Ottoman territory in the event of a threat to their security. The Ottoman army including the Ottoman air force was demobilized, and all ports, railways, and other strategic points were made available for use by the Allies. In the Caucasus, the Ottomans had to retreat to within the pre-war borders between the Ottoman and the Russian Empires.

\n

The armistice was followed by the occupation of Constantinople (Istanbul) and the subsequent partitioning of the Ottoman Empire. The Treaty of Sèvres (10 August 1920) which was signed in the aftermath of World War I was never ratified by the Ottoman Parliament in Istanbul (the Ottoman Parliament was disbanded by the Allies on 11 April 1920 due to the overwhelming opposition of the Turkish MPs to the provisions discussed in Sèvres).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Agamemnon_at_Mudros.jpg/320px-Agamemnon_at_Mudros.jpg", - "width": 320, - "height": 196, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/5f/Agamemnon_at_Mudros.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/5f/Agamemnon_at_Mudros.jpg", - "width": 408, - "height": 250 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-21T20:57:56Z", - "description": "peace treaty", - "normalizedtitle": "Armistice of Mudros" - }, - { - "title": "Allies_of_World_War_I", - "displaytitle": "Allies of World War I", - "pageid": 2198871, - "extract": "The Allies of World War I, or Entente Powers, were the countries that opposed the Central Powers in the First World War.\nThe members of the original Triple Entente of 1907 were the French Republic, the British Empire and the Russian Empire. Italy ended its alliance with the Central Powers, arguing that Germany and Austria-Hungary started the war and that the alliance was only defensive in nature; it entered the war on the side of the Entente in 1915. Japan was another important member. Belgium, Serbia, Greece, Montenegro, and Romania were affiliated members of the Entente.\nThe 1920 Treaty of Sèvres defines the Principal Allied Powers as the British Empire, French Republic, Italy and Japan. The Allied Powers comprised, together with the Principal Allied Powers, Armenia, Belgium, Greece, Hejaz, Poland, Portugal, Romania, Serb-Croat-Slovene state and Czechoslovakia.\nThe U.S. declaration of war on Germany, on 6 April 1917 was on the grounds that Germany had violated its neutrality by attacking international shipping and the Zimmermann Telegram sent to Mexico.", - "extract_html": "

The Allies of World War I, or Entente Powers, were the countries that opposed the Central Powers in the First World War.

\n

The members of the original Triple Entente of 1907 were the French Republic, the British Empire and the Russian Empire. Italy ended its alliance with the Central Powers, arguing that Germany and Austria-Hungary started the war and that the alliance was only defensive in nature; it entered the war on the side of the Entente in 1915. Japan was another important member. Belgium, Serbia, Greece, Montenegro, and Romania were affiliated members of the Entente.

\n

The 1920 Treaty of Sèvres defines the Principal Allied Powers as the British Empire, French Republic, Italy and Japan. The Allied Powers comprised, together with the Principal Allied Powers, Armenia, Belgium, Greece, Hejaz, Poland, Portugal, Romania, Serb-Croat-Slovene state and Czechoslovakia.

\n

The U.S. declaration of war on Germany, on 6 April 1917 was on the grounds that Germany had violated its neutrality by attacking international shipping and the Zimmermann Telegram sent to Mexico.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/WWI-re.png/320px-WWI-re.png", - "width": 320, - "height": 135, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/4f/WWI-re.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/4f/WWI-re.png", - "width": 1480, - "height": 625 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T03:06:06Z", - "description": "group of victorious countries of World War I", - "normalizedtitle": "Allies of World War I" - } - ], - "year": 1918 - }, - { - "text": "Czar Nicholas II of Russia issues the October Manifesto, granting the Russian peoples basic civil liberties and the right to form a duma. This was October 17 in the Julian calendar.", - "pages": [ - { - "title": "Tsar", - "displaytitle": "Tsar", - "pageid": 39879893, - "extract": "Tsar ( or ) (Old Church Slavonic: ц︢рь [usually written thus with a title] or цар, цaрь), also spelled csar, or czar, is a title used to designate East and South Slavic monarchs or supreme rulers of Eastern Europe. As a system of government in the Tsardom of Russia and the Russian Empire, it is known as Tsarist autocracy, or Tsarism. The term is derived from the Latin word Caesar, which was intended to mean \"Emperor\" in the European medieval sense of the term—a ruler with the same rank as a Roman emperor, holding it by the approval of another emperor or a supreme ecclesiastical official (the Pope or the Ecumenical Patriarch)—but was usually considered by western Europeans to be equivalent to king, or to be somewhat in between a royal and imperial rank.\nOccasionally, the word could be used to designate other secular supreme rulers. In Asia and Russia the imperial connotations of the term became blurred with time due to medieval translations of the Bible, and by the 19th century, it had come to be viewed as an equivalent of King.\n\"Tsar\" and its variants were the official titles of the following states:\nFirst Bulgarian Empire, in 913–1018\nSecond Bulgarian Empire, in 1185–1396\nSerbian Empire, in 1346–1371\nTsardom of Russia, in 1547–1721 (replaced in 1721 by imperator, but remaining in use outside Russia – and also officially in relation to several regions – until 1917)\nTsardom of Bulgaria, in 1908–1946\nThe first ruler to adopt the title tsar was Simeon I of Bulgaria.", - "extract_html": "

Tsar ( or ) (Old Church Slavonic: ц︢рь [usually written thus with a title] or цар, цaрь), also spelled csar, or czar, is a title used to designate East and South Slavic monarchs or supreme rulers of Eastern Europe. As a system of government in the Tsardom of Russia and the Russian Empire, it is known as Tsarist autocracy, or Tsarism. The term is derived from the Latin word Caesar, which was intended to mean \"Emperor\" in the European medieval sense of the term—a ruler with the same rank as a Roman emperor, holding it by the approval of another emperor or a supreme ecclesiastical official (the Pope or the Ecumenical Patriarch)—but was usually considered by western Europeans to be equivalent to king, or to be somewhat in between a royal and imperial rank.

\n

Occasionally, the word could be used to designate other secular supreme rulers. In Asia and Russia the imperial connotations of the term became blurred with time due to medieval translations of the Bible, and by the 19th century, it had come to be viewed as an equivalent of King.

\n

\"Tsar\" and its variants were the official titles of the following states:

\n
  • First Bulgarian Empire, in 913–1018
  • \n
  • Second Bulgarian Empire, in 1185–1396
  • \n
  • Serbian Empire, in 1346–1371
  • \n
  • Tsardom of Russia, in 1547–1721 (replaced in 1721 by imperator, but remaining in use outside Russia – and also officially in relation to several regions – until 1917)
  • \n
  • Tsardom of Bulgaria, in 1908–1946
  • \n

The first ruler to adopt the title tsar was Simeon I of Bulgaria.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Emperor_by_Ivan_Makarov.jpg/320px-Emperor_by_Ivan_Makarov.jpg", - "width": 320, - "height": 219, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/e3/Emperor_by_Ivan_Makarov.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e3/Emperor_by_Ivan_Makarov.jpg", - "width": 1200, - "height": 820 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T04:48:08Z", - "normalizedtitle": "Tsar" - }, - { - "title": "Nicholas_II_of_Russia", - "displaytitle": "Nicholas II of Russia", - "pageid": 30172853, - "extract": "Nicholas II or Nikolai II (Russian: Николай II Алекса́ндрович, tr. Nikolay II Aleksandrovich; 18 May [O.S. 6 May] 1868 – 17 July 1918) was the last Emperor of Russia, ruling from 1 November 1894 until his forced abdication on 15 March 1917. His reign saw the fall of the Russian Empire from being one of the foremost great powers of the world to economic and military collapse. Due to the Khodynka Tragedy, anti-Semitic pogroms, Bloody Sunday, the violent suppression of the 1905 Revolution, the execution of political opponents and his perceived responsibility for the Russo-Japanese War, he was given the nickname Nicholas the Bloody by his political adversaries. Soviet historiography portrayed Nicholas as a weak and incompetent leader, whose decisions led to military defeats and the deaths of millions of his subjects.\nRussia suffered a decisive defeat in the 1904–1905 Russo-Japanese War, which saw the annihilation of the Russian Baltic Fleet at the Battle of Tsushima, loss of Russian influence over Manchuria and Korea, and the Japanese annexation of South Sakhalin. The Anglo-Russian Entente, designed to counter German attempts to gain influence in the Middle East, ended the Great Game between Russia and the United Kingdom.\nNicholas approved the Russian mobilisation on 30 July 1914, which led to Germany declaring war on Russia on 1 August 1914.", - "extract_html": "

Nicholas II or Nikolai II (Russian: Николай II Алекса́ндрович, tr. Nikolay II Aleksandrovich; 18 May [O.S. 6 May] 1868 – 17 July 1918) was the last Emperor of Russia, ruling from 1 November 1894 until his forced abdication on 15 March 1917. His reign saw the fall of the Russian Empire from being one of the foremost great powers of the world to economic and military collapse. Due to the Khodynka Tragedy, anti-Semitic pogroms, Bloody Sunday, the violent suppression of the 1905 Revolution, the execution of political opponents and his perceived responsibility for the Russo-Japanese War, he was given the nickname Nicholas the Bloody by his political adversaries. Soviet historiography portrayed Nicholas as a weak and incompetent leader, whose decisions led to military defeats and the deaths of millions of his subjects.

\n

Russia suffered a decisive defeat in the 1904–1905 Russo-Japanese War, which saw the annihilation of the Russian Baltic Fleet at the Battle of Tsushima, loss of Russian influence over Manchuria and Korea, and the Japanese annexation of South Sakhalin. The Anglo-Russian Entente, designed to counter German attempts to gain influence in the Middle East, ended the Great Game between Russia and the United Kingdom.

\n

Nicholas approved the Russian mobilisation on 30 July 1914, which led to Germany declaring war on Russia on 1 August 1914.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Nicholas_II_by_Boissonnas_%26_Eggler_c1909.jpg/210px-Nicholas_II_by_Boissonnas_%26_Eggler_c1909.jpg", - "width": 210, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/27/Nicholas_II_by_Boissonnas_%26_Eggler_c1909.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/27/Nicholas_II_by_Boissonnas_%26_Eggler_c1909.jpg", - "width": 987, - "height": 1500 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-13T04:45:53Z", - "description": "last Emperor of Russia, Grand Duke of Finland, and titular King of Poland", - "normalizedtitle": "Nicholas II of Russia" - }, - { - "title": "October_Manifesto", - "displaytitle": "October Manifesto", - "pageid": 147431, - "extract": "The October Manifesto (Russian: Октябрьский манифест, Манифест 17 октября), officially The Manifesto on the Improvement of the State Order (Манифест об усовершенствовании государственного порядка), is a document that served as a precursor to the Russian Empire's first constitution, which would be adopted the next year. The Manifesto was issued by Emperor Nicholas II, under the influence of Sergei Witte, on 30 October [O.S. 17 October] 1905 as a response to the Russian Revolution of 1905. Nicholas strenuously resisted these ideas, but gave in after his first choice to head a military dictatorship, Grand Duke Nicholas, threatened to shoot himself in the head if the Tsar did not accept Witte's suggestion. Nicholas reluctantly agreed, and issued what became known as the October Manifesto, promising basic civil rights and an elected parliament called the Duma, without whose approval no laws were to be enacted in Russia in the future.", - "extract_html": "

The October Manifesto (Russian: Октябрьский манифест, Манифест 17 октября), officially The Manifesto on the Improvement of the State Order (Манифест об усовершенствовании государственного порядка), is a document that served as a precursor to the Russian Empire's first constitution, which would be adopted the next year. The Manifesto was issued by Emperor Nicholas II, under the influence of Sergei Witte, on 30 October [O.S. 17 October] 1905 as a response to the Russian Revolution of 1905. Nicholas strenuously resisted these ideas, but gave in after his first choice to head a military dictatorship, Grand Duke Nicholas, threatened to shoot himself in the head if the Tsar did not accept Witte's suggestion. Nicholas reluctantly agreed, and issued what became known as the October Manifesto, promising basic civil rights and an elected parliament called the Duma, without whose approval no laws were to be enacted in Russia in the future.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Repin_17October.jpg/320px-Repin_17October.jpg", - "width": 320, - "height": 178, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/8d/Repin_17October.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/8d/Repin_17October.jpg", - "width": 2162, - "height": 1200 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-11T11:55:48Z", - "normalizedtitle": "October Manifesto" - }, - { - "title": "State_Duma_(Russian_Empire)", - "displaytitle": "State Duma (Russian Empire)", - "pageid": 9274047, - "extract": "The State Duma or Imperial Duma was the Lower House, part of the legislative assembly in the late Russian Empire, which held its meetings in the Taurida Palace in St. Petersburg. It convened four times between 27 April 1906 and the collapse of the Empire in February 1917. The First and the Second Dumas were more democratic and represented a greater number of national types than their successors. The Third Duma was dominated by gentry, landowners and businessmen.", - "extract_html": "

The State Duma or Imperial Duma was the Lower House, part of the legislative assembly in the late Russian Empire, which held its meetings in the Taurida Palace in St. Petersburg. It convened four times between 27 April 1906 and the collapse of the Empire in February 1917. The First and the Second Dumas were more democratic and represented a greater number of national types than their successors. The Third Duma was dominated by gentry, landowners and businessmen.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Spb_06-2012_Tauride_Palace_01.jpg/320px-Spb_06-2012_Tauride_Palace_01.jpg", - "width": 320, - "height": 163, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/34/Spb_06-2012_Tauride_Palace_01.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/34/Spb_06-2012_Tauride_Palace_01.jpg", - "width": 4147, - "height": 2115 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-15T01:58:57Z", - "description": "former legislative assembly in the late Russian Empire", - "normalizedtitle": "State Duma (Russian Empire)" - }, - { - "title": "Julian_calendar", - "displaytitle": "Julian calendar", - "pageid": 15651, - "extract": "The Julian calendar, proposed by Julius Caesar in 46 BC (708 AUC), was a reform of the Roman calendar. It took effect on 1 January 45 BC (AUC 709), by edict. It was the predominant calendar in the Roman world, most of Europe, and in European settlements in the Americas and elsewhere, until it was refined and gradually replaced by the Gregorian calendar, promulgated in 1582 by Pope Gregory XIII. The Julian calendar gains against the mean tropical year at the rate of one day in 128 years. For the Gregorian the figure is one day in 3,030 years. The difference in the average length of the year between Julian (365.25 days) and Gregorian (365.2425 days) is 0.002%.\nThe Julian calendar has a regular year of 365 days divided into 12 months, as listed in the table below.", - "extract_html": "

The Julian calendar, proposed by Julius Caesar in 46 BC (708 AUC), was a reform of the Roman calendar. It took effect on 1 January 45 BC (AUC 709), by edict. It was the predominant calendar in the Roman world, most of Europe, and in European settlements in the Americas and elsewhere, until it was refined and gradually replaced by the Gregorian calendar, promulgated in 1582 by Pope Gregory XIII. The Julian calendar gains against the mean tropical year at the rate of one day in 128 years. For the Gregorian the figure is one day in 3,030 years. The difference in the average length of the year between Julian (365.25 days) and Gregorian (365.2425 days) is 0.002%.

\n

The Julian calendar has a regular year of 365 days divided into 12 months, as listed in the table below.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T05:46:07Z", - "description": "calendar", - "normalizedtitle": "Julian calendar" - } - ], - "year": 1905 - }, - { - "text": "Domenico Melegatti obtains a patent for a procedure to be applied in producing pandoro industrially.", - "pages": [ - { - "title": "Pandoro", - "displaytitle": "Pandoro", - "pageid": 349527, - "extract": "Pandoro [panˈdɔːro] is a traditional Italian sweet yeast bread, most popular around Christmas and New Year.", - "extract_html": "

Pandoro [panˈdɔːro] is a traditional Italian sweet yeast bread, most popular around Christmas and New Year.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Pandoro_cut_01.jpg/320px-Pandoro_cut_01.jpg", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/dd/Pandoro_cut_01.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/dd/Pandoro_cut_01.jpg", - "width": 1600, - "height": 1600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-20T13:50:48Z", - "description": "food", - "normalizedtitle": "Pandoro" - } - ], - "year": 1894 - }, - { - "text": "Rudd Concession granted by King Lobengula of Matabeleland to agents of Cecil Rhodes led by Charles Rudd.", - "pages": [ - { - "title": "Rudd_Concession", - "displaytitle": "Rudd Concession", - "pageid": 9544911, - "extract": "The Rudd Concession, a written concession for exclusive mining rights in Matabeleland, Mashonaland and other adjoining territories in what is today Zimbabwe, was granted by King Lobengula of Matabeleland to Charles Rudd, James Rochfort Maguire and Francis Thompson, three agents acting on behalf of the South African-based politician and businessman Cecil Rhodes, on 30 October 1888. Despite Lobengula's retrospective attempts to disavow it, it proved the foundation for the royal charter granted by the United Kingdom to Rhodes's British South Africa Company in October 1889, and thereafter for the Pioneer Column's occupation of Mashonaland in 1890, which marked the beginning of white settlement, administration and development in the country that eventually became Rhodesia, named after Rhodes, in 1895.\nRhodes's pursuit of the exclusive mining rights in Matabeleland, Mashonaland and the surrounding areas was motivated by his wish to annex them into the British Empire as part of his personal ambition for a Cape to Cairo Railway—winning the concession would enable him to gain a royal charter from the British government for a chartered company, empowered to annex and thereafter govern the Zambezi–Limpopo watershed on Britain's behalf. He laid the groundwork for concession negotiations during early 1888 by arranging a treaty of friendship between the British and Matabele peoples and then sent Rudd's team from South Africa to obtain the rights. Rudd succeeded following a race to the Matabele capital Bulawayo against Edward Arthur Maund, a bidding-rival employed by a London-based syndicate, and after long negotiations with the king and his council of izinDuna (tribal leaders).\nThe concession conferred on the grantees the sole rights to mine throughout Lobengula's country, as well as the power to defend this exclusivity by force, in return for weapons and a regular monetary stipend. Starting in early 1889, the king repeatedly tried to disavow the document on the grounds of alleged deceit by the concessionaires regarding the settled terms; he insisted that restrictions on the grantees' activities had been agreed orally, and apparently considered these part of the contract even though the written text had been translated and repeatedly explained to him just before he signed it.", - "extract_html": "

The Rudd Concession, a written concession for exclusive mining rights in Matabeleland, Mashonaland and other adjoining territories in what is today Zimbabwe, was granted by King Lobengula of Matabeleland to Charles Rudd, James Rochfort Maguire and Francis Thompson, three agents acting on behalf of the South African-based politician and businessman Cecil Rhodes, on 30 October 1888. Despite Lobengula's retrospective attempts to disavow it, it proved the foundation for the royal charter granted by the United Kingdom to Rhodes's British South Africa Company in October 1889, and thereafter for the Pioneer Column's occupation of Mashonaland in 1890, which marked the beginning of white settlement, administration and development in the country that eventually became Rhodesia, named after Rhodes, in 1895.

\n

Rhodes's pursuit of the exclusive mining rights in Matabeleland, Mashonaland and the surrounding areas was motivated by his wish to annex them into the British Empire as part of his personal ambition for a Cape to Cairo Railway—winning the concession would enable him to gain a royal charter from the British government for a chartered company, empowered to annex and thereafter govern the Zambezi–Limpopo watershed on Britain's behalf. He laid the groundwork for concession negotiations during early 1888 by arranging a treaty of friendship between the British and Matabele peoples and then sent Rudd's team from South Africa to obtain the rights. Rudd succeeded following a race to the Matabele capital Bulawayo against Edward Arthur Maund, a bidding-rival employed by a London-based syndicate, and after long negotiations with the king and his council of izinDuna (tribal leaders).

\n

The concession conferred on the grantees the sole rights to mine throughout Lobengula's country, as well as the power to defend this exclusivity by force, in return for weapons and a regular monetary stipend. Starting in early 1889, the king repeatedly tried to disavow the document on the grounds of alleged deceit by the concessionaires regarding the settled terms; he insisted that restrictions on the grantees' activities had been agreed orally, and apparently considered these part of the contract even though the written text had been translated and repeatedly explained to him just before he signed it.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Rudd_Concession.jpg/291px-Rudd_Concession.jpg", - "width": 291, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/3f/Rudd_Concession.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3f/Rudd_Concession.jpg", - "width": 553, - "height": 609 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T14:00:18Z", - "normalizedtitle": "Rudd Concession" - }, - { - "title": "Lobengula", - "displaytitle": "Lobengula", - "pageid": 641929, - "extract": "Lobengula Khumalo (1845–1894) was the second and last king of the Northern Ndebele people (historically called Matabele in English).", - "extract_html": "

Lobengula Khumalo (1845–1894) was the second and last king of the Northern Ndebele people (historically called Matabele in English).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Lobengula-image.jpg/227px-Lobengula-image.jpg", - "width": 227, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/63/Lobengula-image.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/63/Lobengula-image.jpg", - "width": 536, - "height": 754 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-21T01:28:43Z", - "description": "King of Matabeleland", - "normalizedtitle": "Lobengula" - }, - { - "title": "Matabeleland", - "displaytitle": "Matabeleland", - "pageid": 814066, - "extract": "Modern-day Matabeleland is a region in Zimbabwe divided into three provinces: Matabeleland North, Bulawayo and Matabeleland South. These provinces are in the west and south-west of Zimbabwe, between the Limpopo and Zambezi rivers. The region is named after its inhabitants the Ndebele people. Other ethnic groups who inhabit parts of Matabeleland include the Tonga, Kalanga, Venda, Chewa, Khoi Sani, Nambia, Shangaan, Swati, Sotho, Shona, Tswana, Xhosa and Zulu. As of August 2012, according to the ZIMSAT or Zimbabwe national statistics agency, the southern part of the region had 683,893 people, with the make up of 326,697 males and 356,926 females with an average size household of 4.4 in an area of 54,172 square kilometres (20,916 sq mi).", - "extract_html": "

Modern-day Matabeleland is a region in Zimbabwe divided into three provinces: Matabeleland North, Bulawayo and Matabeleland South. These provinces are in the west and south-west of Zimbabwe, between the Limpopo and Zambezi rivers. The region is named after its inhabitants the Ndebele people. Other ethnic groups who inhabit parts of Matabeleland include the Tonga, Kalanga, Venda, Chewa, Khoi Sani, Nambia, Shangaan, Swati, Sotho, Shona, Tswana, Xhosa and Zulu. As of August 2012, according to the ZIMSAT or Zimbabwe national statistics agency, the southern part of the region had 683,893 people, with the make up of 326,697 males and 356,926 females with an average size household of 4.4 in an area of 54,172 square kilometres (20,916 sq mi).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Matabeleland.svg/320px-Matabeleland.svg.png", - "width": 320, - "height": 292, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/a8/Matabeleland.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/a8/Matabeleland.svg", - "width": 250, - "height": 228 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-16T07:30:36Z", - "description": "region in Zimbabwe", - "coordinates": { - "lat": -19.83, - "lon": 28.16 - }, - "normalizedtitle": "Matabeleland" - }, - { - "title": "Cecil_Rhodes", - "displaytitle": "Cecil Rhodes", - "pageid": 168006, - "extract": "Cecil John Rhodes PC (5 July 1853 – 26 March 1902) was a British businessman, mining magnate and politician in South Africa, who served as Prime Minister of the Cape Colony from 1890 to 1896. An ardent believer in British imperialism, Rhodes and his British South Africa Company founded the southern African territory of Rhodesia (now Zimbabwe and Zambia), which the company named after him in 1895. South Africa's Rhodes University is also named after him. Rhodes set up the provisions of the Rhodes Scholarship, which is funded by his estate, and put much effort towards his vision of a Cape to Cairo Railway through British territory.\nThe son of a vicar, Rhodes grew up in Bishop's Stortford, Hertfordshire, and was a sickly child. He was sent to South Africa by his family when he was 17 years old in the hope that the climate might improve his health.", - "extract_html": "

Cecil John Rhodes PC (5 July 1853 – 26 March 1902) was a British businessman, mining magnate and politician in South Africa, who served as Prime Minister of the Cape Colony from 1890 to 1896. An ardent believer in British imperialism, Rhodes and his British South Africa Company founded the southern African territory of Rhodesia (now Zimbabwe and Zambia), which the company named after him in 1895. South Africa's Rhodes University is also named after him. Rhodes set up the provisions of the Rhodes Scholarship, which is funded by his estate, and put much effort towards his vision of a Cape to Cairo Railway through British territory.

\n

The son of a vicar, Rhodes grew up in Bishop's Stortford, Hertfordshire, and was a sickly child. He was sent to South Africa by his family when he was 17 years old in the hope that the climate might improve his health.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Cecil_Rhodes_ww.jpg/225px-Cecil_Rhodes_ww.jpg", - "width": 225, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/de/Cecil_Rhodes_ww.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/de/Cecil_Rhodes_ww.jpg", - "width": 2500, - "height": 3554 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T09:41:02Z", - "description": "British businessman, mining magnate and politician in South Africa", - "normalizedtitle": "Cecil Rhodes" - }, - { - "title": "Charles_Rudd", - "displaytitle": "Charles Rudd", - "pageid": 9544965, - "extract": "Charles Dunell Rudd (22 October 1844 – 15 November 1916) was the main business associate of Cecil John Rhodes.", - "extract_html": "

Charles Dunell Rudd (22 October 1844 – 15 November 1916) was the main business associate of Cecil John Rhodes.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Charles_Rudd.jpeg/231px-Charles_Rudd.jpeg", - "width": 231, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/9e/Charles_Rudd.jpeg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/9e/Charles_Rudd.jpeg", - "width": 300, - "height": 415 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-09-27T08:36:41Z", - "description": "main business associate of Cecil John Rhodes", - "normalizedtitle": "Charles Rudd" - } - ], - "year": 1888 - }, - { - "text": "Helena, Montana is founded after four prospectors discover gold at \"Last Chance Gulch\".", - "pages": [ - { - "title": "Helena,_Montana", - "displaytitle": "Helena, Montana", - "pageid": 57842, - "extract": "Helena is the capital city of the U.S. state of Montana and the county seat of Lewis and Clark County. As of the 2010 census the population at 28,190, making it the fifth least populous state capital in the U.S after Montpelier, Vermont, Pierre, South Dakota, Augusta, Maine, and Frankfort, Kentucky. It was founded as a gold camp during the Montana gold rush, and was established in 1864. Over $3.6 billion of gold was extracted in the city limits over a duration of two decades, making it one of the wealthiest cities in the United States by the late nineteenth century. The concentration of wealth contributed to the city's prominent, elaborate Victorian architecture.\nHelena is the principal city of the Helena Micropolitan Statistical Area, which includes all of Lewis and Clark and Jefferson counties; its population is 77,414 according to the 2015 Census Estimate.\nThe local daily newspaper is the Independent Record.", - "extract_html": "

Helena is the capital city of the U.S. state of Montana and the county seat of Lewis and Clark County. As of the 2010 census the population at 28,190, making it the fifth least populous state capital in the U.S after Montpelier, Vermont, Pierre, South Dakota, Augusta, Maine, and Frankfort, Kentucky. It was founded as a gold camp during the Montana gold rush, and was established in 1864. Over $3.6 billion of gold was extracted in the city limits over a duration of two decades, making it one of the wealthiest cities in the United States by the late nineteenth century. The concentration of wealth contributed to the city's prominent, elaborate Victorian architecture.

\n

Helena is the principal city of the Helena Micropolitan Statistical Area, which includes all of Lewis and Clark and Jefferson counties; its population is 77,414 according to the 2015 Census Estimate.

\n

The local daily newspaper is the Independent Record.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d8/Helena_Cathedral1.jpg/320px-Helena_Cathedral1.jpg", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d8/Helena_Cathedral1.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d8/Helena_Cathedral1.jpg", - "width": 800, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-21T17:33:40Z", - "description": "county seat in Lewis and Clark County, Montana, USA and Montana federated state capital city", - "coordinates": { - "lat": 46.595805, - "lon": -112.027031 - }, - "normalizedtitle": "Helena, Montana" - }, - { - "title": "Prospecting", - "displaytitle": "Prospecting", - "pageid": 576862, - "extract": "Prospecting is the first stage of the geological analysis (second – exploration) of a territory. It is the physical search for minerals, fossils, precious metals or mineral specimens, and is also known as fossicking.\nProspecting is a small-scale form of mineral exploration which is an organised, large scale effort undertaken by commercial mineral companies to find commercially viable ore deposits.\nProspecting is physical labour, involving traversing (traditionally on foot or on horseback), panning, sifting and outcrop investigation, looking for signs of mineralisation. In some areas a prospector must also make claims, meaning they must erect posts with the appropriate placards on all four corners of a desired land they wish to prospect and register this claim before they may take samples.", - "extract_html": "

Prospecting is the first stage of the geological analysis (second – exploration) of a territory. It is the physical search for minerals, fossils, precious metals or mineral specimens, and is also known as fossicking.

\n

Prospecting is a small-scale form of mineral exploration which is an organised, large scale effort undertaken by commercial mineral companies to find commercially viable ore deposits.

\n

Prospecting is physical labour, involving traversing (traditionally on foot or on horseback), panning, sifting and outcrop investigation, looking for signs of mineralisation. In some areas a prospector must also make claims, meaning they must erect posts with the appropriate placards on all four corners of a desired land they wish to prospect and register this claim before they may take samples.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Prospector%26Burro.jpg/320px-Prospector%26Burro.jpg", - "width": 320, - "height": 247, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d1/Prospector%26Burro.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d1/Prospector%26Burro.jpg", - "width": 640, - "height": 494 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-13T16:09:05Z", - "description": "small-scale form of mineral exploration", - "normalizedtitle": "Prospecting" - }, - { - "title": "Gold", - "displaytitle": "Gold", - "pageid": 12240, - "extract": "Gold is a chemical element with symbol Au (from Latin: aurum) and atomic number 79. In its purest form, it is a bright, slightly reddish yellow, dense, soft, malleable, and ductile metal. Chemically, gold is a transition metal and a group 11 element. It is one of the least reactive chemical elements and is solid under standard conditions. Gold often occurs in free elemental (native) form, as nuggets or grains, in rocks, in veins, and in alluvial deposits.", - "extract_html": "

Gold is a chemical element with symbol Au (from Latin: aurum) and atomic number 79. In its purest form, it is a bright, slightly reddish yellow, dense, soft, malleable, and ductile metal. Chemically, gold is a transition metal and a group 11 element. It is one of the least reactive chemical elements and is solid under standard conditions. Gold often occurs in free elemental (native) form, as nuggets or grains, in rocks, in veins, and in alluvial deposits.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Gold-crystals.jpg/320px-Gold-crystals.jpg", - "width": 320, - "height": 207, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d7/Gold-crystals.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d7/Gold-crystals.jpg", - "width": 4788, - "height": 3102 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T02:38:43Z", - "description": "chemical element with the atomic number of 79", - "normalizedtitle": "Gold" - } - ], - "year": 1864 - }, - { - "text": "Second Schleswig War ends. Denmark renounces all claim to Schleswig, Holstein and Lauenburg, which come under Prussian and Austrian administration.", - "pages": [ - { - "title": "Second_Schleswig_War", - "displaytitle": "Second Schleswig War", - "pageid": 554236, - "extract": "The Second Schleswig War (Danish: 2. Slesvigske Krig; German: Deutsch-Dänischer Krieg) was the second military conflict as a result of the Schleswig-Holstein Question. It began on 1 February 1864, when Prussian forces crossed the border into Schleswig.\nDenmark fought Prussia and Austria. Like the First Schleswig War (1848–52), it was fought for control of the duchies of Holstein and Lauenburg due to the succession disputes concerning them when the Danish king died without an heir acceptable to the German Confederation. Decisive controversy arose due to the passing of the November Constitution, which integrated the Duchy of Schleswig into the Danish kingdom in violation of the London Protocol.", - "extract_html": "

The Second Schleswig War (Danish: 2. Slesvigske Krig; German: Deutsch-Dänischer Krieg) was the second military conflict as a result of the Schleswig-Holstein Question. It began on 1 February 1864, when Prussian forces crossed the border into Schleswig.

\n

Denmark fought Prussia and Austria. Like the First Schleswig War (1848–52), it was fought for control of the duchies of Holstein and Lauenburg due to the succession disputes concerning them when the Danish king died without an heir acceptable to the German Confederation. Decisive controversy arose due to the passing of the November Constitution, which integrated the Duchy of Schleswig into the Danish kingdom in violation of the London Protocol.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/8_brigades_angreb_ved_Dybb%C3%B8l_1864.jpg/320px-8_brigades_angreb_ved_Dybb%C3%B8l_1864.jpg", - "width": 320, - "height": 211, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2b/8_brigades_angreb_ved_Dybb%C3%B8l_1864.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2b/8_brigades_angreb_ved_Dybb%C3%B8l_1864.jpg", - "width": 2048, - "height": 1351 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T15:18:22Z", - "description": "the second military conflict as a result of the Schleswig-Holstein Question", - "normalizedtitle": "Second Schleswig War" - }, - { - "title": "Duchy_of_Schleswig", - "displaytitle": "Duchy of Schleswig", - "pageid": 45582, - "extract": "The Duchy of Schleswig (Danish: Hertugdømmet Slesvig; German: Herzogtum Schleswig; Low German: Sleswig; North Frisian: Slaswik) was a duchy in Southern Jutland (Sønderjylland) covering the area between about 60 km north and 70 km south of the current border between Germany and Denmark; the territory has been divided between the two countries since 1920, with Northern Schleswig in Denmark and Southern Schleswig in Germany.", - "extract_html": "

The Duchy of Schleswig (Danish: Hertugdømmet Slesvig; German: Herzogtum Schleswig; Low German: Sleswig; North Frisian: Slaswik) was a duchy in Southern Jutland (Sønderjylland) covering the area between about 60 km north and 70 km south of the current border between Germany and Denmark; the territory has been divided between the two countries since 1920, with Northern Schleswig in Denmark and Southern Schleswig in Germany.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/DuchySchleswigSlesvig.png/315px-DuchySchleswigSlesvig.png", - "width": 315, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/9e/DuchySchleswigSlesvig.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/9e/DuchySchleswigSlesvig.png", - "width": 1413, - "height": 1436 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-24T23:48:00Z", - "description": "region between Germany and Denmark", - "coordinates": { - "lat": 55.16666667, - "lon": 9.25 - }, - "normalizedtitle": "Duchy of Schleswig" - }, - { - "title": "Holstein", - "displaytitle": "Holstein", - "pageid": 179403, - "extract": "Holstein (German pronunciation: [ˈhɔlʃtaɪn]) (Northern Low Saxon: Holsteen, Danish: Holsten, Latin and historical English: Holsatia) is the region between the rivers Elbe and Eider. It is the southern half of Schleswig-Holstein, the northernmost state of Germany.\nHolstein once existed as the County of Holstein (German: Grafschaft Holstein; 811–1474), the later Duchy of Holstein (German: Herzogtum Holstein; 1474–1866), and was the northernmost territory of the Holy Roman Empire. The history of Holstein is closely intertwined with the history of the Danish Duchy of Schleswig (Danish: Slesvig). The capital of Holstein is Kiel.\nHolstein's name comes from the Holcetae, a Saxon tribe mentioned by Adam of Bremen as living on the north bank of the Elbe, to the west of Hamburg.", - "extract_html": "

Holstein (German pronunciation: [ˈhɔlʃtaɪn]) (Northern Low Saxon: Holsteen, Danish: Holsten, Latin and historical English: Holsatia) is the region between the rivers Elbe and Eider. It is the southern half of Schleswig-Holstein, the northernmost state of Germany.

\n

Holstein once existed as the County of Holstein (German: Grafschaft Holstein; 811–1474), the later Duchy of Holstein (German: Herzogtum Holstein; 1474–1866), and was the northernmost territory of the Holy Roman Empire. The history of Holstein is closely intertwined with the history of the Danish Duchy of Schleswig (Danish: Slesvig). The capital of Holstein is Kiel.

\n

Holstein's name comes from the Holcetae, a Saxon tribe mentioned by Adam of Bremen as living on the north bank of the Elbe, to the west of Hamburg.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Holstein_Arms.svg/267px-Holstein_Arms.svg.png", - "width": 267, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/6f/Holstein_Arms.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/6f/Holstein_Arms.svg", - "width": 550, - "height": 659 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-15T06:35:05Z", - "description": "Region of Schleswig-Holstein, Germany", - "coordinates": { - "lat": 54.1667, - "lon": 9.66667 - }, - "normalizedtitle": "Holstein" - }, - { - "title": "Lauenburg_(Elbe)", - "displaytitle": "Lauenburg (Elbe)", - "pageid": 103183, - "extract": "Lauenburg ( listen ), or Lauenburg an der Elbe (Lauenburg/Elbe), is a town in the state of Schleswig-Holstein, Germany. It is situated on the northern bank of the river Elbe, east of Hamburg. It is the southernmost town of Schleswig-Holstein and belongs to the Kreis (district) of Herzogtum Lauenburg.", - "extract_html": "

Lauenburg ( listen ), or Lauenburg an der Elbe (Lauenburg/Elbe), is a town in the state of Schleswig-Holstein, Germany. It is situated on the northern bank of the river Elbe, east of Hamburg. It is the southernmost town of Schleswig-Holstein and belongs to the Kreis (district) of Herzogtum Lauenburg.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Lauenburg-Elbe_in_RZ.svg/320px-Lauenburg-Elbe_in_RZ.svg.png", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/e6/Lauenburg-Elbe_in_RZ.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e6/Lauenburg-Elbe_in_RZ.svg", - "width": 865, - "height": 865 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-04-19T20:05:12Z", - "description": "town in the state of Schleswig-Holstein, Germany", - "coordinates": { - "lat": 53.38333333, - "lon": 10.56666667 - }, - "normalizedtitle": "Lauenburg (Elbe)" - }, - { - "title": "Prussia", - "displaytitle": "Prussia", - "pageid": 371248, - "extract": "Prussia (German: Preußen [ˡpʁɔɪsən]) was a prominent historical German state originating out of the Duchy of Prussia and the Margraviate of Brandenburg, and centred on the region of Prussia. For centuries, the House of Hohenzollern ruled Prussia, successfully expanding its size by way of an unusually well-organised and effective army. Prussia, with its capital in Königsberg and from 1701 in Berlin, shaped the history of Germany.\nIn 1871, German states united to create the German Empire under Prussian leadership. In November 1918, the monarchies were abolished and the nobility lost its political power during the German Revolution of 1918–19. The Kingdom of Prussia was thus abolished in favour of a republic—the Free State of Prussia, a state of Germany from 1918 until 1933.", - "extract_html": "

Prussia (German: Preußen [ˡpʁɔɪsən]) was a prominent historical German state originating out of the Duchy of Prussia and the Margraviate of Brandenburg, and centred on the region of Prussia. For centuries, the House of Hohenzollern ruled Prussia, successfully expanding its size by way of an unusually well-organised and effective army. Prussia, with its capital in Königsberg and from 1701 in Berlin, shaped the history of Germany.

\n

In 1871, German states united to create the German Empire under Prussian leadership. In November 1918, the monarchies were abolished and the nobility lost its political power during the German Revolution of 1918–19. The Kingdom of Prussia was thus abolished in favour of a republic—the Free State of Prussia, a state of Germany from 1918 until 1933.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Flag_of_Prussia_%281892-1918%29.svg/320px-Flag_of_Prussia_%281892-1918%29.svg.png", - "width": 320, - "height": 192, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/5b/Flag_of_Prussia_%281892-1918%29.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/5b/Flag_of_Prussia_%281892-1918%29.svg", - "width": 1501, - "height": 901 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T08:03:17Z", - "description": "state in Central Europe between 1525–1947", - "normalizedtitle": "Prussia" - }, - { - "title": "Austrian_Empire", - "displaytitle": "Austrian Empire", - "pageid": 266894, - "extract": "The Austrian Empire (Austrian German: Kaiserthum Oesterreich, modern spelling Kaisertum Österreich) was a Central European multinational great power from 1804 to 1867 created by proclamation out of the realms of the Habsburgs. It was the third most populous empire after Russia and France. Along with Prussia, it was one of the two major powers of the German Confederation. Geographically, it was the second largest empire in Europe after the Russian Empire (621,538 square kilometres [239,977 sq mi]). Proclaimed in response to the First French Empire, it overlapped with the Holy Roman Empire until the latter's dissolution in 1806.", - "extract_html": "

The Austrian Empire (Austrian German: Kaiserthum Oesterreich, modern spelling Kaisertum Österreich) was a Central European multinational great power from 1804 to 1867 created by proclamation out of the realms of the Habsburgs. It was the third most populous empire after Russia and France. Along with Prussia, it was one of the two major powers of the German Confederation. Geographically, it was the second largest empire in Europe after the Russian Empire (621,538 square kilometres [239,977 sq mi]). Proclaimed in response to the First French Empire, it overlapped with the Holy Roman Empire until the latter's dissolution in 1806.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Flag_of_the_Habsburg_Monarchy.svg/320px-Flag_of_the_Habsburg_Monarchy.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/7a/Flag_of_the_Habsburg_Monarchy.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/7a/Flag_of_the_Habsburg_Monarchy.svg", - "width": 1200, - "height": 800 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T23:55:59Z", - "description": "monarchy in Central Europe between 1804–1867", - "normalizedtitle": "Austrian Empire" - } - ], - "year": 1864 - }, - { - "text": "Danish Prince Vilhelm arrives in Athens to assume his throne as George I, King of the Hellenes.", - "pages": [ - { - "title": "Athens", - "displaytitle": "Athens", - "pageid": 1216, - "extract": "Athens (; Modern Greek: Αθήνα, Athína [aˈθina], Ancient Greek: Ἀθῆναι, Athênai, modern pronunciation Athínai) is the capital and largest city of Greece. Athens dominates the Attica region and is one of the world's oldest cities, with its recorded history spanning over 3,400 years and its earliest human presence starting somewhere between the 11th and 7th millennium BC.\nClassical Athens was a powerful city-state that emerged in conjunction with the seagoing development of the port of Piraeus, which had been a distinct city prior to its 5th century BC incorporation with Athens. A centre for the arts, learning and philosophy, home of Plato's Academy and Aristotle's Lyceum, it is widely referred to as the cradle of Western civilization and the birthplace of democracy, largely because of its cultural and political impact on the European continent, and in particular the Romans. In modern times, Athens is a large cosmopolitan metropolis and central to economic, financial, industrial, maritime, political and cultural life in Greece. In 2012, Athens was ranked the world's 39th richest city by purchasing power and the 67th most expensive in a UBS study.\nAthens is a global city and one of the biggest economic centres in southeastern Europe.", - "extract_html": "

Athens (; Modern Greek: Αθήνα, Athína [aˈθina], Ancient Greek: Ἀθῆναι, Athênai, modern pronunciation Athínai) is the capital and largest city of Greece. Athens dominates the Attica region and is one of the world's oldest cities, with its recorded history spanning over 3,400 years and its earliest human presence starting somewhere between the 11th and 7th millennium BC.

\n

Classical Athens was a powerful city-state that emerged in conjunction with the seagoing development of the port of Piraeus, which had been a distinct city prior to its 5th century BC incorporation with Athens. A centre for the arts, learning and philosophy, home of Plato's Academy and Aristotle's Lyceum, it is widely referred to as the cradle of Western civilization and the birthplace of democracy, largely because of its cultural and political impact on the European continent, and in particular the Romans. In modern times, Athens is a large cosmopolitan metropolis and central to economic, financial, industrial, maritime, political and cultural life in Greece. In 2012, Athens was ranked the world's 39th richest city by purchasing power and the 67th most expensive in a UBS study.

\n

Athens is a global city and one of the biggest economic centres in southeastern Europe.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Athens_Montage_L.png/180px-Athens_Montage_L.png", - "width": 180, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/8e/Athens_Montage_L.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/8e/Athens_Montage_L.png", - "width": 1000, - "height": 1776 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T17:52:40Z", - "description": "capital city of Greece", - "coordinates": { - "lat": 37.98397222, - "lon": 23.72780556 - }, - "normalizedtitle": "Athens" - }, - { - "title": "George_I_of_Greece", - "displaytitle": "George I of Greece", - "pageid": 187387, - "extract": "George I (Greek: Γεώργιος Α΄, Geórgios I; born Prince William of Schleswig-Holstein-Sonderburg-Glücksburg; 24 December 1845 – 18 March 1913) was King of Greece from 1863 until his assassination in 1913.\nOriginally a Danish prince, George was born in Copenhagen, and seemed destined for a career in the Royal Danish Navy. He was only 17 years old when he was elected king by the Greek National Assembly, which had deposed the unpopular former king Otto. His nomination was both suggested and supported by the Great Powers: the United Kingdom of Great Britain and Ireland, the Second French Empire and the Russian Empire. He married the Russian grand duchess Olga Constantinovna of Russia, and became the first monarch of a new Greek dynasty. Two of his sisters, Alexandra and Dagmar, married into the British and Russian royal families.", - "extract_html": "

George I (Greek: Γεώργιος Α΄, Geórgios I; born Prince William of Schleswig-Holstein-Sonderburg-Glücksburg; 24 December 1845 – 18 March 1913) was King of Greece from 1863 until his assassination in 1913.

\n

Originally a Danish prince, George was born in Copenhagen, and seemed destined for a career in the Royal Danish Navy. He was only 17 years old when he was elected king by the Greek National Assembly, which had deposed the unpopular former king Otto. His nomination was both suggested and supported by the Great Powers: the United Kingdom of Great Britain and Ireland, the Second French Empire and the Russian Empire. He married the Russian grand duchess Olga Constantinovna of Russia, and became the first monarch of a new Greek dynasty. Two of his sisters, Alexandra and Dagmar, married into the British and Russian royal families.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/King_George_of_Hellenes.jpg/236px-King_George_of_Hellenes.jpg", - "width": 236, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/18/King_George_of_Hellenes.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/18/King_George_of_Hellenes.jpg", - "width": 669, - "height": 907 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T09:31:20Z", - "description": "King of Greece from 1863 to 1913", - "normalizedtitle": "George I of Greece" - }, - { - "title": "List_of_kings_of_Greece", - "displaytitle": "List of kings of Greece", - "pageid": 40941755, - "extract": "This is a list of kings of the modern state of Greece. The Kingdom of Greece was ruled by the House of Wittelsbach between 1832 and 1862 and by the House of Glücksburg from 1862 to 1924, temporarily abolished during the Second Hellenic Republic, and from 1935 to 1973, when it was permanently abolished and replaced by the Hellenic Republic.\nOnly the first king, Otto I, was actually styled King of Greece (Greek: Βασιλεὺς τῆς Ἑλλάδος). His successor, George I, was styled King of the Hellenes (Βασιλεὺς τῶν Ἑλλήνων), as were all other modern monarchs.\nA republic was briefly established from 1924 to 1935. The restored monarchy was abolished following a referendum in 1973 conducted under the auspices of the then-ruling military regime.", - "extract_html": "

This is a list of kings of the modern state of Greece. The Kingdom of Greece was ruled by the House of Wittelsbach between 1832 and 1862 and by the House of Glücksburg from 1862 to 1924, temporarily abolished during the Second Hellenic Republic, and from 1935 to 1973, when it was permanently abolished and replaced by the Hellenic Republic.

\n

Only the first king, Otto I, was actually styled King of Greece (Greek: Βασιλεὺς τῆς Ἑλλάδος). His successor, George I, was styled King of the Hellenes (Βασιλεὺς τῶν Ἑλλήνων), as were all other modern monarchs.

\n

A republic was briefly established from 1924 to 1935. The restored monarchy was abolished following a referendum in 1973 conducted under the auspices of the then-ruling military regime.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Royal_Coat_of_Arms_of_Greece.svg/272px-Royal_Coat_of_Arms_of_Greece.svg.png", - "width": 272, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/af/Royal_Coat_of_Arms_of_Greece.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/af/Royal_Coat_of_Arms_of_Greece.svg", - "width": 1050, - "height": 1235 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-02T14:20:32Z", - "description": "Wikimedia list article", - "normalizedtitle": "List of kings of Greece" - } - ], - "year": 1863 - }, - { - "text": "In Southampton County, Virginia, escaped slave Nat Turner is captured and arrested for leading the bloodiest slave rebellion in United States history.", - "pages": [ - { - "title": "Southampton_County,_Virginia", - "displaytitle": "Southampton County, Virginia", - "pageid": 91247, - "extract": "Southampton County is a county located on the southern border of the Commonwealth of Virginia. North Carolina is to the south. As of the 2010 census, the population was 18,570.", - "extract_html": "

Southampton County is a county located on the southern border of the Commonwealth of Virginia. North Carolina is to the south. As of the 2010 census, the population was 18,570.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Southampton_VA_courthouse.JPG/320px-Southampton_VA_courthouse.JPG", - "width": 320, - "height": 242, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/44/Southampton_VA_courthouse.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/44/Southampton_VA_courthouse.JPG", - "width": 2674, - "height": 2025 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-07T17:11:10Z", - "description": "county in Virginia", - "coordinates": { - "lat": 36.72, - "lon": -77.11 - }, - "normalizedtitle": "Southampton County, Virginia" - }, - { - "title": "Nat_Turner", - "displaytitle": "Nat Turner", - "pageid": 54960, - "extract": "Nat Turner (October 2, 1800 – November 11, 1831) was an enslaved African American who led a rebellion of slaves and free blacks in Southampton County, Virginia on August 21, 1831. The rebels went from plantation to plantation, gathering horses and guns, freeing other slaves along the way, and recruiting other blacks who wanted to join their revolt. During the rebellion, Virginia legislators targeted free blacks with a colonization bill, which allocated new funding to remove them, and a police bill that denied free blacks trials by jury and made any free blacks convicted of a crime subject to sale and relocation. The slaves killed approximately sixty white men, women and children. Whites organized militias and called out regular troops to suppress the uprising.", - "extract_html": "

Nat Turner (October 2, 1800 – November 11, 1831) was an enslaved African American who led a rebellion of slaves and free blacks in Southampton County, Virginia on August 21, 1831. The rebels went from plantation to plantation, gathering horses and guns, freeing other slaves along the way, and recruiting other blacks who wanted to join their revolt. During the rebellion, Virginia legislators targeted free blacks with a colonization bill, which allocated new funding to remove them, and a police bill that denied free blacks trials by jury and made any free blacks convicted of a crime subject to sale and relocation. The slaves killed approximately sixty white men, women and children. Whites organized militias and called out regular troops to suppress the uprising.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Nat_Turner_captured.jpg/320px-Nat_Turner_captured.jpg", - "width": 320, - "height": 307, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d0/Nat_Turner_captured.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d0/Nat_Turner_captured.jpg", - "width": 750, - "height": 720 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-24T19:18:27Z", - "description": "slave rebellion leader", - "normalizedtitle": "Nat Turner" - }, - { - "title": "Nat_Turner's_slave_rebellion", - "displaytitle": "Nat Turner's slave rebellion", - "pageid": 7124229, - "extract": "Nat Turner's Rebellion (also known as the Southampton Insurrection) was a slave rebellion that took place in Southampton County, Virginia, during August 1831. Led by Nat Turner, rebel slaves killed from 55 to 65 people, the largest and deadliest slave uprising in U.S. history. The rebellion was put down within a few days, but Turner survived in hiding for more than two months afterwards. The rebellion was effectively suppressed at Belmont Plantation on the morning of August 23, 1831.\nThere was widespread fear in the aftermath of the rebellion, and white militias organized in retaliation against the slaves. The state executed 56 slaves accused of being part of the rebellion.", - "extract_html": "

Nat Turner's Rebellion (also known as the Southampton Insurrection) was a slave rebellion that took place in Southampton County, Virginia, during August 1831. Led by Nat Turner, rebel slaves killed from 55 to 65 people, the largest and deadliest slave uprising in U.S. history. The rebellion was put down within a few days, but Turner survived in hiding for more than two months afterwards. The rebellion was effectively suppressed at Belmont Plantation on the morning of August 23, 1831.

\n

There was widespread fear in the aftermath of the rebellion, and white militias organized in retaliation against the slaves. The state executed 56 slaves accused of being part of the rebellion.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Nat_Turner_woodcut.jpg/320px-Nat_Turner_woodcut.jpg", - "width": 320, - "height": 270, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/93/Nat_Turner_woodcut.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/93/Nat_Turner_woodcut.jpg", - "width": 640, - "height": 540 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T15:29:12Z", - "description": "slave rebellion that took place in Southampton County, Virginia, during August 1831", - "normalizedtitle": "Nat Turner's slave rebellion" - } - ], - "year": 1831 - }, - { - "text": "The independent government of Venezuela is established by Simón Bolívar.", - "pages": [ - { - "title": "Venezuela", - "displaytitle": "Venezuela", - "pageid": 32374, - "extract": "\nVenezuela ( ( listen) VEN-ə-ZWAYL-ə; American Spanish: [beneˈswela]), officially the Bolivarian Republic of Venezuela (Spanish: República Bolivariana de Venezuela), is a federal republic located on the northern coast of South America. It is bordered by Colombia on the west, Brazil on the south, Guyana on the east, the Dutch Caribbean ABC islands to the north and the islands of Trinidad and Tobago to the north-east. Venezuela covers 916,445 km2 (353,841 sq mi) and has over 31 million (31,568,179) people. The country has extremely high biodiversity and is ranked 7th in the world's list of nations with the most number of species. There are habitats ranging from the Andes Mountains in the west to the Amazon Basin rain-forest in the south via extensive llanos plains.", - "extract_html": "

\n

Venezuela ( ( listen) VEN-ə-ZWAYL; American Spanish: [beneˈswela]), officially the Bolivarian Republic of Venezuela (Spanish: República Bolivariana de Venezuela), is a federal republic located on the northern coast of South America. It is bordered by Colombia on the west, Brazil on the south, Guyana on the east, the Dutch Caribbean ABC islands to the north and the islands of Trinidad and Tobago to the north-east. Venezuela covers 916,445 km2 (353,841 sq mi) and has over 31 million (31,568,179) people. The country has extremely high biodiversity and is ranked 7th in the world's list of nations with the most number of species. There are habitats ranging from the Andes Mountains in the west to the Amazon Basin rain-forest in the south via extensive llanos plains.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Flag_of_Venezuela_%28state%29.svg/320px-Flag_of_Venezuela_%28state%29.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/7b/Flag_of_Venezuela_%28state%29.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/7b/Flag_of_Venezuela_%28state%29.svg", - "width": 900, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T14:10:42Z", - "description": "republic in northern South America", - "coordinates": { - "lat": 7, - "lon": -65 - }, - "normalizedtitle": "Venezuela" - }, - { - "title": "Simón_Bolívar", - "displaytitle": "Simón Bolívar", - "pageid": 55917, - "extract": "Simón José Antonio de la Santísima Trinidad de Bolívar y Palacios (Spanish: [siˈmon boˈliβar] ( listen); 24 July 1783 – 17 December 1830), generally known as Simón Bolívar and also colloquially as El Libertador, was a Venezuelan military and political leader who played a leading role in the establishment of Venezuela, Bolivia, Colombia, Ecuador, Peru, and Panama as sovereign states, independent of Spanish rule.\nBolívar was born into a wealthy, aristocratic Creole family and, as was common for the heirs of upper class families in his day, was sent to be educated abroad at a young age, arriving in Spain when he was 16 and later moving to France. While in Europe he was introduced to the ideas of the Enlightenment, later motivating him to overthrow the reigning Spanish. Taking advantage of the disorder in Spain prompted by the Peninsular War, Bolívar began his campaign for independence in 1808, appealing to the wealthy Creole population through a conservative process, and established an organized national congress within three years. Despite a number of hindrances, including the arrival of an unprecedentedly large Spanish expeditionary force, the revolutionaries eventually prevailed, culminating in the patriot victory at the Battle of Carabobo in 1821, which effectively made Venezuela an independent country.\nFollowing this triumph over the Spanish monarchy, Bolívar participated in the foundation of the first union of independent nations in Latin America, Gran Colombia, of which he was president from 1819 to 1830. Through further military campaigns, he ousted Spanish rulers from Ecuador, Peru, and Bolivia (named after him).", - "extract_html": "

Simón José Antonio de la Santísima Trinidad de Bolívar y Palacios (Spanish: [siˈmon boˈliβar] ( listen); 24 July 1783 – 17 December 1830), generally known as Simón Bolívar and also colloquially as El Libertador, was a Venezuelan military and political leader who played a leading role in the establishment of Venezuela, Bolivia, Colombia, Ecuador, Peru, and Panama as sovereign states, independent of Spanish rule.

\n

Bolívar was born into a wealthy, aristocratic Creole family and, as was common for the heirs of upper class families in his day, was sent to be educated abroad at a young age, arriving in Spain when he was 16 and later moving to France. While in Europe he was introduced to the ideas of the Enlightenment, later motivating him to overthrow the reigning Spanish. Taking advantage of the disorder in Spain prompted by the Peninsular War, Bolívar began his campaign for independence in 1808, appealing to the wealthy Creole population through a conservative process, and established an organized national congress within three years. Despite a number of hindrances, including the arrival of an unprecedentedly large Spanish expeditionary force, the revolutionaries eventually prevailed, culminating in the patriot victory at the Battle of Carabobo in 1821, which effectively made Venezuela an independent country.

\n

Following this triumph over the Spanish monarchy, Bolívar participated in the foundation of the first union of independent nations in Latin America, Gran Colombia, of which he was president from 1819 to 1830. Through further military campaigns, he ousted Spanish rulers from Ecuador, Peru, and Bolivia (named after him).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Sim%C3%B3n_Bol%C3%ADvar_Signature.svg/320px-Sim%C3%B3n_Bol%C3%ADvar_Signature.svg.png", - "width": 320, - "height": 173, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/62/Sim%C3%B3n_Bol%C3%ADvar_Signature.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/62/Sim%C3%B3n_Bol%C3%ADvar_Signature.svg", - "width": 252, - "height": 136 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T20:27:11Z", - "description": "Venezuelan military and political leader, South American libertador", - "normalizedtitle": "Simón Bolívar" - } - ], - "year": 1817 - }, - { - "text": "Believing he is facing a much larger force, Prussian Lieutenant General Friedrich von Romberg, commanding 5,300 men, surrendered the city of Stettin to 800 French soldiers commanded by General Lassalle.", - "pages": [ - { - "title": "Capitulation_of_Stettin", - "displaytitle": "Capitulation of Stettin", - "pageid": 30467213, - "extract": "In the Capitulation of Stettin on 29–30 October 1806, Lieutenant General Friedrich Gisbert Wilhelm von Romberg surrendered the garrison and fortress to a much smaller French light cavalry brigade led by General of Brigade Antoine Lasalle. This event was one of a number of surrenders by demoralized Prussian soldiers to equal or inferior French forces after their disastrous defeat at the Battle of Jena-Auerstedt on 14 October. Stettin, now Szczecin, Poland, is a port city on the Oder River near the Baltic Sea, about 120 kilometres (75 mi) northeast of Berlin.\nAfter Jena-Auerstedt, the broken Prussian armies crossed the Elbe River and fled to the northeast in an attempt to reach the east bank of the Oder. Following a two-week chase, Marshal Joachim Murat intercepted over 10,000 Prussians at the Battle of Prenzlau and bluffed them into surrendering on 28 October. The following day, Lasalle's and another French light cavalry brigade induced 4,200 more Prussians to lay down their weapons in the Capitulation of Pasewalk.", - "extract_html": "

In the Capitulation of Stettin on 29–30 October 1806, Lieutenant General Friedrich Gisbert Wilhelm von Romberg surrendered the garrison and fortress to a much smaller French light cavalry brigade led by General of Brigade Antoine Lasalle. This event was one of a number of surrenders by demoralized Prussian soldiers to equal or inferior French forces after their disastrous defeat at the Battle of Jena-Auerstedt on 14 October. Stettin, now Szczecin, Poland, is a port city on the Oder River near the Baltic Sea, about 120 kilometres (75 mi) northeast of Berlin.

\n

After Jena-Auerstedt, the broken Prussian armies crossed the Elbe River and fled to the northeast in an attempt to reach the east bank of the Oder. Following a two-week chase, Marshal Joachim Murat intercepted over 10,000 Prussians at the Battle of Prenzlau and bluffed them into surrendering on 28 October. The following day, Lasalle's and another French light cavalry brigade induced 4,200 more Prussians to lay down their weapons in the Capitulation of Pasewalk.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Taking_of_Stettin_by_French_troops_1806.PNG/320px-Taking_of_Stettin_by_French_troops_1806.PNG", - "width": 320, - "height": 219, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/27/Taking_of_Stettin_by_French_troops_1806.PNG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/27/Taking_of_Stettin_by_French_troops_1806.PNG", - "width": 816, - "height": 558 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T11:58:08Z", - "normalizedtitle": "Capitulation of Stettin" - }, - { - "title": "Antoine_Charles_Louis_de_Lasalle", - "displaytitle": "Antoine Charles Louis de Lasalle", - "pageid": 1480381, - "extract": "Antoine-Charles-Louis, Comte de Lasalle (10 May 1775, Metz – 6 July 1809, Wagram) was a French cavalry general during the Revolutionary and Napoleonic Wars, often called \"The Hussar General\". He first gained fame for his role in the Capitulation of Stettin. Over the course of his short career, he became known as a daring adventurer and was credited with many exploits.", - "extract_html": "

Antoine-Charles-Louis, Comte de Lasalle (10 May 1775, Metz – 6 July 1809, Wagram) was a French cavalry general during the Revolutionary and Napoleonic Wars, often called \"The Hussar General\". He first gained fame for his role in the Capitulation of Stettin. Over the course of his short career, he became known as a daring adventurer and was credited with many exploits.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/13/Antoine_Lasalle.JPG/236px-Antoine_Lasalle.JPG", - "width": 236, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/13/Antoine_Lasalle.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/13/Antoine_Lasalle.JPG", - "width": 258, - "height": 350 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-18T20:15:11Z", - "description": "French general", - "normalizedtitle": "Antoine Charles Louis de Lasalle" - } - ], - "year": 1806 - }, - { - "text": "Spanish forces fail to retake Jamaica at the Battle of Ocho Rios during the Anglo-Spanish War.", - "pages": [ - { - "title": "Spanish_Empire", - "displaytitle": "Spanish Empire", - "pageid": 303062, - "extract": "The Spanish Empire (Spanish: Imperio español) was one of the largest empires in history. It reached the peak of its military, political and economic power under the Spanish Habsburgs, through most of the 16th and 17th centuries, and its greatest territorial extent under the House of Bourbon in the 18th century. The Spanish Empire became the foremost global power of its time and was the first to be called the empire on which the sun never sets.\nThe Spanish Empire originated during the Age of Discovery after the voyages of Christopher Columbus. It comprised territories and colonies of the Spanish monarch in the Americas, Asia, Oceania and Africa, as the Greater Antilles, most of South America, Central America, and part of North America (including present day Florida, the Southwestern, and Pacific Coastal regions of the United States), as well as a number of Pacific Ocean archipelagos including the Philippines; and it lasted until the early 19th century Spanish American wars of independence, which left only Cuba, Puerto Rico, Guam, the Marianas, and the Philippines and various territories in Africa still under Spanish rule. Following the Spanish–American War of 1898, Spain ceded its last colonies in the Caribbean and the Pacific to the United States.", - "extract_html": "

The Spanish Empire (Spanish: Imperio español) was one of the largest empires in history. It reached the peak of its military, political and economic power under the Spanish Habsburgs, through most of the 16th and 17th centuries, and its greatest territorial extent under the House of Bourbon in the 18th century. The Spanish Empire became the foremost global power of its time and was the first to be called the empire on which the sun never sets.

\n

The Spanish Empire originated during the Age of Discovery after the voyages of Christopher Columbus. It comprised territories and colonies of the Spanish monarch in the Americas, Asia, Oceania and Africa, as the Greater Antilles, most of South America, Central America, and part of North America (including present day Florida, the Southwestern, and Pacific Coastal regions of the United States), as well as a number of Pacific Ocean archipelagos including the Philippines; and it lasted until the early 19th century Spanish American wars of independence, which left only Cuba, Puerto Rico, Guam, the Marianas, and the Philippines and various territories in Africa still under Spanish rule. Following the Spanish–American War of 1898, Spain ceded its last colonies in the Caribbean and the Pacific to the United States.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f5/Flag_of_Cross_of_Burgundy.svg/320px-Flag_of_Cross_of_Burgundy.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/f5/Flag_of_Cross_of_Burgundy.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/f5/Flag_of_Cross_of_Burgundy.svg", - "width": 750, - "height": 500 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T16:39:13Z", - "description": "one of the largest empires in world history, most powerful from the 16th until 18th century", - "normalizedtitle": "Spanish Empire" - }, - { - "title": "Jamaica", - "displaytitle": "Jamaica", - "pageid": 15660, - "extract": "Jamaica ( ( listen)) is an island country situated in the Caribbean Sea, consisting of the third-largest island of the Greater Antilles. The island, 10,990 square kilometres (4,240 sq mi) in area, lies about 145 kilometres (90 mi) south of Cuba, and 191 kilometres (119 mi) west of Hispaniola (the island containing the countries of Haiti and the Dominican Republic). Jamaica is the fourth-largest island country in the Caribbean, by area.\nInhabited by the indigenous Arawak and Taíno peoples, the island came under Spanish rule following the arrival of Christopher Columbus in 1494. Many of the indigenous people died of disease, and the Spanish imported African slaves as labourers. Named Santiago, the island remained a possession of Spain until 1655, when England (later Great Britain) conquered it and renamed it Jamaica.", - "extract_html": "

Jamaica ( ( listen)) is an island country situated in the Caribbean Sea, consisting of the third-largest island of the Greater Antilles. The island, 10,990 square kilometres (4,240 sq mi) in area, lies about 145 kilometres (90 mi) south of Cuba, and 191 kilometres (119 mi) west of Hispaniola (the island containing the countries of Haiti and the Dominican Republic). Jamaica is the fourth-largest island country in the Caribbean, by area.

\n

Inhabited by the indigenous Arawak and Taíno peoples, the island came under Spanish rule following the arrival of Christopher Columbus in 1494. Many of the indigenous people died of disease, and the Spanish imported African slaves as labourers. Named Santiago, the island remained a possession of Spain until 1655, when England (later Great Britain) conquered it and renamed it Jamaica.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Flag_of_Jamaica.svg/320px-Flag_of_Jamaica.svg.png", - "width": 320, - "height": 160, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/0a/Flag_of_Jamaica.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/0a/Flag_of_Jamaica.svg", - "width": 600, - "height": 300 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-17T21:06:08Z", - "description": "country in the Caribbean", - "coordinates": { - "lat": 18, - "lon": -77 - }, - "normalizedtitle": "Jamaica" - }, - { - "title": "Battle_of_Ocho_Rios", - "displaytitle": "Battle of Ocho Rios", - "pageid": 28434011, - "extract": "The Battle of Ocho Rios also known as Battle of Las Chorreras was a military action which took place on the island of Jamaica on 30 October 1657 where a Spanish force under Cristóbal Arnaldo Isasi hoping to take back the island was defeated by the English occupying force under the Governor Edward D'Oyley.\nThe English had occupied Jamaica in 1655 but had been reduced significantly by disease in the aftermath. They ran through governors at a rapid rate: General Robert Sedgwick arrived and died in 1655, General William Brayne replaced him and died in 1656, and then General Edward D'Oyley who had already been on the island took over as Governor being acclimatised to the islands harsh tropical conditions.\nTwo years after the English invasion, Cristóbal Arnaldo Isasi the former Spanish governor had been hiding in the hills with the run away slaves (later known as maroons). He requested a force to be sent from Cuba to retake the island back for Spain. He now had reinforcements from Cuba and had them land at Las Chorreros (present day Ocho Rios). By now he had assembled a total of nearly 300 soldiers and around 100 militia or guerrillas.", - "extract_html": "

The Battle of Ocho Rios also known as Battle of Las Chorreras was a military action which took place on the island of Jamaica on 30 October 1657 where a Spanish force under Cristóbal Arnaldo Isasi hoping to take back the island was defeated by the English occupying force under the Governor Edward D'Oyley.

\n

The English had occupied Jamaica in 1655 but had been reduced significantly by disease in the aftermath. They ran through governors at a rapid rate: General Robert Sedgwick arrived and died in 1655, General William Brayne replaced him and died in 1656, and then General Edward D'Oyley who had already been on the island took over as Governor being acclimatised to the islands harsh tropical conditions.

\n

Two years after the English invasion, Cristóbal Arnaldo Isasi the former Spanish governor had been hiding in the hills with the run away slaves (later known as maroons). He requested a force to be sent from Cuba to retake the island back for Spain. He now had reinforcements from Cuba and had them land at Las Chorreros (present day Ocho Rios). By now he had assembled a total of nearly 300 soldiers and around 100 militia or guerrillas.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Jamaica_relief_location_map.jpg/320px-Jamaica_relief_location_map.jpg", - "width": 320, - "height": 154, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/83/Jamaica_relief_location_map.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/83/Jamaica_relief_location_map.jpg", - "width": 1870, - "height": 900 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-10T07:56:09Z", - "coordinates": { - "lat": 18.4079, - "lon": -77.1086 - }, - "normalizedtitle": "Battle of Ocho Rios" - }, - { - "title": "Anglo-Spanish_War_(1654–1660)", - "displaytitle": "Anglo-Spanish War (1654–1660)", - "pageid": 853356, - "extract": "The Anglo-Spanish War was a conflict between the English Protectorate under Oliver Cromwell and Spain, between 1654 and 1660. It was caused by commercial rivalry. Each side attacked the other's commercial and colonial interests in various ways such as privateering and naval expeditions. In 1655, an English amphibious expedition invaded Spanish territory in the Caribbean. The major land actions took place in the Spanish Netherlands.", - "extract_html": "

The Anglo-Spanish War was a conflict between the English Protectorate under Oliver Cromwell and Spain, between 1654 and 1660. It was caused by commercial rivalry. Each side attacked the other's commercial and colonial interests in various ways such as privateering and naval expeditions. In 1655, an English amphibious expedition invaded Spanish territory in the Caribbean. The major land actions took place in the Spanish Netherlands.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/71/Blakesstgeorgeatsantacr.jpg/320px-Blakesstgeorgeatsantacr.jpg", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/71/Blakesstgeorgeatsantacr.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/71/Blakesstgeorgeatsantacr.jpg", - "width": 1022, - "height": 767 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-26T17:32:57Z", - "description": "war", - "normalizedtitle": "Anglo-Spanish War (1654–1660)" - } - ], - "year": 1657 - }, - { - "text": "Ballet of Chestnuts: A banquet held by Cesare Borgia in the Papal Palace where fifty prostitutes or courtesans are in attendance for the entertainment of the guests.", - "pages": [ - { - "title": "Banquet_of_Chestnuts", - "displaytitle": "Banquet of Chestnuts", - "pageid": 485134, - "extract": "The Banquet of Chestnuts (or Ballet of Chestnuts) was a fête in Rome, and particularly to a supper purportedly held in the Papal Palace by former Cardinal Cesare Borgia, son of Pope Alexander VI on 30 October 1501.", - "extract_html": "

The Banquet of Chestnuts (or Ballet of Chestnuts) was a fête in Rome, and particularly to a supper purportedly held in the Papal Palace by former Cardinal Cesare Borgia, son of Pope Alexander VI on 30 October 1501.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-21T20:52:07Z", - "normalizedtitle": "Banquet of Chestnuts" - }, - { - "title": "Cesare_Borgia", - "displaytitle": "Cesare Borgia", - "pageid": 7504, - "extract": "Cesare Borgia (Italian pronunciation: [ˈtʃeːzare ˈbɔrdʒa]; Catalan: [ˈsɛzər ˈβɔrʒə]; Spanish: César Borja, [ˈθesar ˈβorxa]; 13 September 1475 – 12 March 1507), Duke of Valentinois, was an Italian condottiero, nobleman, politician, and cardinal, whose fight for power was a major inspiration for The Prince by Machiavelli. He was the illegitimate son of Pope Alexander VI (r. 1492–1503, born Rodrigo Borgia) and his long-term mistress Vannozza dei Cattanei. He was the brother of Lucrezia Borgia; Giovanni Borgia (Juan), Duke of Gandia; and Gioffre Borgia (Jofré in Valencian), Prince of Squillace. He was half-brother to Don Pedro Luis de Borja (1460–88) and Girolama de Borja, children of unknown mothers.\nAfter initially entering the church and becoming a cardinal on his father's election to the Papacy, he became the first person to resign a cardinalcy after the death of his brother in 1498.", - "extract_html": "

Cesare Borgia (Italian pronunciation: [ˈtʃeːzare ˈbɔrdʒa]; Catalan: [ˈsɛzər ˈβɔrʒə]; Spanish: César Borja, [ˈθesar ˈβorxa]; 13 September 1475 – 12 March 1507), Duke of Valentinois, was an Italian condottiero, nobleman, politician, and cardinal, whose fight for power was a major inspiration for The Prince by Machiavelli. He was the illegitimate son of Pope Alexander VI (r. 1492–1503, born Rodrigo Borgia) and his long-term mistress Vannozza dei Cattanei. He was the brother of Lucrezia Borgia; Giovanni Borgia (Juan), Duke of Gandia; and Gioffre Borgia (Jofré in Valencian), Prince of Squillace. He was half-brother to Don Pedro Luis de Borja (1460–88) and Girolama de Borja, children of unknown mothers.

\n

After initially entering the church and becoming a cardinal on his father's election to the Papacy, he became the first person to resign a cardinalcy after the death of his brother in 1498.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/96/Cesareborgia.jpg/262px-Cesareborgia.jpg", - "width": 262, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/96/Cesareborgia.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/96/Cesareborgia.jpg", - "width": 1612, - "height": 1966 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T09:54:05Z", - "description": "Duke of Romagna and former Catholic cardinal", - "normalizedtitle": "Cesare Borgia" - } - ], - "year": 1501 - }, - { - "text": "King Henry VII of England is crowned.", - "pages": [ - { - "title": "Henry_VII_of_England", - "displaytitle": "Henry VII of England", - "pageid": 14186, - "extract": "Henry VII (Welsh: Harri Tudur; 28 January 1457 – 21 April 1509) was King of England from seizing the crown on 22 August 1485 until his death on 21 April 1509, and the first monarch of the House of Tudor. He ruled the Principality of Wales until 29 November 1489 and was Lord of Ireland.\nHenry won the throne when his forces defeated King Richard III at the Battle of Bosworth Field, the culmination of the Wars of the Roses. Henry was the last king of England to win his throne on the field of battle. He cemented his claim by marrying Elizabeth of York, daughter of Edward IV and niece of Richard III. Henry was successful in restoring the power and stability of the English monarchy after the civil war, and after a reign of nearly 24 years, he was peacefully succeeded by his son, Henry VIII.\nHenry can also be credited with a number of administrative, economic and diplomatic initiatives. He paid very close attention to detail, and instead of spending lavishly he concentrated on raising new revenues.", - "extract_html": "

Henry VII (Welsh: Harri Tudur; 28 January 1457 – 21 April 1509) was King of England from seizing the crown on 22 August 1485 until his death on 21 April 1509, and the first monarch of the House of Tudor. He ruled the Principality of Wales until 29 November 1489 and was Lord of Ireland.

\n

Henry won the throne when his forces defeated King Richard III at the Battle of Bosworth Field, the culmination of the Wars of the Roses. Henry was the last king of England to win his throne on the field of battle. He cemented his claim by marrying Elizabeth of York, daughter of Edward IV and niece of Richard III. Henry was successful in restoring the power and stability of the English monarchy after the civil war, and after a reign of nearly 24 years, he was peacefully succeeded by his son, Henry VIII.

\n

Henry can also be credited with a number of administrative, economic and diplomatic initiatives. He paid very close attention to detail, and instead of spending lavishly he concentrated on raising new revenues.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/King_Henry_VII.jpg/216px-King_Henry_VII.jpg", - "width": 216, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/e9/King_Henry_VII.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e9/King_Henry_VII.jpg", - "width": 1865, - "height": 2757 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T07:15:18Z", - "description": "King of England, 1485–1509", - "normalizedtitle": "Henry VII of England" - } - ], - "year": 1485 - }, - { - "text": "Portuguese and Castilian forces halt a Marinid invasion at the Battle of Río Salado.", - "pages": [ - { - "title": "Kingdom_of_Portugal", - "displaytitle": "Kingdom of Portugal", - "pageid": 9352542, - "extract": "The Kingdom of Portugal (Latin: Regnum Portugalliae, Portuguese: Reino de Portugal) was a monarchy on the Iberian Peninsula and the predecessor of modern Portugal. It was in existence from 1139 until 1910. After 1248, it was also known as the Kingdom of Portugal and the Algarves, and between 1815 and 1822, it was known as the United Kingdom of Portugal, Brazil and the Algarves. The name is also often applied to the Portuguese Empire, the realm's extensive overseas colonies.\nThe nucleus of the Portuguese state was the County of Portugal, established in the 9th century as part of the Reconquista, by Vímara Peres, a vassal of the King of Asturias. The county became part of the Kingdom of León in 1097, and the Counts of Portugal established themselves as rulers of an independent kingdom in the 12th century, following the battle of São Mamede.", - "extract_html": "

The Kingdom of Portugal (Latin: Regnum Portugalliae, Portuguese: Reino de Portugal) was a monarchy on the Iberian Peninsula and the predecessor of modern Portugal. It was in existence from 1139 until 1910. After 1248, it was also known as the Kingdom of Portugal and the Algarves, and between 1815 and 1822, it was known as the United Kingdom of Portugal, Brazil and the Algarves. The name is also often applied to the Portuguese Empire, the realm's extensive overseas colonies.

\n

The nucleus of the Portuguese state was the County of Portugal, established in the 9th century as part of the Reconquista, by Vímara Peres, a vassal of the King of Asturias. The county became part of the Kingdom of León in 1097, and the Counts of Portugal established themselves as rulers of an independent kingdom in the 12th century, following the battle of São Mamede.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Flag_Portugal_%281830%29.svg/320px-Flag_Portugal_%281830%29.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/a1/Flag_Portugal_%281830%29.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/a1/Flag_Portugal_%281830%29.svg", - "width": 957, - "height": 638 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-24T14:03:55Z", - "description": "kingdom in Southwestern Europe between 1139 and 1910", - "coordinates": { - "lat": 38.7, - "lon": -9.18333333 - }, - "normalizedtitle": "Kingdom of Portugal" - }, - { - "title": "Kingdom_of_Castile", - "displaytitle": "Kingdom of Castile", - "pageid": 750274, - "extract": "The Kingdom of Castile (; Spanish: Reino de Castilla, Latin: Regnum Castellae) was a large and powerful state on the Iberian Peninsula during the Middle Ages. Its name comes from the host of castles constructed in the region. It began in the 9th century as the County of Castile (Condado de Castilla), an eastern frontier lordship of the Kingdom of León. During the 10th century its counts increased their autonomy, but it was not until 1065 that it was separated from León and became a kingdom in its own right. Between 1072 and 1157 it was again united with León, and after 1230 this union became permanent.", - "extract_html": "

The Kingdom of Castile (; Spanish: Reino de Castilla, Latin: Regnum Castellae) was a large and powerful state on the Iberian Peninsula during the Middle Ages. Its name comes from the host of castles constructed in the region. It began in the 9th century as the County of Castile (Condado de Castilla), an eastern frontier lordship of the Kingdom of León. During the 10th century its counts increased their autonomy, but it was not until 1065 that it was separated from León and became a kingdom in its own right. Between 1072 and 1157 it was again united with León, and after 1230 this union became permanent.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/71/Flag_of_Castile.svg/320px-Flag_of_Castile.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/71/Flag_of_Castile.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/71/Flag_of_Castile.svg", - "width": 750, - "height": 500 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-21T21:59:11Z", - "description": "former country", - "normalizedtitle": "Kingdom of Castile" - }, - { - "title": "Marinid_dynasty", - "displaytitle": "Marinid dynasty", - "pageid": 1661433, - "extract": "The Marinid dynasty (Berber: Imrinen, Arabic: Marīniyūn) or Banu abd al-Haqq was a Sunni Muslim dynasty of Zenata Berber descent that ruled Morocco from the 13th to the 15th century.\nIn 1244, the Marinids overthrew the Almohad Caliphate, which controlled Morocco. The Marinid dynasty briefly held sway over all the Maghreb in the mid-14th century. It supported the Kingdom of Granada in Al-Andalus in the 13th and 14th centuries; an attempt to gain a direct foothold on the European side of the Strait of Gibraltar was however defeated at the Battle of Río Salado in 1340 and finished after the Castilian conquest of Algeciras from the Marinids in 1344.\nThe Marinids were overthrown after the 1465 revolt.", - "extract_html": "

The Marinid dynasty (Berber: Imrinen, Arabic: Marīniyūn) or Banu abd al-Haqq was a Sunni Muslim dynasty of Zenata Berber descent that ruled Morocco from the 13th to the 15th century.

\n

In 1244, the Marinids overthrew the Almohad Caliphate, which controlled Morocco. The Marinid dynasty briefly held sway over all the Maghreb in the mid-14th century. It supported the Kingdom of Granada in Al-Andalus in the 13th and 14th centuries; an attempt to gain a direct foothold on the European side of the Strait of Gibraltar was however defeated at the Battle of Río Salado in 1340 and finished after the Castilian conquest of Algeciras from the Marinids in 1344.

\n

The Marinids were overthrown after the 1465 revolt.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Flag_of_Morocco_1258_1659.svg/320px-Flag_of_Morocco_1258_1659.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/f7/Flag_of_Morocco_1258_1659.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/f7/Flag_of_Morocco_1258_1659.svg", - "width": 900, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T21:41:20Z", - "description": "former country", - "normalizedtitle": "Marinid dynasty" - }, - { - "title": "Battle_of_Río_Salado", - "displaytitle": "Battle of Río Salado", - "pageid": 1974450, - "extract": "The Battle of Río Salado, also known as the Battle of Tarifa (30 October 1340) was a battle of the armies of King Afonso IV of Portugal and King Alfonso XI of Castile against those of sultan Abu al-Hasan 'Ali of Marinid dynasty and Yusuf I of Granada.", - "extract_html": "

The Battle of Río Salado, also known as the Battle of Tarifa (30 October 1340) was a battle of the armies of King Afonso IV of Portugal and King Alfonso XI of Castile against those of sultan Abu al-Hasan 'Ali of Marinid dynasty and Yusuf I of Granada.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/65/La_batalla_del_Salado_%281340%29.jpg/320px-La_batalla_del_Salado_%281340%29.jpg", - "width": 320, - "height": 290, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/65/La_batalla_del_Salado_%281340%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/65/La_batalla_del_Salado_%281340%29.jpg", - "width": 477, - "height": 432 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-04T20:51:22Z", - "coordinates": { - "lat": 36.13333333, - "lon": -5.6 - }, - "normalizedtitle": "Battle of Río Salado" - } - ], - "year": 1340 - }, - { - "text": "The Eighth Crusade and siege of Tunis end by an agreement between Charles I of Sicily (brother to King Louis IX of France, who had died months earlier) and the sultan of Tunis.", - "pages": [ - { - "title": "Eighth_Crusade", - "displaytitle": "Eighth Crusade", - "pageid": 106163, - "extract": "The Eighth Crusade was a crusade launched by Louis IX of France against the city of Tunis in 1270. The Eighth Crusade is sometimes counted as the Seventh, if the Fifth and Sixth Crusades of Frederick II are counted as a single crusade. The Ninth Crusade is sometimes also counted as part of the Eighth.", - "extract_html": "

The Eighth Crusade was a crusade launched by Louis IX of France against the city of Tunis in 1270. The Eighth Crusade is sometimes counted as the Seventh, if the Fifth and Sixth Crusades of Frederick II are counted as a single crusade. The Ninth Crusade is sometimes also counted as part of the Eighth.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/SmrtLudvika91270.jpg/303px-SmrtLudvika91270.jpg", - "width": 303, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/73/SmrtLudvika91270.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/73/SmrtLudvika91270.jpg", - "width": 564, - "height": 596 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T05:00:05Z", - "normalizedtitle": "Eighth Crusade" - }, - { - "title": "Tunis", - "displaytitle": "Tunis", - "pageid": 57659, - "extract": "Tunis (Arabic: تونس‎‎ Tūnis) is the capital and the largest city of Tunisia. The greater metropolitan area of Tunis, often referred to as Grand Tunis, has some 2,700,000 inhabitants.\nSituated on a large Mediterranean Sea gulf (the Gulf of Tunis), behind the Lake of Tunis and the port of La Goulette (Ḥalq il-Wād), the city extends along the coastal plain and the hills that surround it. At its core lies its ancient medina, a World Heritage Site. East of the medina through the Sea Gate (also known as the Bab el Bhar and the Porte de France) begins the modern city, or Ville Nouvelle, traversed by the grand Avenue Habib Bourguiba (often referred to by popular press and travel guides as \"the Tunisian Champs-Élysées\"), where the colonial-era buildings provide a clear contrast to smaller, older structures. Further east by the sea lie the suburbs of Carthage, La Marsa, and Sidi Bou Said.", - "extract_html": "

Tunis (Arabic: تونس‎‎ Tūnis) is the capital and the largest city of Tunisia. The greater metropolitan area of Tunis, often referred to as Grand Tunis, has some 2,700,000 inhabitants.

\n

Situated on a large Mediterranean Sea gulf (the Gulf of Tunis), behind the Lake of Tunis and the port of La Goulette (Ḥalq il-Wād), the city extends along the coastal plain and the hills that surround it. At its core lies its ancient medina, a World Heritage Site. East of the medina through the Sea Gate (also known as the Bab el Bhar and the Porte de France) begins the modern city, or Ville Nouvelle, traversed by the grand Avenue Habib Bourguiba (often referred to by popular press and travel guides as \"the Tunisian Champs-Élysées\"), where the colonial-era buildings provide a clear contrast to smaller, older structures. Further east by the sea lie the suburbs of Carthage, La Marsa, and Sidi Bou Said.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Montage_ville_de_tunis.png/219px-Montage_ville_de_tunis.png", - "width": 219, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d6/Montage_ville_de_tunis.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d6/Montage_ville_de_tunis.png", - "width": 1196, - "height": 1748 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-07T01:58:13Z", - "description": "capital city of Tunisia", - "coordinates": { - "lat": 36.80638889, - "lon": 10.18166667 - }, - "normalizedtitle": "Tunis" - }, - { - "title": "Charles_I_of_Anjou", - "displaytitle": "Charles I of Anjou", - "pageid": 39833, - "extract": "Charles I (early 1227 – 7 January 1285), commonly called Charles of Anjou, was a member of the royal Capetian dynasty and the founder of the second House of Anjou. He was Count of Provence (1246–85) and Forcalquier (1246–48, 1256–85) in the Holy Roman Empire, Count of Anjou and Maine (1246–85) in France; he was also King of Sicily (1266–85) and Prince of Achaea (1278–85). In 1272, he was proclaimed King of Albania; and in 1277 he purchased a claim to the Kingdom of Jerusalem.\nBeing the youngest son of Louis VIII of France and Blanche of Castile, he was destined for a Church career until the early 1240s. He seized Provence and Forcalquier through his marriage to their heiress, Beatrice. His attempts to secure comital rights brought him into conflict with his mother-in-law and the nobility.", - "extract_html": "

Charles I (early 1227 – 7 January 1285), commonly called Charles of Anjou, was a member of the royal Capetian dynasty and the founder of the second House of Anjou. He was Count of Provence (1246–85) and Forcalquier (1246–48, 1256–85) in the Holy Roman Empire, Count of Anjou and Maine (1246–85) in France; he was also King of Sicily (1266–85) and Prince of Achaea (1278–85). In 1272, he was proclaimed King of Albania; and in 1277 he purchased a claim to the Kingdom of Jerusalem.

\n

Being the youngest son of Louis VIII of France and Blanche of Castile, he was destined for a Church career until the early 1240s. He seized Provence and Forcalquier through his marriage to their heiress, Beatrice. His attempts to secure comital rights brought him into conflict with his mother-in-law and the nobility.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Palazzo_Reale_di_Napoli_-_Carlo_I_d%27Angi%C3%B2.jpg/213px-Palazzo_Reale_di_Napoli_-_Carlo_I_d%27Angi%C3%B2.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/6d/Palazzo_Reale_di_Napoli_-_Carlo_I_d%27Angi%C3%B2.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/6d/Palazzo_Reale_di_Napoli_-_Carlo_I_d%27Angi%C3%B2.jpg", - "width": 2000, - "height": 3008 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T17:53:46Z", - "description": "King of Sicily", - "normalizedtitle": "Charles I of Anjou" - }, - { - "title": "Louis_IX_of_France", - "displaytitle": "Louis IX of France", - "pageid": 18549, - "extract": "Louis IX (25 April 1214 – 25 August 1270), commonly known as Saint Louis, was King of France and a canonized saint. Louis was crowned in Reims at the age of 12, following the death of his father Louis VIII the Lion, although his mother, Blanche of Castile, ruled the kingdom until he reached maturity. During Louis's childhood, Blanche dealt with the opposition of rebellious vassals and put an end to the Albigensian crusade which had started 20 years earlier.\nAs an adult, Louis IX faced recurring conflicts with some of the most powerful nobles, such as Hugh X of Lusignan and Peter of Dreux. Simultaneously, Henry III of England tried to restore his continental possessions, but was defeated at the battle of Taillebourg. His reign saw the annexation of several provinces, notably Normandy, Maine and Provence.\nLouis IX was a reformer and developed French royal justice, in which the king is the supreme judge to whom anyone is able to appeal to seek the amendment of a judgment.", - "extract_html": "

Louis IX (25 April 1214 – 25 August 1270), commonly known as Saint Louis, was King of France and a canonized saint. Louis was crowned in Reims at the age of 12, following the death of his father Louis VIII the Lion, although his mother, Blanche of Castile, ruled the kingdom until he reached maturity. During Louis's childhood, Blanche dealt with the opposition of rebellious vassals and put an end to the Albigensian crusade which had started 20 years earlier.

\n

As an adult, Louis IX faced recurring conflicts with some of the most powerful nobles, such as Hugh X of Lusignan and Peter of Dreux. Simultaneously, Henry III of England tried to restore his continental possessions, but was defeated at the battle of Taillebourg. His reign saw the annexation of several provinces, notably Normandy, Maine and Provence.

\n

Louis IX was a reformer and developed French royal justice, in which the king is the supreme judge to whom anyone is able to appeal to seek the amendment of a judgment.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/e/ee/Louis_IX_from_the_St_Louis_Bible.jpg/228px-Louis_IX_from_the_St_Louis_Bible.jpg", - "width": 228, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/en/e/ee/Louis_IX_from_the_St_Louis_Bible.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/ee/Louis_IX_from_the_St_Louis_Bible.jpg", - "width": 1185, - "height": 1665 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-10T03:42:29Z", - "description": "King of France", - "normalizedtitle": "Louis IX of France" - }, - { - "title": "Sultan", - "displaytitle": "Sultan", - "pageid": 64647, - "extract": "Sultan (; Arabic: سلطان‎‎ sulṭān, pronounced [sʊlˈtˤɑːn, solˈtˤɑːn]) is a noble title with several historical meanings. Originally, it was an Arabic abstract noun meaning \"strength\", \"authority\", \"rulership\", derived from the verbal noun سلطة sulṭah, meaning \"authority\" or \"power\". Later, it came to be used as the title of certain rulers who claimed almost full sovereignty in practical terms (i.e., the lack of dependence on any higher ruler), albeit without claiming the overall caliphate, or to refer to a powerful governor of a province within the caliphate.\nThe dynasty and lands ruled by a sultan are referred to as a sultanate (سلطنة salṭanah).\nA feminine form of sultan, used by Westerners, is Sultana or Sultanah and this title used legally used for some (not all) Muslim women monarchs and sultan's mothers and chief consorts. But Turkish and Ottoman Turkish also uses sultan for imperial lady, because Turkish grammar influenced by Persian grammar uses the same words for women and men. However, this styling misconstrues the roles of wives of sultans.", - "extract_html": "

Sultan (; Arabic: سلطان‎‎ sulṭān, pronounced [sʊlˈtˤɑːn, solˈtˤɑːn]) is a noble title with several historical meanings. Originally, it was an Arabic abstract noun meaning \"strength\", \"authority\", \"rulership\", derived from the verbal noun سلطة sulṭah, meaning \"authority\" or \"power\". Later, it came to be used as the title of certain rulers who claimed almost full sovereignty in practical terms (i.e., the lack of dependence on any higher ruler), albeit without claiming the overall caliphate, or to refer to a powerful governor of a province within the caliphate.

\n

The dynasty and lands ruled by a sultan are referred to as a sultanate (سلطنة salṭanah).

\n

A feminine form of sultan, used by Westerners, is Sultana or Sultanah and this title used legally used for some (not all) Muslim women monarchs and sultan's mothers and chief consorts. But Turkish and Ottoman Turkish also uses sultan for imperial lady, because Turkish grammar influenced by Persian grammar uses the same words for women and men. However, this styling misconstrues the roles of wives of sultans.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Turban_helmet_Met_04.3.211.jpg/240px-Turban_helmet_Met_04.3.211.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/c4/Turban_helmet_Met_04.3.211.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/c4/Turban_helmet_Met_04.3.211.jpg", - "width": 2437, - "height": 3249 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-21T19:12:17Z", - "description": "noble title with several historical meanings", - "normalizedtitle": "Sultan" - }, - { - "title": "Tunis", - "displaytitle": "Tunis", - "pageid": 57659, - "extract": "Tunis (Arabic: تونس‎‎ Tūnis) is the capital and the largest city of Tunisia. The greater metropolitan area of Tunis, often referred to as Grand Tunis, has some 2,700,000 inhabitants.\nSituated on a large Mediterranean Sea gulf (the Gulf of Tunis), behind the Lake of Tunis and the port of La Goulette (Ḥalq il-Wād), the city extends along the coastal plain and the hills that surround it. At its core lies its ancient medina, a World Heritage Site. East of the medina through the Sea Gate (also known as the Bab el Bhar and the Porte de France) begins the modern city, or Ville Nouvelle, traversed by the grand Avenue Habib Bourguiba (often referred to by popular press and travel guides as \"the Tunisian Champs-Élysées\"), where the colonial-era buildings provide a clear contrast to smaller, older structures. Further east by the sea lie the suburbs of Carthage, La Marsa, and Sidi Bou Said.", - "extract_html": "

Tunis (Arabic: تونس‎‎ Tūnis) is the capital and the largest city of Tunisia. The greater metropolitan area of Tunis, often referred to as Grand Tunis, has some 2,700,000 inhabitants.

\n

Situated on a large Mediterranean Sea gulf (the Gulf of Tunis), behind the Lake of Tunis and the port of La Goulette (Ḥalq il-Wād), the city extends along the coastal plain and the hills that surround it. At its core lies its ancient medina, a World Heritage Site. East of the medina through the Sea Gate (also known as the Bab el Bhar and the Porte de France) begins the modern city, or Ville Nouvelle, traversed by the grand Avenue Habib Bourguiba (often referred to by popular press and travel guides as \"the Tunisian Champs-Élysées\"), where the colonial-era buildings provide a clear contrast to smaller, older structures. Further east by the sea lie the suburbs of Carthage, La Marsa, and Sidi Bou Said.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Montage_ville_de_tunis.png/219px-Montage_ville_de_tunis.png", - "width": 219, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d6/Montage_ville_de_tunis.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d6/Montage_ville_de_tunis.png", - "width": 1196, - "height": 1748 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-07T01:58:13Z", - "description": "capital city of Tunisia", - "coordinates": { - "lat": 36.80638889, - "lon": 10.18166667 - }, - "normalizedtitle": "Tunis" - } - ], - "year": 1270 - }, - { - "text": "Battle of Rignano between Ranulf of Apulia and Roger II of Sicily.", - "pages": [ - { - "title": "Battle_of_Rignano", - "displaytitle": "Battle of Rignano", - "pageid": 4959483, - "extract": "The Battle of Rignano was the second great defeat of the career of Roger II of Sicily and, like the first, the Battle of Nocera, it too came at the hands of Ranulf II, Count of Alife. The prime difference was the position of the two combatants.\nAt Nocera on 24 July 1132, Ranulf was allied with Robert II of Capua and Sergius VII of Naples and he was a mere rebel, fighting the king of Sicily. On 30 October 1137, Ranulf was the recently appointed duke of Apulia, with a contingent of 800 German troops on loan from the Emperor Lothair II, and his adversaries were not only Roger, but his erstwhile ally Sergius.\nIn 1134, Roger had appointed his eldest legitimate son, Roger, duke of Apulia. Ranulf's creation as such in 1137 by the emperor and Pope Innocent II was in direct opposition to not only King Roger, but the young Duke Roger as well. Ranulf had raised an army of 800 knights of his own to augment his German forces and had infantry in proportion.", - "extract_html": "

The Battle of Rignano was the second great defeat of the career of Roger II of Sicily and, like the first, the Battle of Nocera, it too came at the hands of Ranulf II, Count of Alife. The prime difference was the position of the two combatants.

\n

At Nocera on 24 July 1132, Ranulf was allied with Robert II of Capua and Sergius VII of Naples and he was a mere rebel, fighting the king of Sicily. On 30 October 1137, Ranulf was the recently appointed duke of Apulia, with a contingent of 800 German troops on loan from the Emperor Lothair II, and his adversaries were not only Roger, but his erstwhile ally Sergius.

\n

In 1134, Roger had appointed his eldest legitimate son, Roger, duke of Apulia. Ranulf's creation as such in 1137 by the emperor and Pope Innocent II was in direct opposition to not only King Roger, but the young Duke Roger as well. Ranulf had raised an army of 800 knights of his own to augment his German forces and had infantry in proportion.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Southern_Italy_1112.svg/282px-Southern_Italy_1112.svg.png", - "width": 282, - "height": 320, - "original": "http://upload.wikimedia.org/wikipedia/commons/a/a4/Southern_Italy_1112.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/a4/Southern_Italy_1112.svg", - "width": 712, - "height": 807 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-07-24T10:28:34Z", - "description": "battle", - "coordinates": { - "lat": 41.68333333, - "lon": 15.58333333 - }, - "normalizedtitle": "Battle of Rignano" - }, - { - "title": "Ranulf_II_of_Alife", - "displaytitle": "Ranulf II of Alife", - "pageid": 4849196, - "extract": "Ranulf II (or Rainulf II, Italian: Rainulfo; died 30 April 1139) was the count of Alife and Caiazzo, and duke of Apulia. He was a member of the Italo-Norman Drengot family which dominated the Principality of Capua for most of the century between 1050 and 1150. Ranulf's wife, Matilda, was the sister of King Roger II of Sicily.\nRanulf II was the son of Robert, count of Alife and Caiazzo. and Gaitelgrima. His grandfather was Ranulf I of Caiazzo, a brother of Prince Richard I of Capua.", - "extract_html": "

Ranulf II (or Rainulf II, Italian: Rainulfo; died 30 April 1139) was the count of Alife and Caiazzo, and duke of Apulia. He was a member of the Italo-Norman Drengot family which dominated the Principality of Capua for most of the century between 1050 and 1150. Ranulf's wife, Matilda, was the sister of King Roger II of Sicily.

\n

Ranulf II was the son of Robert, count of Alife and Caiazzo. and Gaitelgrima. His grandfather was Ranulf I of Caiazzo, a brother of Prince Richard I of Capua.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-26T22:47:38Z", - "description": "count", - "normalizedtitle": "Ranulf II of Alife" - }, - { - "title": "Roger_II_of_Sicily", - "displaytitle": "Roger II of Sicily", - "pageid": 79075, - "extract": "Roger II (22 December 1095 – 26 February 1154) was King of Sicily, son of Roger I of Sicily and successor to his brother Simon. He began his rule as Count of Sicily in 1105, became Duke of Apulia and Calabria in 1127, and then King of Sicily in 1130.", - "extract_html": "

Roger II (22 December 1095 – 26 February 1154) was King of Sicily, son of Roger I of Sicily and successor to his brother Simon. He began his rule as Count of Sicily in 1105, became Duke of Apulia and Calabria in 1127, and then King of Sicily in 1130.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/04/Martorana_RogerII2008.jpg/235px-Martorana_RogerII2008.jpg", - "width": 235, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/04/Martorana_RogerII2008.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/04/Martorana_RogerII2008.jpg", - "width": 1837, - "height": 2505 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T22:45:10Z", - "description": "King of Sicily", - "normalizedtitle": "Roger II of Sicily" - } - ], - "year": 1137 - }, - { - "text": "Guangzhou is sacked by Arab and Persian pirates.", - "pages": [ - { - "title": "Guangzhou", - "displaytitle": "Guangzhou", - "pageid": 12537, - "extract": "Guangzhou (simplified Chinese: 广州; traditional Chinese: 廣州; Cantonese pronunciation: [kʷɔ̌ːŋ.tsɐ̂u̯] or [kʷɔ̌ːŋ.tsɐ́u̯] ( listen); Mandarin pronunciation: [kwàŋ.ʈʂóu] ( listen)), traditionally romanised as Canton, is the capital and most populous city of the province of Guangdong in southern China. Located on the Pearl River about 120 km (75 mi) north-northwest of Hong Kong and 145 km (90 mi) north of Macau, Guangzhou has a history of over 2,200 years and was a major terminus of the maritime Silk Road and continues to serve as a major port and transportation hub today.\nGuangzhou is situated at the heart of the most-populous built-up metropolitan area in mainland China, an area that extends into the neighboring cities of Foshan, Dongguan, and Shenzhen, forming one of the largest urban agglomerations on the planet. Administratively, the city holds sub-provincial status; and is one of China's five National Central Cities. In 2015 the city's administrative area was estimated to have a population of 13,501,100. Guangzhou is ranked as an Alpha- Global city.", - "extract_html": "

Guangzhou (simplified Chinese: 广州; traditional Chinese: 廣州; Cantonese pronunciation: [kʷɔ̌ːŋ.tsɐ̂u̯] or [kʷɔ̌ːŋ.tsɐ́u̯] ( listen); Mandarin pronunciation: [kwàŋ.ʈʂóu] ( listen)), traditionally romanised as Canton, is the capital and most populous city of the province of Guangdong in southern China. Located on the Pearl River about 120 km (75 mi) north-northwest of Hong Kong and 145 km (90 mi) north of Macau, Guangzhou has a history of over 2,200 years and was a major terminus of the maritime Silk Road and continues to serve as a major port and transportation hub today.

\n

Guangzhou is situated at the heart of the most-populous built-up metropolitan area in mainland China, an area that extends into the neighboring cities of Foshan, Dongguan, and Shenzhen, forming one of the largest urban agglomerations on the planet. Administratively, the city holds sub-provincial status; and is one of China's five National Central Cities. In 2015 the city's administrative area was estimated to have a population of 13,501,100. Guangzhou is ranked as an Alpha- Global city.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Guangzhou_montage.png/231px-Guangzhou_montage.png", - "width": 231, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/fe/Guangzhou_montage.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/fe/Guangzhou_montage.png", - "width": 1024, - "height": 1417 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T07:35:55Z", - "description": "capital city of Guangdong Province, China", - "coordinates": { - "lat": 23.13333333, - "lon": 113.26666667 - }, - "normalizedtitle": "Guangzhou" - }, - { - "title": "Arabs", - "displaytitle": "Arabs", - "pageid": 2185, - "extract": "Arabs (/aˈrab/; Arabic: عَرَب‎‎ ISO 233 ‘arab, Arabic pronunciation [ˈʕarab] ( listen)) are a population inhabiting the Arab world. They primarily live in the Arab states in Western Asia, North Africa, the Horn of Africa and western Indian Ocean islands. They also form a significant diaspora, with Arab communities established around the world.\nThe Arabs are first mentioned in the mid-ninth century BC as tribal people in eastern and southern Syria, and the north of the Arabian Peninsula. The Arabs appear to have been under the vassalage of the Neo-Assyrian Empire (911–612 BC), and the succeeding Neo-Babylonian (626–539 BC), Achaemenid (539–332 BC), Seleucid and Parthian empires. Arab tribes, most notably the Ghassanids and Lakhmids, begin to appear in the southern Syrian Desert from the mid 3rd century CE onward, during the mid to later stages of the Roman and Sasanian empires.", - "extract_html": "

Arabs (/aˈrab/; Arabic: عَرَب‎‎ ISO 233 ‘arab, Arabic pronunciation [ˈʕarab] ( listen)) are a population inhabiting the Arab world. They primarily live in the Arab states in Western Asia, North Africa, the Horn of Africa and western Indian Ocean islands. They also form a significant diaspora, with Arab communities established around the world.

\n

The Arabs are first mentioned in the mid-ninth century BC as tribal people in eastern and southern Syria, and the north of the Arabian Peninsula. The Arabs appear to have been under the vassalage of the Neo-Assyrian Empire (911–612 BC), and the succeeding Neo-Babylonian (626–539 BC), Achaemenid (539–332 BC), Seleucid and Parthian empires. Arab tribes, most notably the Ghassanids and Lakhmids, begin to appear in the southern Syrian Desert from the mid 3rd century CE onward, during the mid to later stages of the Roman and Sasanian empires.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T09:54:58Z", - "description": "Semitic people", - "normalizedtitle": "Arabs" - }, - { - "title": "Persian_people", - "displaytitle": "Persian people", - "pageid": 24607, - "extract": "The Persians are an Iranian ethnic group that make up over half the population of Iran. They share a common cultural system and are native speakers of the Persian language, as well as closely related languages.\nThe ancient Persians were a nomadic branch of the ancient Iranian population that entered modern-day Iran by the early 10th century BC. Together with their compatriot allies, they established and ruled some of the world's most powerful empires, well-recognized for their massive cultural, political, and social influence covering much of the territory and population of the ancient world.\nThroughout history, the Persians have contributed greatly to various forms of art, owning one of the world's most prominent literary traditions, and have made contributions in numerous other fields, including mathematics, theology, medicine, and various other sciences.\nIn contemporary terminology, people of Persian heritage native specifically to present-day Afghanistan and Tajikistan are referred to as Tajiks, whereas those in the eastern Caucasus (primarily the present-day Republic of Azerbaijan), albeit heavily assimilated, are referred to as Tats.", - "extract_html": "

The Persians are an Iranian ethnic group that make up over half the population of Iran. They share a common cultural system and are native speakers of the Persian language, as well as closely related languages.

\n

The ancient Persians were a nomadic branch of the ancient Iranian population that entered modern-day Iran by the early 10th century BC. Together with their compatriot allies, they established and ruled some of the world's most powerful empires, well-recognized for their massive cultural, political, and social influence covering much of the territory and population of the ancient world.

\n

Throughout history, the Persians have contributed greatly to various forms of art, owning one of the world's most prominent literary traditions, and have made contributions in numerous other fields, including mathematics, theology, medicine, and various other sciences.

\n

In contemporary terminology, people of Persian heritage native specifically to present-day Afghanistan and Tajikistan are referred to as Tajiks, whereas those in the eastern Caucasus (primarily the present-day Republic of Azerbaijan), albeit heavily assimilated, are referred to as Tats.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T18:23:00Z", - "description": "ethnic group", - "normalizedtitle": "Persian people" - }, - { - "title": "Piracy", - "displaytitle": "Piracy", - "pageid": 50715, - "extract": "Piracy is an act of robbery or criminal violence by ship or boat-borne attackers upon another ship or a coastal area, typically with the goal of stealing cargo and other valuable items or properties. Those who engage in acts of piracy are called pirates. The earliest documented instances of piracy were in the 14th century BC, when the Sea Peoples, a group of ocean raiders, attacked the ships of the Aegean and Mediterranean civilizations. Narrow channels which funnel shipping into predictable routes have long created opportunities for piracy, as well as for privateering and commerce raiding. Historic examples include the waters of Gibraltar, the Strait of Malacca, Madagascar, the Gulf of Aden, and the English Channel, whose geographic strictures facilitated pirate attacks.", - "extract_html": "

Piracy is an act of robbery or criminal violence by ship or boat-borne attackers upon another ship or a coastal area, typically with the goal of stealing cargo and other valuable items or properties. Those who engage in acts of piracy are called pirates. The earliest documented instances of piracy were in the 14th century BC, when the Sea Peoples, a group of ocean raiders, attacked the ships of the Aegean and Mediterranean civilizations. Narrow channels which funnel shipping into predictable routes have long created opportunities for piracy, as well as for privateering and commerce raiding. Historic examples include the waters of Gibraltar, the Strait of Malacca, Madagascar, the Gulf of Aden, and the English Channel, whose geographic strictures facilitated pirate attacks.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Flag_of_Edward_England.svg/320px-Flag_of_Edward_England.svg.png", - "width": 320, - "height": 201, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/ff/Flag_of_Edward_England.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/ff/Flag_of_Edward_England.svg", - "width": 750, - "height": 470 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-14T17:39:31Z", - "description": "act of robbery or criminal violence at sea", - "normalizedtitle": "Piracy" - } - ], - "year": 758 - }, - { - "text": "Antioch surrenders to the Muslim forces under Rashidun Caliphate after the Battle of the Iron Bridge.", - "pages": [ - { - "title": "Antioch", - "displaytitle": "Antioch", - "pageid": 36900, - "extract": "Antioch on the Orontes (; Greek: Ἀντιόχεια ἡ ἐπὶ Ὀρόντου, also Syrian Antioch) was an ancient Greco-Roman city on the eastern side of the Orontes River. Its ruins lie near the modern city of Antakya, Turkey, and lends the modern city its name.\nAntioch was founded near the end of the 4th century BC by Seleucus I Nicator, one of Alexander the Great's generals. The city's geographical, military, and economic location benefited its occupants, particularly such features as the spice trade, the Silk Road, and the Persian Royal Road. It eventually rivaled Alexandria as the chief city of the Near East. It was also the main center of Hellenistic Judaism at the end of the Second Temple period.", - "extract_html": "

Antioch on the Orontes (; Greek: Ἀντιόχεια ἡ ἐπὶ Ὀρόντου, also Syrian Antioch) was an ancient Greco-Roman city on the eastern side of the Orontes River. Its ruins lie near the modern city of Antakya, Turkey, and lends the modern city its name.

\n

Antioch was founded near the end of the 4th century BC by Seleucus I Nicator, one of Alexander the Great's generals. The city's geographical, military, and economic location benefited its occupants, particularly such features as the spice trade, the Silk Road, and the Persian Royal Road. It eventually rivaled Alexandria as the chief city of the Near East. It was also the main center of Hellenistic Judaism at the end of the Second Temple period.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Antiochia_su_Oronte.PNG/264px-Antiochia_su_Oronte.PNG", - "width": 264, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/19/Antiochia_su_Oronte.PNG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/19/Antiochia_su_Oronte.PNG", - "width": 1628, - "height": 1976 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-22T00:43:41Z", - "description": "ancient city in Turkey", - "coordinates": { - "lat": 36.2, - "lon": 36.15 - }, - "normalizedtitle": "Antioch" - }, - { - "title": "Rashidun_Caliphate", - "displaytitle": "Rashidun Caliphate", - "pageid": 8588509, - "extract": "The Rashidun Caliphate (Arabic: اَلْخِلَافَةُ ٱلرَّاشِدَةُ‎‎ al-Khilāfa-al-Rāshidah) (632–661) was the first of the four major caliphates established after the death of the Islamic Prophet Muhammad. It was ruled by the first four successive caliphs (successors) of Muhammad after his death in 632 CE (11 AH in the Islamic calendar). These caliphs are collectively known in Sunni Islam as the Rashidun, or \"Rightly Guided\" caliphs (اَلْخُلَفَاءُ ٱلرَّاشِدُونَ al-Khulafā’ur-Rāshidūn). This term is not used in Shia Islam as Shia Muslims do not consider the rule of the first three caliphs as legitimate.\nAt its height, the Caliphate controlled an empire from the Arabian Peninsula and the Levant, to the Transcaucasus in the north; North Africa from Egypt to present-day Tunisia in the west; and the Iranian plateau to parts of Central Asia and South Asia in the east. The four Rashidun caliphs were chosen through shura (شُـوْرَى), a process of community consultation that some consider to be an early form of Islamic democracy.\nThe caliphate arose out of the death of Muhammad in 632 CE and the subsequent debate over the succession to his leadership.", - "extract_html": "

The Rashidun Caliphate (Arabic: اَلْخِلَافَةُ ٱلرَّاشِدَةُ‎‎ al-Khilāfa-al-Rāshidah) (632–661) was the first of the four major caliphates established after the death of the Islamic Prophet Muhammad. It was ruled by the first four successive caliphs (successors) of Muhammad after his death in 632 CE (11 AH in the Islamic calendar). These caliphs are collectively known in Sunni Islam as the Rashidun, or \"Rightly Guided\" caliphs (اَلْخُلَفَاءُ ٱلرَّاشِدُونَ al-Khulafā’ur-Rāshidūn). This term is not used in Shia Islam as Shia Muslims do not consider the rule of the first three caliphs as legitimate.

\n

At its height, the Caliphate controlled an empire from the Arabian Peninsula and the Levant, to the Transcaucasus in the north; North Africa from Egypt to present-day Tunisia in the west; and the Iranian plateau to parts of Central Asia and South Asia in the east. The four Rashidun caliphs were chosen through shura (شُـوْرَى), a process of community consultation that some consider to be an early form of Islamic democracy.

\n

The caliphate arose out of the death of Muhammad in 632 CE and the subsequent debate over the succession to his leadership.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Mohammad_adil-Rashidun-empire-at-its-peak-close.PNG/320px-Mohammad_adil-Rashidun-empire-at-its-peak-close.PNG", - "width": 320, - "height": 155, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/df/Mohammad_adil-Rashidun-empire-at-its-peak-close.PNG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/df/Mohammad_adil-Rashidun-empire-at-its-peak-close.PNG", - "width": 1196, - "height": 580 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T00:58:32Z", - "description": "first four caliphs in Islamic history", - "normalizedtitle": "Rashidun Caliphate" - }, - { - "title": "Battle_of_the_Iron_Bridge", - "displaytitle": "Battle of the Iron Bridge", - "pageid": 8281908, - "extract": "The Battle of the Iron Bridge was fought between the Muslim Rashidun army and the Byzantine army in 637 AD. The battle took its name from a nearby nine-arch stone bridge spanning the Orontes River which had gates trimmed with iron. It was one of the last battles fought between the Byzantines and Rashidun Caliphate in the province of Syria.", - "extract_html": "

The Battle of the Iron Bridge was fought between the Muslim Rashidun army and the Byzantine army in 637 AD. The battle took its name from a nearby nine-arch stone bridge spanning the Orontes River which had gates trimmed with iron. It was one of the last battles fought between the Byzantines and Rashidun Caliphate in the province of Syria.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-15T13:01:56Z", - "description": "battle", - "normalizedtitle": "Battle of the Iron Bridge" - } - ], - "year": 637 - } - ], - "births": [ - { - "text": "Devin Booker, American basketball player", - "pages": [ - { - "title": "Devin_Booker", - "displaytitle": "Devin Booker", - "pageid": 45376382, - "extract": "Devin Armani Booker (born October 30, 1996) is an American professional basketball player for the Phoenix Suns of the National Basketball Association (NBA). He attended Moss Point High School in Moss Point, Mississippi and played in the 2014 McDonald's All-American Game, before spending one season playing college basketball for the University of Kentucky. He was drafted 13th overall in the 2015 NBA draft by the Phoenix Suns. On March 24, 2017, Booker became the youngest player to score over 60 points in a game, finishing with 70.", - "extract_html": "

Devin Armani Booker (born October 30, 1996) is an American professional basketball player for the Phoenix Suns of the National Basketball Association (NBA). He attended Moss Point High School in Moss Point, Mississippi and played in the 2014 McDonald's All-American Game, before spending one season playing college basketball for the University of Kentucky. He was drafted 13th overall in the 2015 NBA draft by the Phoenix Suns. On March 24, 2017, Booker became the youngest player to score over 60 points in a game, finishing with 70.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/Devin_Booker_against_Gators_2015.jpg/213px-Devin_Booker_against_Gators_2015.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/56/Devin_Booker_against_Gators_2015.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/56/Devin_Booker_against_Gators_2015.jpg", - "width": 533, - "height": 800 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T04:08:32Z", - "description": "American basketball player", - "normalizedtitle": "Devin Booker" - } - ], - "year": 1996 - }, - { - "text": "Mia Eklund, Finnish tennis player", - "pages": [ - { - "title": "Mia_Eklund", - "displaytitle": "Mia Eklund", - "pageid": 50244723, - "extract": "Mia Nicole Eklund (born 30 October 1994 in Tallinn, Estonia) is a Finnish tennis player.\nOn 9 October 2017, Eklund reached her best singles ranking of world number 760. On 16 October 2017, she peaked at world number 510 in the doubles rankings. She will break that in 23 October 2017 ranking.\nPlaying for Finland at the Fed Cup, Eklund has a win–loss record of 4–4.", - "extract_html": "

Mia Nicole Eklund (born 30 October 1994 in Tallinn, Estonia) is a Finnish tennis player.

\n

On 9 October 2017, Eklund reached her best singles ranking of world number 760. On 16 October 2017, she peaked at world number 510 in the doubles rankings. She will break that in 23 October 2017 ranking.

\n

Playing for Finland at the Fed Cup, Eklund has a win–loss record of 4–4.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Mia_Nicole_Eklund%2C_Aegon_Surbiton_Trophy%2C_London%2C_UK_-_Diliff.jpg/220px-Mia_Nicole_Eklund%2C_Aegon_Surbiton_Trophy%2C_London%2C_UK_-_Diliff.jpg", - "width": 220, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/99/Mia_Nicole_Eklund%2C_Aegon_Surbiton_Trophy%2C_London%2C_UK_-_Diliff.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/99/Mia_Nicole_Eklund%2C_Aegon_Surbiton_Trophy%2C_London%2C_UK_-_Diliff.jpg", - "width": 3578, - "height": 5189 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-24T12:03:43Z", - "description": "Finnish tennis player", - "normalizedtitle": "Mia Eklund" - } - ], - "year": 1994 - }, - { - "text": "Marcus Mariota, American football player", - "pages": [ - { - "title": "Marcus_Mariota", - "displaytitle": "Marcus Mariota", - "pageid": 36835636, - "extract": "Marcus Ardel Taulauniu Mariota (born October 30, 1993) is an American football quarterback for the Tennessee Titans of the National Football League (NFL). He was drafted by the Titans second overall in the 2015 NFL Draft. He played college football at Oregon where he was the starting quarterback from 2012 to 2014.", - "extract_html": "

Marcus Ardel Taulauniu Mariota (born October 30, 1993) is an American football quarterback for the Tennessee Titans of the National Football League (NFL). He was drafted by the Titans second overall in the 2015 NFL Draft. He played college football at Oregon where he was the starting quarterback from 2012 to 2014.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Marcus_Mariota_2015.jpg/229px-Marcus_Mariota_2015.jpg", - "width": 229, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/df/Marcus_Mariota_2015.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/df/Marcus_Mariota_2015.jpg", - "width": 1488, - "height": 2080 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T14:12:22Z", - "description": "American football quarterback", - "normalizedtitle": "Marcus Mariota" - } - ], - "year": 1993 - }, - { - "text": "Camila Silva, Chilean tennis player", - "pages": [ - { - "title": "Camila_Silva", - "displaytitle": "Camila Silva", - "pageid": 41511203, - "extract": "Camila Silva Espinoza (born 30 October 1992 in Valparaíso) is a Chilean tennis player.\nSilva has won six singles and 13 doubles titles on the ITF tour. On 2 May 2011, she reached her best singles ranking of world number 410.", - "extract_html": "

Camila Silva Espinoza (born 30 October 1992 in Valparaíso) is a Chilean tennis player.

\n

Silva has won six singles and 13 doubles titles on the ITF tour. On 2 May 2011, she reached her best singles ranking of world number 410.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-11T15:11:43Z", - "description": "Chilean tennis player", - "normalizedtitle": "Camila Silva" - } - ], - "year": 1992 - }, - { - "text": "Matt Parcell, Australian rugby league player", - "pages": [ - { - "title": "Matt_Parcell", - "displaytitle": "Matt Parcell", - "pageid": 46841802, - "extract": "Matt Parcell (born 30 October 1992) is an Australian professional rugby league footballer who currently plays for the Leeds Rhinos in the Super League. He plays at hooker.", - "extract_html": "

Matt Parcell (born 30 October 1992) is an Australian professional rugby league footballer who currently plays for the Leeds Rhinos in the Super League. He plays at hooker.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1d/Matt_Parcell.JPG/320px-Matt_Parcell.JPG", - "width": 320, - "height": 261, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/1d/Matt_Parcell.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/1d/Matt_Parcell.JPG", - "width": 2583, - "height": 2104 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-21T18:03:45Z", - "normalizedtitle": "Matt Parcell" - } - ], - "year": 1992 - }, - { - "text": "Suwaibou Sanneh, Gambian sprinter", - "pages": [ - { - "title": "Suwaibou_Sanneh", - "displaytitle": "Suwaibou Sanneh", - "pageid": 18875952, - "extract": "Suwaibou Sanneh (born 30 October 1990) is a Gambian sprinter who specializes in the 100 metres. He was born in Brikama. He set a personal best and national record time in 10.16 seconds, during the Twilight Series Meet #3 on 30 May 2013 in New York City.\nHe reached the semi-final at the 2008 World Junior Championships and competed at the 2008 Olympic Games without progressing to the second round.", - "extract_html": "

Suwaibou Sanneh (born 30 October 1990) is a Gambian sprinter who specializes in the 100 metres. He was born in Brikama. He set a personal best and national record time in 10.16 seconds, during the Twilight Series Meet #3 on 30 May 2013 in New York City.

\n

He reached the semi-final at the 2008 World Junior Championships and competed at the 2008 Olympic Games without progressing to the second round.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-11T18:52:13Z", - "description": "Gambian sprinter", - "normalizedtitle": "Suwaibou Sanneh" - } - ], - "year": 1990 - }, - { - "text": "Ashley Barnes, Austrian-English footballer", - "pages": [ - { - "title": "Ashley_Barnes", - "displaytitle": "Ashley Barnes", - "pageid": 19553457, - "extract": "Ashley Luke Barnes (born 30 October 1989) is a professional footballer who plays as a striker for Premier League club Burnley.\nBarnes previously played for Paulton Rovers, Plymouth Argyle, Oxford United, Salisbury City, Eastbourne Borough, Torquay United and Brighton & Hove Albion.", - "extract_html": "

Ashley Luke Barnes (born 30 October 1989) is a professional footballer who plays as a striker for Premier League club Burnley.

\n

Barnes previously played for Paulton Rovers, Plymouth Argyle, Oxford United, Salisbury City, Eastbourne Borough, Torquay United and Brighton & Hove Albion.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Ashley_Barnes_Brighton_vs_Spurs.jpg/196px-Ashley_Barnes_Brighton_vs_Spurs.jpg", - "width": 196, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/3a/Ashley_Barnes_Brighton_vs_Spurs.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3a/Ashley_Barnes_Brighton_vs_Spurs.jpg", - "width": 1589, - "height": 2592 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T15:52:35Z", - "description": "English footballer", - "normalizedtitle": "Ashley Barnes" - } - ], - "year": 1989 - }, - { - "text": "Nastia Liukin, Russian-American gymnast and actress", - "pages": [ - { - "title": "Nastia_Liukin", - "displaytitle": "Nastia Liukin", - "pageid": 4057599, - "extract": "Anastasia Valeryevna \"Nastia\" Liukin (Russian: Анастасия \"Настя\" Валерьевна Люкина; born October 30, 1989) is a Russian American former artistic gymnast. She is the 2008 Olympic individual all-around champion, the 2005 and 2007 world champion on the balance beam, and the 2005 world champion on the uneven bars. She is also a four-time all-around U.S. national champion, winning twice as a junior and twice as a senior. With nine World Championships medals, seven of them individual, Liukin is tied with Shannon Miller for the third-highest tally of World Championship medals (among U.S. gymnasts). Liukin also tied Miller's record as the American gymnast having won the most medals in a single non-boycotted Olympic Games.\nLiukin was a key member of the U.S. senior team.", - "extract_html": "

Anastasia Valeryevna \"Nastia\" Liukin (Russian: Анастасия \"Настя\" Валерьевна Люкина; born October 30, 1989) is a Russian American former artistic gymnast. She is the 2008 Olympic individual all-around champion, the 2005 and 2007 world champion on the balance beam, and the 2005 world champion on the uneven bars. She is also a four-time all-around U.S. national champion, winning twice as a junior and twice as a senior. With nine World Championships medals, seven of them individual, Liukin is tied with Shannon Miller for the third-highest tally of World Championship medals (among U.S. gymnasts). Liukin also tied Miller's record as the American gymnast having won the most medals in a single non-boycotted Olympic Games.

\n

Liukin was a key member of the U.S. senior team.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Nastia_Liukin_at_The_Heart_Truth_2009.jpg/213px-Nastia_Liukin_at_The_Heart_Truth_2009.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/86/Nastia_Liukin_at_The_Heart_Truth_2009.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/86/Nastia_Liukin_at_The_Heart_Truth_2009.jpg", - "width": 3168, - "height": 4752 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-24T02:39:29Z", - "description": "retired Russian-American artistic gymnast", - "normalizedtitle": "Nastia Liukin" - } - ], - "year": 1989 - }, - { - "text": "Janel Parrish, American actress and singer", - "pages": [ - { - "title": "Janel_Parrish", - "displaytitle": "Janel Parrish", - "pageid": 12303441, - "extract": "Janel Meilani Parrish (born October 30, 1988) is an American actress. She is best known for playing Mona Vanderwaal on the Freeform mystery drama series Pretty Little Liars. She is also known for portraying Young Cosette in the Broadway production of Les Misérables (1996), and Jade in the teen comedy film Bratz (2007).", - "extract_html": "

Janel Meilani Parrish (born October 30, 1988) is an American actress. She is best known for playing Mona Vanderwaal on the Freeform mystery drama series Pretty Little Liars. She is also known for portraying Young Cosette in the Broadway production of Les Misérables (1996), and Jade in the teen comedy film Bratz (2007).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Janel_Parrish_2013.jpg/212px-Janel_Parrish_2013.jpg", - "width": 212, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/7c/Janel_Parrish_2013.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/7c/Janel_Parrish_2013.jpg", - "width": 683, - "height": 1029 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T17:43:32Z", - "description": "American musician", - "normalizedtitle": "Janel Parrish" - } - ], - "year": 1988 - }, - { - "text": "Danielle Fong, Canadian entrepreneur, co-founder and Chief Scientist of LightSail Energy", - "pages": [ - { - "title": "Danielle_Fong", - "displaytitle": "Danielle Fong", - "pageid": 34496910, - "extract": "Danielle A. Fong (born October 30, 1987 in Halifax, Nova Scotia) is a Canadian entrepreneur and the co-founder and Chief Scientist of LightSail Energy.", - "extract_html": "

Danielle A. Fong (born October 30, 1987 in Halifax, Nova Scotia) is a Canadian entrepreneur and the co-founder and Chief Scientist of LightSail Energy.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Danielle-fong.jpeg/320px-Danielle-fong.jpeg", - "width": 320, - "height": 237, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/76/Danielle-fong.jpeg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/76/Danielle-fong.jpeg", - "width": 500, - "height": 370 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-04T12:03:56Z", - "description": "Canadian entrepreneur, computer scientist and physicist", - "normalizedtitle": "Danielle Fong" - }, - { - "title": "LightSail_Energy", - "displaytitle": "LightSail Energy", - "pageid": 50041865, - "extract": "LightSail Energy is a compressed air energy storage technology startup located in Berkeley, California.", - "extract_html": "

LightSail Energy is a compressed air energy storage technology startup located in Berkeley, California.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-09T21:01:24Z", - "normalizedtitle": "LightSail Energy" - } - ], - "year": 1987 - }, - { - "text": "Ali Riley, New Zealand footballer", - "pages": [ - { - "title": "Ali_Riley", - "displaytitle": "Ali Riley", - "pageid": 19461622, - "extract": "Alexandra \"Ali\" Lowe Riley (born 30 October 1987) is an American-born New Zealand association football player who is currently a member of the FC Rosengård in Damallsvenskan. Riley is a member of the New Zealand women's national football team.", - "extract_html": "

Alexandra \"Ali\" Lowe Riley (born 30 October 1987) is an American-born New Zealand association football player who is currently a member of the FC Rosengård in Damallsvenskan. Riley is a member of the New Zealand women's national football team.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/AliRiley2013.JPG/313px-AliRiley2013.JPG", - "width": 313, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/fd/AliRiley2013.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/fd/AliRiley2013.JPG", - "width": 388, - "height": 397 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T12:02:05Z", - "description": "Association football player", - "normalizedtitle": "Ali Riley" - } - ], - "year": 1987 - }, - { - "text": "Keisuke Sohma, Japanese actor", - "pages": [ - { - "title": "Keisuke_Sohma", - "displaytitle": "Keisuke Sohma", - "pageid": 47071940, - "extract": "Keisuke Sohma (相馬 圭祐, Sōma Keisuke, born October 30, 1986, in Kanagawa Prefecture, Japan) is a Japanese actor who is affiliated with Hirata Office.", - "extract_html": "

Keisuke Sohma (相馬 圭祐, Sōma Keisuke, born October 30, 1986, in Kanagawa Prefecture, Japan) is a Japanese actor who is affiliated with Hirata Office.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-15T17:47:48Z", - "description": "Japanese actor", - "normalizedtitle": "Keisuke Sohma" - } - ], - "year": 1986 - }, - { - "text": "Thomas Morgenstern, Austrian ski jumper", - "pages": [ - { - "title": "Thomas_Morgenstern", - "displaytitle": "Thomas Morgenstern", - "pageid": 3211379, - "extract": "Thomas Morgenstern (born 30 October 1986) is an Austrian former ski jumper who competed from 2002 to 2014.", - "extract_html": "

Thomas Morgenstern (born 30 October 1986) is an Austrian former ski jumper who competed from 2002 to 2014.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Thomas_Morgenstern_departure_to_Sochi.jpg/213px-Thomas_Morgenstern_departure_to_Sochi.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/bc/Thomas_Morgenstern_departure_to_Sochi.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/bc/Thomas_Morgenstern_departure_to_Sochi.jpg", - "width": 945, - "height": 1417 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-16T22:43:12Z", - "description": "austrian skijumpers", - "normalizedtitle": "Thomas Morgenstern" - } - ], - "year": 1986 - }, - { - "text": "Ragnar Klavan, Estonian footballer", - "pages": [ - { - "title": "Ragnar_Klavan", - "displaytitle": "Ragnar Klavan", - "pageid": 5932965, - "extract": "Ragnar Klavan (born 30 October 1985) is an Estonian professional footballer who plays as a defender for Premier League club Liverpool and captains the Estonia national team. A left-footed centre-back, he has also played as a left-back during his career.\nHe played for Elva, Tulevik and Flora in Estonia, winning the Meistriliiga with Flora in the 2003 season, before moving to the Netherlands where he represented Heracles Almelo and AZ, winning the Eredivisie with the latter in the 2008–09 season. In 2012, he transferred to FC Augsburg and spent four seasons in the Bundesliga before his move to Liverpool in July 2016 for €5 million.\nKlavan made his international debut for Estonia in 2003, and became captain in 2012. In 2015, he became the ninth player to make 100 appearances for Estonia, and is currently the sixth highest capped Estonian player of all time.", - "extract_html": "

Ragnar Klavan (born 30 October 1985) is an Estonian professional footballer who plays as a defender for Premier League club Liverpool and captains the Estonia national team. A left-footed centre-back, he has also played as a left-back during his career.

\n

He played for Elva, Tulevik and Flora in Estonia, winning the Meistriliiga with Flora in the 2003 season, before moving to the Netherlands where he represented Heracles Almelo and AZ, winning the Eredivisie with the latter in the 2008–09 season. In 2012, he transferred to FC Augsburg and spent four seasons in the Bundesliga before his move to Liverpool in July 2016 for €5 million.

\n

Klavan made his international debut for Estonia in 2003, and became captain in 2012. In 2015, he became the ninth player to make 100 appearances for Estonia, and is currently the sixth highest capped Estonian player of all time.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3c/Ragnar-klavan-1312497624.jpg/244px-Ragnar-klavan-1312497624.jpg", - "width": 244, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/3c/Ragnar-klavan-1312497624.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3c/Ragnar-klavan-1312497624.jpg", - "width": 923, - "height": 1209 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-25T22:51:14Z", - "description": "Estonian footballer", - "normalizedtitle": "Ragnar Klavan" - } - ], - "year": 1985 - }, - { - "text": "David Mooney, Irish footballer", - "pages": [ - { - "title": "Dave_Mooney", - "displaytitle": "Dave Mooney", - "pageid": 14990485, - "extract": "David Mooney (born 30 October 1984) is an Irish footballer who plays for Leyton Orient.", - "extract_html": "

David Mooney (born 30 October 1984) is an Irish footballer who plays for Leyton Orient.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T16:38:16Z", - "description": "footballer", - "normalizedtitle": "Dave Mooney" - } - ], - "year": 1984 - }, - { - "text": "Tyson Strachan, Canadian ice hockey player", - "pages": [ - { - "title": "Tyson_Strachan", - "displaytitle": "Tyson Strachan", - "pageid": 20738478, - "extract": "Tyson Strachan (born October 30, 1984) is a Canadian professional ice hockey defenceman for the Cardiff Devils in the EIHL. Prior to joining the Devils, Strachan most recently played with the Rochester Americans of the American Hockey League (AHL).", - "extract_html": "

Tyson Strachan (born October 30, 1984) is a Canadian professional ice hockey defenceman for the Cardiff Devils in the EIHL. Prior to joining the Devils, Strachan most recently played with the Rochester Americans of the American Hockey League (AHL).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Tyson_Strachan_2012-03-09.JPG/248px-Tyson_Strachan_2012-03-09.JPG", - "width": 248, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/a5/Tyson_Strachan_2012-03-09.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/a5/Tyson_Strachan_2012-03-09.JPG", - "width": 1572, - "height": 2025 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-19T21:16:57Z", - "description": "Canadian ice hockey defenceman", - "normalizedtitle": "Tyson Strachan" - } - ], - "year": 1984 - }, - { - "text": "Eva Marcille, American model and actress", - "pages": [ - { - "title": "Eva_Marcille", - "displaytitle": "Eva Marcille", - "pageid": 30865528, - "extract": "Eva Marcille Pigford (born October 30, 1984), known professionally as Eva Marcille, is an African American actress, TV host and fashion model, who most recently played the role of Tyra Hamilton on the soap opera The Young and the Restless.", - "extract_html": "

Eva Marcille Pigford (born October 30, 1984), known professionally as Eva Marcille, is an African American actress, TV host and fashion model, who most recently played the role of Tyra Hamilton on the soap opera The Young and the Restless.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Eva_Marcille_2012.jpg/213px-Eva_Marcille_2012.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/31/Eva_Marcille_2012.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/31/Eva_Marcille_2012.jpg", - "width": 1152, - "height": 1728 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T20:01:46Z", - "description": "American model and actress", - "normalizedtitle": "Eva Marcille" - } - ], - "year": 1984 - }, - { - "text": "Isaac Ross, New Zealand rugby player", - "pages": [ - { - "title": "Isaac_Ross", - "displaytitle": "Isaac Ross", - "pageid": 15978951, - "extract": "For the American plantation owner, see Isaac Ross.\nIsaac Beattie Ross (born 27 October 1984) is a New Zealand rugby union player. He plays in the lock position for the Japanese based rugby side the NTT Shining Arcs.\nRoss followed in the footsteps of his father Jock when he pulled on an All Black jersey for the first time in 2009. In as cover for the injured Ali Williams, Ross impressed with an athletic performance in an otherwise sloppy loss to France in Dunedin. Despite fears that Ross neglected the grittier aspects of lock play, continuing injury to Williams ensured that he began the Tri-Nations in the All Black second-row. He won his fourth cap against Australia in the opening game of the series, helping his side to a 22-16 win.\nAt domestic level Ross represented Canterbury, and has played for the Chiefs, Crusaders and Highlanders at Super 14 level since his debut in 2007.", - "extract_html": "

For the American plantation owner, see Isaac Ross.

\n

Isaac Beattie Ross (born 27 October 1984) is a New Zealand rugby union player. He plays in the lock position for the Japanese based rugby side the NTT Shining Arcs.

\n

Ross followed in the footsteps of his father Jock when he pulled on an All Black jersey for the first time in 2009. In as cover for the injured Ali Williams, Ross impressed with an athletic performance in an otherwise sloppy loss to France in Dunedin. Despite fears that Ross neglected the grittier aspects of lock play, continuing injury to Williams ensured that he began the Tri-Nations in the All Black second-row. He won his fourth cap against Australia in the opening game of the series, helping his side to a 22-16 win.

\n

At domestic level Ross represented Canterbury, and has played for the Chiefs, Crusaders and Highlanders at Super 14 level since his debut in 2007.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-01-15T06:45:45Z", - "description": "New Zealand rugby union player", - "normalizedtitle": "Isaac Ross" - } - ], - "year": 1984 - }, - { - "text": "Gedo, Egyptian footballer", - "pages": [ - { - "title": "Mohamed_Nagy", - "displaytitle": "Mohamed Nagy", - "pageid": 25671271, - "extract": "Mohamed Nagy Ismail Afash (Arabic script: محمد ناجى إسماعيل ‎); born 30 October 1984), known by his nickname Gedo (جدّو‎, Egyptian Arabic pronunciation: [ˈɡedːo], which means Grandpa in Egyptian Arabic), is an Egyptian footballer who plays in the Egyptian Premier League, as well as Egypt national team.", - "extract_html": "

Mohamed Nagy Ismail Afash (Arabic script: محمد ناجى إسماعيل ‎); born 30 October 1984), known by his nickname Gedo (جدّو‎, Egyptian Arabic pronunciation: [ˈɡedːo], which means Grandpa in Egyptian Arabic), is an Egyptian footballer who plays in the Egyptian Premier League, as well as Egypt national team.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T19:41:50Z", - "description": "Egyptian footballer", - "normalizedtitle": "Mohamed Nagy" - } - ], - "year": 1984 - }, - { - "text": "Iain Hume, Scottish-Canadian footballer", - "pages": [ - { - "title": "Iain_Hume", - "displaytitle": "Iain Hume", - "pageid": 2861994, - "extract": "Iain Edward Hume (born on 30 October in 1983) is a Canadian footballer who plays for Kerala Blasters in Indian Super League.\nHe began his career at Tranmere Rovers in 1999, and six years later moved to Leicester City for an initial £500,000 fee. Three years later he was signed by Barnsley for £1.2 million, where he suffered a serious head injury in a match against Sheffield United. He later played for Preston North End, and was loaned to Doncaster Rovers and Fleetwood Town, where he won League One and the League Two play-offs respectively.\nIn 2014, he joined Kerala Blasters of the newly formed Indian Super League, and played the next two seasons with Atlético de Kolkata, winning the 2016 championship. He is the competition's highest scorer of all time with 23 goals. In July 2017, he returned to his former club, Kerala Blasters FC.\nHume was born in Edinburgh, Scotland, but plays internationally for Canada.", - "extract_html": "

Iain Edward Hume (born on 30 October in 1983) is a Canadian footballer who plays for Kerala Blasters in Indian Super League.

\n

He began his career at Tranmere Rovers in 1999, and six years later moved to Leicester City for an initial £500,000 fee. Three years later he was signed by Barnsley for £1.2 million, where he suffered a serious head injury in a match against Sheffield United. He later played for Preston North End, and was loaned to Doncaster Rovers and Fleetwood Town, where he won League One and the League Two play-offs respectively.

\n

In 2014, he joined Kerala Blasters of the newly formed Indian Super League, and played the next two seasons with Atlético de Kolkata, winning the 2016 championship. He is the competition's highest scorer of all time with 23 goals. In July 2017, he returned to his former club, Kerala Blasters FC.

\n

Hume was born in Edinburgh, Scotland, but plays internationally for Canada.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Iain_Hume_photo_by_Djuradj_Vujcic.jpg/248px-Iain_Hume_photo_by_Djuradj_Vujcic.jpg", - "width": 248, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/6d/Iain_Hume_photo_by_Djuradj_Vujcic.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/6d/Iain_Hume_photo_by_Djuradj_Vujcic.jpg", - "width": 505, - "height": 652 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T04:32:39Z", - "description": "Canadian soccer player", - "normalizedtitle": "Iain Hume" - } - ], - "year": 1983 - }, - { - "text": "Trent Edwards, American football player", - "pages": [ - { - "title": "Trent_Edwards", - "displaytitle": "Trent Edwards", - "pageid": 9232785, - "extract": "Trent Addison Edwards (born October 30, 1983) is a former American football quarterback.", - "extract_html": "

Trent Addison Edwards (born October 30, 1983) is a former American football quarterback.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Trent_Edwards_2012.jpg/218px-Trent_Edwards_2012.jpg", - "width": 218, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2f/Trent_Edwards_2012.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2f/Trent_Edwards_2012.jpg", - "width": 1026, - "height": 1505 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-17T05:30:19Z", - "description": "American football player", - "normalizedtitle": "Trent Edwards" - } - ], - "year": 1983 - }, - { - "text": "Maor Melikson, Israeli footballer", - "pages": [ - { - "title": "Maor_Melikson", - "displaytitle": "Maor Melikson", - "pageid": 6180284, - "extract": "Maor Melikson (Hebrew: מאור מליקסון‎‎; born 30 October 1984 in Yavne) is an Israeli footballer who plays as a midfielder for Hapoel Be'er Sheva and the Israel national football team.", - "extract_html": "

Maor Melikson (Hebrew: מאור מליקסון‎‎; born 30 October 1984 in Yavne) is an Israeli footballer who plays as a midfielder for Hapoel Be'er Sheva and the Israel national football team.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Maor_Melikson2.jpg/199px-Maor_Melikson2.jpg", - "width": 199, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/e6/Maor_Melikson2.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e6/Maor_Melikson2.jpg", - "width": 333, - "height": 534 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-03T07:20:56Z", - "description": "footballer", - "normalizedtitle": "Maor Melikson" - } - ], - "year": 1983 - }, - { - "text": "Manny Parra, American baseball player", - "pages": [ - { - "title": "Manny_Parra", - "displaytitle": "Manny Parra", - "pageid": 11960682, - "extract": "Manuel Alex \"Manny\" Parra (born October 30, 1982) is an American professional baseball pitcher for the Bridgeport Bluefish of the Atlantic League of Professional Baseball.", - "extract_html": "

Manuel Alex \"Manny\" Parra (born October 30, 1982) is an American professional baseball pitcher for the Bridgeport Bluefish of the Atlantic League of Professional Baseball.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Manny_Parra_on_September_4%2C_2014.jpg/320px-Manny_Parra_on_September_4%2C_2014.jpg", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/92/Manny_Parra_on_September_4%2C_2014.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/92/Manny_Parra_on_September_4%2C_2014.jpg", - "width": 2000, - "height": 2000 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-16T21:23:25Z", - "description": "Major League Baseball pitcher in the Cincinnati Reds organization", - "normalizedtitle": "Manny Parra" - } - ], - "year": 1982 - }, - { - "text": "Andy Greene, American ice hockey player", - "pages": [ - { - "title": "Andy_Greene", - "displaytitle": "Andy Greene", - "pageid": 9822416, - "extract": "Andrew \"Andy\" Greene (born October 30, 1982) is an American ice hockey player and the captain of the New Jersey Devils of the National Hockey League (NHL).", - "extract_html": "

Andrew \"Andy\" Greene (born October 30, 1982) is an American ice hockey player and the captain of the New Jersey Devils of the National Hockey League (NHL).

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/25/Andy_Greene_-_New_Jersey_Devils.jpg/291px-Andy_Greene_-_New_Jersey_Devils.jpg", - "width": 291, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/25/Andy_Greene_-_New_Jersey_Devils.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/25/Andy_Greene_-_New_Jersey_Devils.jpg", - "width": 2940, - "height": 3230 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-19T00:20:03Z", - "description": "American ice hockey player", - "normalizedtitle": "Andy Greene" - } - ], - "year": 1982 - }, - { - "text": "Stalley, American rapper", - "pages": [ - { - "title": "Stalley", - "displaytitle": "Stalley", - "pageid": 31197250, - "extract": "Kyle Myricks (born October 30, 1982), better known by his stage name Stalley, is an American rapper from Massillon, Ohio.", - "extract_html": "

Kyle Myricks (born October 30, 1982), better known by his stage name Stalley, is an American rapper from Massillon, Ohio.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/96/Stalley_2012.jpg/247px-Stalley_2012.jpg", - "width": 247, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/96/Stalley_2012.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/96/Stalley_2012.jpg", - "width": 536, - "height": 695 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-12T21:39:35Z", - "description": "American Rapper", - "normalizedtitle": "Stalley" - } - ], - "year": 1982 - }, - { - "text": "Ian Snell, American baseball player", - "pages": [ - { - "title": "Ian_Snell", - "displaytitle": "Ian Snell", - "pageid": 2403778, - "extract": "Ian Dante Snell (born October 30, 1981) is an American former professional baseball right-handed pitcher. He played in Major League Baseball (MLB) for the Pittsburgh Pirates and Seattle Mariners. From 2001 to 2003, he went by the name Ian Oquendo, adopting the last name of his wife, and during the 2009 World Baseball Classic he went by Ian Davila-Snell, adopting his stepfather's surname.", - "extract_html": "

Ian Dante Snell (born October 30, 1981) is an American former professional baseball right-handed pitcher. He played in Major League Baseball (MLB) for the Pittsburgh Pirates and Seattle Mariners. From 2001 to 2003, he went by the name Ian Oquendo, adopting the last name of his wife, and during the 2009 World Baseball Classic he went by Ian Davila-Snell, adopting his stepfather's surname.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Ian_Snell2.jpg/320px-Ian_Snell2.jpg", - "width": 320, - "height": 239, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/5e/Ian_Snell2.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/5e/Ian_Snell2.jpg", - "width": 996, - "height": 744 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-13T03:16:44Z", - "description": "American baseball player", - "normalizedtitle": "Ian Snell" - } - ], - "year": 1981 - }, - { - "text": "Ayaka Kimura, Japanese singer and actress", - "pages": [ - { - "title": "Ayaka_Kimura", - "displaytitle": "Ayaka Kimura", - "pageid": 4040933, - "extract": "Ayaka Kimura (木村 絢香,) (born October 30, 1981 in Kobe, Hyōgo Prefecture, Japan), currently known by her stage name as Ayaka Nagate (長手 絢香), is an actress currently signed to Tristone Entertainment. Before her debut as an actress, she was the sole remaining member of Japanese pop idol girl group Coconuts Musume within Hello!", - "extract_html": "

Ayaka Kimura (木村 絢香,) (born October 30, 1981 in Kobe, Hyōgo Prefecture, Japan), currently known by her stage name as Ayaka Nagate (長手 絢香), is an actress currently signed to Tristone Entertainment. Before her debut as an actress, she was the sole remaining member of Japanese pop idol girl group Coconuts Musume within Hello!", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-12T18:34:20Z", - "description": "Japanese actor and singer", - "normalizedtitle": "Ayaka Kimura" - } - ], - "year": 1981 - }, - { - "text": "Jun Ji-hyun, South Korean model and actress", - "pages": [ - { - "title": "Jun_Ji-hyun", - "displaytitle": "Jun Ji-hyun", - "pageid": 1128817, - "extract": "Jun Ji-hyun (born Wang Ji-hyun on 30 October 1981), also known as Gianna Jun, is a South Korean actress. She rose to fame for her role as The Girl in the romantic comedy My Sassy Girl (2001), one of the highest-grossing Korean comedies of all time. Other notable films include Il Mare (2000), Windstruck (2004), The Thieves (2012), The Berlin File (2013) and Assassination (2015).\nJun has also starred in television series My Love from the Star (2013-2014) and The Legend of the Blue Sea (2016-2017).", - "extract_html": "

Jun Ji-hyun (born Wang Ji-hyun on 30 October 1981), also known as Gianna Jun, is a South Korean actress. She rose to fame for her role as The Girl in the romantic comedy My Sassy Girl (2001), one of the highest-grossing Korean comedies of all time. Other notable films include Il Mare (2000), Windstruck (2004), The Thieves (2012), The Berlin File (2013) and Assassination (2015).

\n

Jun has also starred in television series My Love from the Star (2013-2014) and The Legend of the Blue Sea (2016-2017).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/Jun_Ji-hyun_in_2012_02.jpg/260px-Jun_Ji-hyun_in_2012_02.jpg", - "width": 260, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b8/Jun_Ji-hyun_in_2012_02.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b8/Jun_Ji-hyun_in_2012_02.jpg", - "width": 813, - "height": 1000 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T14:50:19Z", - "description": "South Korean actress", - "normalizedtitle": "Jun Ji-hyun" - } - ], - "year": 1981 - }, - { - "text": "Ivanka Trump, American model and businesswoman", - "pages": [ - { - "title": "Ivanka_Trump", - "displaytitle": "Ivanka Trump", - "pageid": 1861441, - "extract": "Ivanka Trump ( born Ivana Marie Trump; October 30, 1981) is an American television personality, fashion designer, author and businesswoman who is an advisor to the President of the United States, Donald Trump. She is the daughter of the president and his first wife, former model Ivana Trump.\nA fourth generation businessperson who followed in the footsteps of her great-grandmother Elizabeth Christ Trump (who founded the company), grandfather Fred Trump, and father, Trump has been an executive vice president of the family owned The Trump Organization – as well as serving as a boardroom judge on her father's TV show The Apprentice. She moved to Washington, D.C. in January 2017 as her husband, Jared Kushner, was appointed Senior Advisor to the President.\nStarting in late March 2017, she began serving in her father's presidential administration. She assumed this official, unpaid position after ethics concerns were raised about her access to material while not being held to the same restrictions as a federal employee.", - "extract_html": "

Ivanka Trump ( born Ivana Marie Trump; October 30, 1981) is an American television personality, fashion designer, author and businesswoman who is an advisor to the President of the United States, Donald Trump. She is the daughter of the president and his first wife, former model Ivana Trump.

\n

A fourth generation businessperson who followed in the footsteps of her great-grandmother Elizabeth Christ Trump (who founded the company), grandfather Fred Trump, and father, Trump has been an executive vice president of the family owned The Trump Organization – as well as serving as a boardroom judge on her father's TV show The Apprentice. She moved to Washington, D.C. in January 2017 as her husband, Jared Kushner, was appointed Senior Advisor to the President.

\n

Starting in late March 2017, she began serving in her father's presidential administration. She assumed this official, unpaid position after ethics concerns were raised about her access to material while not being held to the same restrictions as a federal employee.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/46/Ivanka_Trump_at_Aston_PA_on_September_13th%2C_2016_01_%28cropped%29.jpg/218px-Ivanka_Trump_at_Aston_PA_on_September_13th%2C_2016_01_%28cropped%29.jpg", - "width": 218, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/46/Ivanka_Trump_at_Aston_PA_on_September_13th%2C_2016_01_%28cropped%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/46/Ivanka_Trump_at_Aston_PA_on_September_13th%2C_2016_01_%28cropped%29.jpg", - "width": 2596, - "height": 3816 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T02:09:49Z", - "description": "American businesswoman, socialite, fashion model and daughter of Donald Trump", - "normalizedtitle": "Ivanka Trump" - } - ], - "year": 1981 - }, - { - "text": "Joshua Jay, American magician and author", - "pages": [ - { - "title": "Joshua_Jay", - "displaytitle": "Joshua Jay", - "pageid": 6470478, - "extract": "Joshua Jay (born October 30, 1981) is a magician, author, and lecturer who has performed his show in over 59 countries. In 1998 he was crowned World Champion of Close-up Magic at the World Magic Seminar, and he has subsequently appeared on every major television network. Notably, he has performed on Good Morning America and the Today Show. He is the author of seven books on magic, including Magic: The Complete Course [Workman, 2008], which is available in four languages. Jay specializes in close-up magic and is a headliner at the famous Magic Castle in Hollywood.", - "extract_html": "

Joshua Jay (born October 30, 1981) is a magician, author, and lecturer who has performed his show in over 59 countries. In 1998 he was crowned World Champion of Close-up Magic at the World Magic Seminar, and he has subsequently appeared on every major television network. Notably, he has performed on Good Morning America and the Today Show. He is the author of seven books on magic, including Magic: The Complete Course [Workman, 2008], which is available in four languages. Jay specializes in close-up magic and is a headliner at the famous Magic Castle in Hollywood.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-28T23:25:48Z", - "description": "American magician", - "normalizedtitle": "Joshua Jay" - } - ], - "year": 1981 - }, - { - "text": "Rich Alvarez, Filipino-Japanese basketball player", - "pages": [ - { - "title": "Rich_Alvarez", - "displaytitle": "Rich Alvarez", - "pageid": 8244590, - "extract": "Richard Datu Alvarez (born October 30, 1980 in Yokosuka, Kanagawa Prefecture, Japan) is a Japanese-born Filipino former professional basketball player and current assistant coach for the Kia Picanto of the Philippine Basketball Association.", - "extract_html": "

Richard Datu Alvarez (born October 30, 1980 in Yokosuka, Kanagawa Prefecture, Japan) is a Japanese-born Filipino former professional basketball player and current assistant coach for the Kia Picanto of the Philippine Basketball Association.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-07T12:53:57Z", - "description": "Filipino basketball player", - "normalizedtitle": "Rich Alvarez" - } - ], - "year": 1980 - }, - { - "text": "Choi Hong-man, South Korean wrestler and mixed martial artist", - "pages": [ - { - "title": "Choi_Hong-man", - "displaytitle": "Choi Hong-man", - "pageid": 2922199, - "extract": "Choi Hong-man (Korean: 최홍만, Hanja: 崔洪萬; born October 30, 1980), often anglicised to Hong-man Choi, is a South Korean kickboxer, mixed martial artist, and former ssireum wrestler. In Asia, he is called \"Che Man\", \"Techno Goliath\", \"Korean Monster\" and \"Korean Colossus\". He won the 2005 K-1 Seoul Grand Prix beating Kaoklai Kaennorsing in the finals.", - "extract_html": "

Choi Hong-man (Korean: 최홍만, Hanja: 崔洪萬; born October 30, 1980), often anglicised to Hong-man Choi, is a South Korean kickboxer, mixed martial artist, and former ssireum wrestler. In Asia, he is called \"Che Man\", \"Techno Goliath\", \"Korean Monster\" and \"Korean Colossus\". He won the 2005 K-1 Seoul Grand Prix beating Kaoklai Kaennorsing in the finals.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/ChoiHongMan.JPG/320px-ChoiHongMan.JPG", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/ca/ChoiHongMan.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/ca/ChoiHongMan.JPG", - "width": 2048, - "height": 1536 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-01T22:47:32Z", - "description": "South Korean martial artist", - "normalizedtitle": "Choi Hong-man" - } - ], - "year": 1980 - }, - { - "text": "Kareem Rush, American basketball player", - "pages": [ - { - "title": "Kareem_Rush", - "displaytitle": "Kareem Rush", - "pageid": 519342, - "extract": "Kareem Lamar Rush (born October 30, 1980) is a retired American professional basketball player.", - "extract_html": "

Kareem Lamar Rush (born October 30, 1980) is a retired American professional basketball player.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/90/Kareem_Rush_LA_Clippers_Camp_Pendleton.jpg/213px-Kareem_Rush_LA_Clippers_Camp_Pendleton.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/90/Kareem_Rush_LA_Clippers_Camp_Pendleton.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/90/Kareem_Rush_LA_Clippers_Camp_Pendleton.jpg", - "width": 235, - "height": 353 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T14:45:50Z", - "description": "American basketball player", - "normalizedtitle": "Kareem Rush" - } - ], - "year": 1980 - }, - { - "text": "Jason Bartlett, American baseball player", - "pages": [ - { - "title": "Jason_Bartlett_(baseball)", - "displaytitle": "Jason Bartlett (baseball)", - "pageid": 4142178, - "extract": "Jason Alan Bartlett (born October 30, 1979) is an American former professional baseball shortstop in Major League Baseball.", - "extract_html": "

Jason Alan Bartlett (born October 30, 1979) is an American former professional baseball shortstop in Major League Baseball.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/D7K_4950_Jason_Bartlett.jpg/249px-D7K_4950_Jason_Bartlett.jpg", - "width": 249, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/4e/D7K_4950_Jason_Bartlett.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/4e/D7K_4950_Jason_Bartlett.jpg", - "width": 1452, - "height": 1864 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-20T17:26:41Z", - "description": "American baseball player", - "normalizedtitle": "Jason Bartlett (baseball)" - } - ], - "year": 1979 - }, - { - "text": "Derren Witcombe, New Zealand rugby player and cricketer", - "pages": [ - { - "title": "Derren_Witcombe", - "displaytitle": "Derren Witcombe", - "pageid": 8731354, - "extract": "Derren John Charles Witcombe (born 30 October 1978) is an Australian-born New Zealand rugby union coach and former player. As a player, he played at hooker.\nHe played for the All Blacks, New Zealand's national team, in 2005, and at Super Rugby level for the Blues between 2002 and 2007. Provincially he represented Northland and then Auckland.\nHe retired from playing in 2007 due to a neck injury. He took up coaching, and was head coach of Northland in the 2013 and 2014 National Provincial Championships before departing suddenly in early 2015 to take up a position at Japanese club Mitsubishi Dynaboars.\nIn February 2017 it was announced Witcombe had signed a contract to return to the Northland province as head coach for the 2017 Mitre 10 Cup.\nWitcombe is also an accomplished cricketer.", - "extract_html": "

Derren John Charles Witcombe (born 30 October 1978) is an Australian-born New Zealand rugby union coach and former player. As a player, he played at hooker.

\n

He played for the All Blacks, New Zealand's national team, in 2005, and at Super Rugby level for the Blues between 2002 and 2007. Provincially he represented Northland and then Auckland.

\n

He retired from playing in 2007 due to a neck injury. He took up coaching, and was head coach of Northland in the 2013 and 2014 National Provincial Championships before departing suddenly in early 2015 to take up a position at Japanese club Mitsubishi Dynaboars.

\n

In February 2017 it was announced Witcombe had signed a contract to return to the Northland province as head coach for the 2017 Mitre 10 Cup.

\n

Witcombe is also an accomplished cricketer.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-28T02:43:44Z", - "description": "New Zealand rugby union player", - "normalizedtitle": "Derren Witcombe" - } - ], - "year": 1978 - }, - { - "text": "Matthew Morrison, American singer-songwriter and actor", - "pages": [ - { - "title": "Matthew_Morrison", - "displaytitle": "Matthew Morrison", - "pageid": 2383637, - "extract": "Matthew James \"Matt\" Morrison (born October 30, 1978) is an American actor, dancer, and singer-songwriter. Morrison is known for starring in multiple Broadway and Off-Broadway productions, including his portrayal of Link Larkin in Hairspray on Broadway, and for his role as Will Schuester on the Fox television show Glee (2009–2015). Morrison is signed with Adam Levine's 222 Records.", - "extract_html": "

Matthew James \"Matt\" Morrison (born October 30, 1978) is an American actor, dancer, and singer-songwriter. Morrison is known for starring in multiple Broadway and Off-Broadway productions, including his portrayal of Link Larkin in Hairspray on Broadway, and for his role as Will Schuester on the Fox television show Glee (2009–2015). Morrison is signed with Adam Levine's 222 Records.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Matthew_Morrison_Peabody_2010_%28cropped%29.jpg/278px-Matthew_Morrison_Peabody_2010_%28cropped%29.jpg", - "width": 278, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/6a/Matthew_Morrison_Peabody_2010_%28cropped%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/6a/Matthew_Morrison_Peabody_2010_%28cropped%29.jpg", - "width": 1427, - "height": 1644 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T14:58:39Z", - "description": "American actor, dancer, and singer-songwriter", - "normalizedtitle": "Matthew Morrison" - } - ], - "year": 1978 - }, - { - "text": "Stephanie Izard, American chef", - "pages": [ - { - "title": "Stephanie_Izard", - "displaytitle": "Stephanie Izard", - "pageid": 17941229, - "extract": "Stephanie Izard (born October 30, 1976) is an American chef residing in Chicago, Illinois, best known as the first female chef to win Bravo's Top Chef, taking the title during its fourth season. She is the co-owner and executive chef of three award-winning Chicago restaurants, Girl and the Goat, Little Goat, and Duck Duck Goat, and opened her first restaurant, Scylla (now closed) as chef-owner at the age of 27. Izard received a James Beard Foundation Award for \"Best Chef: Great Lakes\" in 2013 for her work at Girl and the Goat. She has made a number of appearances on Top Chef since her win, both as a guest judge on future seasons and as a participant in Top Chef Duels.", - "extract_html": "

Stephanie Izard (born October 30, 1976) is an American chef residing in Chicago, Illinois, best known as the first female chef to win Bravo's Top Chef, taking the title during its fourth season. She is the co-owner and executive chef of three award-winning Chicago restaurants, Girl and the Goat, Little Goat, and Duck Duck Goat, and opened her first restaurant, Scylla (now closed) as chef-owner at the age of 27. Izard received a James Beard Foundation Award for \"Best Chef: Great Lakes\" in 2013 for her work at Girl and the Goat. She has made a number of appearances on Top Chef since her win, both as a guest judge on future seasons and as a participant in Top Chef Duels.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-18T15:01:44Z", - "description": "American chef", - "normalizedtitle": "Stephanie Izard" - } - ], - "year": 1978 - }, - { - "text": "Martin Dossett, American football player", - "pages": [ - { - "title": "Martin_Dossett", - "displaytitle": "Martin Dossett", - "pageid": 910253, - "extract": "Martin William Dossett (born October 30, 1978) is a former NFL wide receiver for the Green Bay Packers has played in several leagues such as NFL Europe, AF2 and CFL before winding up playing in Corpus Christi, Texas, playing for the Corpus Christi Hammerheads of the Intense Football League.", - "extract_html": "

Martin William Dossett (born October 30, 1978) is a former NFL wide receiver for the Green Bay Packers has played in several leagues such as NFL Europe, AF2 and CFL before winding up playing in Corpus Christi, Texas, playing for the Corpus Christi Hammerheads of the Intense Football League.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-04T07:15:05Z", - "description": "American football player", - "normalizedtitle": "Martin Dossett" - } - ], - "year": 1978 - }, - { - "text": "Daniel Poulter, English physician and politician", - "pages": [ - { - "title": "Daniel_Poulter", - "displaytitle": "Daniel Poulter", - "pageid": 27280171, - "extract": "Daniel Leonard James Poulter (born 30 October 1978) is a British Conservative Party politician, who was elected at the 2010 general election as the Member of Parliament (MP) for Central Suffolk and North Ipswich.", - "extract_html": "

Daniel Leonard James Poulter (born 30 October 1978) is a British Conservative Party politician, who was elected at the 2010 general election as the Member of Parliament (MP) for Central Suffolk and North Ipswich.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-30T07:47:36Z", - "description": "British Conservative Party politician; Member of Parliament for Central Suffolk and North Ipswich; physician", - "normalizedtitle": "Daniel Poulter" - } - ], - "year": 1978 - }, - { - "text": "Maurice Taylor, American basketball player", - "pages": [ - { - "title": "Maurice_Taylor", - "displaytitle": "Maurice Taylor", - "pageid": 2151633, - "extract": "Maurice De Shawn Taylor (born October 30, 1976) is an American former professional basketball player who played the power forward and center positions. Originally from Detroit, Taylor played college basketball at Michigan and was selected by the Los Angeles Clippers as the 14th overall pick in the 1997 NBA draft. Taylor played from 1997 to 2007 in the NBA for the Clippers, Houston Rockets, New York Knicks, and Sacramento Kings.", - "extract_html": "

Maurice De Shawn Taylor (born October 30, 1976) is an American former professional basketball player who played the power forward and center positions. Originally from Detroit, Taylor played college basketball at Michigan and was selected by the Los Angeles Clippers as the 14th overall pick in the 1997 NBA draft. Taylor played from 1997 to 2007 in the NBA for the Clippers, Houston Rockets, New York Knicks, and Sacramento Kings.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/c6/Maurice_Taylor_on_the_bench_in_2006.jpg", - "width": 150, - "height": 245, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/c6/Maurice_Taylor_on_the_bench_in_2006.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/c6/Maurice_Taylor_on_the_bench_in_2006.jpg", - "width": 150, - "height": 245 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-02-22T19:43:18Z", - "description": "American basketball player", - "normalizedtitle": "Maurice Taylor" - } - ], - "year": 1976 - }, - { - "text": "Ümit Özat, Turkish footballer and manager", - "pages": [ - { - "title": "Ümit_Özat", - "displaytitle": "Ümit Özat", - "pageid": 2765350, - "extract": "Ümit Özat (born 30 October 1976, in Ankara) is a retired Turkish footballer.", - "extract_html": "

Ümit Özat (born 30 October 1976, in Ankara) is a retired Turkish footballer.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Uemit-oezat.jpg/213px-Uemit-oezat.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/52/Uemit-oezat.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/52/Uemit-oezat.jpg", - "width": 600, - "height": 900 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-01T14:02:19Z", - "description": "Turkish footballer", - "normalizedtitle": "Ümit Özat" - } - ], - "year": 1976 - }, - { - "text": "Stern John, Trinidadian footballer", - "pages": [ - { - "title": "Stern_John", - "displaytitle": "Stern John", - "pageid": 1031068, - "extract": "Stern John CM (born 30 October 1976) is a Trinidadian football player who recently came out of retirement to play for WASA FC. He played for a number of English football clubs that included Bristol City, Nottingham Forest, Birmingham City, Sunderland, Southampton, Crystal Palace, Coventry City and Derby County.", - "extract_html": "

Stern John CM (born 30 October 1976) is a Trinidadian football player who recently came out of retirement to play for WASA FC. He played for a number of English football clubs that included Bristol City, Nottingham Forest, Birmingham City, Sunderland, Southampton, Crystal Palace, Coventry City and Derby County.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/SternJohn_cropped.jpg/222px-SternJohn_cropped.jpg", - "width": 222, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2c/SternJohn_cropped.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2c/SternJohn_cropped.jpg", - "width": 575, - "height": 827 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-08T00:26:26Z", - "description": "Trinidad and Tobago footballer", - "normalizedtitle": "Stern John" - } - ], - "year": 1976 - }, - { - "text": "Ian D'Sa, English-Canadian singer-songwriter, guitarist, and producer", - "pages": [ - { - "title": "Ian_D'Sa", - "displaytitle": "Ian D'Sa", - "pageid": 2478622, - "extract": "Ian D'Sa (born October 30, 1975) is an English–born Canadian guitarist for the band Billy Talent.", - "extract_html": "

Ian D'Sa (born October 30, 1975) is an English–born Canadian guitarist for the band Billy Talent.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Ian_D%27Sa.jpg/320px-Ian_D%27Sa.jpg", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/c2/Ian_D%27Sa.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/c2/Ian_D%27Sa.jpg", - "width": 2816, - "height": 2112 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-09T22:34:31Z", - "description": "Canadian musician", - "normalizedtitle": "Ian D'Sa" - } - ], - "year": 1975 - }, - { - "text": "Marco Scutaro, Venezuelan baseball player", - "pages": [ - { - "title": "Marco_Scutaro", - "displaytitle": "Marco Scutaro", - "pageid": 634777, - "extract": "Marcos Scutaro, better known as Marco Scutaro, (; born October 30, 1975) is a Venezuelan former professional baseball infielder. He bats and throws right-handed. Scutaro made his MLB debut with the New York Mets in 2002. Since then, he has also played for the Oakland Athletics, Toronto Blue Jays, Boston Red Sox, Colorado Rockies and San Francisco Giants.", - "extract_html": "

Marcos Scutaro, better known as Marco Scutaro, (; born October 30, 1975) is a Venezuelan former professional baseball infielder. He bats and throws right-handed. Scutaro made his MLB debut with the New York Mets in 2002. Since then, he has also played for the Oakland Athletics, Toronto Blue Jays, Boston Red Sox, Colorado Rockies and San Francisco Giants.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Marco_Scutaro_2012.jpg/320px-Marco_Scutaro_2012.jpg", - "width": 320, - "height": 270, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/3f/Marco_Scutaro_2012.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3f/Marco_Scutaro_2012.jpg", - "width": 1647, - "height": 1392 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T00:53:34Z", - "description": "Venezuelan baseball player", - "normalizedtitle": "Marco Scutaro" - } - ], - "year": 1975 - }, - { - "text": "Michael Oakes, English footballer and manager", - "pages": [ - { - "title": "Michael_Oakes", - "displaytitle": "Michael Oakes", - "pageid": 3567896, - "extract": "Michael Christian Oakes (born 30 October 1973 in Northwich) is an English former professional footballer who played as a goalkeeper from 1991 until 2008.\nAs a player Oakes notably played in the Premier League for Aston Villa and in the Football League for Scarborough, Wolverhampton Wanderers and Cardiff City.", - "extract_html": "

Michael Christian Oakes (born 30 October 1973 in Northwich) is an English former professional footballer who played as a goalkeeper from 1991 until 2008.

\n

As a player Oakes notably played in the Premier League for Aston Villa and in the Football League for Scarborough, Wolverhampton Wanderers and Cardiff City.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Michael_Oakes_in_2008.JPG/155px-Michael_Oakes_in_2008.JPG", - "width": 155, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/93/Michael_Oakes_in_2008.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/93/Michael_Oakes_in_2008.JPG", - "width": 172, - "height": 355 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-17T20:27:55Z", - "description": "football (soccer) player", - "normalizedtitle": "Michael Oakes" - } - ], - "year": 1973 - }, - { - "text": "Edge, Canadian wrestler and actor", - "pages": [ - { - "title": "Edge_(wrestler)", - "displaytitle": "Edge (wrestler)", - "pageid": 306723, - "extract": "Adam Joseph Copeland (born October 30, 1973), is a Canadian actor and retired professional wrestler better known by his ring name Edge. He is best known for his long tenure in the professional wrestling promotion WWE, where he is a member of the WWE Hall of Fame.\nCopeland was trained by professional wrestlers Sweet Daddy Siki and Ron Hutchison. Throughout the 1990s, he wrestled in various U.S. independent promotions. During his time in these promotions, he competed in singles and tag team competition, the latter with long-time friend Christian. In 1997, Copeland signed a developmental deal with the WWF and began competing for the company later that year; he made his televised debut the following June under the ring name Edge.", - "extract_html": "

Adam Joseph Copeland (born October 30, 1973), is a Canadian actor and retired professional wrestler better known by his ring name Edge. He is best known for his long tenure in the professional wrestling promotion WWE, where he is a member of the WWE Hall of Fame.

\n

Copeland was trained by professional wrestlers Sweet Daddy Siki and Ron Hutchison. Throughout the 1990s, he wrestled in various U.S. independent promotions. During his time in these promotions, he competed in singles and tag team competition, the latter with long-time friend Christian. In 1997, Copeland signed a developmental deal with the WWF and began competing for the company later that year; he made his televised debut the following June under the ring name Edge.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Adam_Copeland%2C_2012.jpg/309px-Adam_Copeland%2C_2012.jpg", - "width": 309, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/75/Adam_Copeland%2C_2012.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/75/Adam_Copeland%2C_2012.jpg", - "width": 1956, - "height": 2027 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T16:57:18Z", - "description": "Canadian actor and professional wrestler", - "normalizedtitle": "Edge (wrestler)" - } - ], - "year": 1973 - }, - { - "text": "Silvia Corzo, Colombian lawyer and journalist", - "pages": [ - { - "title": "Silvia_Corzo", - "displaytitle": "Silvia Corzo", - "pageid": 1365784, - "extract": "Silvia Milena Corzo Pinto (born October 30, 1973 in Bucaramanga, Santander) is a Colombian lawyer and presenter.", - "extract_html": "

Silvia Milena Corzo Pinto (born October 30, 1973 in Bucaramanga, Santander) is a Colombian lawyer and presenter.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Silvia_corzo_20071122_tagheuer_cropped.jpg/256px-Silvia_corzo_20071122_tagheuer_cropped.jpg", - "width": 256, - "height": 320, - "original": "http://upload.wikimedia.org/wikipedia/commons/7/7e/Silvia_corzo_20071122_tagheuer_cropped.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/7e/Silvia_corzo_20071122_tagheuer_cropped.jpg", - "width": 512, - "height": 640 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-11T21:40:15Z", - "description": "Colombian lawyer, journalist and news presenter", - "normalizedtitle": "Silvia Corzo" - } - ], - "year": 1973 - }, - { - "text": "Michael Buettner, Australian rugby league player and official", - "pages": [ - { - "title": "Michael_Buettner", - "displaytitle": "Michael Buettner", - "pageid": 12476456, - "extract": "Michael Buettner (born 30 October 1973 in Fairfield, New South Wales) is an Australian rugby league official and former professional footballer of the 1990s and 2000s.", - "extract_html": "

Michael Buettner (born 30 October 1973 in Fairfield, New South Wales) is an Australian rugby league official and former professional footballer of the 1990s and 2000s.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-14T17:41:42Z", - "description": "Australian rugby league player", - "normalizedtitle": "Michael Buettner" - } - ], - "year": 1973 - }, - { - "text": "Raci Şaşmaz, Turkish actor, producer, and screenwriter", - "pages": [ - { - "title": "Raci_Şaşmaz", - "displaytitle": "Raci Şaşmaz", - "pageid": 22769640, - "extract": "Raci Şaşmaz (born 30 October 1973 in Elazig) is a Turkish film producer, writer and actor.", - "extract_html": "

Raci Şaşmaz (born 30 October 1973 in Elazig) is a Turkish film producer, writer and actor.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-02-12T04:42:18Z", - "description": "Turkish film producer, writer and actor", - "normalizedtitle": "Raci Şaşmaz" - } - ], - "year": 1973 - }, - { - "text": "Jessica Hynes, English actress, producer, and screenwriter", - "pages": [ - { - "title": "Jessica_Hynes", - "displaytitle": "Jessica Hynes", - "pageid": 150280, - "extract": "Tallulah Jessica Elina Hynes (née Stevenson; born 30 October 1972) is an English actress and writer. Known professionally as Jessica Stevenson until 2007, she was one of the creators, writers and stars of the British sitcom Spaced and has worked as a writer and actress for over two decades.\nHynes has been nominated for a Tony, a Laurence Olivier Award, four BAFTAs (of which she has won one), and three British Comedy Awards (of which she has won two).", - "extract_html": "

Tallulah Jessica Elina Hynes (née Stevenson; born 30 October 1972) is an English actress and writer. Known professionally as Jessica Stevenson until 2007, she was one of the creators, writers and stars of the British sitcom Spaced and has worked as a writer and actress for over two decades.

\n

Hynes has been nominated for a Tony, a Laurence Olivier Award, four BAFTAs (of which she has won one), and three British Comedy Awards (of which she has won two).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Jessica_Hynes.jpg/320px-Jessica_Hynes.jpg", - "width": 320, - "height": 223, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/74/Jessica_Hynes.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/74/Jessica_Hynes.jpg", - "width": 2880, - "height": 2008 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-19T05:40:31Z", - "description": "English actress and writer", - "normalizedtitle": "Jessica Hynes" - } - ], - "year": 1972 - }, - { - "text": "Suzan van der Wielen, Dutch field hockey player", - "pages": [ - { - "title": "Suzan_van_der_Wielen", - "displaytitle": "Suzan van der Wielen", - "pageid": 4136582, - "extract": "Suzan Jacobien Unia van der Wielen (born October 30, 1971 in Emmen, Drenthe) is a former field hockey player from the Netherlands, who played 191 international matches for the Netherlands, in which the striker scored a total number of seventy goals.", - "extract_html": "

Suzan Jacobien Unia van der Wielen (born October 30, 1971 in Emmen, Drenthe) is a former field hockey player from the Netherlands, who played 191 international matches for the Netherlands, in which the striker scored a total number of seventy goals.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-02-26T11:06:56Z", - "description": "Dutch field hockey player", - "normalizedtitle": "Suzan van der Wielen" - } - ], - "year": 1971 - }, - { - "text": "Peter New, Canadian actor, voice actor and screenwriters", - "pages": [ - { - "title": "Peter_New", - "displaytitle": "Peter New", - "pageid": 30389473, - "extract": "Peter New is a Canadian actor, voice actor and screenwriter.\nHe received a 2002 Leo Award for Best Screenwriter (Music, Comedy, or Variety Program or Series), for episode #112 of the TV series Point Blank.\nIn 2007, New's script \"The Bar\" won the first annual Hot Shot Shorts Film Contest.", - "extract_html": "

Peter New is a Canadian actor, voice actor and screenwriter.

\n

He received a 2002 Leo Award for Best Screenwriter (Music, Comedy, or Variety Program or Series), for episode #112 of the TV series Point Blank.

\n

In 2007, New's script \"The Bar\" won the first annual Hot Shot Shorts Film Contest.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Peter_New_BC_2014.jpg/234px-Peter_New_BC_2014.jpg", - "width": 234, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/1e/Peter_New_BC_2014.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/1e/Peter_New_BC_2014.jpg", - "width": 720, - "height": 986 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-16T18:34:56Z", - "description": "Canadian voice actor", - "normalizedtitle": "Peter New" - } - ], - "year": 1971 - }, - { - "text": "Tzanis Stavrakopoulos, Greek basketball player", - "pages": [ - { - "title": "Tzanis_Stavrakopoulos", - "displaytitle": "Tzanis Stavrakopoulos", - "pageid": 16540832, - "extract": "Tzanis Stavrakopoulos (Greek: Τζαννής Σταυρακόπουλος) (born October 30, 1971 in Athens) is a retired Greek professional basketball player.", - "extract_html": "

Tzanis Stavrakopoulos (Greek: Τζαννής Σταυρακόπουλος) (born October 30, 1971 in Athens) is a retired Greek professional basketball player.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-06T16:34:13Z", - "description": "Professional basketball player", - "normalizedtitle": "Tzanis Stavrakopoulos" - } - ], - "year": 1971 - }, - { - "text": "Fredi Bobic, Slovenian-German footballer and manager", - "pages": [ - { - "title": "Fredi_Bobic", - "displaytitle": "Fredi Bobic", - "pageid": 2194769, - "extract": "Fredi Bobic (Slovene: Fredi Bobič, Croatian: Fredi Bobić; born 30 October 1971) is a former German footballer of Slovene and Croatian descent.", - "extract_html": "

Fredi Bobic (Slovene: Fredi Bobič, Croatian: Fredi Bobić; born 30 October 1971) is a former German footballer of Slovene and Croatian descent.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Fredi_Bobic_2013.JPG/271px-Fredi_Bobic_2013.JPG", - "width": 271, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/ee/Fredi_Bobic_2013.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/ee/Fredi_Bobic_2013.JPG", - "width": 2297, - "height": 2713 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-07T11:45:33Z", - "description": "German footballer", - "normalizedtitle": "Fredi Bobic" - } - ], - "year": 1971 - }, - { - "text": "Ekaterini Voggoli, Greek discus thrower", - "pages": [ - { - "title": "Ekaterini_Voggoli", - "displaytitle": "Ekaterini Voggoli", - "pageid": 3026701, - "extract": "Ekaterini Voggoli (Greek: Αικατερίνη Βόγγολη, [ekateˈrini ˈvoŋɡoli], born October 30, 1970 in Larissa) is a retired Greek discus thrower.\nShe was the 2002 European champion and 2003 World Championship bronze medallist.", - "extract_html": "

Ekaterini Voggoli (Greek: Αικατερίνη Βόγγολη, [ekateˈrini ˈvoŋɡoli], born October 30, 1970 in Larissa) is a retired Greek discus thrower.

\n

She was the 2002 European champion and 2003 World Championship bronze medallist.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-02-01T02:08:20Z", - "description": "Greek discus thrower", - "normalizedtitle": "Ekaterini Voggoli" - } - ], - "year": 1970 - }, - { - "text": "Nia Long, American actress", - "pages": [ - { - "title": "Nia_Long", - "displaytitle": "Nia Long", - "pageid": 874218, - "extract": "Nitara Carlynn Long, known professionally as Nia Long (born October 30, 1970) is an American actress.", - "extract_html": "

Nitara Carlynn Long, known professionally as Nia Long (born October 30, 1970) is an American actress.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Nia_Long_2012.jpg/215px-Nia_Long_2012.jpg", - "width": 215, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/e8/Nia_Long_2012.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e8/Nia_Long_2012.jpg", - "width": 1289, - "height": 1914 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T04:46:43Z", - "description": "actress", - "normalizedtitle": "Nia Long" - } - ], - "year": 1970 - }, - { - "text": "Christine Bersola-Babao, Filipino journalist and actress", - "pages": [ - { - "title": "Christine_Bersola-Babao", - "displaytitle": "Christine Bersola-Babao", - "pageid": 1818686, - "extract": "Christine Bersola-Babao, known as Tin Tin, (born October 30, 1970) is a Filipino veteran Multi Media Personality", - "extract_html": "

Christine Bersola-Babao, known as Tin Tin, (born October 30, 1970) is a Filipino veteran Multi Media Personality

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-13T15:21:05Z", - "description": "filipino broadcaster", - "normalizedtitle": "Christine Bersola-Babao" - } - ], - "year": 1970 - }, - { - "text": "Tory Belleci, American visual effects designer and television host", - "pages": [ - { - "title": "Tory_Belleci", - "displaytitle": "Tory Belleci", - "pageid": 1864221, - "extract": "Salvatore Paul \"Tory\" Belleci is an American television personality and model maker, best known for his work on the Discovery Channel television program MythBusters. He has also worked with Industrial Light and Magic on films including Star Wars: Episode I – The Phantom Menace and Star Wars: Episode II – Attack of the Clones.", - "extract_html": "

Salvatore Paul \"Tory\" Belleci is an American television personality and model maker, best known for his work on the Discovery Channel television program MythBusters. He has also worked with Industrial Light and Magic on films including Star Wars: Episode I – The Phantom Menace and Star Wars: Episode II – Attack of the Clones.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Tory_Belleci_at_DragonCon.jpg/169px-Tory_Belleci_at_DragonCon.jpg", - "width": 169, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/01/Tory_Belleci_at_DragonCon.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/01/Tory_Belleci_at_DragonCon.jpg", - "width": 199, - "height": 376 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T05:39:01Z", - "description": "Film maker and model maker, MythBusters build team member", - "normalizedtitle": "Tory Belleci" - } - ], - "year": 1970 - }, - { - "text": "Ben Bailey, American comedian and game show host", - "pages": [ - { - "title": "Ben_Bailey", - "displaytitle": "Ben Bailey", - "pageid": 4201460, - "extract": "Benjamin Ray Bailey (born October 30, 1970 in Bowling Green, Kentucky) is an American comedian, licensed taxi cab driver, and Emmy Award winning former game show host and executive producer for Discovery Channel's Cash Cab in New York City.", - "extract_html": "

Benjamin Ray Bailey (born October 30, 1970 in Bowling Green, Kentucky) is an American comedian, licensed taxi cab driver, and Emmy Award winning former game show host and executive producer for Discovery Channel's Cash Cab in New York City.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6e/Ben_Bailey_2012_%28cropped%29.jpg/242px-Ben_Bailey_2012_%28cropped%29.jpg", - "width": 242, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/6e/Ben_Bailey_2012_%28cropped%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/6e/Ben_Bailey_2012_%28cropped%29.jpg", - "width": 919, - "height": 1213 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-28T03:45:17Z", - "description": "comedian, television personality and game show host", - "normalizedtitle": "Ben Bailey" - } - ], - "year": 1970 - }, - { - "text": "Vangelis Vourtzoumis, Greek basketball player", - "pages": [ - { - "title": "Vangelis_Vourtzoumis", - "displaytitle": "Vangelis Vourtzoumis", - "pageid": 16534272, - "extract": "Evangelos \"Vangelis\" Vourtzoumis (alternate spelling: Vaggelis) (Greek: Βαγγέλης Βουρτζούμης) (born October 30, 1969) is a retired Greek professional basketball player.", - "extract_html": "

Evangelos \"Vangelis\" Vourtzoumis (alternate spelling: Vaggelis) (Greek: Βαγγέλης Βουρτζούμης) (born October 30, 1969) is a retired Greek professional basketball player.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-08T20:16:28Z", - "description": "Greek professional basketball player", - "normalizedtitle": "Vangelis Vourtzoumis" - } - ], - "year": 1969 - }, - { - "text": "Snow, Canadian rapper and reggae singer-songwriter", - "pages": [ - { - "title": "Snow_(musician)", - "displaytitle": "Snow (musician)", - "pageid": 502792, - "extract": "Darrin Kenneth O'Brien (born October 30, 1969), better known by his stage name Snow, is a Canadian reggae artist. He is best known for his 1992 single \"Informer\", which spent seven weeks at No.", - "extract_html": "

Darrin Kenneth O'Brien (born October 30, 1969), better known by his stage name Snow, is a Canadian reggae artist. He is best known for his 1992 single \"Informer\", which spent seven weeks at No.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-12T00:38:12Z", - "description": "Canadian reggae musician", - "normalizedtitle": "Snow (musician)" - } - ], - "year": 1969 - }, - { - "text": "Stanislav Gross, Czech lawyer and politician, 5th Prime Minister of the Czech Republic (d. 2015)", - "pages": [ - { - "title": "Stanislav_Gross", - "displaytitle": "Stanislav Gross", - "pageid": 759138, - "extract": "Stanislav Gross (Czech pronunciation: [ˈstaɲɪslav ˈɡros]; 30 October 1969 – 16 April 2015) was a Czech lawyer and politician who served as Prime Minister of the Czech Republic and Leader of the Czech Social Democratic Party from 2004 until 2005 when he resigned as a result of his financial irregularities. He previously served as Minister of the Interior in cabinets of Miloš Zeman and Vladimír Špidla from 2000 to 2004.", - "extract_html": "

Stanislav Gross (Czech pronunciation: [ˈstaɲɪslav ˈɡros]; 30 October 1969 – 16 April 2015) was a Czech lawyer and politician who served as Prime Minister of the Czech Republic and Leader of the Czech Social Democratic Party from 2004 until 2005 when he resigned as a result of his financial irregularities. He previously served as Minister of the Interior in cabinets of Miloš Zeman and Vladimír Špidla from 2000 to 2004.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/4/4e/Stanislav_Gross_2005.jpg", - "width": 179, - "height": 239, - "original": "https://upload.wikimedia.org/wikipedia/en/4/4e/Stanislav_Gross_2005.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/4/4e/Stanislav_Gross_2005.jpg", - "width": 179, - "height": 239 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T19:07:12Z", - "description": "Czech politician (1969-2015), prime minister of the Czech Republic", - "normalizedtitle": "Stanislav Gross" - }, - { - "title": "Prime_Minister_of_the_Czech_Republic", - "displaytitle": "Prime Minister of the Czech Republic", - "pageid": 410283, - "extract": "The Chairman of the Government of the Czech Republic (Czech: Předseda vlády České republiky), normally referred to in English as the Prime Minister, is the head of the Government of the Czech Republic. The Prime Minister and Cabinet (consisting of all the most senior ministers, who are government ministries heads) are collectively accountable for their policies and actions to the Chamber of Deputies. The current Prime Minister, Bohuslav Sobotka, leader of the Czech Social Democratic Party, was appointed by the President on 17 January 2014, and serves as 11th person in this position.\nThe Prime Minister is appointed by the President and its first priority is to create a Government and appoint other Ministers.", - "extract_html": "

The Chairman of the Government of the Czech Republic (Czech: Předseda vlády České republiky), normally referred to in English as the Prime Minister, is the head of the Government of the Czech Republic. The Prime Minister and Cabinet (consisting of all the most senior ministers, who are government ministries heads) are collectively accountable for their policies and actions to the Chamber of Deputies. The current Prime Minister, Bohuslav Sobotka, leader of the Czech Social Democratic Party, was appointed by the President on 17 January 2014, and serves as 11th person in this position.

\n

The Prime Minister is appointed by the President and its first priority is to create a Government and appoint other Ministers.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Tallinn_Digital_Summit._Arrivals_Bohuslav_Sobotka_%2823536638518%29_%28cropped%29.jpg/259px-Tallinn_Digital_Summit._Arrivals_Bohuslav_Sobotka_%2823536638518%29_%28cropped%29.jpg", - "width": 259, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/e8/Tallinn_Digital_Summit._Arrivals_Bohuslav_Sobotka_%2823536638518%29_%28cropped%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e8/Tallinn_Digital_Summit._Arrivals_Bohuslav_Sobotka_%2823536638518%29_%28cropped%29.jpg", - "width": 754, - "height": 933 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-30T13:34:46Z", - "normalizedtitle": "Prime Minister of the Czech Republic" - } - ], - "year": 1969 - }, - { - "text": "Masanori Hikichi, Japanese composer", - "pages": [ - { - "title": "Masanori_Hikichi", - "displaytitle": "Masanori Hikichi", - "pageid": 2700587, - "extract": "Masanori Hikichi (曳地 正則, Hikichi Masanori, born October 30, 1969), is a Japanese video game music composer and sound designer. Hikichi was first an employee of Cube, working on games for various systems. He later joined both Quintet (1995-1998) and then Shade to create music and sound effects for Sega Saturn and PlayStation titles.\nHikichi was born in Saitama Prefecture, Japan. At the age of 14, he watched the performance of a band on television, and that led him to become a musician. When he was in high school, he started to compose music for his band to perform.", - "extract_html": "

Masanori Hikichi (曳地 正則, Hikichi Masanori, born October 30, 1969), is a Japanese video game music composer and sound designer. Hikichi was first an employee of Cube, working on games for various systems. He later joined both Quintet (1995-1998) and then Shade to create music and sound effects for Sega Saturn and PlayStation titles.

\n

Hikichi was born in Saitama Prefecture, Japan. At the age of 14, he watched the performance of a band on television, and that led him to become a musician. When he was in high school, he started to compose music for his band to perform.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-09-06T19:46:15Z", - "description": "Video game music composer", - "normalizedtitle": "Masanori Hikichi" - } - ], - "year": 1969 - }, - { - "text": "Jack Plotnick, American actor, director, and producer", - "pages": [ - { - "title": "Jack_Plotnick", - "displaytitle": "Jack Plotnick", - "pageid": 3310159, - "extract": "Jack Stuart Plotnick (born October 30, 1968) is an American film and television actor, writer, and producer.\nPlotnick is best known for his recurring roles on Ellen and Buffy the Vampire Slayer, his role as part of the main cast of Drawn Together, his leading performance in the film Wrong and his drag persona, \"Evie Harris\" in Girls Will Be Girls. He had a recurring role on The Mentalist as Red John suspect Brett Partridge.", - "extract_html": "

Jack Stuart Plotnick (born October 30, 1968) is an American film and television actor, writer, and producer.

\n

Plotnick is best known for his recurring roles on Ellen and Buffy the Vampire Slayer, his role as part of the main cast of Drawn Together, his leading performance in the film Wrong and his drag persona, \"Evie Harris\" in Girls Will Be Girls. He had a recurring role on The Mentalist as Red John suspect Brett Partridge.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-08T19:36:38Z", - "description": "American actor", - "normalizedtitle": "Jack Plotnick" - } - ], - "year": 1968 - }, - { - "text": "Ken Stringfellow, American singer-songwriter and guitarist", - "pages": [ - { - "title": "Ken_Stringfellow", - "displaytitle": "Ken Stringfellow", - "pageid": 3306430, - "extract": "Kenneth Stuart Stringfellow (born October 30, 1968) is an American singer, songwriter, multi-instrumentalist, arranger, and producer.", - "extract_html": "

Kenneth Stuart Stringfellow (born October 30, 1968) is an American singer, songwriter, multi-instrumentalist, arranger, and producer.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Ken_Stringfellow_rockstar_pose_2005.jpg/231px-Ken_Stringfellow_rockstar_pose_2005.jpg", - "width": 231, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/4f/Ken_Stringfellow_rockstar_pose_2005.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/4f/Ken_Stringfellow_rockstar_pose_2005.jpg", - "width": 434, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T02:03:24Z", - "description": "American musician", - "normalizedtitle": "Ken Stringfellow" - } - ], - "year": 1968 - }, - { - "text": "Emmanuelle Claret, French biathlete (d. 2013)", - "pages": [ - { - "title": "Emmanuelle_Claret", - "displaytitle": "Emmanuelle Claret", - "pageid": 9385268, - "extract": "Emmanuelle Claret (30 October 1968 – 11 May 2013) was a French biathlete. Her best performance came in 1996 when she became world champion in the Biathlon World Championships 1996 in Ruhpolding at 15 km. She also won a silver medal with the French relay at the same championships. She won the overall World Cup in 1996. She has won three individual victories in the world cup.", - "extract_html": "

Emmanuelle Claret (30 October 1968 – 11 May 2013) was a French biathlete. Her best performance came in 1996 when she became world champion in the Biathlon World Championships 1996 in Ruhpolding at 15 km. She also won a silver medal with the French relay at the same championships. She won the overall World Cup in 1996. She has won three individual victories in the world cup.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-13T02:11:09Z", - "description": "French biathlete", - "normalizedtitle": "Emmanuelle Claret" - } - ], - "year": 1968 - }, - { - "text": "Leonidas Kavakos, Greek violinist and conductor", - "pages": [ - { - "title": "Leonidas_Kavakos", - "displaytitle": "Leonidas Kavakos", - "pageid": 3133296, - "extract": "Leonidas Kavakos (Greek: Λεωνίδας Καβάκος; born 30 October 1967) is a Greek violinist and conductor. As a violinist, he has won prizes at several international violin competitions, including the Sibelius, Paganini, and Indianapolis competitions.", - "extract_html": "

Leonidas Kavakos (Greek: Λεωνίδας Καβάκος; born 30 October 1967) is a Greek violinist and conductor. As a violinist, he has won prizes at several international violin competitions, including the Sibelius, Paganini, and Indianapolis competitions.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Leonidas_Kavakos_%282008%29.jpeg/221px-Leonidas_Kavakos_%282008%29.jpeg", - "width": 221, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/af/Leonidas_Kavakos_%282008%29.jpeg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/af/Leonidas_Kavakos_%282008%29.jpeg", - "width": 611, - "height": 884 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-18T06:01:45Z", - "description": "Greek classical violinist", - "normalizedtitle": "Leonidas Kavakos" - } - ], - "year": 1967 - }, - { - "text": "Brad Aitken, Canadian ice hockey player", - "pages": [ - { - "title": "Brad_Aitken", - "displaytitle": "Brad Aitken", - "pageid": 3072596, - "extract": "Bradley E. Aitken (born October 30, 1967) is a Canadian former professional ice hockey Left Wing who played 14 games in the National Hockey League.", - "extract_html": "

Bradley E. Aitken (born October 30, 1967) is a Canadian former professional ice hockey Left Wing who played 14 games in the National Hockey League.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-10T11:20:06Z", - "description": "ice hockey player", - "normalizedtitle": "Brad Aitken" - } - ], - "year": 1967 - }, - { - "text": "Gavin Rossdale, English singer-songwriter, guitarist, and actor", - "pages": [ - { - "title": "Gavin_Rossdale", - "displaytitle": "Gavin Rossdale", - "pageid": 157586, - "extract": "Gavin McGregor Rossdale (born 30 October 1965) is an English musician and actor, and the lead singer and rhythm guitarist of the rock band Bush. He helped form Bush in 1992; upon its separation in 2002, he became the lead singer and guitarist for Institute, and later began a solo career. When performing solo, Rossdale plays songs from his musical libraries. He was ranked at 100 in the Top 100 Heavy Metal Vocalists by Hit Parader. In 2013 Rossdale received the British Academy's Ivor Novello Award for International Achievement.", - "extract_html": "

Gavin McGregor Rossdale (born 30 October 1965) is an English musician and actor, and the lead singer and rhythm guitarist of the rock band Bush. He helped form Bush in 1992; upon its separation in 2002, he became the lead singer and guitarist for Institute, and later began a solo career. When performing solo, Rossdale plays songs from his musical libraries. He was ranked at 100 in the Top 100 Heavy Metal Vocalists by Hit Parader. In 2013 Rossdale received the British Academy's Ivor Novello Award for International Achievement.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gavin_Rossdale.jpg/246px-Gavin_Rossdale.jpg", - "width": 246, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/da/Gavin_Rossdale.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/da/Gavin_Rossdale.jpg", - "width": 2000, - "height": 2600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T03:06:20Z", - "description": "English musician and actor, singer in Bush", - "normalizedtitle": "Gavin Rossdale" - } - ], - "year": 1965 - }, - { - "text": "Howard Lederer, American poker player", - "pages": [ - { - "title": "Howard_Lederer", - "displaytitle": "Howard Lederer", - "pageid": 950106, - "extract": "Howard Henry Lederer (born October 30, 1963) is an American professional poker player. He has won two World Series of Poker bracelets and holds two World Poker Tour titles. Lederer has also contributed to several books on poker strategy and has provided commentary for poker programming. He is known by poker fans and players as \"The Professor\" and is the older brother of professional poker player Annie Duke.\nLederer is a founder and board member of Tiltware, the company that launched Full Tilt Poker in 2004. In 2011, the Full Tilt Poker website was shut down by the United States Department of Justice on charges of bank fraud and illegal gambling.", - "extract_html": "

Howard Henry Lederer (born October 30, 1963) is an American professional poker player. He has won two World Series of Poker bracelets and holds two World Poker Tour titles. Lederer has also contributed to several books on poker strategy and has provided commentary for poker programming. He is known by poker fans and players as \"The Professor\" and is the older brother of professional poker player Annie Duke.

\n

Lederer is a founder and board member of Tiltware, the company that launched Full Tilt Poker in 2004. In 2011, the Full Tilt Poker website was shut down by the United States Department of Justice on charges of bank fraud and illegal gambling.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Howard_Lederer_2010.jpg/214px-Howard_Lederer_2010.jpg", - "width": 214, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d0/Howard_Lederer_2010.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d0/Howard_Lederer_2010.jpg", - "width": 412, - "height": 615 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-17T01:36:11Z", - "description": "American professional poker player", - "normalizedtitle": "Howard Lederer" - } - ], - "year": 1964 - }, - { - "text": "Humayun Kabir Dhali, Bangladeshi journalist and author", - "pages": [ - { - "title": "Humayun_Kabir_Dhali", - "displaytitle": "Humayun Kabir Dhali", - "pageid": 13683604, - "extract": "Humayun Kabir Dhali (Bengali: হুমায়ুন কবীর ঢালী; born 30 October 1964) is a writer and journalist in Bangladesh. He has written 75 books. These books are fiction, non-fiction story and novel books.\nHis first book, Mon Shudu mon Chuyesay, a love story, was published in 1991. Dusta Cheler Galpo is also a well-known Kishor novel. He has written more Tomar chokher jall, Dusta Cheler Galpo, Tiye Pakhir Janmadinay, Kaker Cha kongkaboti, Katush Kutush, Lejkata Bugh o Rajkonna, Neel Graher Rohossho, Ek Jay chilo Hunggor, Bilay Nengti, Kalo Murti Rohossho, Vuter Chow, Bilai Maw Kata Khow, Desh Bdesh er Rupkatha, Ek Dozon Rupkatha etc.\nHave some books edit by him: Begum Rokeya Rachana Samogra, Nirbachito Vuter Galpo, Maakey Niye Eksho Chara, Pakhir Galpo Pakhir Chara, Sera Kishor Rupkatha, Sresto Vuter Galpo etc.", - "extract_html": "

Humayun Kabir Dhali (Bengali: হুমায়ুন কবীর ঢালী; born 30 October 1964) is a writer and journalist in Bangladesh. He has written 75 books. These books are fiction, non-fiction story and novel books.

\n

His first book, Mon Shudu mon Chuyesay, a love story, was published in 1991. Dusta Cheler Galpo is also a well-known Kishor novel. He has written more Tomar chokher jall, Dusta Cheler Galpo, Tiye Pakhir Janmadinay, Kaker Cha kongkaboti, Katush Kutush, Lejkata Bugh o Rajkonna, Neel Graher Rohossho, Ek Jay chilo Hunggor, Bilay Nengti, Kalo Murti Rohossho, Vuter Chow, Bilai Maw Kata Khow, Desh Bdesh er Rupkatha, Ek Dozon Rupkatha etc.

\n

Have some books edit by him: Begum Rokeya Rachana Samogra, Nirbachito Vuter Galpo, Maakey Niye Eksho Chara, Pakhir Galpo Pakhir Chara, Sera Kishor Rupkatha, Sresto Vuter Galpo etc.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-13T03:58:11Z", - "description": "Bangladeshi writer", - "normalizedtitle": "Humayun Kabir Dhali" - } - ], - "year": 1964 - }, - { - "text": "Adnan Al Talyani, Emirati footballer", - "pages": [ - { - "title": "Adnan_Al_Talyani", - "displaytitle": "Adnan Al Talyani", - "pageid": 1563605, - "extract": "Adnan Khamees Al-Talyani (Arabic: عدنان الطلياني‎‎) (born 30 October 1964) is a retired footballer from the United Arab Emirates who played as a forward.", - "extract_html": "

Adnan Khamees Al-Talyani (Arabic: عدنان الطلياني‎‎) (born 30 October 1964) is a retired footballer from the United Arab Emirates who played as a forward.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/%D8%B9%D8%AF%D9%86%D8%A7%D9%86_%D8%A7%D9%84%D8%B7%D9%84%D9%8A%D8%A7%D9%86%D9%8A2011.jpg/219px-%D8%B9%D8%AF%D9%86%D8%A7%D9%86_%D8%A7%D9%84%D8%B7%D9%84%D9%8A%D8%A7%D9%86%D9%8A2011.jpg", - "width": 219, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/dd/%D8%B9%D8%AF%D9%86%D8%A7%D9%86_%D8%A7%D9%84%D8%B7%D9%84%D9%8A%D8%A7%D9%86%D9%8A2011.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/dd/%D8%B9%D8%AF%D9%86%D8%A7%D9%86_%D8%A7%D9%84%D8%B7%D9%84%D9%8A%D8%A7%D9%86%D9%8A2011.jpg", - "width": 475, - "height": 694 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-29T18:16:24Z", - "description": "Emirati footballer", - "normalizedtitle": "Adnan Al Talyani" - } - ], - "year": 1964 - }, - { - "text": "Mike Veletta, Australian cricketer and coach", - "pages": [ - { - "title": "Mike_Veletta", - "displaytitle": "Mike Veletta", - "pageid": 2686897, - "extract": "Michael Robert John Veletta (born 30 October 1963, in Perth, Western Australia) is a former Australian and Western Australian cricketer.\nHe played in 8 Tests and 20 One Day International matches between 1987 and 1990.", - "extract_html": "

Michael Robert John Veletta (born 30 October 1963, in Perth, Western Australia) is a former Australian and Western Australian cricketer.

\n

He played in 8 Tests and 20 One Day International matches between 1987 and 1990.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-30T06:49:33Z", - "description": "Cricketer", - "normalizedtitle": "Mike Veletta" - } - ], - "year": 1963 - }, - { - "text": "Andrew Solomon, American-English journalist and author", - "pages": [ - { - "title": "Andrew_Solomon", - "displaytitle": "Andrew Solomon", - "pageid": 7121728, - "extract": "Andrew Solomon (born October 30, 1963) is a writer on politics, culture and psychology, who lives in New York City and London. He has written for The New York Times, The New Yorker, Artforum, Travel and Leisure, and other publications on a range of subjects, including depression, Soviet artists, the cultural rebirth of Afghanistan, Libyan politics, and Deaf politics.\nSolomon's book The Noonday Demon: An Atlas of Depression won the 2001 National Book Award, was a finalist for the 2002 Pulitzer Prize, and was included in The Times list of one hundred best books of the decade.", - "extract_html": "

Andrew Solomon (born October 30, 1963) is a writer on politics, culture and psychology, who lives in New York City and London. He has written for The New York Times, The New Yorker, Artforum, Travel and Leisure, and other publications on a range of subjects, including depression, Soviet artists, the cultural rebirth of Afghanistan, Libyan politics, and Deaf politics.

\n

Solomon's book The Noonday Demon: An Atlas of Depression won the 2001 National Book Award, was a finalist for the 2002 Pulitzer Prize, and was included in The Times list of one hundred best books of the decade.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Andrew_Solomon_2015.jpg/249px-Andrew_Solomon_2015.jpg", - "width": 249, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/f1/Andrew_Solomon_2015.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/f1/Andrew_Solomon_2015.jpg", - "width": 387, - "height": 497 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-20T01:08:41Z", - "description": "American journalist", - "normalizedtitle": "Andrew Solomon" - } - ], - "year": 1963 - }, - { - "text": "Kristina Wagner, American actress", - "pages": [ - { - "title": "Kristina_Wagner", - "displaytitle": "Kristina Wagner", - "pageid": 742482, - "extract": "Kristina Wagner (born Kristina Kay Crump on October 30, 1962) is an American actress best known for her role as Felicia Jones on the ABC soap opera General Hospital. She is sometimes credited by the name Kristina Malandro.", - "extract_html": "

Kristina Wagner (born Kristina Kay Crump on October 30, 1962) is an American actress best known for her role as Felicia Jones on the ABC soap opera General Hospital. She is sometimes credited by the name Kristina Malandro.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-12T18:35:22Z", - "description": "actress", - "normalizedtitle": "Kristina Wagner" - } - ], - "year": 1963 - }, - { - "text": "Michael Beach, American actor and producer", - "pages": [ - { - "title": "Michael_Beach", - "displaytitle": "Michael Beach", - "pageid": 2241756, - "extract": "Michael Anthony Beach (born October 30, 1963) is an American actor. He has appeared in films Lean on Me (1989), One False Move (1992), Short Cuts (1993), Waiting to Exhale (1995), A Family Thing (1996), and Soul Food (1997).", - "extract_html": "

Michael Anthony Beach (born October 30, 1963) is an American actor. He has appeared in films Lean on Me (1989), One False Move (1992), Short Cuts (1993), Waiting to Exhale (1995), A Family Thing (1996), and Soul Food (1997).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/2017_Wizard_World_Columbus_-_Michael_Beach_%2835628097343%29.jpg/228px-2017_Wizard_World_Columbus_-_Michael_Beach_%2835628097343%29.jpg", - "width": 228, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/52/2017_Wizard_World_Columbus_-_Michael_Beach_%2835628097343%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/52/2017_Wizard_World_Columbus_-_Michael_Beach_%2835628097343%29.jpg", - "width": 3231, - "height": 4523 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-11T21:34:27Z", - "description": "American actor", - "normalizedtitle": "Michael Beach" - } - ], - "year": 1963 - }, - { - "text": "Rebecca Heineman, American video game designer and programmer", - "pages": [ - { - "title": "Rebecca_Heineman", - "displaytitle": "Rebecca Heineman", - "pageid": 2560285, - "extract": "Rebecca Ann Heineman (born William Salvador Heineman) is an American video game programmer. A long-time veteran of the computer game industry (originally credited mostly as Bill Heineman), Heineman was a founding member of Interplay Productions, Logicware, and Contraband Entertainment. She has also been affiliated at various times with Barking Lizards Technologies, Electronic Arts, Bloomberg, Microsoft, MacPlay and Ubisoft, among other game companies.", - "extract_html": "

Rebecca Ann Heineman (born William Salvador Heineman) is an American video game programmer. A long-time veteran of the computer game industry (originally credited mostly as Bill Heineman), Heineman was a founding member of Interplay Productions, Logicware, and Contraband Entertainment. She has also been affiliated at various times with Barking Lizards Technologies, Electronic Arts, Bloomberg, Microsoft, MacPlay and Ubisoft, among other game companies.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-26T21:28:43Z", - "description": "American video game programmer", - "normalizedtitle": "Rebecca Heineman" - } - ], - "year": 1963 - }, - { - "text": "Courtney Walsh, Jamaican cricketer", - "pages": [ - { - "title": "Courtney_Walsh", - "displaytitle": "Courtney Walsh", - "pageid": 252677, - "extract": "Courtney Andrew Walsh OJ (born 30 October 1962) is a former Jamaican cricketer who represented the West Indies from 1984 to 2001, captaining the West Indies in 22 Test matches. He is a fast bowler, and best known for a remarkable opening bowling partnership along with fellow West Indian Curtly Ambrose for several years. Walsh played 132 Tests and 205 ODIs for the West Indies and took 519 and 227 wickets respectively. He shared 421 Test wickets with Ambrose in 49 matches. He held the record of most Test wickets from 2000, after he broke the record of Kapil Dev.", - "extract_html": "

Courtney Andrew Walsh OJ (born 30 October 1962) is a former Jamaican cricketer who represented the West Indies from 1984 to 2001, captaining the West Indies in 22 Test matches. He is a fast bowler, and best known for a remarkable opening bowling partnership along with fellow West Indian Curtly Ambrose for several years. Walsh played 132 Tests and 205 ODIs for the West Indies and took 519 and 227 wickets respectively. He shared 421 Test wickets with Ambrose in 49 matches. He held the record of most Test wickets from 2000, after he broke the record of Kapil Dev.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Courtney_walsh.jpg/240px-Courtney_walsh.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d3/Courtney_walsh.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d3/Courtney_walsh.jpg", - "width": 360, - "height": 480 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T14:31:35Z", - "description": "Jamaican cricketer", - "normalizedtitle": "Courtney Walsh" - } - ], - "year": 1962 - }, - { - "text": "Danny Tartabull, Puerto Rican baseball player", - "pages": [ - { - "title": "Danny_Tartabull", - "displaytitle": "Danny Tartabull", - "pageid": 1662972, - "extract": "Danilo Tartabull Mora (born October 30, 1962), also known as Danny Tartabull, is a former right fielder in Major League Baseball.", - "extract_html": "

Danilo Tartabull Mora (born October 30, 1962), also known as Danny Tartabull, is a former right fielder in Major League Baseball.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-27T01:11:09Z", - "description": "Puerto Rican baseball player", - "normalizedtitle": "Danny Tartabull" - } - ], - "year": 1962 - }, - { - "text": "Larry Wilmore, American comedian and television host", - "pages": [ - { - "title": "Larry_Wilmore", - "displaytitle": "Larry Wilmore", - "pageid": 4701377, - "extract": "Elister L. \"Larry\" Wilmore (born October 30, 1961) is an American comedian, writer, producer, podcaster, and actor. Wilmore served as the \"Senior Black Correspondent\" on The Daily Show from 2006 to 2014, and hosted The Nightly Show with Larry Wilmore from 2015 to 2016. He serves as an executive producer for the ABC television series Black-ish.", - "extract_html": "

Elister L. \"Larry\" Wilmore (born October 30, 1961) is an American comedian, writer, producer, podcaster, and actor. Wilmore served as the \"Senior Black Correspondent\" on The Daily Show from 2006 to 2014, and hosted The Nightly Show with Larry Wilmore from 2015 to 2016. He serves as an executive producer for the ABC television series Black-ish.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Larry_Wilmore_by_Gage_Skidmore.jpg/244px-Larry_Wilmore_by_Gage_Skidmore.jpg", - "width": 244, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2c/Larry_Wilmore_by_Gage_Skidmore.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2c/Larry_Wilmore_by_Gage_Skidmore.jpg", - "width": 2285, - "height": 2992 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-03T21:47:27Z", - "description": "American actor", - "normalizedtitle": "Larry Wilmore" - } - ], - "year": 1961 - }, - { - "text": "Giorgos Papakonstantinou, Greek economist and politician, Greek Minister of Finance", - "pages": [ - { - "title": "Giorgos_Papakonstantinou", - "displaytitle": "Giorgos Papakonstantinou", - "pageid": 24634523, - "extract": "Giorgos Papakonstantinou (Greek: Γιώργος Παπακωνσταντίνου), born October 30, 1961 in Athens, Greece, is a Greek economist and politician and former Minister for the Environment, Energy and Climate Change of Greece and former Minister for Finance.", - "extract_html": "

Giorgos Papakonstantinou (Greek: Γιώργος Παπακωνσταντίνου), born October 30, 1961 in Athens, Greece, is a Greek economist and politician and former Minister for the Environment, Energy and Climate Change of Greece and former Minister for Finance.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3c/Giorgos_Papakonstantinou_portrait_crop.jpg/231px-Giorgos_Papakonstantinou_portrait_crop.jpg", - "width": 231, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/3c/Giorgos_Papakonstantinou_portrait_crop.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3c/Giorgos_Papakonstantinou_portrait_crop.jpg", - "width": 1336, - "height": 1849 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-17T18:25:01Z", - "description": "Greek politician", - "normalizedtitle": "Giorgos Papakonstantinou" - }, - { - "title": "Ministry_of_Finance_(Greece)", - "displaytitle": "Ministry of Finance (Greece)", - "pageid": 4025366, - "extract": "The Ministry of Finance (Greek: Υπουργείο Οικονομικών) is the government department responsible for Greece's public finances.", - "extract_html": "

The Ministry of Finance (Greek: Υπουργείο Οικονομικών) is the government department responsible for Greece's public finances.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-11T05:27:57Z", - "description": "Greek government ministry", - "normalizedtitle": "Ministry of Finance (Greece)" - } - ], - "year": 1961 - }, - { - "text": "Scott Garrelts, American baseball player", - "pages": [ - { - "title": "Scott_Garrelts", - "displaytitle": "Scott Garrelts", - "pageid": 6031735, - "extract": "Scott William Garrelts (born October 30, 1961), is a former Major League Baseball pitcher who played for the San Francisco Giants from 1982 to 1991.", - "extract_html": "

Scott William Garrelts (born October 30, 1961), is a former Major League Baseball pitcher who played for the San Francisco Giants from 1982 to 1991.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T02:14:53Z", - "description": "American baseball player", - "normalizedtitle": "Scott Garrelts" - } - ], - "year": 1961 - }, - { - "text": "Diego Maradona, Argentinian footballer, coach, and manager", - "pages": [ - { - "title": "Diego_Maradona", - "displaytitle": "Diego Maradona", - "pageid": 8485, - "extract": "Diego Armando Maradona (Spanish pronunciation: [ˈdjeɣo maɾaˈðona], born 30 October 1960) is an Argentine retired professional footballer. He has served as a manager and coach at other clubs as well as the national team of Argentina. Many in the sport, including football writers, players, and fans, regard Maradona as the greatest football player of all time. He was joint FIFA Player of the 20th Century with Pelé.\nAn advanced playmaker who operated in the classic number 10 position, Maradona is the first player in football history to set the world record transfer fee twice, first when he transferred to Barcelona for a then world record £5 million, and second, when he transferred to Napoli for another record fee £6.9 million. He played for Argentinos Juniors, Boca Juniors, Barcelona, Napoli, Sevilla and Newell's Old Boys during his club career, and is most famous for his time at Napoli, where he won numerous accolades.", - "extract_html": "

Diego Armando Maradona (Spanish pronunciation: [ˈdjeɣo maɾaˈðona], born 30 October 1960) is an Argentine retired professional footballer. He has served as a manager and coach at other clubs as well as the national team of Argentina. Many in the sport, including football writers, players, and fans, regard Maradona as the greatest football player of all time. He was joint FIFA Player of the 20th Century with Pelé.

\n

An advanced playmaker who operated in the classic number 10 position, Maradona is the first player in football history to set the world record transfer fee twice, first when he transferred to Barcelona for a then world record £5 million, and second, when he transferred to Napoli for another record fee £6.9 million. He played for Argentinos Juniors, Boca Juniors, Barcelona, Napoli, Sevilla and Newell's Old Boys during his club career, and is most famous for his time at Napoli, where he won numerous accolades.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Maradona_1986_vs_italy.jpg/232px-Maradona_1986_vs_italy.jpg", - "width": 232, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/88/Maradona_1986_vs_italy.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/88/Maradona_1986_vs_italy.jpg", - "width": 744, - "height": 1024 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T15:39:10Z", - "description": "Argentine footballer", - "normalizedtitle": "Diego Maradona" - } - ], - "year": 1960 - }, - { - "text": "Charnele Brown, American actress and singer", - "pages": [ - { - "title": "Charnele_Brown", - "displaytitle": "Charnele Brown", - "pageid": 4537813, - "extract": "Charnele Ann Brown (née Dozier; born October 30, 1960) is an American actress, producer, fashion designer and singer.", - "extract_html": "

Charnele Ann Brown (née Dozier; born October 30, 1960) is an American actress, producer, fashion designer and singer.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T18:59:55Z", - "description": "American actress", - "normalizedtitle": "Charnele Brown" - } - ], - "year": 1960 - }, - { - "text": "Vincent Lagaf', French actor, singer, and game show host", - "pages": [ - { - "title": "Vincent_Lagaf'", - "displaytitle": "Vincent Lagaf'", - "pageid": 14897376, - "extract": "Lagaf' (pseudonym of Vincent Rouil, born 30 October 1959 in Mont-Saint-Aignan, Seine-Maritime) is a French humorist, TV presenter, singer and actor.", - "extract_html": "

Lagaf' (pseudonym of Vincent Rouil, born 30 October 1959 in Mont-Saint-Aignan, Seine-Maritime) is a French humorist, TV presenter, singer and actor.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/Lagaf%27.jpg/315px-Lagaf%27.jpg", - "width": 315, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b7/Lagaf%27.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b7/Lagaf%27.jpg", - "width": 353, - "height": 359 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-29T08:34:09Z", - "description": "French singer", - "normalizedtitle": "Vincent Lagaf'" - } - ], - "year": 1959 - }, - { - "text": "Ramona d'Viola, American cyclist and photographer", - "pages": [ - { - "title": "Ramona_d'Viola", - "displaytitle": "Ramona d'Viola", - "pageid": 8195487, - "extract": "Ramona d'Viola (born October 30, 1958 in Chicago, Illinois) is an American cyclist.\nd'Viola was a member of the 1985 Women's US National Cycling Team and competed in the second Women's Tour de France known as the Tour Feminin. During 1984, 1985, and 1986, the women's TDF was held simultaneously with the men's race before being rescheduled, renamed (the Grand Boucle), and largely forgotten by the cycling community.\nIn 2003, d'Viola captained the first team of women to attempt crossing the Florida Straits from Marina Hemingway, Cuba to Key West by paddleboard (110 miles). The team was pulled from the water mid-crossing due to bad weather, however, a 2004 attempt proved successful. Acting as captain and alternate, the team of international world-class paddlers set a world record in the process.", - "extract_html": "

Ramona d'Viola (born October 30, 1958 in Chicago, Illinois) is an American cyclist.

\n

d'Viola was a member of the 1985 Women's US National Cycling Team and competed in the second Women's Tour de France known as the Tour Feminin. During 1984, 1985, and 1986, the women's TDF was held simultaneously with the men's race before being rescheduled, renamed (the Grand Boucle), and largely forgotten by the cycling community.

\n

In 2003, d'Viola captained the first team of women to attempt crossing the Florida Straits from Marina Hemingway, Cuba to Key West by paddleboard (110 miles). The team was pulled from the water mid-crossing due to bad weather, however, a 2004 attempt proved successful. Acting as captain and alternate, the team of international world-class paddlers set a world record in the process.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-09-29T17:43:13Z", - "description": "American racing cyclist", - "normalizedtitle": "Ramona d'Viola" - } - ], - "year": 1958 - }, - { - "text": "Stefan Dennis, Australian actor and singer", - "pages": [ - { - "title": "Stefan_Dennis", - "displaytitle": "Stefan Dennis", - "pageid": 1809243, - "extract": "Stefan Dennis (born 30 October 1958) is an Australian actor, best known for playing the role of cold-hearted and ruthless businessman Paul Robinson in the soap opera Neighbours from its first episode in March 1985 to the present day. He departed Neighbours in 1993, but returned in 2004 and has played Paul ever since. During his time away from Neighbours he was a cast member of Scottish soap opera River City.", - "extract_html": "

Stefan Dennis (born 30 October 1958) is an Australian actor, best known for playing the role of cold-hearted and ruthless businessman Paul Robinson in the soap opera Neighbours from its first episode in March 1985 to the present day. He departed Neighbours in 1993, but returned in 2004 and has played Paul ever since. During his time away from Neighbours he was a cast member of Scottish soap opera River City.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-08T04:14:23Z", - "description": "Australian actor", - "normalizedtitle": "Stefan Dennis" - } - ], - "year": 1958 - }, - { - "text": "Joe Delaney, American football player (d. 1983)", - "pages": [ - { - "title": "Joe_Delaney", - "displaytitle": "Joe Delaney", - "pageid": 2212124, - "extract": "Joe Alton Delaney (; October 30, 1958 – June 29, 1983) was an American football running back who played two seasons in the National Football League (NFL). In his two seasons with the Kansas City Chiefs, Delaney set four franchise records that would stand for more than twenty years.\nHe was a two-time All-American athlete for the Northwestern State Demons football team, as well as a track and field star. Delaney played two seasons with the Chiefs and was chosen as the AFC Rookie of the Year in 1981 by United Press International.\nDelaney died on June 29, 1983 while attempting to rescue three children from drowning in a pond in Monroe in northeastern Louisiana. He was posthumously awarded the Presidential Citizen's Medal from U.S. President Ronald W. Reagan. While not officially retired, his jersey number while playing for the Chiefs, No.", - "extract_html": "

Joe Alton Delaney (; October 30, 1958 – June 29, 1983) was an American football running back who played two seasons in the National Football League (NFL). In his two seasons with the Kansas City Chiefs, Delaney set four franchise records that would stand for more than twenty years.

\n

He was a two-time All-American athlete for the Northwestern State Demons football team, as well as a track and field star. Delaney played two seasons with the Chiefs and was chosen as the AFC Rookie of the Year in 1981 by United Press International.

\n

Delaney died on June 29, 1983 while attempting to rescue three children from drowning in a pond in Monroe in northeastern Louisiana. He was posthumously awarded the Presidential Citizen's Medal from U.S. President Ronald W. Reagan. While not officially retired, his jersey number while playing for the Chiefs, No.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-01T20:03:19Z", - "description": "Player of American football", - "normalizedtitle": "Joe Delaney" - } - ], - "year": 1958 - }, - { - "text": "Olav Dale, Norwegian saxophonist and composer (Bergen Big Band) (d. 2014)", - "pages": [ - { - "title": "Olav_Dale", - "displaytitle": "Olav Dale", - "pageid": 36252611, - "extract": "Olav Dale (30 October 1958 – 10 October 2014) was a Norwegian composer, orchestra leader and jazz saxophonist. In addition to saxophones he played other woodwinds.", - "extract_html": "

Olav Dale (30 October 1958 – 10 October 2014) was a Norwegian composer, orchestra leader and jazz saxophonist. In addition to saxophones he played other woodwinds.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3e/Olav_Dale.jpg", - "width": 294, - "height": 299, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/3e/Olav_Dale.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3e/Olav_Dale.jpg", - "width": 294, - "height": 299 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-12T17:43:27Z", - "description": "Norwegian musician", - "normalizedtitle": "Olav Dale" - }, - { - "title": "Bergen_Big_Band", - "displaytitle": "Bergen Big Band", - "pageid": 37191882, - "extract": "Bergen Big Band (BBB) is a Norwegian big band established 1991 as a continuation of Knut Kristiansen's Bergen Band.", - "extract_html": "

Bergen Big Band (BBB) is a Norwegian big band established 1991 as a continuation of Knut Kristiansen's Bergen Band.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Bergen_Big_Band_1.jpg/320px-Bergen_Big_Band_1.jpg", - "width": 320, - "height": 131, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/9d/Bergen_Big_Band_1.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/9d/Bergen_Big_Band_1.jpg", - "width": 2332, - "height": 953 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-02-03T21:04:54Z", - "normalizedtitle": "Bergen Big Band" - } - ], - "year": 1958 - }, - { - "text": "Kevin Pollak, American actor, game show host, and producer", - "pages": [ - { - "title": "Kevin_Pollak", - "displaytitle": "Kevin Pollak", - "pageid": 524332, - "extract": "Kevin Elliot Pollak (born October 30, 1957) is an American actor, impressionist, and comedian. He has appeared in over 80 films, his most notable roles including Sam Weinberg in the legal film A Few Good Men, Jacob Goldman in Grumpy Old Men and its sequel Grumpier Old Men; Todd Hockney in The Usual Suspects, Philip Green in Casino, and Bobby Chicago in End of Days. Pollak is an avid poker player, hosting weekly home games with some of Hollywood's A-list celebrities.", - "extract_html": "

Kevin Elliot Pollak (born October 30, 1957) is an American actor, impressionist, and comedian. He has appeared in over 80 films, his most notable roles including Sam Weinberg in the legal film A Few Good Men, Jacob Goldman in Grumpy Old Men and its sequel Grumpier Old Men; Todd Hockney in The Usual Suspects, Philip Green in Casino, and Bobby Chicago in End of Days. Pollak is an avid poker player, hosting weekly home games with some of Hollywood's A-list celebrities.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/10/KevinPollakMar08.jpg/303px-KevinPollakMar08.jpg", - "width": 303, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/10/KevinPollakMar08.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/10/KevinPollakMar08.jpg", - "width": 1327, - "height": 1403 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T02:42:17Z", - "description": "American actor and comedian", - "normalizedtitle": "Kevin Pollak" - } - ], - "year": 1957 - }, - { - "text": "Shlomo Mintz, Israeli violinist and conductor", - "pages": [ - { - "title": "Shlomo_Mintz", - "displaytitle": "Shlomo Mintz", - "pageid": 1236295, - "extract": "Shlomo Mintz (Hebrew: שלמה מינץ) (born 30 October 1957) is an Israeli violin virtuoso, violist and conductor.", - "extract_html": "

Shlomo Mintz (Hebrew: שלמה מינץ) (born 30 October 1957) is an Israeli violin virtuoso, violist and conductor.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Shlomo-mintz-1336293774.jpg/213px-Shlomo-mintz-1336293774.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2f/Shlomo-mintz-1336293774.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2f/Shlomo-mintz-1336293774.jpg", - "width": 2666, - "height": 4000 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-08T22:24:35Z", - "description": "Israeli violin virtuoso, violist and conductor", - "normalizedtitle": "Shlomo Mintz" - } - ], - "year": 1957 - }, - { - "text": "Juliet Stevenson, English actress", - "pages": [ - { - "title": "Juliet_Stevenson", - "displaytitle": "Juliet Stevenson", - "pageid": 1715351, - "extract": "Juliet Anne Virginia Stevenson, CBE (born 30 October 1956) is an English actor of stage and screen. She is known for her role in the film Truly, Madly, Deeply (1991), for which she was nominated for the BAFTA Award for Best Actress in a Leading Role. Her other film appearances include Emma (1996), Bend It Like Beckham (2002), Mona Lisa Smile (2003), Being Julia (2004), and Infamous (2006).\nStevenson has starred in numerous Royal Shakespeare Company and National Theatre productions, including Olivier Award nominated roles in Measure for Measure (1984), Les Liaisons Dangereuses (1986), and Yerma (1987). For her role as Paulina in Death and the Maiden (1991–92), she won the 1992 Olivier Award for Best Actress. Her fifth Olivier nomination was for her work in the 2009 revival of Duet for One.", - "extract_html": "

Juliet Anne Virginia Stevenson, CBE (born 30 October 1956) is an English actor of stage and screen. She is known for her role in the film Truly, Madly, Deeply (1991), for which she was nominated for the BAFTA Award for Best Actress in a Leading Role. Her other film appearances include Emma (1996), Bend It Like Beckham (2002), Mona Lisa Smile (2003), Being Julia (2004), and Infamous (2006).

\n

Stevenson has starred in numerous Royal Shakespeare Company and National Theatre productions, including Olivier Award nominated roles in Measure for Measure (1984), Les Liaisons Dangereuses (1986), and Yerma (1987). For her role as Paulina in Death and the Maiden (1991–92), she won the 1992 Olivier Award for Best Actress. Her fifth Olivier nomination was for her work in the 2009 revival of Duet for One.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/13/Dustbin_Baby-_April_and_Marion_crop.jpg/267px-Dustbin_Baby-_April_and_Marion_crop.jpg", - "width": 267, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/13/Dustbin_Baby-_April_and_Marion_crop.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/13/Dustbin_Baby-_April_and_Marion_crop.jpg", - "width": 337, - "height": 404 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-26T22:33:35Z", - "description": "British actress", - "normalizedtitle": "Juliet Stevenson" - } - ], - "year": 1956 - }, - { - "text": "Heidi Heitkamp, American lawyer and politician, 28th Attorney General of North Dakota", - "pages": [ - { - "title": "Heidi_Heitkamp", - "displaytitle": "Heidi Heitkamp", - "pageid": 476686, - "extract": "Mary Kathryn \"Heidi\" Heitkamp (born October 30, 1955) is an American businesswoman, lawyer and politician who has been the junior United States Senator from North Dakota since 2013. A member of the North Dakota Democratic-Nonpartisan League Party, she is the first woman elected to the US Senate from North Dakota. She served as the 28th North Dakota Attorney General from 1993 to 2001 and as State Tax Commissioner from 1989 to 1993.\nHeitkamp ran for governor of North Dakota in 2000 and lost to Republican John Hoeven. She considered a bid for the Democratic nomination in the 2010 U.S. Senate election to replace retiring Senator Byron Dorgan, but on March 3, 2010, declined to run against Hoeven, who was ultimately elected.\nIn November 2011, Heitkamp declared her candidacy to replace Kent Conrad as U.S. Senator from North Dakota in the 2012 election. She narrowly defeated Republican Congressman Rick Berg on November 6, 2012, in that year's closest Senate race.", - "extract_html": "

Mary Kathryn \"Heidi\" Heitkamp (born October 30, 1955) is an American businesswoman, lawyer and politician who has been the junior United States Senator from North Dakota since 2013. A member of the North Dakota Democratic-Nonpartisan League Party, she is the first woman elected to the US Senate from North Dakota. She served as the 28th North Dakota Attorney General from 1993 to 2001 and as State Tax Commissioner from 1989 to 1993.

\n

Heitkamp ran for governor of North Dakota in 2000 and lost to Republican John Hoeven. She considered a bid for the Democratic nomination in the 2010 U.S. Senate election to replace retiring Senator Byron Dorgan, but on March 3, 2010, declined to run against Hoeven, who was ultimately elected.

\n

In November 2011, Heitkamp declared her candidacy to replace Kent Conrad as U.S. Senator from North Dakota in the 2012 election. She narrowly defeated Republican Congressman Rick Berg on November 6, 2012, in that year's closest Senate race.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Heidi_Heitkamp_official_portrait_113th_Congress.jpg/253px-Heidi_Heitkamp_official_portrait_113th_Congress.jpg", - "width": 253, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b3/Heidi_Heitkamp_official_portrait_113th_Congress.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b3/Heidi_Heitkamp_official_portrait_113th_Congress.jpg", - "width": 2400, - "height": 3040 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-20T03:22:04Z", - "description": "United States Senator from North Dakota", - "normalizedtitle": "Heidi Heitkamp" - }, - { - "title": "North_Dakota_Attorney_General", - "displaytitle": "North Dakota Attorney General", - "pageid": 8220596, - "extract": "The North Dakota Attorney General is the chief legal officer of the North Dakota state government. The current Attorney General is Wayne Stenehjem.", - "extract_html": "

The North Dakota Attorney General is the chief legal officer of the North Dakota state government. The current Attorney General is Wayne Stenehjem.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-01-19T05:33:45Z", - "description": "attorney general for the U.S. state of North Dakota", - "normalizedtitle": "North Dakota Attorney General" - } - ], - "year": 1955 - }, - { - "text": "Mario Testino, Peruvian-English photographer", - "pages": [ - { - "title": "Mario_Testino", - "displaytitle": "Mario Testino", - "pageid": 3006902, - "extract": "Mario Testino OBE (born on 30 October 1954) is a Peruvian fashion and portrait photographer.", - "extract_html": "

Mario Testino OBE (born on 30 October 1954) is a Peruvian fashion and portrait photographer.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/40/Mario_Testino.jpg/237px-Mario_Testino.jpg", - "width": 237, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/40/Mario_Testino.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/40/Mario_Testino.jpg", - "width": 250, - "height": 337 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T17:02:36Z", - "description": "Peruvian photographer", - "normalizedtitle": "Mario Testino" - } - ], - "year": 1954 - }, - { - "text": "Jeannie Kendall, American country singer-songwriter", - "pages": [ - { - "title": "The_Kendalls", - "displaytitle": "The Kendalls", - "pageid": 3058504, - "extract": "The Kendalls were an American country music duo, consisting of Royce Kendall (September 25, 1935 – May 22, 1998) and his daughter Jeannie Kendall (born October 30, 1954). Between the 1960s and 1990s, they released sixteen albums on various labels, including five on Mercury Records.", - "extract_html": "

The Kendalls were an American country music duo, consisting of Royce Kendall (September 25, 1935 – May 22, 1998) and his daughter Jeannie Kendall (born October 30, 1954). Between the 1960s and 1990s, they released sixteen albums on various labels, including five on Mercury Records.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-16T03:02:40Z", - "normalizedtitle": "The Kendalls" - } - ], - "year": 1954 - }, - { - "text": "T. Graham Brown, American country singer-songwriter", - "pages": [ - { - "title": "T._Graham_Brown", - "displaytitle": "T. Graham Brown", - "pageid": 5319739, - "extract": "T. Graham Brown (born October 30, 1954, AtlantaGeorgia), born Anthony Graham Brown, is an American country/soul/gospel singer. Active since 1973, Brown has recorded a total of thirteen studio albums, and has charted more than twenty singles on the Billboard Hot Country Songs charts.", - "extract_html": "

T. Graham Brown (born October 30, 1954, AtlantaGeorgia), born Anthony Graham Brown, is an American country/soul/gospel singer. Active since 1973, Brown has recorded a total of thirteen studio albums, and has charted more than twenty singles on the Billboard Hot Country Songs charts.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/17/T_Graham_Brown.jpg/240px-T_Graham_Brown.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/17/T_Graham_Brown.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/17/T_Graham_Brown.jpg", - "width": 960, - "height": 1280 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-05T17:11:45Z", - "description": "American country musician", - "normalizedtitle": "T. Graham Brown" - } - ], - "year": 1954 - }, - { - "text": "Mahmoud El Khatib, Egyptian footballer", - "pages": [ - { - "title": "Mahmoud_El_Khatib", - "displaytitle": "Mahmoud El Khatib", - "pageid": 6139644, - "extract": "Mahmoud El-Khatib (Egyptian Arabic: محمود الخطيب‎‎) (born 30 October 1954) popularly nicknamed Bibo, is a former Egyptian football player.", - "extract_html": "

Mahmoud El-Khatib (Egyptian Arabic: محمود الخطيب‎‎) (born 30 October 1954) popularly nicknamed Bibo, is a former Egyptian football player.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/%D9%85%D8%AD%D9%85%D9%88%D8%AF_%D8%A7%D9%84%D8%AE%D8%B7%D9%8A%D8%A8_%D9%88%D8%AF%D8%B1%D8%B9_%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D9%8A_.jpg/320px-%D9%85%D8%AD%D9%85%D9%88%D8%AF_%D8%A7%D9%84%D8%AE%D8%B7%D9%8A%D8%A8_%D9%88%D8%AF%D8%B1%D8%B9_%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D9%8A_.jpg", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/5f/%D9%85%D8%AD%D9%85%D9%88%D8%AF_%D8%A7%D9%84%D8%AE%D8%B7%D9%8A%D8%A8_%D9%88%D8%AF%D8%B1%D8%B9_%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D9%8A_.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/5f/%D9%85%D8%AD%D9%85%D9%88%D8%AF_%D8%A7%D9%84%D8%AE%D8%B7%D9%8A%D8%A8_%D9%88%D8%AF%D8%B1%D8%B9_%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D9%8A_.jpg", - "width": 384, - "height": 288 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-09T06:26:45Z", - "description": "Egyptian footballer", - "normalizedtitle": "Mahmoud El Khatib" - } - ], - "year": 1954 - }, - { - "text": "Charles Martin Smith, American actor, director, and screenwriter", - "pages": [ - { - "title": "Charles_Martin_Smith", - "displaytitle": "Charles Martin Smith", - "pageid": 1366258, - "extract": "Charles Martin Smith (born October 30, 1953) is an American film actor, writer, and director. He is best known for his roles in American Graffiti (1973), The Buddy Holly Story (1978), Never Cry Wolf (1983), Starman (1984), The Untouchables (1987), Deep Cover (1992), Speechless (1994) and Deep Impact (1998).", - "extract_html": "

Charles Martin Smith (born October 30, 1953) is an American film actor, writer, and director. He is best known for his roles in American Graffiti (1973), The Buddy Holly Story (1978), Never Cry Wolf (1983), Starman (1984), The Untouchables (1987), Deep Cover (1992), Speechless (1994) and Deep Impact (1998).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/55/CharlesMartinSmith08TIFF.jpg/232px-CharlesMartinSmith08TIFF.jpg", - "width": 232, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/55/CharlesMartinSmith08TIFF.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/55/CharlesMartinSmith08TIFF.jpg", - "width": 380, - "height": 524 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T14:50:26Z", - "description": "American actor", - "normalizedtitle": "Charles Martin Smith" - } - ], - "year": 1953 - }, - { - "text": "Pete Hoekstra, Dutch-American lawyer and politician", - "pages": [ - { - "title": "Pete_Hoekstra", - "displaytitle": "Pete Hoekstra", - "pageid": 468307, - "extract": "Pieter \"Pete\" Hoekstra (; born October 30, 1953) is a Dutch-American politician who is a former member of the United States House of Representatives, representing Michigan's 2nd congressional district from 1993 to 2011. Hoekstra is a member of the Republican Party.\nBorn in Groningen, Netherlands, Hoekstra is a graduate of Hope College and the University of Michigan's Ross School of Business. In 1992, Hoekstra ran for the U.S. House, defeating 13-term incumbent Guy Vander Jagt in the Republican primary, and Democratic opponent John H. Miltner, in the general election. After the appointment of Congressman Porter Goss as Director of the CIA, Hoekstra became the Chairman of the House Intelligence Committee, serving from 2004 to 2007. He was a candidate for Governor of Michigan in Michigan's 2010 gubernatorial election, but came in second to Rick Snyder in the Republican primary.", - "extract_html": "

Pieter \"Pete\" Hoekstra (; born October 30, 1953) is a Dutch-American politician who is a former member of the United States House of Representatives, representing Michigan's 2nd congressional district from 1993 to 2011. Hoekstra is a member of the Republican Party.

\n

Born in Groningen, Netherlands, Hoekstra is a graduate of Hope College and the University of Michigan's Ross School of Business. In 1992, Hoekstra ran for the U.S. House, defeating 13-term incumbent Guy Vander Jagt in the Republican primary, and Democratic opponent John H. Miltner, in the general election. After the appointment of Congressman Porter Goss as Director of the CIA, Hoekstra became the Chairman of the House Intelligence Committee, serving from 2004 to 2007. He was a candidate for Governor of Michigan in Michigan's 2010 gubernatorial election, but came in second to Rick Snyder in the Republican primary.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/34/Pete_Hoekstra%2C_official_portrait%2C_111th_Congress.jpg", - "width": 230, - "height": 281, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/34/Pete_Hoekstra%2C_official_portrait%2C_111th_Congress.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/34/Pete_Hoekstra%2C_official_portrait%2C_111th_Congress.jpg", - "width": 230, - "height": 281 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-20T02:05:21Z", - "description": "American politician", - "normalizedtitle": "Pete Hoekstra" - } - ], - "year": 1953 - }, - { - "text": "Poncho Sanchez, American singer and conga player", - "pages": [ - { - "title": "Poncho_Sanchez", - "displaytitle": "Poncho Sanchez", - "pageid": 4515696, - "extract": "Poncho Sánchez (born October 30, 1951), is a Mexican American conguero (conga player), Latin jazz band leader, and salsa singer. In 2000, Sanchez and his ensemble won the Grammy Award for Best Latin Jazz Album for their work on the Concord Picante album Latin Soul.", - "extract_html": "

Poncho Sánchez (born October 30, 1951), is a Mexican American conguero (conga player), Latin jazz band leader, and salsa singer. In 2000, Sanchez and his ensemble won the Grammy Award for Best Latin Jazz Album for their work on the Concord Picante album Latin Soul.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Poncho_Sanchez_performing_at_Jazz_Cruise_2014.jpg/320px-Poncho_Sanchez_performing_at_Jazz_Cruise_2014.jpg", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/5e/Poncho_Sanchez_performing_at_Jazz_Cruise_2014.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/5e/Poncho_Sanchez_performing_at_Jazz_Cruise_2014.jpg", - "width": 1960, - "height": 1307 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T07:46:03Z", - "description": "American musician", - "normalizedtitle": "Poncho Sanchez" - }, - { - "title": "Conga", - "displaytitle": "Conga", - "pageid": 471969, - "extract": "The conga, also known as tumbadora, is a tall, narrow, single-headed drum from Cuba. Congas are staved like barrels and classified into three types: quinto (lead drum, highest), tres dos or tres golpes (middle), and tumba or salidor (lowest).", - "extract_html": "

The conga, also known as tumbadora, is a tall, narrow, single-headed drum from Cuba. Congas are staved like barrels and classified into three types: quinto (lead drum, highest), tres dos or tres golpes (middle), and tumba or salidor (lowest).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/65/Congas.JPG/320px-Congas.JPG", - "width": 320, - "height": 304, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/65/Congas.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/65/Congas.JPG", - "width": 470, - "height": 446 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-12T17:40:22Z", - "description": "Cuban drum", - "normalizedtitle": "Conga" - } - ], - "year": 1951 - }, - { - "text": "Harry Hamlin, American actor", - "pages": [ - { - "title": "Harry_Hamlin", - "displaytitle": "Harry Hamlin", - "pageid": 689499, - "extract": "Harry Robinson Hamlin (born October 30, 1951) is an Emmy, and Golden Globe nominated, American film and television actor, known for his roles as Perseus in the 1981 fantasy film Clash of the Titans, and as Michael Kuzak in the legal drama series L.A. Law.", - "extract_html": "

Harry Robinson Hamlin (born October 30, 1951) is an Emmy, and Golden Globe nominated, American film and television actor, known for his roles as Perseus in the 1981 fantasy film Clash of the Titans, and as Michael Kuzak in the legal drama series L.A. Law.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/Harry_Hamlin.jpg/175px-Harry_Hamlin.jpg", - "width": 175, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/e5/Harry_Hamlin.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e5/Harry_Hamlin.jpg", - "width": 647, - "height": 1183 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T12:42:34Z", - "description": "actor", - "normalizedtitle": "Harry Hamlin" - } - ], - "year": 1951 - }, - { - "text": "Trilok Gurtu, Indian drummer and songwriter", - "pages": [ - { - "title": "Trilok_Gurtu", - "displaytitle": "Trilok Gurtu", - "pageid": 330065, - "extract": "Trilok Gurtu (Kashmiri: ترلوک گرٹو‎, Marathi: त्रिलोक गुर्टू) (born in Mumbai, India on 30 October 1951) is an Indian percussionist and composer, whose work has blended the music of his homeland with jazz fusion, world music and other genres.", - "extract_html": "

Trilok Gurtu (Kashmiri: ترلوک گرٹو, Marathi: त्रिलोक गुर्टू) (born in Mumbai, India on 30 October 1951) is an Indian percussionist and composer, whose work has blended the music of his homeland with jazz fusion, world music and other genres.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/67/Trilok_Gurtu_WarszawaSep2007.jpg/320px-Trilok_Gurtu_WarszawaSep2007.jpg", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/67/Trilok_Gurtu_WarszawaSep2007.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/67/Trilok_Gurtu_WarszawaSep2007.jpg", - "width": 1000, - "height": 665 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-09T15:02:28Z", - "description": "Indian musician", - "normalizedtitle": "Trilok Gurtu" - } - ], - "year": 1951 - }, - { - "text": "Tony Bettenhausen, Jr., American race car driver and businessman (d. 2000)", - "pages": [ - { - "title": "Tony_Bettenhausen_Jr.", - "displaytitle": "Tony Bettenhausen Jr.", - "pageid": 3650419, - "extract": "Tony Lee Bettenhausen Jr. (October 30, 1951 – February 14, 2000) was a Champ Car team owner and driver who died in a 2000 plane crash. He was the son of former 14-time Indianapolis 500 competitor Tony Bettenhausen and the brother of 21-time Indy racer Gary Bettenhausen. The family holds the dubious distinction of the most combined starts in the famous race without a victory.", - "extract_html": "

Tony Lee Bettenhausen Jr. (October 30, 1951 – February 14, 2000) was a Champ Car team owner and driver who died in a 2000 plane crash. He was the son of former 14-time Indianapolis 500 competitor Tony Bettenhausen and the brother of 21-time Indy racer Gary Bettenhausen. The family holds the dubious distinction of the most combined starts in the famous race without a victory.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-12T11:31:35Z", - "description": "racecar driver", - "normalizedtitle": "Tony Bettenhausen Jr." - } - ], - "year": 1951 - }, - { - "text": "Tim Sheens, Australian rugby league player and coach", - "pages": [ - { - "title": "Tim_Sheens", - "displaytitle": "Tim Sheens", - "pageid": 2670812, - "extract": "Tim Sheens (born 30 October 1950) is an Australian professional rugby league football coach and former player. Head Coach of the Australian national team since 2009, he has also been the Head Coach of National Rugby League (NRL) clubs, the Penrith Panthers, Canberra Raiders, North Queensland Cowboys and Wests Tigers. As a player, Sheens was a prop forward with Sydney's Penrith club in the 1970s and 80s before he retired and became their coach. He then coached the Raiders, taking them to victory in the 1989, 1990 and 1994 premierships. With the Tigers he won the 2005 premiership.", - "extract_html": "

Tim Sheens (born 30 October 1950) is an Australian professional rugby league football coach and former player. Head Coach of the Australian national team since 2009, he has also been the Head Coach of National Rugby League (NRL) clubs, the Penrith Panthers, Canberra Raiders, North Queensland Cowboys and Wests Tigers. As a player, Sheens was a prop forward with Sydney's Penrith club in the 1970s and 80s before he retired and became their coach. He then coached the Raiders, taking them to victory in the 1989, 1990 and 1994 premierships. With the Tigers he won the 2005 premiership.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Tim_Sheens_Hull_KR.jpg/148px-Tim_Sheens_Hull_KR.jpg", - "width": 148, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/01/Tim_Sheens_Hull_KR.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/01/Tim_Sheens_Hull_KR.jpg", - "width": 1277, - "height": 2754 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-01T21:34:13Z", - "description": "Australian rugby league player and coach", - "normalizedtitle": "Tim Sheens" - } - ], - "year": 1950 - }, - { - "text": "Larry Gene Bell, American murderer (d. 1996)", - "pages": [ - { - "title": "Larry_Gene_Bell", - "displaytitle": "Larry Gene Bell", - "pageid": 9712423, - "extract": "Larry Gene Bell (October 30, 1949 – October 4, 1996) was an American double murderer in Lexington County, South Carolina, who was electrocuted for the murders of Sharon \"Shari\" Faye Smith and Debra May Helmick.", - "extract_html": "

Larry Gene Bell (October 30, 1949 – October 4, 1996) was an American double murderer in Lexington County, South Carolina, who was electrocuted for the murders of Sharon \"Shari\" Faye Smith and Debra May Helmick.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-26T21:03:31Z", - "description": "Executed murderer", - "normalizedtitle": "Larry Gene Bell" - } - ], - "year": 1949 - }, - { - "text": "Garry McDonald, Australian actor and screenwriter", - "pages": [ - { - "title": "Garry_McDonald", - "displaytitle": "Garry McDonald", - "pageid": 2041515, - "extract": "Garry George McDonald AO (born 30 October 1948) is an Australian actor, satirist and comedian.", - "extract_html": "

Garry George McDonald AO (born 30 October 1948) is an Australian actor, satirist and comedian.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-11T06:13:33Z", - "description": "Australian actor", - "normalizedtitle": "Garry McDonald" - } - ], - "year": 1948 - }, - { - "text": "Richard Alston, English dancer and choreographer", - "pages": [ - { - "title": "Richard_Alston_(choreographer)", - "displaytitle": "Richard Alston (choreographer)", - "pageid": 2581595, - "extract": "Richard Alston CBE (born 30 October 1948) is a British choreographer.", - "extract_html": "

Richard Alston CBE (born 30 October 1948) is a British choreographer.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-02-28T05:31:07Z", - "description": "British choreographer", - "normalizedtitle": "Richard Alston (choreographer)" - } - ], - "year": 1948 - }, - { - "text": "Herschel Weingrod, American screenwriter and producer", - "pages": [ - { - "title": "Herschel_Weingrod", - "displaytitle": "Herschel Weingrod", - "pageid": 6851539, - "extract": "Herschel Alan Weingrod (30 October 1947 Milwaukee, Wisconsin, United States) is an American screenwriter. He has written and co-written a number of Hollywood blockbusters including Trading Places, Twins, Kindergarten Cop with fellow writer Murray Salem and the 1996 movie Space Jam.", - "extract_html": "

Herschel Alan Weingrod (30 October 1947 Milwaukee, Wisconsin, United States) is an American screenwriter. He has written and co-written a number of Hollywood blockbusters including Trading Places, Twins, Kindergarten Cop with fellow writer Murray Salem and the 1996 movie Space Jam.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-16T23:31:52Z", - "description": "American screenwriter", - "normalizedtitle": "Herschel Weingrod" - } - ], - "year": 1947 - }, - { - "text": "Timothy B. Schmit, American singer-songwriter and bass player", - "pages": [ - { - "title": "Timothy_B._Schmit", - "displaytitle": "Timothy B. Schmit", - "pageid": 1407511, - "extract": "Timothy Bruce Schmit (born October 30, 1947) is an American musician, singer, and songwriter. He has performed as the bassist and vocalist for Poco and the Eagles, having replaced bassist and vocalist Randy Meisner in both cases. Schmit has also worked for decades as a session musician and solo artist.", - "extract_html": "

Timothy Bruce Schmit (born October 30, 1947) is an American musician, singer, and songwriter. He has performed as the bassist and vocalist for Poco and the Eagles, having replaced bassist and vocalist Randy Meisner in both cases. Schmit has also worked for decades as a session musician and solo artist.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Timothy_B._Schmit.jpg/320px-Timothy_B._Schmit.jpg", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/bb/Timothy_B._Schmit.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/bb/Timothy_B._Schmit.jpg", - "width": 600, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T21:14:53Z", - "description": "American musician", - "normalizedtitle": "Timothy B. Schmit" - } - ], - "year": 1947 - }, - { - "text": "Glenn Andreotta, American soldier (d. 1968)", - "pages": [ - { - "title": "Glenn_Andreotta", - "displaytitle": "Glenn Andreotta", - "pageid": 2122984, - "extract": "Glenn Urban Andreotta (October 30, 1947 – April 8, 1968) was an American helicopter crew chief in the Vietnam War noted for being one of three who intervened in the My Lai Massacre, in which at least 347 unarmed children, women and men were murdered.", - "extract_html": "

Glenn Urban Andreotta (October 30, 1947 – April 8, 1968) was an American helicopter crew chief in the Vietnam War noted for being one of three who intervened in the My Lai Massacre, in which at least 347 unarmed children, women and men were murdered.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-18T13:52:48Z", - "description": "American helicopter crew chief", - "normalizedtitle": "Glenn Andreotta" - } - ], - "year": 1947 - }, - { - "text": "Chris Slade, Welsh drummer", - "pages": [ - { - "title": "Chris_Slade", - "displaytitle": "Chris Slade", - "pageid": 1248281, - "extract": "Chris Slade (born Christopher Rees, 30 October 1946) is a Welsh rock musician and drummer, best known for playing for the Australian hard rock band AC/DC. He is the current drummer for the group, and previously drummed for the band from 1989 to 1994, performing on their 1990 album The Razors Edge along with their first live album with singer Brian Johnson, AC/DC Live. He returned to the band in February 2015 to replace Phil Rudd for the \"Rock or Bust World Tour\".", - "extract_html": "

Chris Slade (born Christopher Rees, 30 October 1946) is a Welsh rock musician and drummer, best known for playing for the Australian hard rock band AC/DC. He is the current drummer for the group, and previously drummed for the band from 1989 to 1994, performing on their 1990 album The Razors Edge along with their first live album with singer Brian Johnson, AC/DC Live. He returned to the band in February 2015 to replace Phil Rudd for the \"Rock or Bust World Tour\".", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Chris_Slade.JPG/214px-Chris_Slade.JPG", - "width": 214, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/cb/Chris_Slade.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/cb/Chris_Slade.JPG", - "width": 280, - "height": 418 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-13T03:15:15Z", - "description": "Welsh rock drummer", - "normalizedtitle": "Chris Slade" - } - ], - "year": 1946 - }, - { - "text": "Anthony Shorrocks, English economist, author, and academic", - "pages": [ - { - "title": "Anthony_Shorrocks", - "displaytitle": "Anthony Shorrocks", - "pageid": 26884442, - "extract": "Anthony F. Shorrocks (born 30 October 1946), is a British development economist.", - "extract_html": "

Anthony F. Shorrocks (born 30 October 1946), is a British development economist.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-27T11:05:47Z", - "description": "British development economist", - "normalizedtitle": "Anthony Shorrocks" - } - ], - "year": 1946 - }, - { - "text": "Andrea Mitchell, American journalist", - "pages": [ - { - "title": "Andrea_Mitchell", - "displaytitle": "Andrea Mitchell", - "pageid": 980099, - "extract": "Andrea Mitchell (born October 30, 1946) is an American television journalist, anchor, reporter and commentator for NBC News, based in Washington, D.C.\nShe is the NBC News Chief Foreign Affairs Correspondent, and reported on the 2008 Race for the White House for NBC News broadcasts, including NBC Nightly News with Lester Holt, Today, and MSNBC. She anchors Andrea Mitchell Reports airing from 12:00 noon to 1:00 p.m.", - "extract_html": "

Andrea Mitchell (born October 30, 1946) is an American television journalist, anchor, reporter and commentator for NBC News, based in Washington, D.C.

\n

She is the NBC News Chief Foreign Affairs Correspondent, and reported on the 2008 Race for the White House for NBC News broadcasts, including NBC Nightly News with Lester Holt, Today, and MSNBC. She anchors Andrea Mitchell Reports airing from 12:00 noon to 1:00 p.m.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Andrea_Mitchell.jpg/217px-Andrea_Mitchell.jpg", - "width": 217, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/44/Andrea_Mitchell.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/44/Andrea_Mitchell.jpg", - "width": 494, - "height": 729 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-08T03:00:51Z", - "description": "Television anchor", - "normalizedtitle": "Andrea Mitchell" - } - ], - "year": 1946 - }, - { - "text": "Robert L. Gibson, American captain, pilot, and astronaut", - "pages": [ - { - "title": "Robert_L._Gibson", - "displaytitle": "Robert L. Gibson", - "pageid": 529943, - "extract": "Robert Lee \"Hoot\" Gibson (born October 30, 1946), (Capt, USN, Ret.), is a former American naval officer and aviator, test pilot, aeronautical engineer, and a retired NASA astronaut, as well as a professional pilot who currently races regularly at the annual Reno Air Races.", - "extract_html": "

Robert Lee \"Hoot\" Gibson (born October 30, 1946), (Capt, USN, Ret.), is a former American naval officer and aviator, test pilot, aeronautical engineer, and a retired NASA astronaut, as well as a professional pilot who currently races regularly at the annual Reno Air Races.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/Gibson-rl.jpg/253px-Gibson-rl.jpg", - "width": 253, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/56/Gibson-rl.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/56/Gibson-rl.jpg", - "width": 475, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T23:21:44Z", - "description": "American astronaut", - "normalizedtitle": "Robert L. Gibson" - } - ], - "year": 1946 - }, - { - "text": "Henry Winkler, American actor, comedian, director, and producer", - "pages": [ - { - "title": "Henry_Winkler", - "displaytitle": "Henry Winkler", - "pageid": 406877, - "extract": "Henry Franklin Winkler (born October 30, 1945) is an American actor, director, comedian, producer, and author.\nWinkler is known for his role as Arthur Fonzarelli in the 1970s American sitcom Happy Days. \"The Fonz\", or \"Fonzie\", a leather-clad greaser, hot rodder and auto mechanic, started out as a minor character at the show's beginning, but had achieved top billing by the time the show ended. He also starred as Sy Mittleman on Adult Swim's Childrens Hospital and starred as Eddie R. Lawson on USA Networks's Royal Pains.", - "extract_html": "

Henry Franklin Winkler (born October 30, 1945) is an American actor, director, comedian, producer, and author.

\n

Winkler is known for his role as Arthur Fonzarelli in the 1970s American sitcom Happy Days. \"The Fonz\", or \"Fonzie\", a leather-clad greaser, hot rodder and auto mechanic, started out as a minor character at the show's beginning, but had achieved top billing by the time the show ended. He also starred as Sy Mittleman on Adult Swim's Childrens Hospital and starred as Eddie R. Lawson on USA Networks's Royal Pains.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Henry_Winkler_%288530353007%29.jpg/320px-Henry_Winkler_%288530353007%29.jpg", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d7/Henry_Winkler_%288530353007%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d7/Henry_Winkler_%288530353007%29.jpg", - "width": 2136, - "height": 1424 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-24T02:24:33Z", - "description": "American actor, director and writer", - "normalizedtitle": "Henry Winkler" - } - ], - "year": 1945 - }, - { - "text": "Ahmed Chalabi, Iraqi businessman and politician (d. 2015)", - "pages": [ - { - "title": "Ahmed_Chalabi", - "displaytitle": "Ahmed Chalabi", - "pageid": 211367, - "extract": "Ahmed Abdel Hadi Chalabi (Arabic: أحمد عبد الهادي الجلبي‎‎; 30 October 1944 – 3 November 2015) was an Iraqi politician, a founder of the Iraqi National Congress (INC) and the President of the Governing Council of Iraq (37th Prime Minister of Iraq)\nHe was interim Minister of Oil in Iraq in April–May 2005 and December 2005 – January 2006 and Deputy Prime Minister from May 2005 to May 2006. Chalabi failed to win a seat in parliament in the December 2005 elections, and when the new Iraqi cabinet was announced in May 2006, he was not given a post. Once dubbed the \"George Washington of Iraq\" by American supporters, he later fell out of favor and came under investigation by several U.S. government sources. He was also the subject of a 2008 biography by investigative journalist Aram Roston, The Man Who Pushed America to War: The Extraordinary Life, Adventures, And Obsessions of Ahmad Chalabi and a 2011 biography by 60 Minutes producer Richard Bonin, Arrows of the Night: Ahmad Chalabi's Long Journey to Triumph in Iraq.\nChalabi was a controversial figure, especially in the United States, for many reasons.\nIn the lead-up to the 2003 invasion of Iraq, the Iraqi National Congress (INC), with the assistance of lobbying powerhouse BKSH & Associates, provided a major portion of the information on which U.S. Intelligence based its condemnation of the Iraqi President Saddam Hussein, including reports of weapons of mass destruction and alleged ties to al-Qaeda. Most, if not all, of this information has turned out to be false and Chalabi has been called a fabricator.\nThat, combined with the fact that Chalabi subsequently boasted, in an interview with the British Sunday Telegraph, about the impact that their alleged falsifications had on American policy, led to a falling out between him and the U.S. government.", - "extract_html": "

Ahmed Abdel Hadi Chalabi (Arabic: أحمد عبد الهادي الجلبي‎‎; 30 October 1944 – 3 November 2015) was an Iraqi politician, a founder of the Iraqi National Congress (INC) and the President of the Governing Council of Iraq (37th Prime Minister of Iraq)

\n

He was interim Minister of Oil in Iraq in April–May 2005 and December 2005 – January 2006 and Deputy Prime Minister from May 2005 to May 2006. Chalabi failed to win a seat in parliament in the December 2005 elections, and when the new Iraqi cabinet was announced in May 2006, he was not given a post. Once dubbed the \"George Washington of Iraq\" by American supporters, he later fell out of favor and came under investigation by several U.S. government sources. He was also the subject of a 2008 biography by investigative journalist Aram Roston, The Man Who Pushed America to War: The Extraordinary Life, Adventures, And Obsessions of Ahmad Chalabi and a 2011 biography by 60 Minutes producer Richard Bonin, Arrows of the Night: Ahmad Chalabi's Long Journey to Triumph in Iraq.

\n

Chalabi was a controversial figure, especially in the United States, for many reasons.

\n

In the lead-up to the 2003 invasion of Iraq, the Iraqi National Congress (INC), with the assistance of lobbying powerhouse BKSH & Associates, provided a major portion of the information on which U.S. Intelligence based its condemnation of the Iraqi President Saddam Hussein, including reports of weapons of mass destruction and alleged ties to al-Qaeda. Most, if not all, of this information has turned out to be false and Chalabi has been called a fabricator.

\n

That, combined with the fact that Chalabi subsequently boasted, in an interview with the British Sunday Telegraph, about the impact that their alleged falsifications had on American policy, led to a falling out between him and the U.S. government.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/7c/Chalabi.jpg", - "width": 185, - "height": 293, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/7c/Chalabi.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/7c/Chalabi.jpg", - "width": 185, - "height": 293 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-12T08:24:23Z", - "description": "Iraqi politician", - "normalizedtitle": "Ahmed Chalabi" - } - ], - "year": 1944 - }, - { - "text": "David Triesman, Baron Triesman, English union leader and politician", - "pages": [ - { - "title": "David_Triesman,_Baron_Triesman", - "displaytitle": "David Triesman, Baron Triesman", - "pageid": 523531, - "extract": "David Maxim Triesman, Baron Triesman (born 30 October 1943) is a British politician, Merchant Banker and former trade union leader.", - "extract_html": "

David Maxim Triesman, Baron Triesman (born 30 October 1943) is a British politician, Merchant Banker and former trade union leader.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-06T14:37:44Z", - "description": "British politician", - "normalizedtitle": "David Triesman, Baron Triesman" - } - ], - "year": 1943 - }, - { - "text": "Paul Claes, Belgian poet and translator", - "pages": [ - { - "title": "Paul_Claes", - "displaytitle": "Paul Claes", - "pageid": 11626366, - "extract": "Paul Claes (born 30 October 1943) is a Flemish writer, poet and translator.\nBorn in Leuven, Claes graduated in classical literature and Germanic philology (Dutch and English). He obtained a PhD in 1981, with a dissertation De mot zit in de mythe on references to classical texts in the works of Hugo Claus. He worked at the Katholieke Universiteit Leuven and the Catholic University of Nijmegen.\nClaes made his debut as a poet in 1983 with sonnets in De zonen van de zon. His translation of T.S. Eliot's \"The Waste Land\" (2007) includes a comprehensive commentary and a new interpretation. \"La clef des Illuminations\" (2008) is a new interpretation of Arthur Rimbaud's masterpiece.", - "extract_html": "

Paul Claes (born 30 October 1943) is a Flemish writer, poet and translator.

\n

Born in Leuven, Claes graduated in classical literature and Germanic philology (Dutch and English). He obtained a PhD in 1981, with a dissertation De mot zit in de mythe on references to classical texts in the works of Hugo Claus. He worked at the Katholieke Universiteit Leuven and the Catholic University of Nijmegen.

\n

Claes made his debut as a poet in 1983 with sonnets in De zonen van de zon. His translation of T.S. Eliot's \"The Waste Land\" (2007) includes a comprehensive commentary and a new interpretation. \"La clef des Illuminations\" (2008) is a new interpretation of Arthur Rimbaud's masterpiece.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/Paulclaes.jpg/213px-Paulclaes.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/fd/Paulclaes.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/fd/Paulclaes.jpg", - "width": 1259, - "height": 1890 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-17T08:37:31Z", - "description": "Belgian writer", - "normalizedtitle": "Paul Claes" - } - ], - "year": 1943 - }, - { - "text": "Joanna Shimkus, Canadian actress", - "pages": [ - { - "title": "Joanna_Shimkus", - "displaytitle": "Joanna Shimkus", - "pageid": 6457921, - "extract": "Joanna Shimkus, Lady Poitier (born 30 October 1943), is a Canadian former actress and is married to Bahamian-American actor and diplomat Sir Sidney Poitier.", - "extract_html": "

Joanna Shimkus, Lady Poitier (born 30 October 1943), is a Canadian former actress and is married to Bahamian-American actor and diplomat Sir Sidney Poitier.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-06T19:36:42Z", - "description": "Canadian actress", - "normalizedtitle": "Joanna Shimkus" - } - ], - "year": 1943 - }, - { - "text": "Sven-David Sandström, Swedish composer and historian", - "pages": [ - { - "title": "Sven-David_Sandström", - "displaytitle": "Sven-David Sandström", - "pageid": 8542257, - "extract": "Sven-David Sandström (born 30 October 1942, Motala) is a Swedish classical composer of operas, oratorios, ballets, and choral works, as well as orchestral works.", - "extract_html": "

Sven-David Sandström (born 30 October 1942, Motala) is a Swedish classical composer of operas, oratorios, ballets, and choral works, as well as orchestral works.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-28T21:39:53Z", - "description": "Swedish composer", - "normalizedtitle": "Sven-David Sandström" - } - ], - "year": 1942 - }, - { - "text": "Bob Wilson, English footballer and sportscaster", - "pages": [ - { - "title": "Bob_Wilson_(footballer,_born_1941)", - "displaytitle": "Bob Wilson (footballer, born 1941)", - "pageid": 460780, - "extract": "Robert Primrose Wilson, OBE (born 30 October 1941) is a former Scotland international football goalkeeper and later broadcaster.\nAs a player, Wilson is most noted for his 11 year playing career at Arsenal where he received over 300 caps. Wilson as well featured as a youth and senior international for Scotland. After retiring as a player, he turned to coaching and broadcasting, presenting football programmes on television for 28 years until 2002.", - "extract_html": "

Robert Primrose Wilson, OBE (born 30 October 1941) is a former Scotland international football goalkeeper and later broadcaster.

\n

As a player, Wilson is most noted for his 11 year playing career at Arsenal where he received over 300 caps. Wilson as well featured as a youth and senior international for Scotland. After retiring as a player, he turned to coaching and broadcasting, presenting football programmes on television for 28 years until 2002.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Bob_Wilson_in_2009_%28cropped%29.jpg/247px-Bob_Wilson_in_2009_%28cropped%29.jpg", - "width": 247, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/bf/Bob_Wilson_in_2009_%28cropped%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/bf/Bob_Wilson_in_2009_%28cropped%29.jpg", - "width": 961, - "height": 1246 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-18T19:17:38Z", - "description": "former Scotland international football goalkeeper and later broadcaster, born 1941", - "normalizedtitle": "Bob Wilson (footballer, born 1941)" - } - ], - "year": 1941 - }, - { - "text": "Aleksandr Dulichenko, Russian-Estonian linguist and academic", - "pages": [ - { - "title": "Aleksandr_Dulichenko", - "displaytitle": "Aleksandr Dulichenko", - "pageid": 21559792, - "extract": "Aleksandr Dmitrievich Dulichenko (alternatively Alexander Duličenko; Russian: Александр Дмитриевич Дуличенко) (born October 30, 1941 in Krasnodar) is a Russian-Estonian Esperantist, linguist, and an expert in Slavic microlanguages currently living in Estonia. He carried also Kashubian studies. He is a professor at the University of Tartu in Tartu, where he is the head of the department of Slavic studies.\nHe is the editor of Interlinguistica Tartuensis, a journal on interlinguistics published by the University of Tartu that published seven volumes from 1982 to 1990 recording the proceedings of colloquia at Tartu; in 2006, an eighth volume was published.", - "extract_html": "

Aleksandr Dmitrievich Dulichenko (alternatively Alexander Duličenko; Russian: Александр Дмитриевич Дуличенко) (born October 30, 1941 in Krasnodar) is a Russian-Estonian Esperantist, linguist, and an expert in Slavic microlanguages currently living in Estonia. He carried also Kashubian studies. He is a professor at the University of Tartu in Tartu, where he is the head of the department of Slavic studies.

\n

He is the editor of Interlinguistica Tartuensis, a journal on interlinguistics published by the University of Tartu that published seven volumes from 1982 to 1990 recording the proceedings of colloquia at Tartu; in 2006, an eighth volume was published.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/Aleksandr_Dulit%C5%A1enko.JPG/320px-Aleksandr_Dulit%C5%A1enko.JPG", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/4e/Aleksandr_Dulit%C5%A1enko.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/4e/Aleksandr_Dulit%C5%A1enko.JPG", - "width": 2240, - "height": 1680 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-30T04:48:24Z", - "description": "Russian linguist (b.1941)", - "normalizedtitle": "Aleksandr Dulichenko" - } - ], - "year": 1941 - }, - { - "text": "Marcel Berlins, French-English lawyer, journalist, and academic", - "pages": [ - { - "title": "Marcel_Berlins", - "displaytitle": "Marcel Berlins", - "pageid": 4081111, - "extract": "Marcel Berlins (born 30 Oct 1941) is a lawyer, legal commentator, broadcaster, and columnist. He has written for the British newspapers The Guardian and The Times, presented BBC Radio 4's legal programme Law in Action for 15 years and was a visiting professor at City University London in the Journalism department.\nHe was born in Marseille, France, but moved with his parents to South Africa as a teenager and stayed there till early adulthood. He remains a French citizen, and voted in the 2007 French presidential election.\nBerlins has written a weekly column for The Guardian, and regularly reviews crime fiction for The Times. Berlins began presenting BBC Radio 4's legal affairs programme Law in Action in 1988, and won two Legal Broadcaster of the Year awards before retiring from the programme in 2004. He was a contestant in the 2009 series of Radio 4's Round Britain Quiz.", - "extract_html": "

Marcel Berlins (born 30 Oct 1941) is a lawyer, legal commentator, broadcaster, and columnist. He has written for the British newspapers The Guardian and The Times, presented BBC Radio 4's legal programme Law in Action for 15 years and was a visiting professor at City University London in the Journalism department.

\n

He was born in Marseille, France, but moved with his parents to South Africa as a teenager and stayed there till early adulthood. He remains a French citizen, and voted in the 2007 French presidential election.

\n

Berlins has written a weekly column for The Guardian, and regularly reviews crime fiction for The Times. Berlins began presenting BBC Radio 4's legal affairs programme Law in Action in 1988, and won two Legal Broadcaster of the Year awards before retiring from the programme in 2004. He was a contestant in the 2009 series of Radio 4's Round Britain Quiz.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-01T18:01:27Z", - "description": "British journalist and lawyer", - "normalizedtitle": "Marcel Berlins" - } - ], - "year": 1941 - }, - { - "text": "Otis Williams, American singer-songwriter and producer (The Temptations)", - "pages": [ - { - "title": "Otis_Williams", - "displaytitle": "Otis Williams", - "pageid": 892785, - "extract": "Otis Williams (born Otis Miles Jr.; October 30, 1941) is an American baritone singer. Nicknamed \"Big Daddy\", he is occasionally also a songwriter and a record producer. Williams is best known as the founder and last original surviving member of the Motown vocal group The Temptations, a group in which he continues to perform.", - "extract_html": "

Otis Williams (born Otis Miles Jr.; October 30, 1941) is an American baritone singer. Nicknamed \"Big Daddy\", he is occasionally also a songwriter and a record producer. Williams is best known as the founder and last original surviving member of the Motown vocal group The Temptations, a group in which he continues to perform.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/75/Otis_Williams_of_the_Temptations_on_Ed_Sullivan.jpg", - "width": 127, - "height": 280, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/75/Otis_Williams_of_the_Temptations_on_Ed_Sullivan.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/75/Otis_Williams_of_the_Temptations_on_Ed_Sullivan.jpg", - "width": 127, - "height": 280 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T02:40:44Z", - "description": "American musician", - "normalizedtitle": "Otis Williams" - }, - { - "title": "The_Temptations", - "displaytitle": "The Temptations", - "pageid": 147645, - "extract": "The Temptations are an American vocal group notable for their success with Motown Records during the 1960s and 1970s. Known for their choreography, distinct harmonies, and flashy wardrobe, the group was highly influential in the evolution of R&B and soul music. Having sold tens of millions of albums, the Temptations are one of the most successful groups in music history. As of 2017, the Temptations continue to perform with one original member, Otis Williams, still in the lineup.\nFeaturing five male vocalists and dancers (save for brief periods with fewer or more members), the group formed in 1960 in Detroit, Michigan under the name The Elgins. The original founding members were originally members of two rival Detroit vocal groups: Otis Williams, Elbridge \"Al\" Bryant, and Melvin Franklin of Otis Williams & the Distants, and Eddie Kendricks and Paul Williams of the Primes.", - "extract_html": "

The Temptations are an American vocal group notable for their success with Motown Records during the 1960s and 1970s. Known for their choreography, distinct harmonies, and flashy wardrobe, the group was highly influential in the evolution of R&B and soul music. Having sold tens of millions of albums, the Temptations are one of the most successful groups in music history. As of 2017, the Temptations continue to perform with one original member, Otis Williams, still in the lineup.

\n

Featuring five male vocalists and dancers (save for brief periods with fewer or more members), the group formed in 1960 in Detroit, Michigan under the name The Elgins. The original founding members were originally members of two rival Detroit vocal groups: Otis Williams, Elbridge \"Al\" Bryant, and Melvin Franklin of Otis Williams & the Distants, and Eddie Kendricks and Paul Williams of the Primes.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/d/df/Classic_5_Temptations_circa_1965.jpg/229px-Classic_5_Temptations_circa_1965.jpg", - "width": 229, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/en/d/df/Classic_5_Temptations_circa_1965.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/d/df/Classic_5_Temptations_circa_1965.jpg", - "width": 267, - "height": 373 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T22:07:52Z", - "description": "American Motown vocal group", - "normalizedtitle": "The Temptations" - } - ], - "year": 1941 - }, - { - "text": "Theodor W. Hänsch, German physicist and academic, Nobel Prize laureate", - "pages": [ - { - "title": "Theodor_W._Hänsch", - "displaytitle": "Theodor W. Hänsch", - "pageid": 2831019, - "extract": "Theodor Wolfgang Hänsch (born 30 October 1941) is a German physicist. He received one fourth of the 2005 Nobel Prize in Physics for \"contributions to the development of laser-based precision spectroscopy, including the optical frequency comb technique\", sharing the prize with John L. Hall and Roy J. Glauber.\nHänsch is Director of the Max-Planck-Institut für Quantenoptik (quantum optics) and Professor of experimental physics and laser spectroscopy at the Ludwig-Maximilians University in Munich, Bavaria, Germany.\nHänsch gained his Diplom and doctoral degree from Ruprecht-Karls-Universität Heidelberg in 1960s. Subsequently, he became a professor at Stanford University, California from 1975 to 1986. He was awarded the Comstock Prize in Physics from the National Academy of Sciences in 1983. In 1986, he received the Albert A. Michelson Medal from the Franklin Institute.", - "extract_html": "

Theodor Wolfgang Hänsch (born 30 October 1941) is a German physicist. He received one fourth of the 2005 Nobel Prize in Physics for \"contributions to the development of laser-based precision spectroscopy, including the optical frequency comb technique\", sharing the prize with John L. Hall and Roy J. Glauber.

\n

Hänsch is Director of the Max-Planck-Institut für Quantenoptik (quantum optics) and Professor of experimental physics and laser spectroscopy at the Ludwig-Maximilians University in Munich, Bavaria, Germany.

\n

Hänsch gained his Diplom and doctoral degree from Ruprecht-Karls-Universität Heidelberg in 1960s. Subsequently, he became a professor at Stanford University, California from 1975 to 1986. He was awarded the Comstock Prize in Physics from the National Academy of Sciences in 1983. In 1986, he received the Albert A. Michelson Medal from the Franklin Institute.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/39/Theodor_Haensch.jpg/247px-Theodor_Haensch.jpg", - "width": 247, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/39/Theodor_Haensch.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/39/Theodor_Haensch.jpg", - "width": 2848, - "height": 3688 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-22T13:24:12Z", - "description": "German physicist", - "normalizedtitle": "Theodor W. Hänsch" - }, - { - "title": "Nobel_Prize_in_Physics", - "displaytitle": "Nobel Prize in Physics", - "pageid": 52497, - "extract": "The Nobel Prize in Physics (Swedish: Nobelpriset i fysik) is a yearly award given by the Royal Swedish Academy of Sciences for those who conferred the most outstanding contributions for mankind in the field of physics. It is one of the five Nobel Prizes established by the will of Alfred Nobel in 1895 and awarded since 1901; the others being the Nobel Prize in Chemistry, Nobel Prize in Literature, Nobel Peace Prize, and Nobel Prize in Physiology or Medicine.\nThe first Nobel Prize in Physics was awarded to physicist Wilhelm Röntgen in recognition of the extraordinary services he has rendered by the discovery of the remarkable rays (or x-rays). This award is administered by the Nobel Foundation and widely regarded as the most prestigious award that a scientist can receive in physics. It is presented in Stockholm at an annual ceremony on December 10, the anniversary of Nobel's death.", - "extract_html": "

The Nobel Prize in Physics (Swedish: Nobelpriset i fysik) is a yearly award given by the Royal Swedish Academy of Sciences for those who conferred the most outstanding contributions for mankind in the field of physics. It is one of the five Nobel Prizes established by the will of Alfred Nobel in 1895 and awarded since 1901; the others being the Nobel Prize in Chemistry, Nobel Prize in Literature, Nobel Peace Prize, and Nobel Prize in Physiology or Medicine.

\n

The first Nobel Prize in Physics was awarded to physicist Wilhelm Röntgen in recognition of the extraordinary services he has rendered by the discovery of the remarkable rays (or x-rays). This award is administered by the Nobel Foundation and widely regarded as the most prestigious award that a scientist can receive in physics. It is presented in Stockholm at an annual ceremony on December 10, the anniversary of Nobel's death.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/e/ed/Nobel_Prize.png/320px-Nobel_Prize.png", - "width": 320, - "height": 315, - "original": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png", - "width": 500, - "height": 492 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-07T08:06:06Z", - "description": "Awarded once a year by the Royal Swedish Academy of Sciences", - "normalizedtitle": "Nobel Prize in Physics" - } - ], - "year": 1941 - }, - { - "text": "Leland H. Hartwell, American biologist and academic, Nobel Prize laureate", - "pages": [ - { - "title": "Leland_H._Hartwell", - "displaytitle": "Leland H. Hartwell", - "pageid": 528946, - "extract": "Leland Harrison (Lee) Hartwell (born October 30, 1939, in Los Angeles, California) is former president and director of the Fred Hutchinson Cancer Research Center in Seattle, Washington.", - "extract_html": "

Leland Harrison (Lee) Hartwell (born October 30, 1939, in Los Angeles, California) is former president and director of the Fred Hutchinson Cancer Research Center in Seattle, Washington.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-11T11:39:50Z", - "description": "American biologist", - "normalizedtitle": "Leland H. Hartwell" - }, - { - "title": "Nobel_Prize_in_Physiology_or_Medicine", - "displaytitle": "Nobel Prize in Physiology or Medicine", - "pageid": 52502, - "extract": "The Nobel Prize in Physiology or Medicine (Swedish: Nobelpriset i fysiologi eller medicin), administered by the Nobel Foundation, is awarded once a year for outstanding discoveries in the fields of life sciences and medicine. It is one of five Nobel Prizes established in 1895 by Swedish chemist Alfred Nobel, the inventor of dynamite, in his will. Nobel was personally interested in experimental physiology and wanted to establish a prize for progress through scientific discoveries in laboratories. The Nobel Prize is presented to the recipient(s) at an annual ceremony on 10 December, the anniversary of Nobel's death, along with a diploma and a certificate for the monetary award. The front side of the medal provides the same profile of Alfred Nobel as depicted on the medals for Physics, Chemistry, and Literature; its reverse side is unique to this medal.", - "extract_html": "

The Nobel Prize in Physiology or Medicine (Swedish: Nobelpriset i fysiologi eller medicin), administered by the Nobel Foundation, is awarded once a year for outstanding discoveries in the fields of life sciences and medicine. It is one of five Nobel Prizes established in 1895 by Swedish chemist Alfred Nobel, the inventor of dynamite, in his will. Nobel was personally interested in experimental physiology and wanted to establish a prize for progress through scientific discoveries in laboratories. The Nobel Prize is presented to the recipient(s) at an annual ceremony on 10 December, the anniversary of Nobel's death, along with a diploma and a certificate for the monetary award. The front side of the medal provides the same profile of Alfred Nobel as depicted on the medals for Physics, Chemistry, and Literature; its reverse side is unique to this medal.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/e/ed/Nobel_Prize.png/320px-Nobel_Prize.png", - "width": 320, - "height": 315, - "original": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png", - "width": 500, - "height": 492 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T05:39:10Z", - "description": "one of five Nobel Prizes established in 1895 by Alfred Nobel", - "normalizedtitle": "Nobel Prize in Physiology or Medicine" - } - ], - "year": 1939 - }, - { - "text": "Jean Chapman, English author", - "pages": [ - { - "title": "Jean_Chapman", - "displaytitle": "Jean Chapman", - "pageid": 25797497, - "extract": "Jean Chapman (born 30 October 1929 in England) is a British writer of romance novels since 1981 and a lecturer in creative writing.", - "extract_html": "

Jean Chapman (born 30 October 1929 in England) is a British writer of romance novels since 1981 and a lecturer in creative writing.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-03T21:28:27Z", - "description": "British novelist", - "normalizedtitle": "Jean Chapman" - } - ], - "year": 1939 - }, - { - "text": "Eddie Holland, American singer-songwriter and producer", - "pages": [ - { - "title": "Eddie_Holland", - "displaytitle": "Eddie Holland", - "pageid": 355959, - "extract": "Edward \"Eddie\" Holland Jr. (born October 30, 1939) is an American singer, songwriter and record producer.\nHolland was born in Detroit, Michigan. Although he was an early Motown artist who recorded minor hit singles such as \"Jamie\", he started working behind the scenes due to stage fright. He was a member of Holland–Dozier–Holland, the songwriting and production team responsible for much of the Motown Sound and hit records by Martha and the Vandellas, The Supremes, The Four Tops, and The Isley Brothers, among others.", - "extract_html": "

Edward \"Eddie\" Holland Jr. (born October 30, 1939) is an American singer, songwriter and record producer.

\n

Holland was born in Detroit, Michigan. Although he was an early Motown artist who recorded minor hit singles such as \"Jamie\", he started working behind the scenes due to stage fright. He was a member of Holland–Dozier–Holland, the songwriting and production team responsible for much of the Motown Sound and hit records by Martha and the Vandellas, The Supremes, The Four Tops, and The Isley Brothers, among others.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-31T01:09:36Z", - "description": "American musician", - "normalizedtitle": "Eddie Holland" - } - ], - "year": 1939 - }, - { - "text": "Grace Slick, American singer-songwriter and model", - "pages": [ - { - "title": "Grace_Slick", - "displaytitle": "Grace Slick", - "pageid": 314026, - "extract": "Grace Barnett Slick (born October 30, 1939) is an American singer-songwriter, musician, artist, and former model, widely known in rock and roll history for her role in San Francisco's burgeoning psychedelic music scene in the mid–1960s. Her music career spanned four decades, and involved the Great Society, Jefferson Airplane, Jefferson Starship, and Starship, as well as a sporadic solo career.", - "extract_html": "

Grace Barnett Slick (born October 30, 1939) is an American singer-songwriter, musician, artist, and former model, widely known in rock and roll history for her role in San Francisco's burgeoning psychedelic music scene in the mid–1960s. Her music career spanned four decades, and involved the Great Society, Jefferson Airplane, Jefferson Starship, and Starship, as well as a sporadic solo career.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Grace_Slick_ca._1967.jpg/235px-Grace_Slick_ca._1967.jpg", - "width": 235, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/57/Grace_Slick_ca._1967.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/57/Grace_Slick_ca._1967.jpg", - "width": 879, - "height": 1195 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-22T01:19:55Z", - "description": "American musician, writer and painter", - "normalizedtitle": "Grace Slick" - } - ], - "year": 1939 - }, - { - "text": "Harvey Goldstein, English statistician and academic", - "pages": [ - { - "title": "Harvey_Goldstein", - "displaytitle": "Harvey Goldstein", - "pageid": 15949753, - "extract": "Harvey Goldstein (born 30 October 1939) is a British statistician known for his contributions to multilevel modelling methodology and software, and for applying this to educational assessment and league tables.\nHe is currently professor of social statistics in the Centre for Multilevel Modelling at the University of Bristol. From 1977 to 2005, he was professor of statistical methods at the Institute of Education of the University of London.", - "extract_html": "

Harvey Goldstein (born 30 October 1939) is a British statistician known for his contributions to multilevel modelling methodology and software, and for applying this to educational assessment and league tables.

\n

He is currently professor of social statistics in the Centre for Multilevel Modelling at the University of Bristol. From 1977 to 2005, he was professor of statistical methods at the Institute of Education of the University of London.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-14T18:45:33Z", - "description": "British statistician", - "normalizedtitle": "Harvey Goldstein" - } - ], - "year": 1939 - }, - { - "text": "Morris Lurie, Australian novelist, short story writer, and playwright (d. 2014)", - "pages": [ - { - "title": "Morris_Lurie", - "displaytitle": "Morris Lurie", - "pageid": 1778828, - "extract": "Morris Lurie (30 October 1938 – 8 October 2014) was an Australian writer of comic novels, short stories, essays, plays, and children's books.", - "extract_html": "

Morris Lurie (30 October 1938 – 8 October 2014) was an Australian writer of comic novels, short stories, essays, plays, and children's books.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-01-07T23:08:21Z", - "description": "writer", - "normalizedtitle": "Morris Lurie" - } - ], - "year": 1938 - }, - { - "text": "Brian Price, Welsh rugby player", - "pages": [ - { - "title": "Brian_Price_(rugby_union)", - "displaytitle": "Brian Price (rugby union)", - "pageid": 9447281, - "extract": "Brian Price (born 30 October 1937) is a former Wales international rugby union player. Price first played international rugby for Wales in 1961 after impressing in the Barbarians squad against South African. He was selected for the 1966 British Lions tour of Australia and New Zealand playing in all four tests, and spent the majority of his career playing at club level for Newport. A teacher by profession he later became a journalist and aports presenter for radio and television.", - "extract_html": "

Brian Price (born 30 October 1937) is a former Wales international rugby union player. Price first played international rugby for Wales in 1961 after impressing in the Barbarians squad against South African. He was selected for the 1966 British Lions tour of Australia and New Zealand playing in all four tests, and spent the majority of his career playing at club level for Newport. A teacher by profession he later became a journalist and aports presenter for radio and television.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-08T07:47:58Z", - "description": "Welsh rugby union player", - "normalizedtitle": "Brian Price (rugby union)" - } - ], - "year": 1937 - }, - { - "text": "Claude Lelouch, French actor, director, producer, and screenwriter", - "pages": [ - { - "title": "Claude_Lelouch", - "displaytitle": "Claude Lelouch", - "pageid": 925369, - "extract": "Claude Barruck Joseph Lelouch (French: [ləluʃ]; born 30 October 1937) is a French film director, writer, cinematographer, actor and producer.", - "extract_html": "

Claude Barruck Joseph Lelouch (French: [ləluʃ]; born 30 October 1937) is a French film director, writer, cinematographer, actor and producer.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Claude_Lelouch_C%C3%A9sar_2016.jpg/226px-Claude_Lelouch_C%C3%A9sar_2016.jpg", - "width": 226, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/3f/Claude_Lelouch_C%C3%A9sar_2016.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3f/Claude_Lelouch_C%C3%A9sar_2016.jpg", - "width": 566, - "height": 800 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-23T22:34:45Z", - "description": "French film director, writer, cinematographer, actor and producer", - "normalizedtitle": "Claude Lelouch" - } - ], - "year": 1937 - }, - { - "text": "Dick Vermeil, American football player and coach", - "pages": [ - { - "title": "Dick_Vermeil", - "displaytitle": "Dick Vermeil", - "pageid": 2385228, - "extract": "Richard Albert \"Dick\" Vermeil (; born October 30, 1936) is a former American head coach for the National Football League's Philadelphia Eagles (1976–1982), St. Louis Rams (1997–1999) and Kansas City Chiefs (2001–2005). He coached the Rams to their only NFL title in St. Louis over the Tennessee Titans. He is in the Sid Gillman coaching tree and has coached at every level; Vermeil owns the distinction of being named \"Coach of the Year\" on four levels: high school, junior college, NCAA Division I, and professional football.\nIn all three of his stints as an NFL head coach, Vermeil took every team—Philadelphia, St.", - "extract_html": "

Richard Albert \"Dick\" Vermeil (; born October 30, 1936) is a former American head coach for the National Football League's Philadelphia Eagles (1976–1982), St. Louis Rams (1997–1999) and Kansas City Chiefs (2001–2005). He coached the Rams to their only NFL title in St. Louis over the Tennessee Titans. He is in the Sid Gillman coaching tree and has coached at every level; Vermeil owns the distinction of being named \"Coach of the Year\" on four levels: high school, junior college, NCAA Division I, and professional football.

\n

In all three of his stints as an NFL head coach, Vermeil took every team—Philadelphia, St.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Dickvermeil.jpg/188px-Dickvermeil.jpg", - "width": 188, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/de/Dickvermeil.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/de/Dickvermeil.jpg", - "width": 662, - "height": 1123 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T02:01:56Z", - "description": "American football player, coach, executive, announcer", - "normalizedtitle": "Dick Vermeil" - } - ], - "year": 1936 - }, - { - "text": "Polina Astakhova, Ukrainian gymnast and trainer (d. 2005)", - "pages": [ - { - "title": "Polina_Astakhova", - "displaytitle": "Polina Astakhova", - "pageid": 1556226, - "extract": "Polina Astakhova (30 October 1936 – 5 August 2005) was a Soviet artistic gymnast.", - "extract_html": "

Polina Astakhova (30 October 1936 – 5 August 2005) was a Soviet artistic gymnast.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Polina_Astakhova_1964b.jpg/204px-Polina_Astakhova_1964b.jpg", - "width": 204, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/02/Polina_Astakhova_1964b.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/02/Polina_Astakhova_1964b.jpg", - "width": 299, - "height": 468 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-20T20:23:27Z", - "description": "Gymnast", - "normalizedtitle": "Polina Astakhova" - } - ], - "year": 1936 - }, - { - "text": "Agota Kristof, Hungarian-Swiss author (d. 2011)", - "pages": [ - { - "title": "Agota_Kristof", - "displaytitle": "Agota Kristof", - "pageid": 2690063, - "extract": "Ágota Kristóf (Hungarian: Kristóf Ágota; October 30, 1935 – July 27, 2011) was a Hungarian writer who lived in Switzerland and wrote in French. Kristof received the European prize for French literature for The Notebook (1986).", - "extract_html": "

Ágota Kristóf (Hungarian: Kristóf Ágota; October 30, 1935 – July 27, 2011) was a Hungarian writer who lived in Switzerland and wrote in French. Kristof received the European prize for French literature for The Notebook (1986).", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-16T13:31:29Z", - "description": "Hungarian Swiss writer", - "normalizedtitle": "Agota Kristof" - } - ], - "year": 1935 - }, - { - "text": "Robert Caro, American journalist and author", - "pages": [ - { - "title": "Robert_Caro", - "displaytitle": "Robert Caro", - "pageid": 505826, - "extract": "Robert Allan Caro (born October 30, 1935) is an American journalist and author known for his biographies of United States political figures Robert Moses and Lyndon B. Johnson.\nAfter working for many years as a reporter, Caro wrote The Power Broker (1974), a biography of New York urban planner Robert Moses, which was chosen by the Modern Library as one of the hundred greatest nonfiction books of the twentieth century. He has since written four of a planned five volumes of The Years of Lyndon Johnson (1982, 1990, 2002, 2012), a biography of the former president.\nFor his biographies, he has won two Pulitzer Prizes in Biography, two National Book Awards (including one for Lifetime Achievement), the Francis Parkman Prize (awarded by the Society of American Historians to the book that \"best exemplifies the union of the historian and the artist\"), three National Book Critics Circle Awards, the H.L. Mencken Award, the Carr P. Collins Award from the Texas Institute of Letters, the D.B. Hardeman Prize, and a Gold Medal in Biography from the American Academy of Arts and Letters.", - "extract_html": "

Robert Allan Caro (born October 30, 1935) is an American journalist and author known for his biographies of United States political figures Robert Moses and Lyndon B. Johnson.

\n

After working for many years as a reporter, Caro wrote The Power Broker (1974), a biography of New York urban planner Robert Moses, which was chosen by the Modern Library as one of the hundred greatest nonfiction books of the twentieth century. He has since written four of a planned five volumes of The Years of Lyndon Johnson (1982, 1990, 2002, 2012), a biography of the former president.

\n

For his biographies, he has won two Pulitzer Prizes in Biography, two National Book Awards (including one for Lifetime Achievement), the Francis Parkman Prize (awarded by the Society of American Historians to the book that \"best exemplifies the union of the historian and the artist\"), three National Book Critics Circle Awards, the H.L. Mencken Award, the Carr P. Collins Award from the Texas Institute of Letters, the D.B. Hardeman Prize, and a Gold Medal in Biography from the American Academy of Arts and Letters.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/96/Robert_caro_2012.jpg/240px-Robert_caro_2012.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/96/Robert_caro_2012.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/96/Robert_caro_2012.jpg", - "width": 675, - "height": 900 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-11T00:25:42Z", - "description": "American journalist and author", - "normalizedtitle": "Robert Caro" - } - ], - "year": 1935 - }, - { - "text": "Michael Winner, English director, producer, and screenwriter (d. 2013)", - "pages": [ - { - "title": "Michael_Winner", - "displaytitle": "Michael Winner", - "pageid": 463243, - "extract": "Robert Michael Winner (30 October 1935 – 21 January 2013) was an English film director and producer, and a restaurant critic for The Sunday Times.", - "extract_html": "

Robert Michael Winner (30 October 1935 – 21 January 2013) was an English film director and producer, and a restaurant critic for The Sunday Times.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Michael_Winner%2C_2010_%28cropped%29.jpg/231px-Michael_Winner%2C_2010_%28cropped%29.jpg", - "width": 231, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/5b/Michael_Winner%2C_2010_%28cropped%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/5b/Michael_Winner%2C_2010_%28cropped%29.jpg", - "width": 695, - "height": 963 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T23:22:34Z", - "description": "English film director, film producer, film editor and screenwriter", - "normalizedtitle": "Michael Winner" - } - ], - "year": 1935 - }, - { - "text": "Jim Perry, American baseball player", - "pages": [ - { - "title": "Jim_Perry_(baseball)", - "displaytitle": "Jim Perry (baseball)", - "pageid": 2303515, - "extract": "James Evan Perry, Jr. (born October 30, 1935) is an American former Major League Baseball pitcher. He pitched from 1959–1975 for four different teams.", - "extract_html": "

James Evan Perry, Jr. (born October 30, 1935) is an American former Major League Baseball pitcher. He pitched from 1959–1975 for four different teams.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-28T18:26:21Z", - "description": "American baseball player", - "normalizedtitle": "Jim Perry (baseball)" - } - ], - "year": 1935 - }, - { - "text": "Frans Brüggen, Dutch flute player and conductor (d. 2014)", - "pages": [ - { - "title": "Frans_Brüggen", - "displaytitle": "Frans Brüggen", - "pageid": 1180629, - "extract": "Franciscus (\"Frans\") Jozef Brüggen (30 October 1934 – 13 August 2014) was a Dutch conductor, recorder player and baroque flautist.", - "extract_html": "

Franciscus (\"Frans\") Jozef Brüggen (30 October 1934 – 13 August 2014) was a Dutch conductor, recorder player and baroque flautist.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Frans_Br%C3%BCggen_%281969%29.jpg/240px-Frans_Br%C3%BCggen_%281969%29.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b2/Frans_Br%C3%BCggen_%281969%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b2/Frans_Br%C3%BCggen_%281969%29.jpg", - "width": 1067, - "height": 1423 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-13T08:25:41Z", - "description": "Dutch conductor, recorder player and baroque flautist", - "normalizedtitle": "Frans Brüggen" - } - ], - "year": 1934 - }, - { - "text": "Keith Barnes, Welsh-Australian rugby player and coach", - "pages": [ - { - "title": "Keith_Barnes", - "displaytitle": "Keith Barnes", - "pageid": 3344641, - "extract": "William Keith Barnes AM (born 30 October 1934 in Port Talbot, Wales) is an Australian former rugby league footballer and coach. He was a fullback for the Australian national team and for the Balmain Tigers. He played in 14 Tests between 1959 and 1966, as national captain on 12 occasions. He was known as \"Golden Boots\" due to his exceptional goal-kicking ability. After his playing days he became a referee and later co-commentated on the Amco Cup on Network Ten with Ray Warren in the 1970s.", - "extract_html": "

William Keith Barnes AM (born 30 October 1934 in Port Talbot, Wales) is an Australian former rugby league footballer and coach. He was a fullback for the Australian national team and for the Balmain Tigers. He played in 14 Tests between 1959 and 1966, as national captain on 12 occasions. He was known as \"Golden Boots\" due to his exceptional goal-kicking ability. After his playing days he became a referee and later co-commentated on the Amco Cup on Network Ten with Ray Warren in the 1970s.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-09T22:46:36Z", - "description": "Australian rugby league player, coach and commentator", - "normalizedtitle": "Keith Barnes" - } - ], - "year": 1934 - }, - { - "text": "Col Campbell, New Zealand gardener and television host (d. 2012)", - "pages": [ - { - "title": "Col_Campbell", - "displaytitle": "Col Campbell", - "pageid": 9068042, - "extract": "Colin \"Col\" Campbell (30 October 1933 – 23 August 2012) was a presenter on Gardening Australia, a TV show on the Australian Broadcasting Corporation. He was also a presenter on Brisbane radio station 4BC as the \"Gardening Guru\" of weekend mornings, in which he answered a wide range of questions from callers.", - "extract_html": "

Colin \"Col\" Campbell (30 October 1933 – 23 August 2012) was a presenter on Gardening Australia, a TV show on the Australian Broadcasting Corporation. He was also a presenter on Brisbane radio station 4BC as the \"Gardening Guru\" of weekend mornings, in which he answered a wide range of questions from callers.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-10T08:36:08Z", - "description": "Australian gardener", - "normalizedtitle": "Col Campbell" - } - ], - "year": 1933 - }, - { - "text": "Louis Malle, French director, producer, and screenwriter (d. 1995)", - "pages": [ - { - "title": "Louis_Malle", - "displaytitle": "Louis Malle", - "pageid": 309667, - "extract": "Louis Marie Malle (French: [mal]; 30 October 1932 – 23 November 1995) was a French film director, screenwriter, and producer. His film Le Monde du silence won the Palme d'Or in 1956 and the Academy Award for Best Documentary in 1957, although he was not credited at the ceremony with the award instead being presented to the film's co-director Jacques Cousteau. Later in his career he was nominated multiple times for Academy Awards. Malle is also one of the few directors to have won the Golden Lion multiple times.\nMalle worked in both French cinema and Hollywood, and he produced both French and English language films.", - "extract_html": "

Louis Marie Malle (French: [mal]; 30 October 1932 – 23 November 1995) was a French film director, screenwriter, and producer. His film Le Monde du silence won the Palme d'Or in 1956 and the Academy Award for Best Documentary in 1957, although he was not credited at the ceremony with the award instead being presented to the film's co-director Jacques Cousteau. Later in his career he was nominated multiple times for Academy Awards. Malle is also one of the few directors to have won the Golden Lion multiple times.

\n

Malle worked in both French cinema and Hollywood, and he produced both French and English language films.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/1/10/Malle2.jpg/320px-Malle2.jpg", - "width": 320, - "height": 241, - "original": "https://upload.wikimedia.org/wikipedia/en/1/10/Malle2.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/1/10/Malle2.jpg", - "width": 372, - "height": 280 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-16T16:12:01Z", - "description": "French film director, screenwriter, and producer", - "normalizedtitle": "Louis Malle" - } - ], - "year": 1932 - }, - { - "text": "Barun De, Indian historian and author (d. 2013)", - "pages": [ - { - "title": "Barun_De", - "displaytitle": "Barun De", - "pageid": 11335579, - "extract": "Barun De (30 October 1932 – 16 July 2013) was an Indian historian. He served as founder-director of the Centre for Studies in Social Sciences, Calcutta and the Maulana Abul Kalam Azad Institute of Asian Studies, Kolkata and as the honorary state editor for the West Bengal District Gazetteers.", - "extract_html": "

Barun De (30 October 1932 – 16 July 2013) was an Indian historian. He served as founder-director of the Centre for Studies in Social Sciences, Calcutta and the Maulana Abul Kalam Azad Institute of Asian Studies, Kolkata and as the honorary state editor for the West Bengal District Gazetteers.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T11:08:24Z", - "description": "Indian historian", - "normalizedtitle": "Barun De" - } - ], - "year": 1932 - }, - { - "text": "Vince Callahan, American lieutenant and politician (d. 2014)", - "pages": [ - { - "title": "Vince_Callahan", - "displaytitle": "Vince Callahan", - "pageid": 8190962, - "extract": "Vincent Francis \"Vince\" Callahan Jr. (October 30, 1931 – September 20, 2014) was an American politician who served for 40 years as a member of the Virginia House of Delegates. From January 1968 to January 2008, he represented the 34th district, which covers McLean, Great Falls, Tysons Corner, and parts of Herndon and Vienna.", - "extract_html": "

Vincent Francis \"Vince\" Callahan Jr. (October 30, 1931 – September 20, 2014) was an American politician who served for 40 years as a member of the Virginia House of Delegates. From January 1968 to January 2008, he represented the 34th district, which covers McLean, Great Falls, Tysons Corner, and parts of Herndon and Vienna.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-16T19:15:47Z", - "description": "American politician", - "normalizedtitle": "Vince Callahan" - } - ], - "year": 1931 - }, - { - "text": "David M. Wilson, Manx archaeologist, historian, and curator", - "pages": [ - { - "title": "David_M._Wilson", - "displaytitle": "David M. Wilson", - "pageid": 7763444, - "extract": "Sir David Mackenzie Wilson (born 30 October 1931) is a British archaeologist, art historian, and museum curator, specialising in Anglo-Saxon art and the Viking Age.", - "extract_html": "

Sir David Mackenzie Wilson (born 30 October 1931) is a British archaeologist, art historian, and museum curator, specialising in Anglo-Saxon art and the Viking Age.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-18T15:11:25Z", - "description": "British archaeologist, art historian, and museum curator", - "normalizedtitle": "David M. Wilson" - } - ], - "year": 1931 - }, - { - "text": "Clifford Brown, American trumpet player and composer (d. 1956)", - "pages": [ - { - "title": "Clifford_Brown", - "displaytitle": "Clifford Brown", - "pageid": 248331, - "extract": "Clifford Benjamin Brown (October 30, 1930 – June 26, 1956), also known as \"Brownie\", was an American jazz trumpeter. He died at the age of 25 in a car accident, leaving behind only four years' worth of recordings. He influenced later jazz trumpet players including Booker Little, Freddie Hubbard, Lee Morgan.", - "extract_html": "

Clifford Benjamin Brown (October 30, 1930 – June 26, 1956), also known as \"Brownie\", was an American jazz trumpeter. He died at the age of 25 in a car accident, leaving behind only four years' worth of recordings. He influenced later jazz trumpet players including Booker Little, Freddie Hubbard, Lee Morgan.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/5/53/Clifford_Brown.jpg", - "width": 220, - "height": 288, - "original": "https://upload.wikimedia.org/wikipedia/en/5/53/Clifford_Brown.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/5/53/Clifford_Brown.jpg", - "width": 220, - "height": 288 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-12T04:37:06Z", - "description": "American musician", - "normalizedtitle": "Clifford Brown" - } - ], - "year": 1930 - }, - { - "text": "Don Meineke, American basketball player (d. 2013)", - "pages": [ - { - "title": "Don_Meineke", - "displaytitle": "Don Meineke", - "pageid": 1752543, - "extract": "Don \"Monk\" Meineke (October 30, 1930 – September 3, 2013) was an American professional basketball player.\nMeineke averaged 20.6 points as a junior for the Dayton Flyers, helping lead the team to an NIT runner-up finish in 1951. He averaged 21.1 points per game as a senior and led the team to another second-place finish in the NIT in 1952. Meineke was an AP second-team All-American selection after his senior year.\nMeineke received the National Basketball Association's first Rookie of the Year Award after the 1952–53 NBA season while playing for the Fort Wayne Pistons. Meineke led the league in personal fouls and disqualifications the same season. The 26 disqualifications he had in his first year is still the NBA single-season record.", - "extract_html": "

Don \"Monk\" Meineke (October 30, 1930 – September 3, 2013) was an American professional basketball player.

\n

Meineke averaged 20.6 points as a junior for the Dayton Flyers, helping lead the team to an NIT runner-up finish in 1951. He averaged 21.1 points per game as a senior and led the team to another second-place finish in the NIT in 1952. Meineke was an AP second-team All-American selection after his senior year.

\n

Meineke received the National Basketball Association's first Rookie of the Year Award after the 1952–53 NBA season while playing for the Fort Wayne Pistons. Meineke led the league in personal fouls and disqualifications the same season. The 26 disqualifications he had in his first year is still the NBA single-season record.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-02T00:27:57Z", - "description": "American basketball player", - "normalizedtitle": "Don Meineke" - } - ], - "year": 1930 - }, - { - "text": "Néstor Almendros, Spanish-American director and cinematographer (d. 1992)", - "pages": [ - { - "title": "Néstor_Almendros", - "displaytitle": "Néstor Almendros", - "pageid": 2254472, - "extract": "Néstor Almendros Cuyás A.S.C. (30 October 1930 – 4 March 1992) was a Spanish cinematographer.", - "extract_html": "

Néstor Almendros Cuyás A.S.C. (30 October 1930 – 4 March 1992) was a Spanish cinematographer.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-05T16:43:05Z", - "description": "Spanish cinematographer and film director", - "normalizedtitle": "Néstor Almendros" - } - ], - "year": 1930 - }, - { - "text": "Christopher Foster, English economist and academic", - "pages": [ - { - "title": "Christopher_Foster_(economist)", - "displaytitle": "Christopher Foster (economist)", - "pageid": 14419120, - "extract": "Sir Christopher Foster (born 30 October 1930) has been an academic at the University of Oxford and MIT, a Professor of Economics at the London School of Economics, a consultant at Coopers & Lybrand, and then PricewaterhouseCoopers over many years and a temporary civil servant.\nHe was in George Brown’s DEA and has been a special adviser to Barbara Castle, Dick Marsh, Tony Crosland and Peter Shore. He advised ministers on Poll tax and rail privatization, as well as many more successful endeavours. He has sat on a several private and public sector boards including the Audit Commission, the ESRC, the London Docklands Development Corporation and the Megaw Committee on Civil Service Pay.\nHe has written books on transport, local government finance, privatization and public ownership, and the public sector. His latest book is British Government in Crisis, which was published in March 2005.\nOn 25 November 2007 he gave an outspoken interview to Rachel Sylvester and Alice Thompson of The Daily Telegraph attacking Tony Blair as the 'worst Prime Minister since Lord North' in terms of how he managed government.\nFor just under the last two years he has been chairing a cross-party 'Better Government Initiative' which is seen by some as a group of Establishment figures, mainly ex-senior civil servants. They have apparently been meeting in secret and their deliberations are to be released in a series of reports over the next few months with the first to be published immediately.", - "extract_html": "

Sir Christopher Foster (born 30 October 1930) has been an academic at the University of Oxford and MIT, a Professor of Economics at the London School of Economics, a consultant at Coopers & Lybrand, and then PricewaterhouseCoopers over many years and a temporary civil servant.

\n

He was in George Brown’s DEA and has been a special adviser to Barbara Castle, Dick Marsh, Tony Crosland and Peter Shore. He advised ministers on Poll tax and rail privatization, as well as many more successful endeavours. He has sat on a several private and public sector boards including the Audit Commission, the ESRC, the London Docklands Development Corporation and the Megaw Committee on Civil Service Pay.

\n

He has written books on transport, local government finance, privatization and public ownership, and the public sector. His latest book is British Government in Crisis, which was published in March 2005.

\n

On 25 November 2007 he gave an outspoken interview to Rachel Sylvester and Alice Thompson of The Daily Telegraph attacking Tony Blair as the 'worst Prime Minister since Lord North' in terms of how he managed government.

\n

For just under the last two years he has been chairing a cross-party 'Better Government Initiative' which is seen by some as a group of Establishment figures, mainly ex-senior civil servants. They have apparently been meeting in secret and their deliberations are to be released in a series of reports over the next few months with the first to be published immediately.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-05-07T15:25:09Z", - "description": "British economist", - "normalizedtitle": "Christopher Foster (economist)" - } - ], - "year": 1930 - }, - { - "text": "Olga Zubarry, Argentinian actress (d. 2012)", - "pages": [ - { - "title": "Olga_Zubarry", - "displaytitle": "Olga Zubarry", - "pageid": 8471569, - "extract": "Olga Zubarry (30 October 1929- 15 December 2012) was a classic Argentine actress who appeared in film between 1943 and 1997. She made over 60 appearances in film, spanning 6 decades of Argentine cinema, but is best known for her work during the Golden Age of Argentine Cinema. Throughout the course of her career, she received four Silver Condor Awards, two Martín Fierro Awards, a Konex Foundation Award and several others for her films and television performances.", - "extract_html": "

Olga Zubarry (30 October 1929- 15 December 2012) was a classic Argentine actress who appeared in film between 1943 and 1997. She made over 60 appearances in film, spanning 6 decades of Argentine cinema, but is best known for her work during the Golden Age of Argentine Cinema. Throughout the course of her career, she received four Silver Condor Awards, two Martín Fierro Awards, a Konex Foundation Award and several others for her films and television performances.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Olga_Zubarry_as_Marianela_1955.jpg/320px-Olga_Zubarry_as_Marianela_1955.jpg", - "width": 320, - "height": 228, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/af/Olga_Zubarry_as_Marianela_1955.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/af/Olga_Zubarry_as_Marianela_1955.jpg", - "width": 500, - "height": 356 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-11T19:42:22Z", - "description": "Argentine actress", - "normalizedtitle": "Olga Zubarry" - } - ], - "year": 1929 - }, - { - "text": "Daniel Nathans, American microbiologist and academic, Nobel Prize laureate (d. 1999)", - "pages": [ - { - "title": "Daniel_Nathans", - "displaytitle": "Daniel Nathans", - "pageid": 762595, - "extract": "Daniel Nathans (October 30, 1928 – November 16, 1999) was an American microbiologist.", - "extract_html": "

Daniel Nathans (October 30, 1928 – November 16, 1999) was an American microbiologist.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-07T13:23:30Z", - "description": "American Microbiologist", - "normalizedtitle": "Daniel Nathans" - }, - { - "title": "Nobel_Prize_in_Physiology_or_Medicine", - "displaytitle": "Nobel Prize in Physiology or Medicine", - "pageid": 52502, - "extract": "The Nobel Prize in Physiology or Medicine (Swedish: Nobelpriset i fysiologi eller medicin), administered by the Nobel Foundation, is awarded once a year for outstanding discoveries in the fields of life sciences and medicine. It is one of five Nobel Prizes established in 1895 by Swedish chemist Alfred Nobel, the inventor of dynamite, in his will. Nobel was personally interested in experimental physiology and wanted to establish a prize for progress through scientific discoveries in laboratories. The Nobel Prize is presented to the recipient(s) at an annual ceremony on 10 December, the anniversary of Nobel's death, along with a diploma and a certificate for the monetary award. The front side of the medal provides the same profile of Alfred Nobel as depicted on the medals for Physics, Chemistry, and Literature; its reverse side is unique to this medal.", - "extract_html": "

The Nobel Prize in Physiology or Medicine (Swedish: Nobelpriset i fysiologi eller medicin), administered by the Nobel Foundation, is awarded once a year for outstanding discoveries in the fields of life sciences and medicine. It is one of five Nobel Prizes established in 1895 by Swedish chemist Alfred Nobel, the inventor of dynamite, in his will. Nobel was personally interested in experimental physiology and wanted to establish a prize for progress through scientific discoveries in laboratories. The Nobel Prize is presented to the recipient(s) at an annual ceremony on 10 December, the anniversary of Nobel's death, along with a diploma and a certificate for the monetary award. The front side of the medal provides the same profile of Alfred Nobel as depicted on the medals for Physics, Chemistry, and Literature; its reverse side is unique to this medal.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/e/ed/Nobel_Prize.png/320px-Nobel_Prize.png", - "width": 320, - "height": 315, - "original": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png", - "width": 500, - "height": 492 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T05:39:10Z", - "description": "one of five Nobel Prizes established in 1895 by Alfred Nobel", - "normalizedtitle": "Nobel Prize in Physiology or Medicine" - } - ], - "year": 1928 - }, - { - "text": "Joe Adcock, American baseball player and manager (d. 1999)", - "pages": [ - { - "title": "Joe_Adcock", - "displaytitle": "Joe Adcock", - "pageid": 788463, - "extract": "Joseph Wilbur \"Billy Joe\" Adcock (October 30, 1927 – May 3, 1999) was a major league baseball player and manager in the Major and Minor Leagues. He was best known as a first baseman and right-handed slugger with the powerful Milwaukee Braves teams of the 1950s, whose career included numerous home run feats. A sure-handed defensive player, he also retired with the third highest career fielding percentage by a first baseman (.994). His nickname \"Billy Joe\" was modeled after Vanderbilt University basketball star \"Billy Joe Adcock\" and was popularized by Vin Scully.\nBorn in Coushatta, the seat of Red River Parish in northwestern Louisiana, Adcock attended Louisiana State University in Baton Rouge, where he played on the baseball team; before college, he had never played a game of baseball in his life.\nHe was signed by the Cincinnati Reds, but Ted Kluszewski had firm hold of the team's first base slot. Adcock played in left field from 1950 to 1952, but was unhappy and demanded a trade, which he received.", - "extract_html": "

Joseph Wilbur \"Billy Joe\" Adcock (October 30, 1927 – May 3, 1999) was a major league baseball player and manager in the Major and Minor Leagues. He was best known as a first baseman and right-handed slugger with the powerful Milwaukee Braves teams of the 1950s, whose career included numerous home run feats. A sure-handed defensive player, he also retired with the third highest career fielding percentage by a first baseman (.994). His nickname \"Billy Joe\" was modeled after Vanderbilt University basketball star \"Billy Joe Adcock\" and was popularized by Vin Scully.

\n

Born in Coushatta, the seat of Red River Parish in northwestern Louisiana, Adcock attended Louisiana State University in Baton Rouge, where he played on the baseball team; before college, he had never played a game of baseball in his life.

\n

He was signed by the Cincinnati Reds, but Ted Kluszewski had firm hold of the team's first base slot. Adcock played in left field from 1950 to 1952, but was unhappy and demanded a trade, which he received.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Joe_Adcock_1954.png/233px-Joe_Adcock_1954.png", - "width": 233, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/dd/Joe_Adcock_1954.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/dd/Joe_Adcock_1954.png", - "width": 293, - "height": 403 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-25T04:56:24Z", - "description": "American baseball player", - "normalizedtitle": "Joe Adcock" - } - ], - "year": 1927 - }, - { - "text": "Jacques Swaters, Belgian race car driver and manager (d. 2010)", - "pages": [ - { - "title": "Jacques_Swaters", - "displaytitle": "Jacques Swaters", - "pageid": 1233865, - "extract": "Jacques Swaters (30 October 1926 – 10 December 2010) was a racing driver from Belgium and former team owner of Ecurie Francorchamps and Ecurie Nationale Belge.", - "extract_html": "

Jacques Swaters (30 October 1926 – 10 December 2010) was a racing driver from Belgium and former team owner of Ecurie Francorchamps and Ecurie Nationale Belge.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-04-16T23:11:30Z", - "description": "auto racer, Ferrari businessman, historian, expert on Ferrari History", - "normalizedtitle": "Jacques Swaters" - } - ], - "year": 1926 - }, - { - "text": "Tommy Ridgley, American singer and bandleader (d. 1999)", - "pages": [ - { - "title": "Tommy_Ridgley", - "displaytitle": "Tommy Ridgley", - "pageid": 11201696, - "extract": "Tommy Ridgley (October 30, 1925 – August 11, 1999) was an American R&B singer and bandleader in New Orleans, Louisiana.", - "extract_html": "

Tommy Ridgley (October 30, 1925 – August 11, 1999) was an American R&B singer and bandleader in New Orleans, Louisiana.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Tommy_Ridgley_1996.jpg/320px-Tommy_Ridgley_1996.jpg", - "width": 320, - "height": 230, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/ec/Tommy_Ridgley_1996.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/ec/Tommy_Ridgley_1996.jpg", - "width": 1325, - "height": 951 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-05T17:16:41Z", - "description": "American R&B singer and bandleader", - "normalizedtitle": "Tommy Ridgley" - } - ], - "year": 1925 - }, - { - "text": "John P. Craven, American soldier and engineer (d. 2015)", - "pages": [ - { - "title": "John_P._Craven", - "displaytitle": "John P. Craven", - "pageid": 1940210, - "extract": "John Piña Craven (October 30, 1924 – February 12, 2015) was an American scientist who was known for his involvement with Bayesian search theory and the recovery of lost objects at sea.", - "extract_html": "

John Piña Craven (October 30, 1924 – February 12, 2015) was an American scientist who was known for his involvement with Bayesian search theory and the recovery of lost objects at sea.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-29T00:41:19Z", - "description": "US Navy officer", - "normalizedtitle": "John P. Craven" - } - ], - "year": 1924 - }, - { - "text": "Gloria Oden, American poet and academic (d. 2011)", - "pages": [ - { - "title": "Gloria_Oden", - "displaytitle": "Gloria Oden", - "pageid": 33541951, - "extract": "Gloria Catherine Oden (October 30, 1923 – December 16, 2011) was an American poet, editor and retired professor of English.", - "extract_html": "

Gloria Catherine Oden (October 30, 1923 – December 16, 2011) was an American poet, editor and retired professor of English.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-07T15:11:15Z", - "description": "American writer", - "normalizedtitle": "Gloria Oden" - } - ], - "year": 1923 - }, - { - "text": "Jane White, American actress and singer (d. 2011)", - "pages": [ - { - "title": "Jane_White", - "displaytitle": "Jane White", - "pageid": 15516230, - "extract": "Jane White (October 30, 1922 – July 24, 2011) was an actress of African-American descent. Born in New York City, she attended Smith College and The New School.\nIn 1945, she made her Broadway debut in Strange Fruit. This performance was followed by roles in Razzle Dazzle, The Insect Comedy, The Climate of Eden, Take a Giant Step, Jane Eyre, and The Power and The Glory. In 1959, she opened the acclaimed musical Once Upon a Mattress, originating the role of Queen Aggravain alongside Carol Burnett and Joseph Bova.", - "extract_html": "

Jane White (October 30, 1922 – July 24, 2011) was an actress of African-American descent. Born in New York City, she attended Smith College and The New School.

\n

In 1945, she made her Broadway debut in Strange Fruit. This performance was followed by roles in Razzle Dazzle, The Insect Comedy, The Climate of Eden, Take a Giant Step, Jane Eyre, and The Power and The Glory. In 1959, she opened the acclaimed musical Once Upon a Mattress, originating the role of Queen Aggravain alongside Carol Burnett and Joseph Bova.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-02T09:48:47Z", - "description": "actress", - "normalizedtitle": "Jane White" - } - ], - "year": 1922 - }, - { - "text": "Christy Ring, Irish sportsman (d. 1979)", - "pages": [ - { - "title": "Christy_Ring", - "displaytitle": "Christy Ring", - "pageid": 720681, - "extract": "Nicholas Christopher Michael \"Christy\" Ring (30 October 1920 – 2 March 1979) was an Irish hurler whose league and championship career with the Cork senior team spanned twenty-four years from 1939 to 1963. He established many championship records, including career appearances (65), scoring tally (33-208) and number of All-Ireland medals won (8), however, these records were subsequently bested by Brendan Cummins, Eddie Keher and Henry Shefflin respectively. Ring is widely regarded as one of the greatest hurlers in the history of the game, with many former players, commentators and fans rating him as the number one player of all time.\nBorn near Cloyne, County Cork, Ring first played competitive hurling following encouragement from his local national school teachers Michael O'Brien and Jerry Moynihan. He first appeared on the Cloyne minor team at the age of twelve before later winning a county minor championship medal with the nearby St. Enda's team.", - "extract_html": "

Nicholas Christopher Michael \"Christy\" Ring (30 October 1920 – 2 March 1979) was an Irish hurler whose league and championship career with the Cork senior team spanned twenty-four years from 1939 to 1963. He established many championship records, including career appearances (65), scoring tally (33-208) and number of All-Ireland medals won (8), however, these records were subsequently bested by Brendan Cummins, Eddie Keher and Henry Shefflin respectively. Ring is widely regarded as one of the greatest hurlers in the history of the game, with many former players, commentators and fans rating him as the number one player of all time.

\n

Born near Cloyne, County Cork, Ring first played competitive hurling following encouragement from his local national school teachers Michael O'Brien and Jerry Moynihan. He first appeared on the Cloyne minor team at the age of twelve before later winning a county minor championship medal with the nearby St. Enda's team.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/e8/Christy_Ring.jpg", - "width": 204, - "height": 294, - "original": "https://upload.wikimedia.org/wikipedia/en/e/e8/Christy_Ring.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/e8/Christy_Ring.jpg", - "width": 204, - "height": 294 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-13T21:45:52Z", - "description": "Irish hurler", - "normalizedtitle": "Christy Ring" - } - ], - "year": 1920 - }, - { - "text": "Nikolai Ogarkov, Russian field marshal (d. 1994)", - "pages": [ - { - "title": "Nikolai_Ogarkov", - "displaytitle": "Nikolai Ogarkov", - "pageid": 3196376, - "extract": "Nikolai Vasilyevich Ogarkov (Russian: Николай Васильевич Огарков; 30 October 1917 in the village of Molokovo, Tver Governorate – 23 January 1994) was a prominent Soviet military personality. He was promoted to Marshal of the Soviet Union in 1977. Between 1977 and 1984, he was Chief of the General Staff of the USSR. He became widely known in the West when he became the Soviet military's spokesman following the shootdown of Korean Air Lines Flight 007 near Moneron Island in September 1983.", - "extract_html": "

Nikolai Vasilyevich Ogarkov (Russian: Николай Васильевич Огарков; 30 October 1917 in the village of Molokovo, Tver Governorate – 23 January 1994) was a prominent Soviet military personality. He was promoted to Marshal of the Soviet Union in 1977. Between 1977 and 1984, he was Chief of the General Staff of the USSR. He became widely known in the West when he became the Soviet military's spokesman following the shootdown of Korean Air Lines Flight 007 near Moneron Island in September 1983.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Ogarkov-KAL007.gif/320px-Ogarkov-KAL007.gif", - "width": 320, - "height": 241, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/50/Ogarkov-KAL007.gif" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/50/Ogarkov-KAL007.gif", - "width": 903, - "height": 679 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-31T18:40:37Z", - "description": "Marshal of the Soviet Union", - "normalizedtitle": "Nikolai Ogarkov" - } - ], - "year": 1917 - }, - { - "text": "Maurice Trintignant, French race car driver (d. 2005)", - "pages": [ - { - "title": "Maurice_Trintignant", - "displaytitle": "Maurice Trintignant", - "pageid": 423739, - "extract": "Maurice Bienvenu Jean Paul Trintignant (30 October 1917, in Sainte-Cécile-les-Vignes, Vaucluse – 13 February 2005, in Nîmes) was a motor racing driver and vintner from France. He competed in the Formula One World Championship for fourteen years, between 1950 and 1964, one of the longest careers in the early years of Formula One. During this time he also competed in sports car racing, including winning the 1954 24 Hours of Le Mans race.", - "extract_html": "

Maurice Bienvenu Jean Paul Trintignant (30 October 1917, in Sainte-Cécile-les-Vignes, Vaucluse – 13 February 2005, in Nîmes) was a motor racing driver and vintner from France. He competed in the Formula One World Championship for fourteen years, between 1950 and 1964, one of the longest careers in the early years of Formula One. During this time he also competed in sports car racing, including winning the 1954 24 Hours of Le Mans race.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-04-22T06:39:42Z", - "description": "French racecar driver", - "normalizedtitle": "Maurice Trintignant" - } - ], - "year": 1917 - }, - { - "text": "Bobby Bragan, American baseball player, coach, and manager (d. 2010)", - "pages": [ - { - "title": "Bobby_Bragan", - "displaytitle": "Bobby Bragan", - "pageid": 3117661, - "extract": "Robert Randall Bragan (October 30, 1917 – January 21, 2010) was an American shortstop, catcher, manager, and coach in Major League Baseball. He also was an influential executive in minor league baseball. He was born in Birmingham, Alabama.\nOn August 16, 2005, Bragan came out of retirement to manage the independent Central League Fort Worth Cats for one game, making him — at 87 years, nine months, and 16 days old — the oldest manager in professional baseball annals (besting by one week Connie Mack, the manager and part-owner of the Philadelphia Athletics).", - "extract_html": "

Robert Randall Bragan (October 30, 1917 – January 21, 2010) was an American shortstop, catcher, manager, and coach in Major League Baseball. He also was an influential executive in minor league baseball. He was born in Birmingham, Alabama.

\n

On August 16, 2005, Bragan came out of retirement to manage the independent Central League Fort Worth Cats for one game, making him — at 87 years, nine months, and 16 days old — the oldest manager in professional baseball annals (besting by one week Connie Mack, the manager and part-owner of the Philadelphia Athletics).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Bobby_Bragan_1963.png/265px-Bobby_Bragan_1963.png", - "width": 265, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/9a/Bobby_Bragan_1963.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/9a/Bobby_Bragan_1963.png", - "width": 326, - "height": 394 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-27T09:26:17Z", - "description": "American baseball player, coach, manager", - "normalizedtitle": "Bobby Bragan" - } - ], - "year": 1917 - }, - { - "text": "Minni Nurme, Estonian writer and poet (d. 1994)", - "pages": [ - { - "title": "Minni_Nurme", - "displaytitle": "Minni Nurme", - "pageid": 49725333, - "extract": "Minni Katharina Nurme (born 30 October 1917 in Aidu Parish, today Paistu Parish, Viljandi County; died 22 November 1994 in Tallinn) was an Estonian writer.", - "extract_html": "

Minni Katharina Nurme (born 30 October 1917 in Aidu Parish, today Paistu Parish, Viljandi County; died 22 November 1994 in Tallinn) was an Estonian writer.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/0/0f/Minni_Nurme_Estonian_writer.png", - "width": 172, - "height": 250, - "original": "https://upload.wikimedia.org/wikipedia/en/0/0f/Minni_Nurme_Estonian_writer.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/0/0f/Minni_Nurme_Estonian_writer.png", - "width": 172, - "height": 250 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T22:49:21Z", - "description": "Estonian author and writer (1917-1994)", - "normalizedtitle": "Minni Nurme" - } - ], - "year": 1917 - }, - { - "text": "Leon Day, American baseball player (d. 1995)", - "pages": [ - { - "title": "Leon_Day", - "displaytitle": "Leon Day", - "pageid": 339229, - "extract": "Leon Day (October 30, 1916 – March 13, 1995) was an American professional baseball pitcher who spent the majority of his career in the Negro leagues. Recognized as one of the most versatile athletes in the league during his prime, Day could play every position, with the exception of catcher, and often was the starting second baseman or center fielder when he was not on the mound. A right-handed pitcher with a trademark no wind-up delivery, Day excelled at striking batters out, especially with his high-speed fastball. At the same time, he was an above-average contact hitter, which, combined with his effectiveness as a baserunner and his tenacious fielding, helped cement Day as one of the most dynamic players of the era.\nDebuting in the Negro leagues in 1934, Day played with the Baltimore Black Sox, Newark Eagles, and Baltimore Elite Giants during his career. In 1937, Day had the best season of his career as a member of the Eagles, finishing with a perfect record of 13–0 and a batting average over .300.", - "extract_html": "

Leon Day (October 30, 1916 – March 13, 1995) was an American professional baseball pitcher who spent the majority of his career in the Negro leagues. Recognized as one of the most versatile athletes in the league during his prime, Day could play every position, with the exception of catcher, and often was the starting second baseman or center fielder when he was not on the mound. A right-handed pitcher with a trademark no wind-up delivery, Day excelled at striking batters out, especially with his high-speed fastball. At the same time, he was an above-average contact hitter, which, combined with his effectiveness as a baserunner and his tenacious fielding, helped cement Day as one of the most dynamic players of the era.

\n

Debuting in the Negro leagues in 1934, Day played with the Baltimore Black Sox, Newark Eagles, and Baltimore Elite Giants during his career. In 1937, Day had the best season of his career as a member of the Eagles, finishing with a perfect record of 13–0 and a batting average over .300.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/e9/Leon_Day.jpg", - "width": 175, - "height": 250, - "original": "https://upload.wikimedia.org/wikipedia/en/e/e9/Leon_Day.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/e9/Leon_Day.jpg", - "width": 175, - "height": 250 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-19T19:44:04Z", - "description": "American baseball player", - "normalizedtitle": "Leon Day" - } - ], - "year": 1916 - }, - { - "text": "Jane Randolph, American-Swiss actress and singer (d. 2009)", - "pages": [ - { - "title": "Jane_Randolph", - "displaytitle": "Jane Randolph", - "pageid": 2034705, - "extract": "Jane Randolph (born as Jane Roemer; October 30, 1915 – May 4, 2009), was an American film actress.", - "extract_html": "

Jane Randolph (born as Jane Roemer; October 30, 1915 – May 4, 2009), was an American film actress.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Jane_Randolph_in_Yank_magazine.jpg/253px-Jane_Randolph_in_Yank_magazine.jpg", - "width": 253, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/34/Jane_Randolph_in_Yank_magazine.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/34/Jane_Randolph_in_Yank_magazine.jpg", - "width": 317, - "height": 400 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-28T17:57:37Z", - "description": "American film actress", - "normalizedtitle": "Jane Randolph" - } - ], - "year": 1915 - }, - { - "text": "Fred W. Friendly, American journalist and producer (d. 1998)", - "pages": [ - { - "title": "Fred_W._Friendly", - "displaytitle": "Fred W. Friendly", - "pageid": 1159719, - "extract": "Fred W. Friendly (October 30, 1915 – March 3, 1998) was a president of CBS News and the creator, along with Edward R. Murrow, of the documentary television program See It Now.", - "extract_html": "

Fred W. Friendly (October 30, 1915 – March 3, 1998) was a president of CBS News and the creator, along with Edward R. Murrow, of the documentary television program See It Now.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/c1/Fred_friendly.jpg", - "width": 198, - "height": 300, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/c1/Fred_friendly.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/c1/Fred_friendly.jpg", - "width": 198, - "height": 300 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-03T07:35:59Z", - "description": "President of CBS News", - "normalizedtitle": "Fred W. Friendly" - } - ], - "year": 1915 - }, - { - "text": "Léon-Joseph Chavalliaud, French sculptor and educator (d. 1923)", - "pages": [ - { - "title": "Léon-Joseph_Chavalliaud", - "displaytitle": "Léon-Joseph Chavalliaud", - "pageid": 40925599, - "extract": "Léon-Joseph Chavalliaud (29 January 1858 – 5 February 1919) was a French sculptor. He created several notable works in France and in England where he lived for 15 years.\nChavalliaud (sometimes spelt Chavaillaud) was born in Reims at No. 47 Chativesle St. and died at Boissy-sans-Avoir, Yvelines. He is buried in the North Cemetery in Rheims.", - "extract_html": "

Léon-Joseph Chavalliaud (29 January 1858 – 5 February 1919) was a French sculptor. He created several notable works in France and in England where he lived for 15 years.

\n

Chavalliaud (sometimes spelt Chavaillaud) was born in Reims at No. 47 Chativesle St. and died at Boissy-sans-Avoir, Yvelines. He is buried in the North Cemetery in Rheims.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Statue_of_Sarah_Siddons%2C_Paddington_Green.jpg/229px-Statue_of_Sarah_Siddons%2C_Paddington_Green.jpg", - "width": 229, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/8d/Statue_of_Sarah_Siddons%2C_Paddington_Green.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/8d/Statue_of_Sarah_Siddons%2C_Paddington_Green.jpg", - "width": 273, - "height": 382 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-24T18:48:27Z", - "description": "French artist", - "normalizedtitle": "Léon-Joseph Chavalliaud" - } - ], - "year": 1915 - }, - { - "text": "Anna Wing, English actress (d. 2013)", - "pages": [ - { - "title": "Anna_Wing", - "displaytitle": "Anna Wing", - "pageid": 1485130, - "extract": "Anna Eva Lydia Catherine Wing, MBE (30 October 1914 – 7 July 2013) was an English actress who had a long career in television and theatre, but was best known for playing Lou Beale, the matriarch of the Beale family, in EastEnders.", - "extract_html": "

Anna Eva Lydia Catherine Wing, MBE (30 October 1914 – 7 July 2013) was an English actress who had a long career in television and theatre, but was best known for playing Lou Beale, the matriarch of the Beale family, in EastEnders.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3c/Anna_Wing_2_%28cropped%29.jpg", - "width": 92, - "height": 180, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/3c/Anna_Wing_2_%28cropped%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3c/Anna_Wing_2_%28cropped%29.jpg", - "width": 92, - "height": 180 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-26T15:35:30Z", - "description": "English actress", - "normalizedtitle": "Anna Wing" - } - ], - "year": 1914 - }, - { - "text": "Leabua Jonathan, Basotho lawyer and politician, 2nd Prime Minister of Lesotho (d. 1987)", - "pages": [ - { - "title": "Leabua_Jonathan", - "displaytitle": "Leabua Jonathan", - "pageid": 774355, - "extract": "Joseph Leabua Jonathan (30 October 1914 – 5 April 1987) was the second Prime Minister of Lesotho.", - "extract_html": "

Joseph Leabua Jonathan (30 October 1914 – 5 April 1987) was the second Prime Minister of Lesotho.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Minister-president_Jonathan_van_Lesotho_%281970%29.jpg/240px-Minister-president_Jonathan_van_Lesotho_%281970%29.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/4f/Minister-president_Jonathan_van_Lesotho_%281970%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/4f/Minister-president_Jonathan_van_Lesotho_%281970%29.jpg", - "width": 650, - "height": 867 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-08T16:31:30Z", - "description": "Prime Minister of Lesotho", - "normalizedtitle": "Leabua Jonathan" - }, - { - "title": "List_of_Prime_Ministers_of_Lesotho", - "displaytitle": "List of Prime Ministers of Lesotho", - "pageid": 30865612, - "extract": "This is a list of Prime Ministers of Lesotho since the formation of the post of Prime Minister of Lesotho in 1965, to the present day.\nA total of five people have served as Prime Minister of Lesotho (not counting one Acting Prime Ministers and two Chairmen of the Military Council).", - "extract_html": "

This is a list of Prime Ministers of Lesotho since the formation of the post of Prime Minister of Lesotho in 1965, to the present day.

\n

A total of five people have served as Prime Minister of Lesotho (not counting one Acting Prime Ministers and two Chairmen of the Military Council).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Coat_of_arms_of_Lesotho.svg/320px-Coat_of_arms_of_Lesotho.svg.png", - "width": 320, - "height": 282, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/42/Coat_of_arms_of_Lesotho.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/42/Coat_of_arms_of_Lesotho.svg", - "width": 320, - "height": 282 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-21T18:21:36Z", - "description": "Wikimedia list article", - "normalizedtitle": "List of Prime Ministers of Lesotho" - } - ], - "year": 1914 - }, - { - "text": "Richard E. Holz, American minister and composer (d. 1986)", - "pages": [ - { - "title": "Richard_E._Holz", - "displaytitle": "Richard E. Holz", - "pageid": 2440952, - "extract": "Richard E Holz (30 October 1914 – August 1986), was an American brass band composer, served as Chaplain to the U.S. Air Force in New Guinea, Philippines and Japan.", - "extract_html": "

Richard E Holz (30 October 1914 – August 1986), was an American brass band composer, served as Chaplain to the U.S. Air Force in New Guinea, Philippines and Japan.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-05T13:34:42Z", - "description": "American composer", - "normalizedtitle": "Richard E. Holz" - } - ], - "year": 1914 - }, - { - "text": "Ruth Hussey, American actress (d. 2005)", - "pages": [ - { - "title": "Ruth_Hussey", - "displaytitle": "Ruth Hussey", - "pageid": 1291071, - "extract": "Ruth Carol Hussey (October 30, 1911 – April 19, 2005) was an American actress best known for her Academy Award-nominated role as photographer Elizabeth Imbrie in The Philadelphia Story.", - "extract_html": "

Ruth Carol Hussey (October 30, 1911 – April 19, 2005) was an American actress best known for her Academy Award-nominated role as photographer Elizabeth Imbrie in The Philadelphia Story.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/97/Ruth_Hussey_1945.JPG/289px-Ruth_Hussey_1945.JPG", - "width": 289, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/97/Ruth_Hussey_1945.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/97/Ruth_Hussey_1945.JPG", - "width": 665, - "height": 737 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T15:58:01Z", - "description": "actress", - "normalizedtitle": "Ruth Hussey" - } - ], - "year": 1911 - }, - { - "text": "Luciano Sgrizzi, Italian-Monacan organist and composer (d. 1994)", - "pages": [ - { - "title": "Luciano_Sgrizzi", - "displaytitle": "Luciano Sgrizzi", - "pageid": 28768701, - "extract": "Luciano Sgrizzi (30 October 1910 – 11 September 1994) was an Italian harpsichordist, organist, pianist and composer.", - "extract_html": "

Luciano Sgrizzi (30 October 1910 – 11 September 1994) was an Italian harpsichordist, organist, pianist and composer.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2015-09-02T05:18:04Z", - "description": "Italian musician", - "normalizedtitle": "Luciano Sgrizzi" - } - ], - "year": 1910 - }, - { - "text": "Homi J. Bhabha, Indian-French physicist and academic (d. 1966)", - "pages": [ - { - "title": "Homi_J._Bhabha", - "displaytitle": "Homi J. Bhabha", - "pageid": 1245965, - "extract": "Not to be confused with Homi K. Bhabha.\nHomi Jehangir Bhabha (;) (30 October 1909 – 24 January 1966) was an Indian nuclear physicist, founding director, and professor of physics at the Tata Institute of Fundamental Research (TIFR). Colloquially known as \"father of the Indian nuclear programme\", Bhabha was also the founding director of the Atomic Energy Establishment, Trombay (AEET) which is now named the Bhabha Atomic Research Centre in his honor.", - "extract_html": "
Not to be confused with Homi K. Bhabha.
\n

Homi Jehangir Bhabha (;) (30 October 1909 – 24 January 1966) was an Indian nuclear physicist, founding director, and professor of physics at the Tata Institute of Fundamental Research (TIFR). Colloquially known as \"father of the Indian nuclear programme\", Bhabha was also the founding director of the Atomic Energy Establishment, Trombay (AEET) which is now named the Bhabha Atomic Research Centre in his honor.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Homi_Jehangir_Bhabha_1960s.jpg/227px-Homi_Jehangir_Bhabha_1960s.jpg", - "width": 227, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/86/Homi_Jehangir_Bhabha_1960s.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/86/Homi_Jehangir_Bhabha_1960s.jpg", - "width": 664, - "height": 936 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-02T04:46:19Z", - "description": "1909-1966, Indian nuclear physicist", - "normalizedtitle": "Homi J. Bhabha" - } - ], - "year": 1909 - }, - { - "text": "Dmitry Ustinov, Marshal of the Soviet Union (d. 1984)", - "pages": [ - { - "title": "Dmitry_Ustinov", - "displaytitle": "Dmitry Ustinov", - "pageid": 399587, - "extract": "Dmitriy Feodorovich Ustinov 30 October 1908 – 20 December 1984) was Minister of Defence of the Soviet Union from 1976 until his death.", - "extract_html": "

Dmitriy Feodorovich Ustinov 30 October 1908 – 20 December 1984) was Minister of Defence of the Soviet Union from 1976 until his death.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f5/1988_CPA_6001.jpg/223px-1988_CPA_6001.jpg", - "width": 223, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/f5/1988_CPA_6001.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/f5/1988_CPA_6001.jpg", - "width": 533, - "height": 763 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-19T01:46:58Z", - "description": "Soviet military commander and politician", - "normalizedtitle": "Dmitry Ustinov" - }, - { - "title": "Marshal_of_the_Soviet_Union", - "displaytitle": "Marshal of the Soviet Union", - "pageid": 608253, - "extract": "Marshal of the Soviet Union (Russian: Маршал Советского Союза Russian pronunciation: [ˈmarʂəɫ sɐˈvʲɛtskəvə sɐˈjuzə]) was the highest military rank of the Soviet Union.\nThe rank of Marshal of the Soviet Union was created in 1935 and abolished in 1991. Forty-one people held the rank of Marshal of the Soviet Union.", - "extract_html": "

Marshal of the Soviet Union (Russian: Маршал Советского Союза Russian pronunciation: [ˈmarʂəɫ sɐˈvʲɛtskəvə sɐˈjuzə]) was the highest military rank of the Soviet Union.

\n

The rank of Marshal of the Soviet Union was created in 1935 and abolished in 1991. Forty-one people held the rank of Marshal of the Soviet Union.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/5marshals_02.jpg/320px-5marshals_02.jpg", - "width": 320, - "height": 231, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/92/5marshals_02.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/92/5marshals_02.jpg", - "width": 465, - "height": 335 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-20T12:47:21Z", - "description": "military rank", - "normalizedtitle": "Marshal of the Soviet Union" - } - ], - "year": 1908 - }, - { - "text": "U. Muthuramalingam Thevar, Indian dangerous politician (d. 1963)", - "pages": [ - { - "title": "U._Muthuramalingam_Thevar", - "displaytitle": "U. Muthuramalingam Thevar", - "pageid": 3574728, - "extract": "Ukkirapandi Muthuramalingam Thevar (30 October 1908 – 30 October 1963), also known as Pasumpon Muthuramalinga Thevar, was an Indian political leader. He became the leader of the All India Forward Bloc (AIFB) in Tamil Nadu, and was national deputy chairman of the party from 1952 onwards.", - "extract_html": "

Ukkirapandi Muthuramalingam Thevar (30 October 1908 – 30 October 1963), also known as Pasumpon Muthuramalinga Thevar, was an Indian political leader. He became the leader of the All India Forward Bloc (AIFB) in Tamil Nadu, and was national deputy chairman of the party from 1952 onwards.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T17:50:56Z", - "description": "Indian politician", - "normalizedtitle": "U. Muthuramalingam Thevar" - } - ], - "year": 1908 - }, - { - "text": "Patsy Montana, American singer-songwriter and actress (d. 1996)", - "pages": [ - { - "title": "Patsy_Montana", - "displaytitle": "Patsy Montana", - "pageid": 1182210, - "extract": "Ruby Rose Blevins (October 30, 1908 – May 3, 1996), known professionally as Patsy Montana, was an American country music singer, songwriter and actress.", - "extract_html": "

Ruby Rose Blevins (October 30, 1908 – May 3, 1996), known professionally as Patsy Montana, was an American country music singer, songwriter and actress.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/46/Patsy_Montana_Billboard.jpg/314px-Patsy_Montana_Billboard.jpg", - "width": 314, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/46/Patsy_Montana_Billboard.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/46/Patsy_Montana_Billboard.jpg", - "width": 580, - "height": 592 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-09T19:16:53Z", - "description": "American country music singer-songwriter", - "normalizedtitle": "Patsy Montana" - } - ], - "year": 1908 - }, - { - "text": "Peter Smith, English cricketer (d. 1967)", - "pages": [ - { - "title": "Peter_Smith_(cricketer,_born_1908)", - "displaytitle": "Peter Smith (cricketer, born 1908)", - "pageid": 2702978, - "extract": "Thomas Peter Bromley Smith (30 October 1908 – 4 August 1967) was an English cricketer, who played for Essex and England. Smith was one of the five Wisden Cricketers of the Year in 1947. An all-rounder, Smith played for Essex from 1929 to 1951.\nPeter Smith was a leg-break and googly bowler and a lower order hitter of some style. He holds the Essex records both for the number of wickets in a season (172 in 1947), and for wickets in a career (1,610 between 1929 and 1951).\nSmith originally turned up at The Oval for the 1933 Test match against the West Indies, only to find that the telegram he had received was a hoax. It was another thirteen years before he was really selected for his country.", - "extract_html": "

Thomas Peter Bromley Smith (30 October 1908 – 4 August 1967) was an English cricketer, who played for Essex and England. Smith was one of the five Wisden Cricketers of the Year in 1947. An all-rounder, Smith played for Essex from 1929 to 1951.

\n

Peter Smith was a leg-break and googly bowler and a lower order hitter of some style. He holds the Essex records both for the number of wickets in a season (172 in 1947), and for wickets in a career (1,610 between 1929 and 1951).

\n

Smith originally turned up at The Oval for the 1933 Test match against the West Indies, only to find that the telegram he had received was a hoax. It was another thirteen years before he was really selected for his country.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/b/ba/TPB_Smith.jpg/243px-TPB_Smith.jpg", - "width": 243, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/en/b/ba/TPB_Smith.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/b/ba/TPB_Smith.jpg", - "width": 320, - "height": 421 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-10T05:17:21Z", - "description": "English cricketer, born 1908", - "normalizedtitle": "Peter Smith (cricketer, born 1908)" - } - ], - "year": 1908 - }, - { - "text": "Sol Tax, American anthropologist and academic (d. 1995)", - "pages": [ - { - "title": "Sol_Tax", - "displaytitle": "Sol Tax", - "pageid": 2228675, - "extract": "Sol Tax (30 October 1907 – 4 January 1995) was an American anthropologist. He is best known for creating action anthropology and his studies of the Meskwaki, or Fox, Indians, for \"action-anthropological\" research titled the Fox Project, and for founding the academic journal Current Anthropology. He received his doctorate from the University of Chicago in 1935 and, together with Fred Eggan, was a student of Alfred Radcliffe-Brown.\nTax grew up in Milwaukee, Wisconsin. During his formative years he was involved in a number of social clubs. Among these was the Newsboys Republic with which his first encounter was when he was \"arrested\" for breaking their rules. Tax began his undergraduate education at the University of Chicago but had to leave for lack of funds.", - "extract_html": "

Sol Tax (30 October 1907 – 4 January 1995) was an American anthropologist. He is best known for creating action anthropology and his studies of the Meskwaki, or Fox, Indians, for \"action-anthropological\" research titled the Fox Project, and for founding the academic journal Current Anthropology. He received his doctorate from the University of Chicago in 1935 and, together with Fred Eggan, was a student of Alfred Radcliffe-Brown.

\n

Tax grew up in Milwaukee, Wisconsin. During his formative years he was involved in a number of social clubs. Among these was the Newsboys Republic with which his first encounter was when he was \"arrested\" for breaking their rules. Tax began his undergraduate education at the University of Chicago but had to leave for lack of funds.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-02T08:09:07Z", - "description": "American university president", - "normalizedtitle": "Sol Tax" - } - ], - "year": 1907 - }, - { - "text": "Alexander Gode, German-American linguist and translator (d. 1970)", - "pages": [ - { - "title": "Alexander_Gode", - "displaytitle": "Alexander Gode", - "pageid": 525014, - "extract": "Alexander Gottfried Friedrich Gode-von Aesch, or simply Alexander Gode (October 30, 1906 – August 10, 1970), was a German-American linguist, translator and the driving force behind the creation of the auxiliary language Interlingua.", - "extract_html": "

Alexander Gottfried Friedrich Gode-von Aesch, or simply Alexander Gode (October 30, 1906 – August 10, 1970), was a German-American linguist, translator and the driving force behind the creation of the auxiliary language Interlingua.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-09T00:45:56Z", - "description": "German-American linguist and translator", - "normalizedtitle": "Alexander Gode" - } - ], - "year": 1906 - }, - { - "text": "Giuseppe Farina, Italian race car driver (d. 1966)", - "pages": [ - { - "title": "Giuseppe_Farina", - "displaytitle": "Giuseppe Farina", - "pageid": 342972, - "extract": "Dottore Emilio Giuseppe \"Nino\" Farina (30 October 1906 – 30 June 1966), was an Italian racing driver and was the first official Formula One World Champion, gaining the title in 1950. He was also the Italian Champion in 1937, 1938 and 1939.", - "extract_html": "

Dottore Emilio Giuseppe \"Nino\" Farina (30 October 1906 – 30 June 1966), was an Italian racing driver and was the first official Formula One World Champion, gaining the title in 1950. He was also the Italian Champion in 1937, 1938 and 1939.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/NinoFarina.jpg/254px-NinoFarina.jpg", - "width": 254, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/fc/NinoFarina.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/fc/NinoFarina.jpg", - "width": 278, - "height": 350 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-14T17:27:03Z", - "description": "Italian racecar driver", - "normalizedtitle": "Giuseppe Farina" - } - ], - "year": 1906 - }, - { - "text": "Hermann Fegelein, German general (d. 1945)", - "pages": [ - { - "title": "Hermann_Fegelein", - "displaytitle": "Hermann Fegelein", - "pageid": 1801372, - "extract": "Hans Otto Georg Hermann Fegelein (30 October 1906 – 28 April 1945) was a high-ranking commander in the Waffen-SS of Nazi Germany. He was a member of Adolf Hitler's entourage and brother-in-law to Eva Braun through his marriage to her sister, Gretl.\nFegelein joined a cavalry regiment of the Reichswehr in 1925 and transferred to the SS on 10 April 1933. He became a leader of an SS equestrian group, and was in charge of preparation for the equestrian events of the Berlin Olympic Games in 1936. He tried out for the Olympic equestrian team himself, but was eliminated in the qualifying rounds.\nIn September 1939, after the Invasion of Poland, Fegelein commanded the SS Totenkopf Reiterstandarte (Death's-Head Horse Regiment). They were garrisoned in Warsaw until December.", - "extract_html": "

Hans Otto Georg Hermann Fegelein (30 October 1906 – 28 April 1945) was a high-ranking commander in the Waffen-SS of Nazi Germany. He was a member of Adolf Hitler's entourage and brother-in-law to Eva Braun through his marriage to her sister, Gretl.

\n

Fegelein joined a cavalry regiment of the Reichswehr in 1925 and transferred to the SS on 10 April 1933. He became a leader of an SS equestrian group, and was in charge of preparation for the equestrian events of the Berlin Olympic Games in 1936. He tried out for the Olympic equestrian team himself, but was eliminated in the qualifying rounds.

\n

In September 1939, after the Invasion of Poland, Fegelein commanded the SS Totenkopf Reiterstandarte (Death's-Head Horse Regiment). They were garrisoned in Warsaw until December.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/95/Hermann_Fegelein.jpg/223px-Hermann_Fegelein.jpg", - "width": 223, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/95/Hermann_Fegelein.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/95/Hermann_Fegelein.jpg", - "width": 332, - "height": 476 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-26T03:38:59Z", - "description": "General of the Waffen-SS", - "normalizedtitle": "Hermann Fegelein" - } - ], - "year": 1906 - }, - { - "text": "Johnny Miles, English-Canadian runner (d. 2003)", - "pages": [ - { - "title": "Johnny_Miles", - "displaytitle": "Johnny Miles", - "pageid": 8923884, - "extract": "John \"Johnny\" C. Miles, (October 30, 1905 – June 15, 2003) was a Canadian marathon runner.", - "extract_html": "

John \"Johnny\" C. Miles, (October 30, 1905 – June 15, 2003) was a Canadian marathon runner.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/3/30/Johnny_Miles_winning_the_1926_Boston_Marathon.jpg/320px-Johnny_Miles_winning_the_1926_Boston_Marathon.jpg", - "width": 320, - "height": 239, - "original": "https://upload.wikimedia.org/wikipedia/en/3/30/Johnny_Miles_winning_the_1926_Boston_Marathon.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/3/30/Johnny_Miles_winning_the_1926_Boston_Marathon.jpg", - "width": 366, - "height": 273 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-22T21:37:40Z", - "description": "Canadian marathon runner", - "normalizedtitle": "Johnny Miles" - } - ], - "year": 1905 - }, - { - "text": "Ragnar Granit, Finnish-Swedish physiologist and academic, Nobel Prize laureate (d. 1991)", - "pages": [ - { - "title": "Ragnar_Granit", - "displaytitle": "Ragnar Granit", - "pageid": 644063, - "extract": "Ragnar Arthur Granit (October 30, 1900 – March 12, 1991) was a Swedish-speaking Finnish and later Swedish scientist who was awarded the Nobel Prize in Physiology or Medicine in 1967 along with Haldan Keffer Hartline and George Wald \"for their discoveries concerning the primary physiological and chemical visual processes in the eye\".", - "extract_html": "

Ragnar Arthur Granit (October 30, 1900 – March 12, 1991) was a Swedish-speaking Finnish and later Swedish scientist who was awarded the Nobel Prize in Physiology or Medicine in 1967 along with Haldan Keffer Hartline and George Wald \"for their discoveries concerning the primary physiological and chemical visual processes in the eye\".

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Ragnar_Granit.jpg/286px-Ragnar_Granit.jpg", - "width": 286, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/63/Ragnar_Granit.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/63/Ragnar_Granit.jpg", - "width": 350, - "height": 392 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-19T22:38:06Z", - "description": "Finnish scientist", - "normalizedtitle": "Ragnar Granit" - }, - { - "title": "Nobel_Prize_in_Physiology_or_Medicine", - "displaytitle": "Nobel Prize in Physiology or Medicine", - "pageid": 52502, - "extract": "The Nobel Prize in Physiology or Medicine (Swedish: Nobelpriset i fysiologi eller medicin), administered by the Nobel Foundation, is awarded once a year for outstanding discoveries in the fields of life sciences and medicine. It is one of five Nobel Prizes established in 1895 by Swedish chemist Alfred Nobel, the inventor of dynamite, in his will. Nobel was personally interested in experimental physiology and wanted to establish a prize for progress through scientific discoveries in laboratories. The Nobel Prize is presented to the recipient(s) at an annual ceremony on 10 December, the anniversary of Nobel's death, along with a diploma and a certificate for the monetary award. The front side of the medal provides the same profile of Alfred Nobel as depicted on the medals for Physics, Chemistry, and Literature; its reverse side is unique to this medal.", - "extract_html": "

The Nobel Prize in Physiology or Medicine (Swedish: Nobelpriset i fysiologi eller medicin), administered by the Nobel Foundation, is awarded once a year for outstanding discoveries in the fields of life sciences and medicine. It is one of five Nobel Prizes established in 1895 by Swedish chemist Alfred Nobel, the inventor of dynamite, in his will. Nobel was personally interested in experimental physiology and wanted to establish a prize for progress through scientific discoveries in laboratories. The Nobel Prize is presented to the recipient(s) at an annual ceremony on 10 December, the anniversary of Nobel's death, along with a diploma and a certificate for the monetary award. The front side of the medal provides the same profile of Alfred Nobel as depicted on the medals for Physics, Chemistry, and Literature; its reverse side is unique to this medal.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/e/ed/Nobel_Prize.png/320px-Nobel_Prize.png", - "width": 320, - "height": 315, - "original": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png", - "width": 500, - "height": 492 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T05:39:10Z", - "description": "one of five Nobel Prizes established in 1895 by Alfred Nobel", - "normalizedtitle": "Nobel Prize in Physiology or Medicine" - } - ], - "year": 1900 - }, - { - "text": "Bill Terry, American baseball player and manager (d. 1989)", - "pages": [ - { - "title": "Bill_Terry", - "displaytitle": "Bill Terry", - "pageid": 827684, - "extract": "William Harold Terry (October 30, 1898 – January 9, 1989) was a Major League Baseball first baseman and manager. Terry was inducted into the Baseball Hall of Fame in 1954. In 1999, he ranked number 59 on The Sporting News list of the 100 Greatest Baseball Players, and was a nominee for the Major League Baseball All-Century Team. The Giants retired Terry's uniform number 3 in 1984; it is posted on the facade of the upper deck in the left field corner of AT&T Park.", - "extract_html": "

William Harold Terry (October 30, 1898 – January 9, 1989) was a Major League Baseball first baseman and manager. Terry was inducted into the Baseball Hall of Fame in 1954. In 1999, he ranked number 59 on The Sporting News list of the 100 Greatest Baseball Players, and was a nominee for the Major League Baseball All-Century Team. The Giants retired Terry's uniform number 3 in 1984; it is posted on the facade of the upper deck in the left field corner of AT&T Park.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7f/1937_All-Star_managers.jpg/320px-1937_All-Star_managers.jpg", - "width": 320, - "height": 257, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/7f/1937_All-Star_managers.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/7f/1937_All-Star_managers.jpg", - "width": 1024, - "height": 823 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-02T22:29:19Z", - "description": "American baseball player", - "normalizedtitle": "Bill Terry" - } - ], - "year": 1898 - }, - { - "text": "Agustín Lara, Mexican singer-songwriter and actor (d. 1970)", - "pages": [ - { - "title": "Agustín_Lara", - "displaytitle": "Agustín Lara", - "pageid": 2568773, - "extract": "Ángel Agustín María Carlos Fausto Mariano Alfonso del Sagrado Corazón de Jesús Lara y Aguirre del Pino (Spanish pronunciation: [aɣusˈtin ˈlaɾa]; October 30, 1897– November 6, 1970), known as Agustín Lara was a Mexican composer and interpreter of songs and boleros. He is recognized as one of the most popular songwriters of his era. His work was widely appreciated not only in Mexico but also in Central and South America, the Caribbean and Spain.", - "extract_html": "

Ángel Agustín María Carlos Fausto Mariano Alfonso del Sagrado Corazón de Jesús Lara y Aguirre del Pino (Spanish pronunciation: [aɣusˈtin ˈlaɾa]; October 30, 1897– November 6, 1970), known as Agustín Lara was a Mexican composer and interpreter of songs and boleros. He is recognized as one of the most popular songwriters of his era. His work was widely appreciated not only in Mexico but also in Central and South America, the Caribbean and Spain.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/67/Agust%C3%ADn_Lara_%28H._Peraza%29_Madrid_02.jpg/282px-Agust%C3%ADn_Lara_%28H._Peraza%29_Madrid_02.jpg", - "width": 282, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/67/Agust%C3%ADn_Lara_%28H._Peraza%29_Madrid_02.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/67/Agust%C3%ADn_Lara_%28H._Peraza%29_Madrid_02.jpg", - "width": 2933, - "height": 3329 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-09T15:59:40Z", - "description": "Singer and actor", - "normalizedtitle": "Agustín Lara" - } - ], - "year": 1897 - }, - { - "text": "Harry Randall Truman, American soldier (d. 1980)", - "pages": [ - { - "title": "Harry_Randall_Truman", - "displaytitle": "Harry Randall Truman", - "pageid": 39014, - "extract": "Harry Randall Truman (October 30, 1896 – May 18, 1980) was a resident of the U.S. state of Washington who lived on Mount St. Helens. He came to brief fame in the months preceding the volcano's 1980 eruption after he stubbornly refused to leave his home despite evacuation orders, and he is presumed to have been killed in the eruption. He was the owner and caretaker of Mount St. Helens Lodge at Spirit Lake, located at the south end of Spirit Lake at the foot of the mountain in the danger zone at the time of the eruption.\nAfter Truman's death, his family and friends reflected on his love for the mountain.", - "extract_html": "

Harry Randall Truman (October 30, 1896 – May 18, 1980) was a resident of the U.S. state of Washington who lived on Mount St. Helens. He came to brief fame in the months preceding the volcano's 1980 eruption after he stubbornly refused to leave his home despite evacuation orders, and he is presumed to have been killed in the eruption. He was the owner and caretaker of Mount St. Helens Lodge at Spirit Lake, located at the south end of Spirit Lake at the foot of the mountain in the danger zone at the time of the eruption.

\n

After Truman's death, his family and friends reflected on his love for the mountain.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/34/Sthelensharrytruman.jpg", - "width": 281, - "height": 301, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/34/Sthelensharrytruman.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/34/Sthelensharrytruman.jpg", - "width": 281, - "height": 301 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T02:37:03Z", - "description": "Killed when mount St. Helens erupted", - "normalizedtitle": "Harry Randall Truman" - } - ], - "year": 1896 - }, - { - "text": "Kostas Karyotakis, Greek poet and educator (d. 1928)", - "pages": [ - { - "title": "Kostas_Karyotakis", - "displaytitle": "Kostas Karyotakis", - "pageid": 470204, - "extract": "Kostas Karyotakis (Greek: Κώστας Καρυωτάκης, November 11 [OS October 30], 1896 – July 20, 1928) is considered one of the most representative Greek poets of the 1920s and one of the first poets to use iconoclastic themes in Greece. His poetry conveys a great deal of nature, imagery and traces of expressionism and surrealism. He also belongs to the Greek Lost Generation movement. The majority of Karyotakis' contemporaries viewed him in a dim light throughout his lifetime without a pragmatic accountability for their contemptuous views; for after his suicide, the majority began to revert to the view that he was indeed a great poet.", - "extract_html": "

Kostas Karyotakis (Greek: Κώστας Καρυωτάκης, November 11 [OS October 30], 1896 – July 20, 1928) is considered one of the most representative Greek poets of the 1920s and one of the first poets to use iconoclastic themes in Greece. His poetry conveys a great deal of nature, imagery and traces of expressionism and surrealism. He also belongs to the Greek Lost Generation movement. The majority of Karyotakis' contemporaries viewed him in a dim light throughout his lifetime without a pragmatic accountability for their contemptuous views; for after his suicide, the majority began to revert to the view that he was indeed a great poet.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-24T22:00:45Z", - "description": "Greek poet", - "normalizedtitle": "Kostas Karyotakis" - } - ], - "year": 1896 - }, - { - "text": "Ruth Gordon, American actress and screenwriter (d. 1985)", - "pages": [ - { - "title": "Ruth_Gordon", - "displaytitle": "Ruth Gordon", - "pageid": 25866, - "extract": "Ruth Gordon Jones (October 30, 1896 – August 28, 1985), known as Ruth Gordon, was an American film, stage, and television actress, as well as a screenwriter and playwright. Gordon began her career performing on Broadway at age nineteen. Known for her nasal voice and distinctive personality, she gained international recognition and critical acclaim for film roles that continued into her seventies and eighties. Her later work included performances in Rosemary's Baby (1968), Harold and Maude (1971), and the Clint Eastwood films Every Which Way but Loose (1978) and Any Which Way You Can (1980).\nIn addition to her acting career, Gordon wrote numerous plays, film scripts, and books, most notably co-writing the screenplay for the 1949 film Adam's Rib.", - "extract_html": "

Ruth Gordon Jones (October 30, 1896 – August 28, 1985), known as Ruth Gordon, was an American film, stage, and television actress, as well as a screenwriter and playwright. Gordon began her career performing on Broadway at age nineteen. Known for her nasal voice and distinctive personality, she gained international recognition and critical acclaim for film roles that continued into her seventies and eighties. Her later work included performances in Rosemary's Baby (1968), Harold and Maude (1971), and the Clint Eastwood films Every Which Way but Loose (1978) and Any Which Way You Can (1980).

\n

In addition to her acting career, Gordon wrote numerous plays, film scripts, and books, most notably co-writing the screenplay for the 1949 film Adam's Rib.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Garson_Kanin_and_Ruth_Gordon_1946.JPG/255px-Garson_Kanin_and_Ruth_Gordon_1946.JPG", - "width": 255, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/a1/Garson_Kanin_and_Ruth_Gordon_1946.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/a1/Garson_Kanin_and_Ruth_Gordon_1946.JPG", - "width": 759, - "height": 952 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-17T16:10:03Z", - "description": "American playwright and actress", - "normalizedtitle": "Ruth Gordon" - } - ], - "year": 1896 - }, - { - "text": "Antonino Votto, Italian conductor (d. 1985)", - "pages": [ - { - "title": "Antonino_Votto", - "displaytitle": "Antonino Votto", - "pageid": 4091616, - "extract": "Antonino Votto (30 October 1896 - 9 September 1985) was an Italian operatic conductor. Votto developed an extensive discography with the Teatro alla Scala in Milan during the 1950s, when EMI produced the bulk of its studio recordings featuring Maria Callas. Though Votto was a dependable conductor (and the teacher of Riccardo Muti), critics frequently faulted his recordings for their lack of emotional immediacy.", - "extract_html": "

Antonino Votto (30 October 1896 - 9 September 1985) was an Italian operatic conductor. Votto developed an extensive discography with the Teatro alla Scala in Milan during the 1950s, when EMI produced the bulk of its studio recordings featuring Maria Callas. Though Votto was a dependable conductor (and the teacher of Riccardo Muti), critics frequently faulted his recordings for their lack of emotional immediacy.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d5/Antonino_Votto.jpg/320px-Antonino_Votto.jpg", - "width": 320, - "height": 215, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d5/Antonino_Votto.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d5/Antonino_Votto.jpg", - "width": 428, - "height": 287 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-03T01:08:46Z", - "description": "Italian operatic conductor", - "normalizedtitle": "Antonino Votto" - } - ], - "year": 1896 - }, - { - "text": "Rex Cherryman, American actor (d. 1928)", - "pages": [ - { - "title": "Rex_Cherryman", - "displaytitle": "Rex Cherryman", - "pageid": 5723725, - "extract": "Rexford Raymond \"Rex\" Cherryman (October 30, 1896 – August 10, 1928) was an American actor of the stage and screen whose career was most prolific during the 1920s.", - "extract_html": "

Rexford Raymond \"Rex\" Cherryman (October 30, 1896 – August 10, 1928) was an American actor of the stage and screen whose career was most prolific during the 1920s.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/5/52/Cherryman.jpg", - "width": 221, - "height": 250, - "original": "https://upload.wikimedia.org/wikipedia/en/5/52/Cherryman.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/5/52/Cherryman.jpg", - "width": 221, - "height": 250 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-12T18:52:18Z", - "description": "American actor", - "normalizedtitle": "Rex Cherryman" - } - ], - "year": 1896 - }, - { - "text": "Dickinson W. Richards, American physician and physiologist, Nobel Prize laureate (d. 1973)", - "pages": [ - { - "title": "Dickinson_W._Richards", - "displaytitle": "Dickinson W. Richards", - "pageid": 1574866, - "extract": "Dickinson Woodruff Richards, Jr. (October 30, 1895 – February 23, 1973) was an American physician and physiologist.", - "extract_html": "

Dickinson Woodruff Richards, Jr. (October 30, 1895 – February 23, 1973) was an American physician and physiologist.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/7/77/Dickinson_W._Richards_nobel.jpg/226px-Dickinson_W._Richards_nobel.jpg", - "width": 226, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/en/7/77/Dickinson_W._Richards_nobel.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/7/77/Dickinson_W._Richards_nobel.jpg", - "width": 280, - "height": 396 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-12-31T18:45:44Z", - "description": "American physician", - "normalizedtitle": "Dickinson W. Richards" - }, - { - "title": "Nobel_Prize_in_Physiology_or_Medicine", - "displaytitle": "Nobel Prize in Physiology or Medicine", - "pageid": 52502, - "extract": "The Nobel Prize in Physiology or Medicine (Swedish: Nobelpriset i fysiologi eller medicin), administered by the Nobel Foundation, is awarded once a year for outstanding discoveries in the fields of life sciences and medicine. It is one of five Nobel Prizes established in 1895 by Swedish chemist Alfred Nobel, the inventor of dynamite, in his will. Nobel was personally interested in experimental physiology and wanted to establish a prize for progress through scientific discoveries in laboratories. The Nobel Prize is presented to the recipient(s) at an annual ceremony on 10 December, the anniversary of Nobel's death, along with a diploma and a certificate for the monetary award. The front side of the medal provides the same profile of Alfred Nobel as depicted on the medals for Physics, Chemistry, and Literature; its reverse side is unique to this medal.", - "extract_html": "

The Nobel Prize in Physiology or Medicine (Swedish: Nobelpriset i fysiologi eller medicin), administered by the Nobel Foundation, is awarded once a year for outstanding discoveries in the fields of life sciences and medicine. It is one of five Nobel Prizes established in 1895 by Swedish chemist Alfred Nobel, the inventor of dynamite, in his will. Nobel was personally interested in experimental physiology and wanted to establish a prize for progress through scientific discoveries in laboratories. The Nobel Prize is presented to the recipient(s) at an annual ceremony on 10 December, the anniversary of Nobel's death, along with a diploma and a certificate for the monetary award. The front side of the medal provides the same profile of Alfred Nobel as depicted on the medals for Physics, Chemistry, and Literature; its reverse side is unique to this medal.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/e/ed/Nobel_Prize.png/320px-Nobel_Prize.png", - "width": 320, - "height": 315, - "original": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png", - "width": 500, - "height": 492 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T05:39:10Z", - "description": "one of five Nobel Prizes established in 1895 by Alfred Nobel", - "normalizedtitle": "Nobel Prize in Physiology or Medicine" - } - ], - "year": 1895 - }, - { - "text": "Gerhard Domagk, German pathologist and bacteriologist, Nobel Prize laureate (d. 1964)", - "pages": [ - { - "title": "Gerhard_Domagk", - "displaytitle": "Gerhard Domagk", - "pageid": 474958, - "extract": "Gerhard Johannes Paul Domagk (30 October 1895 – 24 April 1964) was a German pathologist and bacteriologist.", - "extract_html": "

Gerhard Johannes Paul Domagk (30 October 1895 – 24 April 1964) was a German pathologist and bacteriologist.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Gerhard_Domagk_nobel.jpg/226px-Gerhard_Domagk_nobel.jpg", - "width": 226, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/df/Gerhard_Domagk_nobel.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/df/Gerhard_Domagk_nobel.jpg", - "width": 280, - "height": 396 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-03T15:39:28Z", - "description": "German bacteriologist", - "normalizedtitle": "Gerhard Domagk" - }, - { - "title": "Nobel_Prize_in_Physiology_or_Medicine", - "displaytitle": "Nobel Prize in Physiology or Medicine", - "pageid": 52502, - "extract": "The Nobel Prize in Physiology or Medicine (Swedish: Nobelpriset i fysiologi eller medicin), administered by the Nobel Foundation, is awarded once a year for outstanding discoveries in the fields of life sciences and medicine. It is one of five Nobel Prizes established in 1895 by Swedish chemist Alfred Nobel, the inventor of dynamite, in his will. Nobel was personally interested in experimental physiology and wanted to establish a prize for progress through scientific discoveries in laboratories. The Nobel Prize is presented to the recipient(s) at an annual ceremony on 10 December, the anniversary of Nobel's death, along with a diploma and a certificate for the monetary award. The front side of the medal provides the same profile of Alfred Nobel as depicted on the medals for Physics, Chemistry, and Literature; its reverse side is unique to this medal.", - "extract_html": "

The Nobel Prize in Physiology or Medicine (Swedish: Nobelpriset i fysiologi eller medicin), administered by the Nobel Foundation, is awarded once a year for outstanding discoveries in the fields of life sciences and medicine. It is one of five Nobel Prizes established in 1895 by Swedish chemist Alfred Nobel, the inventor of dynamite, in his will. Nobel was personally interested in experimental physiology and wanted to establish a prize for progress through scientific discoveries in laboratories. The Nobel Prize is presented to the recipient(s) at an annual ceremony on 10 December, the anniversary of Nobel's death, along with a diploma and a certificate for the monetary award. The front side of the medal provides the same profile of Alfred Nobel as depicted on the medals for Physics, Chemistry, and Literature; its reverse side is unique to this medal.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/e/ed/Nobel_Prize.png/320px-Nobel_Prize.png", - "width": 320, - "height": 315, - "original": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png", - "width": 500, - "height": 492 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T05:39:10Z", - "description": "one of five Nobel Prizes established in 1895 by Alfred Nobel", - "normalizedtitle": "Nobel Prize in Physiology or Medicine" - } - ], - "year": 1895 - }, - { - "text": "Peter Warlock, English composer and critic (d. 1930)", - "pages": [ - { - "title": "Peter_Warlock", - "displaytitle": "Peter Warlock", - "pageid": 296246, - "extract": "Philip Arnold Heseltine (30 October 1894 – 17 December 1930), known by the pseudonym Peter Warlock, was a British composer and music critic. The Warlock name, which reflects Heseltine's interest in occult practices, was used for all his published musical works. He is best known as a composer of songs and other vocal music; he also achieved notoriety in his lifetime through his unconventional and often scandalous lifestyle.\nAs a schoolboy at Eton College, Heseltine met the British composer Frederick Delius, with whom he formed a close friendship. After a failed student career in Oxford and London, Heseltine turned to musical journalism, while developing interests in folk-song and Elizabethan music. His first serious compositions date from around 1915.", - "extract_html": "

Philip Arnold Heseltine (30 October 1894 – 17 December 1930), known by the pseudonym Peter Warlock, was a British composer and music critic. The Warlock name, which reflects Heseltine's interest in occult practices, was used for all his published musical works. He is best known as a composer of songs and other vocal music; he also achieved notoriety in his lifetime through his unconventional and often scandalous lifestyle.

\n

As a schoolboy at Eton College, Heseltine met the British composer Frederick Delius, with whom he formed a close friendship. After a failed student career in Oxford and London, Heseltine turned to musical journalism, while developing interests in folk-song and Elizabethan music. His first serious compositions date from around 1915.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/4/42/Warlock1924.jpg/221px-Warlock1924.jpg", - "width": 221, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/en/4/42/Warlock1924.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/4/42/Warlock1924.jpg", - "width": 331, - "height": 480 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-04-03T12:29:18Z", - "description": "British composer and music critic", - "normalizedtitle": "Peter Warlock" - } - ], - "year": 1894 - }, - { - "text": "Jean Rostand, French biologist and philosopher (d. 1977)", - "pages": [ - { - "title": "Jean_Rostand", - "displaytitle": "Jean Rostand", - "pageid": 2406048, - "extract": "Jean Edmond Cyrus Rostand (30 October 1894, Paris – 4 September 1977, Ville-d'Avray) was a French biologist and philosopher.\nActive as an experimental biologist, Rostand became famous for his work as a science writer, as well as a philosopher and an activist. His scientific work covered a variety of biological fields such as amphibian embryology, parthenogenesis and teratogeny, while his literary output extended into popular science, history of science and philosophy.", - "extract_html": "

Jean Edmond Cyrus Rostand (30 October 1894, Paris – 4 September 1977, Ville-d'Avray) was a French biologist and philosopher.

\n

Active as an experimental biologist, Rostand became famous for his work as a science writer, as well as a philosopher and an activist. His scientific work covered a variety of biological fields such as amphibian embryology, parthenogenesis and teratogeny, while his literary output extended into popular science, history of science and philosophy.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/6b/Denis_Buican.jpeg", - "width": 79, - "height": 111, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/6b/Denis_Buican.jpeg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/6b/Denis_Buican.jpeg", - "width": 79, - "height": 111 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-11T00:29:30Z", - "description": "French writer", - "normalizedtitle": "Jean Rostand" - } - ], - "year": 1894 - }, - { - "text": "Roland Freisler, German soldier, lawyer, and judge (d. 1945)", - "pages": [ - { - "title": "Roland_Freisler", - "displaytitle": "Roland Freisler", - "pageid": 37162, - "extract": "Roland Freisler (30 October 1893 – 3 February 1945) was a jurist and judge of Nazi Germany. He was State Secretary of the Reich Ministry of Justice, and President of the People's Court.", - "extract_html": "

Roland Freisler (30 October 1893 – 3 February 1945) was a jurist and judge of Nazi Germany. He was State Secretary of the Reich Ministry of Justice, and President of the People's Court.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/40/Bundesarchiv_Bild_183-J03238%2C_Roland_Freisler.jpg/227px-Bundesarchiv_Bild_183-J03238%2C_Roland_Freisler.jpg", - "width": 227, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/40/Bundesarchiv_Bild_183-J03238%2C_Roland_Freisler.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/40/Bundesarchiv_Bild_183-J03238%2C_Roland_Freisler.jpg", - "width": 566, - "height": 796 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-21T23:32:11Z", - "description": "German lawyer and judge", - "normalizedtitle": "Roland Freisler" - } - ], - "year": 1893 - }, - { - "text": "Charles Atlas, Italian-American bodybuilder (d. 1972)", - "pages": [ - { - "title": "Charles_Atlas", - "displaytitle": "Charles Atlas", - "pageid": 552505, - "extract": "Charles Atlas (born Angelo Siciliano; October 30, 1892 – December 24, 1972) was an Italian-American bodybuilder best remembered as the developer of a bodybuilding method and its associated exercise program which spawned a landmark advertising campaign featuring his name and likeness; it has been described as one of the longest-lasting and most memorable ad campaigns of all time.\nAtlas trained himself to develop his body from that of a \"scrawny weakling\", eventually becoming the most popular bodybuilder of his day. He took the name \"Charles Atlas\" after a friend told him that he resembled the statue of Atlas on top of a hotel in Coney Island and legally changed his name in 1922. He marketed his first bodybuilding course with health and fitness writer Dr. Frederick Tilney in November 1922. Tilney wrote the original course \"Health & Strength by Charles Atlas\" and the duo ran the company out of Tilney's home for the first six months.", - "extract_html": "

Charles Atlas (born Angelo Siciliano; October 30, 1892 – December 24, 1972) was an Italian-American bodybuilder best remembered as the developer of a bodybuilding method and its associated exercise program which spawned a landmark advertising campaign featuring his name and likeness; it has been described as one of the longest-lasting and most memorable ad campaigns of all time.

\n

Atlas trained himself to develop his body from that of a \"scrawny weakling\", eventually becoming the most popular bodybuilder of his day. He took the name \"Charles Atlas\" after a friend told him that he resembled the statue of Atlas on top of a hotel in Coney Island and legally changed his name in 1922. He marketed his first bodybuilding course with health and fitness writer Dr. Frederick Tilney in November 1922. Tilney wrote the original course \"Health & Strength by Charles Atlas\" and the duo ran the company out of Tilney's home for the first six months.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1d/Charles_Atlas_c1920.jpg/241px-Charles_Atlas_c1920.jpg", - "width": 241, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/1d/Charles_Atlas_c1920.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/1d/Charles_Atlas_c1920.jpg", - "width": 736, - "height": 976 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-03T02:28:06Z", - "description": "American bodybuilder (1892-1972)", - "normalizedtitle": "Charles Atlas" - } - ], - "year": 1893 - }, - { - "text": "Konstantinos Tsiklitiras, Greek footballer and high jumper (d. 1913)", - "pages": [ - { - "title": "Konstantinos_Tsiklitiras", - "displaytitle": "Konstantinos Tsiklitiras", - "pageid": 2784628, - "extract": "Konstantinos \"Kostas\" Tsiklitiras (Greek: Κωνσταντίνος \"Κώστας\" Τσικλητήρας; 30 October 1888 – 10 February 1913) was a Greek athlete and Olympic champion.\nBorn in Pylos, he moved to Athens to study commerce. Tsiklitiras soon took up sports. He practiced football (for Panathinaikos) and water polo, but is best remembered for winning four Olympic medals in standing long jump and standing high jump. He was Greek champion 19 times.\nHis career stopped in 1913 when he volunteered to fight in the Balkan Wars and fought at the Battle of Bizani, although he could avoid conscription he insisted on fighting for his country. He contracted meningitis and died at the age of 24.", - "extract_html": "

Konstantinos \"Kostas\" Tsiklitiras (Greek: Κωνσταντίνος \"Κώστας\" Τσικλητήρας; 30 October 1888 – 10 February 1913) was a Greek athlete and Olympic champion.

\n

Born in Pylos, he moved to Athens to study commerce. Tsiklitiras soon took up sports. He practiced football (for Panathinaikos) and water polo, but is best remembered for winning four Olympic medals in standing long jump and standing high jump. He was Greek champion 19 times.

\n

His career stopped in 1913 when he volunteered to fight in the Balkan Wars and fought at the Battle of Bizani, although he could avoid conscription he insisted on fighting for his country. He contracted meningitis and died at the age of 24.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/1912_Konstantinos_Tsiklitiras2_cropped.JPG/195px-1912_Konstantinos_Tsiklitiras2_cropped.JPG", - "width": 195, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/be/1912_Konstantinos_Tsiklitiras2_cropped.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/be/1912_Konstantinos_Tsiklitiras2_cropped.JPG", - "width": 560, - "height": 918 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-14T14:46:41Z", - "description": "Athletics competitor", - "normalizedtitle": "Konstantinos Tsiklitiras" - } - ], - "year": 1888 - }, - { - "text": "Louis Menges, American soccer player, soldier, and politician (d. 1969)", - "pages": [ - { - "title": "Louis_Menges", - "displaytitle": "Louis Menges", - "pageid": 12218675, - "extract": "Louis John Menges (October 30, 1888 – March 10, 1969) was an American amateur soccer player who competed in the 1904 Summer Olympics.\nHe was born in East St. Louis, Illinois.\nIn 1904 he was a member of the Christian Brothers College team, which won the silver medal in the soccer tournament. He played all four matches as a goalkeeper.\nHe served in the U.S. Army during World War I and was member of Illinois State Senate from 1935 till 1943.", - "extract_html": "

Louis John Menges (October 30, 1888 – March 10, 1969) was an American amateur soccer player who competed in the 1904 Summer Olympics.

\n

He was born in East St. Louis, Illinois.

\n

In 1904 he was a member of the Christian Brothers College team, which won the silver medal in the soccer tournament. He played all four matches as a goalkeeper.

\n

He served in the U.S. Army during World War I and was member of Illinois State Senate from 1935 till 1943.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-09T16:41:40Z", - "description": "American soccer player", - "normalizedtitle": "Louis Menges" - } - ], - "year": 1888 - }, - { - "text": "Sukumar Ray, Indian-Bangladeshi author, poet, and playwright (d. 1923)", - "pages": [ - { - "title": "Sukumar_Ray", - "displaytitle": "Sukumar Ray", - "pageid": 2208844, - "extract": "Sukumar Ray (Bengali: সুকুমার রায়, Sukumār Rāẏ ; 30 October 1887 – 10 September 1923) was an Indian Bengali humorous poet, story writer and playwright who mainly wrote for children. His works such as the collection of poems Abol Tabol (Gibberish), novella HaJaBaRaLa, short story collection Pagla Dashu (Crazy Dashu) and play Chalachittachanchari are considered equal in stature to Alice in Wonderland. More than 80 years after his death, Ray remains one of the most popular of children's writers in both West Bengal and Bangladesh.\nSukumar Ray was the son of children's story writer Upendrakishore Ray, the father of Indian filmmaker Satyajit Ray and grandfather of Bengali filmmaker Sandip Ray. Sukumar Ray was also known as the convenor of \"Monday Club\" (Bengali: মণ্ডা ক্লাব), a weekly gathering of like-minded people at the Ray residence, where the members were free to express their opinions about the world at large.", - "extract_html": "

Sukumar Ray (Bengali: সুকুমার রায়, Sukumār Rāẏ ; 30 October 1887 – 10 September 1923) was an Indian Bengali humorous poet, story writer and playwright who mainly wrote for children. His works such as the collection of poems Abol Tabol (Gibberish), novella HaJaBaRaLa, short story collection Pagla Dashu (Crazy Dashu) and play Chalachittachanchari are considered equal in stature to Alice in Wonderland. More than 80 years after his death, Ray remains one of the most popular of children's writers in both West Bengal and Bangladesh.

\n

Sukumar Ray was the son of children's story writer Upendrakishore Ray, the father of Indian filmmaker Satyajit Ray and grandfather of Bengali filmmaker Sandip Ray. Sukumar Ray was also known as the convenor of \"Monday Club\" (Bengali: মণ্ডা ক্লাব), a weekly gathering of like-minded people at the Ray residence, where the members were free to express their opinions about the world at large.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Sukumar_Ray.jpg/255px-Sukumar_Ray.jpg", - "width": 255, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/a4/Sukumar_Ray.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/a4/Sukumar_Ray.jpg", - "width": 300, - "height": 377 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-22T07:19:29Z", - "description": "Bengali poet", - "normalizedtitle": "Sukumar Ray" - } - ], - "year": 1887 - }, - { - "text": "Zoë Akins, American author, poet, and playwright (d. 1958)", - "pages": [ - { - "title": "Zoe_Akins", - "displaytitle": "Zoe Akins", - "pageid": 2023236, - "extract": "Zoe Akins (October 30, 1886 – October 29, 1958) was an American playwright, poet, and author.", - "extract_html": "

Zoe Akins (October 30, 1886 – October 29, 1958) was an American playwright, poet, and author.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/c/cc/Zo%C3%AB_Akins.jpg", - "width": 220, - "height": 286, - "original": "https://upload.wikimedia.org/wikipedia/en/c/cc/Zo%C3%AB_Akins.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/c/cc/Zo%C3%AB_Akins.jpg", - "width": 220, - "height": 286 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-20T05:09:25Z", - "description": "Playwright, poet, author", - "normalizedtitle": "Zoe Akins" - } - ], - "year": 1886 - }, - { - "text": "Ezra Pound, American poet and critic (d. 1972)", - "pages": [ - { - "title": "Ezra_Pound", - "displaytitle": "Ezra Pound", - "pageid": 44203, - "extract": "Ezra Weston Loomis Pound (30 October 1885 – 1 November 1972) was an expatriate American poet and critic, as well as a major figure in the early modernist movement. His contribution to poetry began with his development of Imagism, a movement derived from classical Chinese and Japanese poetry, stressing clarity, precision and economy of language. His works include Ripostes (1912), Hugh Selwyn Mauberley (1920) and the unfinished 120-section epic, The Cantos (1917–1969).\nPound worked in London during the early 20th century as foreign editor of several American literary magazines, and helped discover and shape the work of contemporaries such as T. S. Eliot, James Joyce, Robert Frost and Ernest Hemingway. Angered by the carnage of World War I, Pound lost faith in England and blamed the war on usury and international capitalism. He moved to Italy in 1924, and throughout the 1930s and 1940s he embraced Benito Mussolini's fascism, expressed support for Adolf Hitler, and wrote for publications owned by the British fascist Oswald Mosley.", - "extract_html": "

Ezra Weston Loomis Pound (30 October 1885 – 1 November 1972) was an expatriate American poet and critic, as well as a major figure in the early modernist movement. His contribution to poetry began with his development of Imagism, a movement derived from classical Chinese and Japanese poetry, stressing clarity, precision and economy of language. His works include Ripostes (1912), Hugh Selwyn Mauberley (1920) and the unfinished 120-section epic, The Cantos (1917–1969).

\n

Pound worked in London during the early 20th century as foreign editor of several American literary magazines, and helped discover and shape the work of contemporaries such as T. S. Eliot, James Joyce, Robert Frost and Ernest Hemingway. Angered by the carnage of World War I, Pound lost faith in England and blamed the war on usury and international capitalism. He moved to Italy in 1924, and throughout the 1930s and 1940s he embraced Benito Mussolini's fascism, expressed support for Adolf Hitler, and wrote for publications owned by the British fascist Oswald Mosley.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Ezra_Pound_2.jpg/253px-Ezra_Pound_2.jpg", - "width": 253, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/87/Ezra_Pound_2.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/87/Ezra_Pound_2.jpg", - "width": 690, - "height": 874 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T10:24:27Z", - "description": "American Imagist poet and critic", - "normalizedtitle": "Ezra Pound" - } - ], - "year": 1885 - }, - { - "text": "Günther von Kluge, Polish-German field marshal (d. 1944)", - "pages": [ - { - "title": "Günther_von_Kluge", - "displaytitle": "Günther von Kluge", - "pageid": 787713, - "extract": "Günther von Kluge (30 October 1882 – 19 August 1944) was a German field marshal during World War II. Kluge held commands on both the Eastern and Western Fronts. Although Kluge was not an active conspirator in the 20 July plot, he committed suicide on 19 August 1944, after having been recalled to Berlin for a meeting with Hitler in the aftermath of the failed coup.", - "extract_html": "

Günther von Kluge (30 October 1882 – 19 August 1944) was a German field marshal during World War II. Kluge held commands on both the Eastern and Western Fronts. Although Kluge was not an active conspirator in the 20 July plot, he committed suicide on 19 August 1944, after having been recalled to Berlin for a meeting with Hitler in the aftermath of the failed coup.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Bundesarchiv_Bild_146-1973-139-14%2C_G%C3%BCnther_v._Kluge.jpg/212px-Bundesarchiv_Bild_146-1973-139-14%2C_G%C3%BCnther_v._Kluge.jpg", - "width": 212, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b5/Bundesarchiv_Bild_146-1973-139-14%2C_G%C3%BCnther_v._Kluge.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b5/Bundesarchiv_Bild_146-1973-139-14%2C_G%C3%BCnther_v._Kluge.jpg", - "width": 528, - "height": 798 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T01:03:21Z", - "description": "German general", - "normalizedtitle": "Günther von Kluge" - } - ], - "year": 1882 - }, - { - "text": "Oldřich Duras, Czech chess player and composer (d. 1957)", - "pages": [ - { - "title": "Oldřich_Duras", - "displaytitle": "Oldřich Duras", - "pageid": 502096, - "extract": "Oldřich Duras (also Důras; 30 October 1882, Pchery, Bohemia, then Austria-Hungary – 5 January 1957, Prague, then Czechoslovakia) was a leading Czech chess master of the early 20th century. FIDE awarded him the title of International Grandmaster in 1950, when the title was first introduced, in recognition of his achievements in the early twentieth century.\nAmong his noted tournament wins (all shared) are Bremen (1905), Prague (1908), Vienna (1908) and Breslau (1912). He had plus scores against Richard Teichmann (+6-2=6), David Janowski (+3-1=0), Carl Schlechter (+2-1=11) and Aron Nimzowitsch (+3-2=3), and level scores with Siegbert Tarrasch and Géza Maróczy.", - "extract_html": "

Oldřich Duras (also Důras; 30 October 1882, Pchery, Bohemia, then Austria-Hungary – 5 January 1957, Prague, then Czechoslovakia) was a leading Czech chess master of the early 20th century. FIDE awarded him the title of International Grandmaster in 1950, when the title was first introduced, in recognition of his achievements in the early twentieth century.

\n

Among his noted tournament wins (all shared) are Bremen (1905), Prague (1908), Vienna (1908) and Breslau (1912). He had plus scores against Richard Teichmann (+6-2=6), David Janowski (+3-1=0), Carl Schlechter (+2-1=11) and Aron Nimzowitsch (+3-2=3), and level scores with Siegbert Tarrasch and Géza Maróczy.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/1/1a/OldrichDuras.jpg", - "width": 204, - "height": 286, - "original": "https://upload.wikimedia.org/wikipedia/en/1/1a/OldrichDuras.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/1/1a/OldrichDuras.jpg", - "width": 204, - "height": 286 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-02-03T16:28:37Z", - "description": "Czech chess player", - "normalizedtitle": "Oldřich Duras" - } - ], - "year": 1882 - }, - { - "text": "William Halsey, Jr., American admiral (d. 1959)", - "pages": [ - { - "title": "William_Halsey_Jr.", - "displaytitle": "William Halsey Jr.", - "pageid": 206587, - "extract": "Fleet Admiral William Frederick Halsey Jr., GBE (October 30, 1882 – August 16, 1959), known as Bill Halsey or \"Bull\" Halsey, was an American admiral in the United States Navy during World War II. He is one of the four individuals to have attained the rank of Fleet Admiral of the United States Navy.\nBorn in Elizabeth, New Jersey, Halsey graduated from the United States Naval Academy in 1904. He served in the Great White Fleet and, during World War I, commanded the USS Shaw. He took command of the aircraft carrier USS Saratoga in 1935 after completing a course in naval aviation, and was promoted to the rank of rear admiral in 1938. At the start of the War in the Pacific (1941–45) Halsey commanded the task force centered on the carrier Enterprise in a series of raids against Japanese-held targets.\nHe was made commander, South Pacific Area and led the Allied forces over the course of the Battle for Guadalcanal (1942–43) and the fighting up the Solomon chain (1942–45). In 1943 he was made commander of the Third Fleet, the post he held through the rest of the war.", - "extract_html": "

Fleet Admiral William Frederick Halsey Jr., GBE (October 30, 1882 – August 16, 1959), known as Bill Halsey or \"Bull\" Halsey, was an American admiral in the United States Navy during World War II. He is one of the four individuals to have attained the rank of Fleet Admiral of the United States Navy.

\n

Born in Elizabeth, New Jersey, Halsey graduated from the United States Naval Academy in 1904. He served in the Great White Fleet and, during World War I, commanded the USS Shaw. He took command of the aircraft carrier USS Saratoga in 1935 after completing a course in naval aviation, and was promoted to the rank of rear admiral in 1938. At the start of the War in the Pacific (1941–45) Halsey commanded the task force centered on the carrier Enterprise in a series of raids against Japanese-held targets.

\n

He was made commander, South Pacific Area and led the Allied forces over the course of the Battle for Guadalcanal (1942–43) and the fighting up the Solomon chain (1942–45). In 1943 he was made commander of the Third Fleet, the post he held through the rest of the war.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/W_Halsey.jpg/254px-W_Halsey.jpg", - "width": 254, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/cd/W_Halsey.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/cd/W_Halsey.jpg", - "width": 590, - "height": 744 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T01:10:13Z", - "description": "United States admiral", - "normalizedtitle": "William Halsey Jr." - } - ], - "year": 1882 - }, - { - "text": "Elizabeth Madox Roberts, American poet and author (d. 1941)", - "pages": [ - { - "title": "Elizabeth_Madox_Roberts", - "displaytitle": "Elizabeth Madox Roberts", - "pageid": 13794566, - "extract": "Elizabeth Madox Roberts (October 30, 1881 – March 13, 1941) was a Kentucky novelist and poet, primarily known for her novels and stories set in central Kentucky's Washington County, including The Time of Man (1926), \"My Heart and My Flesh,\" The Great Meadow (1930) and A Buried Treasure (1931). All of her writings are characterized by her distinct, rhythmic prose. Robert Penn Warren called \"The Time of Man\" a classic; the eminent Southern critic and Southern Review editor, Lewis P. Simpson, counted her among the half dozen major Southern renascence writers.", - "extract_html": "

Elizabeth Madox Roberts (October 30, 1881 – March 13, 1941) was a Kentucky novelist and poet, primarily known for her novels and stories set in central Kentucky's Washington County, including The Time of Man (1926), \"My Heart and My Flesh,\" The Great Meadow (1930) and A Buried Treasure (1931). All of her writings are characterized by her distinct, rhythmic prose. Robert Penn Warren called \"The Time of Man\" a classic; the eminent Southern critic and Southern Review editor, Lewis P. Simpson, counted her among the half dozen major Southern renascence writers.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-15T20:57:05Z", - "description": "novelist and poet", - "normalizedtitle": "Elizabeth Madox Roberts" - } - ], - "year": 1881 - }, - { - "text": "Hugo Celmiņš, Latvian politician, Prime Minister of Latvia (d. 1941)", - "pages": [ - { - "title": "Hugo_Celmiņš", - "displaytitle": "Hugo Celmiņš", - "pageid": 16042285, - "extract": "Hugo Celmiņš (30 October 1877, Lubāna – 30 July 1941, Moscow) was a Latvian politician.", - "extract_html": "

Hugo Celmiņš (30 October 1877, Lubāna – 30 July 1941, Moscow) was a Latvian politician.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-08-03T17:26:40Z", - "description": "Latvian politician", - "normalizedtitle": "Hugo Celmiņš" - }, - { - "title": "Prime_Minister_of_Latvia", - "displaytitle": "Prime Minister of Latvia", - "pageid": 481129, - "extract": "The Prime Minister of Latvia (Latvian: Ministru prezidents) is the most powerful member of the Government of Latvia, and presides over the Latvian Cabinet of Ministers. The Prime Minister is nominated by the President of Latvia, but must be able to obtain the support of a majority of the Saeima (parliament).\nThe tables below display all Latvian Prime Ministers from both the first period of Latvian independence (1918–1940) and since the country regained its independence (1990–present). From 1990 to 6 July 1993, the office was known as Chairman of the Council of Ministers, but is generally considered to have been the same role.\nA direct translation of the official Latvian term is Minister-President.", - "extract_html": "

The Prime Minister of Latvia (Latvian: Ministru prezidents) is the most powerful member of the Government of Latvia, and presides over the Latvian Cabinet of Ministers. The Prime Minister is nominated by the President of Latvia, but must be able to obtain the support of a majority of the Saeima (parliament).

\n

The tables below display all Latvian Prime Ministers from both the first period of Latvian independence (1918–1940) and since the country regained its independence (1990–present). From 1990 to 6 July 1993, the office was known as Chairman of the Council of Ministers, but is generally considered to have been the same role.

\n

A direct translation of the official Latvian term is Minister-President.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7f/Flag_of_the_Prime_Minister_of_Latvia.svg/320px-Flag_of_the_Prime_Minister_of_Latvia.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/7f/Flag_of_the_Prime_Minister_of_Latvia.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/7f/Flag_of_the_Prime_Minister_of_Latvia.svg", - "width": 450, - "height": 300 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-16T09:52:15Z", - "description": "position", - "normalizedtitle": "Prime Minister of Latvia" - } - ], - "year": 1877 - }, - { - "text": "Francisco I. Madero, Mexican businessman and politician, 33rd President of Mexico (d. 1913)", - "pages": [ - { - "title": "Francisco_I._Madero", - "displaytitle": "Francisco I. Madero", - "pageid": 11285, - "extract": "Francisco Ignacio Madero González (Spanish pronunciation: [fɾanˈsisko igˈnasjo maˈðeɾo ɣonˈsales]; 30 October 1873–22 February 1913) was a Mexican revolutionary, writer and statesman who served as the 33rd president of Mexico from 1911 until his assassination in 1913. He was an advocate for social justice and democracy. Madero was notable for challenging Mexican President Porfirio Díaz for the presidency in 1910 and being instrumental in sparking the Mexican Revolution.\nBorn into an extremely wealthy landowning family in northern Mexico, Madero was an unusual politician, who until he ran for president in the 1910 elections, had never held office. In his 1908 book entitled The Presidential Succession in 1910, Madero called on voters to prevent the sixth reelection of Porfirio Díaz, which Madero considered anti-democratic. His vision would lay the foundation for a democratic, 20th-century Mexico, but without polarizing the social classes.", - "extract_html": "

Francisco Ignacio Madero González (Spanish pronunciation: [fɾanˈsisko igˈnasjo maˈðeɾo ɣonˈsales]; 30 October 1873–22 February 1913) was a Mexican revolutionary, writer and statesman who served as the 33rd president of Mexico from 1911 until his assassination in 1913. He was an advocate for social justice and democracy. Madero was notable for challenging Mexican President Porfirio Díaz for the presidency in 1910 and being instrumental in sparking the Mexican Revolution.

\n

Born into an extremely wealthy landowning family in northern Mexico, Madero was an unusual politician, who until he ran for president in the 1910 elections, had never held office. In his 1908 book entitled The Presidential Succession in 1910, Madero called on voters to prevent the sixth reelection of Porfirio Díaz, which Madero considered anti-democratic. His vision would lay the foundation for a democratic, 20th-century Mexico, but without polarizing the social classes.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Francisco_I_Madero-retouched.jpg/268px-Francisco_I_Madero-retouched.jpg", - "width": 268, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/85/Francisco_I_Madero-retouched.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/85/Francisco_I_Madero-retouched.jpg", - "width": 4576, - "height": 5457 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-05T20:33:20Z", - "description": "Mexican revolutionary leader and president", - "normalizedtitle": "Francisco I. Madero" - }, - { - "title": "President_of_Mexico", - "displaytitle": "President of Mexico", - "pageid": 24356889, - "extract": "The President of the United Mexican States (Spanish: Presidente de los Estados Unidos Mexicanos), commonly shortened to President of Mexico, is the head of state and government of Mexico. Under the Constitution, the president is also the Supreme Commander of the Mexican armed forces. The current President is Enrique Peña Nieto, who took office on December 1, 2012.\nCurrently, the office of the President is considered to be revolutionary, in that the powers of office are derived from the Revolutionary Constitution of 1917. Another legacy of the Revolution is its ban on re-election. Mexican presidents are limited to a single six-year term, called a sexenio. No one who has held the post, even on a caretaker basis, is allowed to run or serve again.", - "extract_html": "

The President of the United Mexican States (Spanish: Presidente de los Estados Unidos Mexicanos), commonly shortened to President of Mexico, is the head of state and government of Mexico. Under the Constitution, the president is also the Supreme Commander of the Mexican armed forces. The current President is Enrique Peña Nieto, who took office on December 1, 2012.

\n

Currently, the office of the President is considered to be revolutionary, in that the powers of office are derived from the Revolutionary Constitution of 1917. Another legacy of the Revolution is its ban on re-election. Mexican presidents are limited to a single six-year term, called a sexenio. No one who has held the post, even on a caretaker basis, is allowed to run or serve again.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/90/Seal_of_the_Government_of_Mexico.svg/320px-Seal_of_the_Government_of_Mexico.svg.png", - "width": 320, - "height": 319, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/90/Seal_of_the_Government_of_Mexico.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/90/Seal_of_the_Government_of_Mexico.svg", - "width": 561, - "height": 559 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-24T19:02:35Z", - "description": "head of state of the country of Mexico", - "normalizedtitle": "President of Mexico" - } - ], - "year": 1873 - }, - { - "text": "Buck Freeman, American baseball player (d. 1949)", - "pages": [ - { - "title": "Buck_Freeman", - "displaytitle": "Buck Freeman", - "pageid": 4643940, - "extract": "John Frank \"Buck\" Freeman (October 30, 1871 – June 25, 1949) was an American right fielder in Major League Baseball at the turn of the 20th century.", - "extract_html": "

John Frank \"Buck\" Freeman (October 30, 1871 – June 25, 1949) was an American right fielder in Major League Baseball at the turn of the 20th century.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/6/60/Buck_Freeman.jpg/224px-Buck_Freeman.jpg", - "width": 224, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/en/6/60/Buck_Freeman.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/6/60/Buck_Freeman.jpg", - "width": 270, - "height": 386 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-19T05:05:07Z", - "description": "American baseball player", - "normalizedtitle": "Buck Freeman" - } - ], - "year": 1871 - }, - { - "text": "Paul Valéry, French poet and philosopher (d. 1945)", - "pages": [ - { - "title": "Paul_Valéry", - "displaytitle": "Paul Valéry", - "pageid": 23519, - "extract": "Ambroise Paul Toussaint Jules Valéry (; French: [pɔl valeʁi]; 30 October 1871 – 20 July 1945) was a French poet, essayist, and philosopher. In addition to his poetry and fiction (drama and dialogues), his interests included aphorisms on art, history, letters, music, and current events.", - "extract_html": "

Ambroise Paul Toussaint Jules Valéry (; French: [pɔl valeʁi]; 30 October 1871 – 20 July 1945) was a French poet, essayist, and philosopher. In addition to his poetry and fiction (drama and dialogues), his interests included aphorisms on art, history, letters, music, and current events.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Paul_Val%C3%A9ry.jpg/206px-Paul_Val%C3%A9ry.jpg", - "width": 206, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b1/Paul_Val%C3%A9ry.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b1/Paul_Val%C3%A9ry.jpg", - "width": 1013, - "height": 1569 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-11T21:56:05Z", - "description": "French poet, essayist, and philosopher", - "normalizedtitle": "Paul Valéry" - } - ], - "year": 1871 - }, - { - "text": "Antoine Bourdelle, French sculptor and painter (d. 1929)", - "pages": [ - { - "title": "Antoine_Bourdelle", - "displaytitle": "Antoine Bourdelle", - "pageid": 167835, - "extract": "Antoine Bourdelle (30 October 1861 – 1 October 1929), born Émile Antoine Bordelles, was an influential and prolific French sculptor, painter, and teacher.", - "extract_html": "

Antoine Bourdelle (30 October 1861 – 1 October 1929), born Émile Antoine Bordelles, was an influential and prolific French sculptor, painter, and teacher.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Antoine_Bourdelle-1925.jpg/225px-Antoine_Bourdelle-1925.jpg", - "width": 225, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/ea/Antoine_Bourdelle-1925.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/ea/Antoine_Bourdelle-1925.jpg", - "width": 477, - "height": 679 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-07T11:06:03Z", - "description": "French sculptor", - "normalizedtitle": "Antoine Bourdelle" - } - ], - "year": 1861 - }, - { - "text": "Georges Gilles de la Tourette, French-Swiss physician and neurologist (d. 1904)", - "pages": [ - { - "title": "Georges_Gilles_de_la_Tourette", - "displaytitle": "Georges Gilles de la Tourette", - "pageid": 3100838, - "extract": "Georges Albert Édouard Brutus Gilles de la Tourette (30 October 1857 – 26 May 1904) was a French physician and the namesake of Tourette's syndrome, a neurological condition characterized by physical and verbal tics. He was born in the small town of Saint-Gervais-les-Trois-Clochers in the district of Châtellerault, near the city of Loudun. He could be retrospectively classified as a neurologist, but the field did not exist in his time.\nDuring 1873 Tourette began medical studies at Poitiers. He later relocated to Paris where he became a student, amanuensis, and house physician of his mentor, the influential contemporary neurologist Jean-Martin Charcot, director of the Salpêtrière Hospital. Charcot also helped him to advance in his academic career.", - "extract_html": "

Georges Albert Édouard Brutus Gilles de la Tourette (30 October 1857 – 26 May 1904) was a French physician and the namesake of Tourette's syndrome, a neurological condition characterized by physical and verbal tics. He was born in the small town of Saint-Gervais-les-Trois-Clochers in the district of Châtellerault, near the city of Loudun. He could be retrospectively classified as a neurologist, but the field did not exist in his time.

\n

During 1873 Tourette began medical studies at Poitiers. He later relocated to Paris where he became a student, amanuensis, and house physician of his mentor, the influential contemporary neurologist Jean-Martin Charcot, director of the Salpêtrière Hospital. Charcot also helped him to advance in his academic career.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Georges_Gilles_de_la_Tourette.png/320px-Georges_Gilles_de_la_Tourette.png", - "width": 320, - "height": 287, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b1/Georges_Gilles_de_la_Tourette.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b1/Georges_Gilles_de_la_Tourette.png", - "width": 874, - "height": 783 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-28T22:55:34Z", - "description": "French physician", - "normalizedtitle": "Georges Gilles de la Tourette" - } - ], - "year": 1857 - }, - { - "text": "Alfred Sisley, French-English painter (d. 1899)", - "pages": [ - { - "title": "Alfred_Sisley", - "displaytitle": "Alfred Sisley", - "pageid": 291939, - "extract": "Alfred Sisley (; French: [sislɛ]; 30 October 1839 – 29 January 1899) was an Impressionist landscape painter who was born and spent most of his life in France, but retained British citizenship. He was the most consistent of the Impressionists in his dedication to painting landscape en plein air (i.e., outdoors). He deviated into figure painting only rarely and, unlike Renoir and Pissarro, found that Impressionism fulfilled his artistic needs.\nAmong his important works are a series of paintings of the River Thames, mostly around Hampton Court, executed in 1874, and landscapes depicting places in or near Moret-sur-Loing. The notable paintings of the Seine and its bridges in the former suburbs of Paris are like many of his landscapes, characterized by tranquillity, in pale shades of green, pink, purple, dusty blue and cream.", - "extract_html": "

Alfred Sisley (; French: [sislɛ]; 30 October 1839 – 29 January 1899) was an Impressionist landscape painter who was born and spent most of his life in France, but retained British citizenship. He was the most consistent of the Impressionists in his dedication to painting landscape en plein air (i.e., outdoors). He deviated into figure painting only rarely and, unlike Renoir and Pissarro, found that Impressionism fulfilled his artistic needs.

\n

Among his important works are a series of paintings of the River Thames, mostly around Hampton Court, executed in 1874, and landscapes depicting places in or near Moret-sur-Loing. The notable paintings of the Seine and its bridges in the former suburbs of Paris are like many of his landscapes, characterized by tranquillity, in pale shades of green, pink, purple, dusty blue and cream.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Alfred_Sisley_photo_full.jpg/200px-Alfred_Sisley_photo_full.jpg", - "width": 200, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/bf/Alfred_Sisley_photo_full.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/bf/Alfred_Sisley_photo_full.jpg", - "width": 266, - "height": 425 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-10T17:50:23Z", - "description": "French painter", - "normalizedtitle": "Alfred Sisley" - } - ], - "year": 1839 - }, - { - "text": "Ignace Bourget, Canadian bishop (d. 1885)", - "pages": [ - { - "title": "Ignace_Bourget", - "displaytitle": "Ignace Bourget", - "pageid": 1670865, - "extract": "Ignace Bourget (October 30, 1799 – June 8, 1885) was a French-Canadian Roman Catholic priest who held the title of Bishop of Montreal from 1840 to 1876. Born in Lévis, Quebec in 1799, Bourget entered the clergy at an early age, undertook several courses of religious study, and in 1837 was named co-adjutor bishop of the newly created bishopric of Montreal. Following the death of Jean-Jacques Lartigue in 1840, Bourget became Bishop of Montreal.\nDuring the 1840s, Bourget led the expansion of the Roman Catholic Church in Quebec. He encouraged the immigration of European missionary societies, including the Oblates of Mary Immaculate, the Jesuits, the Society of the Sacred Heart and the Good Shepherd Sisters. He also established entirely new religious communities including the Sisters of Charity of Saint-Hyacinthe, Sisters of Saint Anne, Sisters of Providence, and the Institute of Misericordia Sisters.", - "extract_html": "

Ignace Bourget (October 30, 1799 – June 8, 1885) was a French-Canadian Roman Catholic priest who held the title of Bishop of Montreal from 1840 to 1876. Born in Lévis, Quebec in 1799, Bourget entered the clergy at an early age, undertook several courses of religious study, and in 1837 was named co-adjutor bishop of the newly created bishopric of Montreal. Following the death of Jean-Jacques Lartigue in 1840, Bourget became Bishop of Montreal.

\n

During the 1840s, Bourget led the expansion of the Roman Catholic Church in Quebec. He encouraged the immigration of European missionary societies, including the Oblates of Mary Immaculate, the Jesuits, the Society of the Sacred Heart and the Good Shepherd Sisters. He also established entirely new religious communities including the Sisters of Charity of Saint-Hyacinthe, Sisters of Saint Anne, Sisters of Providence, and the Institute of Misericordia Sisters.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Ignace_Bourget_as_Archbishop.jpg/235px-Ignace_Bourget_as_Archbishop.jpg", - "width": 235, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/f6/Ignace_Bourget_as_Archbishop.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/f6/Ignace_Bourget_as_Archbishop.jpg", - "width": 352, - "height": 480 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-24T15:14:12Z", - "description": "Catholic bishop", - "normalizedtitle": "Ignace Bourget" - } - ], - "year": 1799 - }, - { - "text": "Philippe-Joseph Aubert de Gaspé, Canadian captain and author (d. 1871)", - "pages": [ - { - "title": "Philippe-Joseph_Aubert_de_Gaspé", - "displaytitle": "Philippe-Joseph Aubert de Gaspé", - "pageid": 2568532, - "extract": "For other members of the family, see Aubert de Gaspé (disambiguation).", - "extract_html": "

For other members of the family, see Aubert de Gaspé (disambiguation).
", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-22T16:34:27Z", - "description": "French Canadian writer and seigneur", - "normalizedtitle": "Philippe-Joseph Aubert de Gaspé" - } - ], - "year": 1786 - }, - { - "text": "André Chénier, Turkish-French poet and playwright (d. 1794)", - "pages": [ - { - "title": "André_Chénier", - "displaytitle": "André Chénier", - "pageid": 245369, - "extract": "André Marie Chénier (30 October 1762 – 25 July 1794) was a French poet of Greek and Franco-Levantine origin, associated with the events of the French Revolution of which he was a victim. His sensual, emotive poetry marks him as one of the precursors of the Romantic movement. His career was brought to an abrupt end when he was guillotined for supposed \"crimes against the state\", near the end of the Reign of Terror.", - "extract_html": "

André Marie Chénier (30 October 1762 – 25 July 1794) was a French poet of Greek and Franco-Levantine origin, associated with the events of the French Revolution of which he was a victim. His sensual, emotive poetry marks him as one of the precursors of the Romantic movement. His career was brought to an abrupt end when he was guillotined for supposed \"crimes against the state\", near the end of the Reign of Terror.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a3/Andr%C3%A9_Ch%C3%A9nier_%28by_Joseph-Beno%C3%AEt_Suv%C3%A9e%29.jpg/262px-Andr%C3%A9_Ch%C3%A9nier_%28by_Joseph-Beno%C3%AEt_Suv%C3%A9e%29.jpg", - "width": 262, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/a3/Andr%C3%A9_Ch%C3%A9nier_%28by_Joseph-Beno%C3%AEt_Suv%C3%A9e%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/a3/Andr%C3%A9_Ch%C3%A9nier_%28by_Joseph-Beno%C3%AEt_Suv%C3%A9e%29.jpg", - "width": 461, - "height": 562 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-03T00:13:32Z", - "description": "French poet", - "normalizedtitle": "André Chénier" - } - ], - "year": 1762 - }, - { - "text": "Richard Brinsley Sheridan, Irish-English poet, playwright, and politician, Treasurer of the Navy (d. 1816)", - "pages": [ - { - "title": "Richard_Brinsley_Sheridan", - "displaytitle": "Richard Brinsley Sheridan", - "pageid": 162371, - "extract": "Richard Brinsley Butler Sheridan (30 October 1751 – 7 July 1816) was an Irish satirist, a playwright and poet, and long-term owner of the London Theatre Royal, Drury Lane. He is known for his plays such as The Rivals, The School for Scandal, The Duenna, and A Trip to Scarborough. He was also a Whig MP for 32 years in the British House of Commons for Stafford (1780–1806), Westminster (1806–1807), and Ilchester (1807–1812). He is buried at Poets' Corner in Westminster Abbey.", - "extract_html": "

Richard Brinsley Butler Sheridan (30 October 1751 – 7 July 1816) was an Irish satirist, a playwright and poet, and long-term owner of the London Theatre Royal, Drury Lane. He is known for his plays such as The Rivals, The School for Scandal, The Duenna, and A Trip to Scarborough. He was also a Whig MP for 32 years in the British House of Commons for Stafford (1780–1806), Westminster (1806–1807), and Ilchester (1807–1812). He is buried at Poets' Corner in Westminster Abbey.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/Richard_Brinsley_Sheridan_1751_-_1816.jpg/214px-Richard_Brinsley_Sheridan_1751_-_1816.jpg", - "width": 214, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/3b/Richard_Brinsley_Sheridan_1751_-_1816.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3b/Richard_Brinsley_Sheridan_1751_-_1816.jpg", - "width": 3887, - "height": 5808 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-15T19:28:40Z", - "description": "Irish-British politician, playwright and writer", - "normalizedtitle": "Richard Brinsley Sheridan" - }, - { - "title": "Treasurer_of_the_Navy", - "displaytitle": "Treasurer of the Navy", - "pageid": 338698, - "extract": "The Treasurer of the Navy originally called Treasurer of Marine Causes also originally called Paymaster of the Navy was a civilian officer of the Royal Navy, he was one of the Principle Commissioners of the Navy Board responsible for Naval Finance from 1524 to 1832.", - "extract_html": "

The Treasurer of the Navy originally called Treasurer of Marine Causes also originally called Paymaster of the Navy was a civilian officer of the Royal Navy, he was one of the Principle Commissioners of the Navy Board responsible for Naval Finance from 1524 to 1832.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Naval_Ensign_of_the_United_Kingdom.svg/320px-Naval_Ensign_of_the_United_Kingdom.svg.png", - "width": 320, - "height": 160, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/9c/Naval_Ensign_of_the_United_Kingdom.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/9c/Naval_Ensign_of_the_United_Kingdom.svg", - "width": 720, - "height": 360 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-29T04:42:34Z", - "description": "Wikimedia list article", - "normalizedtitle": "Treasurer of the Navy" - } - ], - "year": 1751 - }, - { - "text": "John Adams, American lawyer and politician, 2nd President of the United States (d. 1826)", - "pages": [ - { - "title": "John_Adams", - "displaytitle": "John Adams", - "pageid": 10410626, - "extract": "John Adams (October 30 [O.S. October 19] 1735 – July 4, 1826) was an American patriot who served as the second President of the United States (1797–1801) and the first Vice President (1789–97). He was a lawyer, diplomat, statesman, political theorist, and, as a Founding Father, a leader of the movement for American independence from Great Britain. He was also a dedicated diarist and correspondent, particularly with his wife and closest advisor Abigail.\nJohn Adams collaborated with his cousin, revolutionary leader Samuel Adams, but he established his own prominence prior to the American Revolution. After the Boston Massacre, he provided a successful (though unpopular) legal defense of the accused British soldiers, in the face of severe local anti-British sentiment and driven by his devotion to the right to counsel and the \"protect[ion] of innocence\". Adams was a delegate from Massachusetts to the Continental Congress, where he played a leading role in persuading Congress to declare independence.", - "extract_html": "

John Adams (October 30 [O.S. October 19] 1735 – July 4, 1826) was an American patriot who served as the second President of the United States (1797–1801) and the first Vice President (1789–97). He was a lawyer, diplomat, statesman, political theorist, and, as a Founding Father, a leader of the movement for American independence from Great Britain. He was also a dedicated diarist and correspondent, particularly with his wife and closest advisor Abigail.

\n

John Adams collaborated with his cousin, revolutionary leader Samuel Adams, but he established his own prominence prior to the American Revolution. After the Boston Massacre, he provided a successful (though unpopular) legal defense of the accused British soldiers, in the face of severe local anti-British sentiment and driven by his devotion to the right to counsel and the \"protect[ion] of innocence\". Adams was a delegate from Massachusetts to the Continental Congress, where he played a leading role in persuading Congress to declare independence.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Official_Presidential_portrait_of_John_Adams_%28by_John_Trumbull%2C_circa_1792%29.jpg/256px-Official_Presidential_portrait_of_John_Adams_%28by_John_Trumbull%2C_circa_1792%29.jpg", - "width": 256, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/df/Official_Presidential_portrait_of_John_Adams_%28by_John_Trumbull%2C_circa_1792%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/df/Official_Presidential_portrait_of_John_Adams_%28by_John_Trumbull%2C_circa_1792%29.jpg", - "width": 2398, - "height": 3000 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T14:08:33Z", - "description": "2nd President of the United States", - "normalizedtitle": "John Adams" - }, - { - "title": "President_of_the_United_States", - "displaytitle": "President of the United States", - "pageid": 24113, - "extract": "The President of the United States (informally referred to as POTUS) is the head of state and head of government of the United States of America. He directs the executive branch of the federal government and is the commander-in-chief of the United States Armed Forces.\nThe U.S. President is considered to be the world's most powerful political figure, as the leader of the only contemporary global superpower. The role includes being responsible of the world's most expensive military with the second largest nuclear arsenal and leading the nation with the largest economy by nominal GDP. The presidency holds significant hard and soft power both domestically and abroad.\nIn ordering the three branches of government, Article II of the Constitution vests the executive power of the United States in the president. The power includes the execution and enforcement of federal law, alongside the responsibility of appointing federal executive, diplomatic, regulatory and judicial officers, and concluding treaties with foreign powers with the advice and consent of the Senate. The president is further empowered to grant federal pardons and reprieves, and to convene and adjourn either or both houses of Congress under extraordinary circumstances.", - "extract_html": "

The President of the United States (informally referred to as POTUS) is the head of state and head of government of the United States of America. He directs the executive branch of the federal government and is the commander-in-chief of the United States Armed Forces.

\n

The U.S. President is considered to be the world's most powerful political figure, as the leader of the only contemporary global superpower. The role includes being responsible of the world's most expensive military with the second largest nuclear arsenal and leading the nation with the largest economy by nominal GDP. The presidency holds significant hard and soft power both domestically and abroad.

\n

In ordering the three branches of government, Article II of the Constitution vests the executive power of the United States in the president. The power includes the execution and enforcement of federal law, alongside the responsibility of appointing federal executive, diplomatic, regulatory and judicial officers, and concluding treaties with foreign powers with the advice and consent of the Senate. The president is further empowered to grant federal pardons and reprieves, and to convene and adjourn either or both houses of Congress under extraordinary circumstances.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Seal_of_the_President_of_the_United_States.svg/320px-Seal_of_the_President_of_the_United_States.svg.png", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/36/Seal_of_the_President_of_the_United_States.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/36/Seal_of_the_President_of_the_United_States.svg", - "width": 2424, - "height": 2425 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T03:56:47Z", - "description": "head of state and of government of the USA", - "normalizedtitle": "President of the United States" - } - ], - "year": 1735 - }, - { - "text": "Giovanni Pietro Francesco Agius de Soldanis, Maltese linguist, historian and cleric (d. 1770)", - "pages": [ - { - "title": "Giovanni_Pietro_Francesco_Agius_de_Soldanis", - "displaytitle": "Giovanni Pietro Francesco Agius de Soldanis", - "pageid": 50325425, - "extract": "Canon Giovanni Pietro Francesco Agius de Soldanis (Maltese: Ġan Piet Franġisk Agius de Soldanis, 30 October 1712 – 30 January 1770), often called de Soldanis (Maltese: Sultana), was a Maltese linguist, historian and cleric from the island of Gozo.", - "extract_html": "

Canon Giovanni Pietro Francesco Agius de Soldanis (Maltese: Ġan Piet Franġisk Agius de Soldanis, 30 October 1712 – 30 January 1770), often called de Soldanis (Maltese: Sultana), was a Maltese linguist, historian and cleric from the island of Gozo.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Bust_of_Giovanni_Pietro_Francesco_Agius_de_Soldanis.jpeg/239px-Bust_of_Giovanni_Pietro_Francesco_Agius_de_Soldanis.jpeg", - "width": 239, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/93/Bust_of_Giovanni_Pietro_Francesco_Agius_de_Soldanis.jpeg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/93/Bust_of_Giovanni_Pietro_Francesco_Agius_de_Soldanis.jpeg", - "width": 1936, - "height": 2592 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-17T20:44:53Z", - "description": "Maltese lawyer (1712-1770)", - "normalizedtitle": "Giovanni Pietro Francesco Agius de Soldanis" - } - ], - "year": 1712 - }, - { - "text": "Sophia Charlotte of Hanover (d. 1705)", - "pages": [ - { - "title": "Sophia_Charlotte_of_Hanover", - "displaytitle": "Sophia Charlotte of Hanover", - "pageid": 1497716, - "extract": "Sophia Charlotte of Hanover (30 October 1668 – 1 February 1705) was the first Queen consort in Prussia as wife of King Frederick I. She was the only daughter of Elector Ernest Augustus of Brunswick-Lüneburg and his wife Sophia of the Palatinate.", - "extract_html": "

Sophia Charlotte of Hanover (30 October 1668 – 1 February 1705) was the first Queen consort in Prussia as wife of King Frederick I. She was the only daughter of Elector Ernest Augustus of Brunswick-Lüneburg and his wife Sophia of the Palatinate.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Sohie_Charlotte_von_Hannover%3B_Queen_of_Preu%C3%9Fen.jpg/241px-Sohie_Charlotte_von_Hannover%3B_Queen_of_Preu%C3%9Fen.jpg", - "width": 241, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d7/Sohie_Charlotte_von_Hannover%3B_Queen_of_Preu%C3%9Fen.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d7/Sohie_Charlotte_von_Hannover%3B_Queen_of_Preu%C3%9Fen.jpg", - "width": 1434, - "height": 1906 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-11T23:22:28Z", - "description": "Prussian royal consort", - "normalizedtitle": "Sophia Charlotte of Hanover" - } - ], - "year": 1668 - }, - { - "text": "Ernest August, Duke of Schleswig-Holstein-Sonderburg-Augustenburg (d. 1731)", - "pages": [ - { - "title": "Ernest_August,_Duke_of_Schleswig-Holstein-Sonderburg-Augustenburg", - "displaytitle": "Ernest August, Duke of Schleswig-Holstein-Sonderburg-Augustenburg", - "pageid": 36884877, - "extract": "Ernest August, Duke of Schleswig-Holstein-Sonderburg-Augustenburg (30 October 1660 – 12 March 1731) was the second son of Duke Ernest Günther and his wife Auguste.\nErnest August converted to Catholicism and became a canon in Strasbourg. However, he later reverted to Lutheranism.\nIn 1692, he succeeded his childless brother Frederick as Duke of Augustenburg. In 1695 he married Baroness Maria Theresia of Weinberg.", - "extract_html": "

Ernest August, Duke of Schleswig-Holstein-Sonderburg-Augustenburg (30 October 1660 – 12 March 1731) was the second son of Duke Ernest Günther and his wife Auguste.

\n

Ernest August converted to Catholicism and became a canon in Strasbourg. However, he later reverted to Lutheranism.

\n

In 1692, he succeeded his childless brother Frederick as Duke of Augustenburg. In 1695 he married Baroness Maria Theresia of Weinberg.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-05-26T21:54:34Z", - "description": "Duke of Schleswig-Holstein-Sonderburg-Augustenburg", - "normalizedtitle": "Ernest August, Duke of Schleswig-Holstein-Sonderburg-Augustenburg" - } - ], - "year": 1660 - }, - { - "text": "Christopher Wren, English physicist, mathematician, and architect, designed St Paul's Cathedral (d. 1723)", - "pages": [ - { - "title": "Christopher_Wren", - "displaytitle": "Christopher Wren", - "pageid": 52946, - "extract": "Sir Christopher Wren PRS (; 30 October 1632 [O.S. 20 October] – 8 March 1723 [O.S. 25 February]) is one of the most highly acclaimed English architects in history. He was accorded responsibility for rebuilding 52 churches in the City of London after the Great Fire in 1666, including what is regarded as his masterpiece, St Paul's Cathedral, on Ludgate Hill, completed in 1710.\nThe principal creative responsibility for a number of the churches is now more commonly attributed to others in his office, especially Nicholas Hawksmoor. Other notable buildings by Wren include the Royal Naval College, Greenwich, and the south front of Hampton Court Palace. The Wren Building, the main building at the College of William and Mary, Virginia, is attributed to Wren.\nEducated in Latin and Aristotelian physics at the University of Oxford, Wren was a notable anatomist, astronomer, geometer, and mathematician-physicist, as well as an architect.", - "extract_html": "

Sir Christopher Wren PRS (; 30 October 1632 [O.S. 20 October] – 8 March 1723 [O.S. 25 February]) is one of the most highly acclaimed English architects in history. He was accorded responsibility for rebuilding 52 churches in the City of London after the Great Fire in 1666, including what is regarded as his masterpiece, St Paul's Cathedral, on Ludgate Hill, completed in 1710.

\n

The principal creative responsibility for a number of the churches is now more commonly attributed to others in his office, especially Nicholas Hawksmoor. Other notable buildings by Wren include the Royal Naval College, Greenwich, and the south front of Hampton Court Palace. The Wren Building, the main building at the College of William and Mary, Virginia, is attributed to Wren.

\n

Educated in Latin and Aristotelian physics at the University of Oxford, Wren was a notable anatomist, astronomer, geometer, and mathematician-physicist, as well as an architect.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Christopher_Wren_by_Godfrey_Kneller_1711.jpg/254px-Christopher_Wren_by_Godfrey_Kneller_1711.jpg", - "width": 254, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/4d/Christopher_Wren_by_Godfrey_Kneller_1711.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/4d/Christopher_Wren_by_Godfrey_Kneller_1711.jpg", - "width": 508, - "height": 640 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-26T05:56:24Z", - "description": "English architect", - "normalizedtitle": "Christopher Wren" - }, - { - "title": "St_Paul's_Cathedral", - "displaytitle": "St Paul's Cathedral", - "pageid": 102198, - "extract": "St Paul's Cathedral, London, is an Anglican cathedral, the seat of the Bishop of London and the mother church of the Diocese of London. It sits on Ludgate Hill at the highest point of the City of London and is a Grade 1 listed building. Its dedication to Paul the Apostle dates back to the original church on this site, founded in AD 604. The present cathedral, dating from the late 17th century, was designed in the English Baroque style by Sir Christopher Wren. Its construction, completed in Wren's lifetime, was part of a major rebuilding programme in the City after the Great Fire of London.\nThe cathedral is one of the most famous and most recognisable sights of London.", - "extract_html": "

St Paul's Cathedral, London, is an Anglican cathedral, the seat of the Bishop of London and the mother church of the Diocese of London. It sits on Ludgate Hill at the highest point of the City of London and is a Grade 1 listed building. Its dedication to Paul the Apostle dates back to the original church on this site, founded in AD 604. The present cathedral, dating from the late 17th century, was designed in the English Baroque style by Sir Christopher Wren. Its construction, completed in Wren's lifetime, was part of a major rebuilding programme in the City after the Great Fire of London.

\n

The cathedral is one of the most famous and most recognisable sights of London.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/St_Pauls_aerial_%28cropped%29.jpg/320px-St_Pauls_aerial_%28cropped%29.jpg", - "width": 320, - "height": 220, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/cb/St_Pauls_aerial_%28cropped%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/cb/St_Pauls_aerial_%28cropped%29.jpg", - "width": 1833, - "height": 1259 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-24T12:33:50Z", - "description": "cathedral in London", - "coordinates": { - "lat": 51.513611, - "lon": -0.098056 - }, - "normalizedtitle": "St Paul's Cathedral" - } - ], - "year": 1632 - }, - { - "text": "Paul Pellisson, French historian and author (d. 1693)", - "pages": [ - { - "title": "Paul_Pellisson", - "displaytitle": "Paul Pellisson", - "pageid": 164943, - "extract": "Paul Pellisson (30 October 1624 – 7 February 1693) was a French author.\nPellisson was born in Béziers, of a distinguished Calvinist family. He studied law at Toulouse, and practised at the bar of Castres. Going to Paris with letters of introduction to Valentin Conrart, a fellow Calvinist, he was introduced to the members of the Académie française. Pellisson undertook to be their historian, and in 1653 published a Relation contenant l'histoire de l’Académie française. He was rewarded with a promise of the next vacant place and permission to be present at their meetings.\nIn 1657 Pellisson became secretary to the minister of finance, Nicolas Fouquet, but when, in 1661, Fouquet was arrested, his secretary was imprisoned in the Bastille.", - "extract_html": "

Paul Pellisson (30 October 1624 – 7 February 1693) was a French author.

\n

Pellisson was born in Béziers, of a distinguished Calvinist family. He studied law at Toulouse, and practised at the bar of Castres. Going to Paris with letters of introduction to Valentin Conrart, a fellow Calvinist, he was introduced to the members of the Académie française. Pellisson undertook to be their historian, and in 1653 published a Relation contenant l'histoire de l’Académie française. He was rewarded with a promise of the next vacant place and permission to be present at their meetings.

\n

In 1657 Pellisson became secretary to the minister of finance, Nicolas Fouquet, but when, in 1661, Fouquet was arrested, his secretary was imprisoned in the Bastille.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Paul_Pellisson.jpg/268px-Paul_Pellisson.jpg", - "width": 268, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/35/Paul_Pellisson.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/35/Paul_Pellisson.jpg", - "width": 429, - "height": 512 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-03-31T18:23:11Z", - "description": "French writer", - "normalizedtitle": "Paul Pellisson" - } - ], - "year": 1624 - }, - { - "text": "Jacques-Nompar de Caumont, duc de La Force, Marshal of France (d. 1652)", - "pages": [ - { - "title": "Jacques-Nompar_de_Caumont,_duc_de_La_Force", - "displaytitle": "Jacques-Nompar de Caumont, duc de La Force", - "pageid": 1200341, - "extract": "Jacques-Nompar de Caumont, duc de La Force (French pronunciation: ​[ʒak nɔ̃paːʁ də komɔ̃ dyk də la fɔʁs]) (30 December 1558 – 10 May 1652) was a marshal of France and peer of France. He was the son of a Huguenot, Francois de Caumont, lord of Castelnau, and Philippe de Beaupoil. He survived the St.", - "extract_html": "

Jacques-Nompar de Caumont, duc de La Force (French pronunciation: ​[ʒak nɔ̃paːʁ də komɔ̃ dyk də la fɔʁs]) (30 December 1558 – 10 May 1652) was a marshal of France and peer of France. He was the son of a Huguenot, Francois de Caumont, lord of Castelnau, and Philippe de Beaupoil. He survived the St.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/61/JacquesNompar_de_Caumont_la_Force.jpg/204px-JacquesNompar_de_Caumont_la_Force.jpg", - "width": 204, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/61/JacquesNompar_de_Caumont_la_Force.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/61/JacquesNompar_de_Caumont_la_Force.jpg", - "width": 509, - "height": 798 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-09-29T16:36:36Z", - "description": "Marshal of France", - "normalizedtitle": "Jacques-Nompar de Caumont, duc de La Force" - } - ], - "year": 1558 - }, - { - "text": "Jacques Amyot, French bishop and translator (d. 1593)", - "pages": [ - { - "title": "Jacques_Amyot", - "displaytitle": "Jacques Amyot", - "pageid": 353907, - "extract": "Jacques Amyot (French: [amjo]; 30 October 1513 – 6 February 1593), French Renaissance writer and translator, was born of poor parents, at Melun.", - "extract_html": "

Jacques Amyot (French: [amjo]; 30 October 1513 – 6 February 1593), French Renaissance writer and translator, was born of poor parents, at Melun.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Jacques_Amyot_par_L%C3%A9onard_Gaultier.jpg/256px-Jacques_Amyot_par_L%C3%A9onard_Gaultier.jpg", - "width": 256, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/4a/Jacques_Amyot_par_L%C3%A9onard_Gaultier.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/4a/Jacques_Amyot_par_L%C3%A9onard_Gaultier.jpg", - "width": 439, - "height": 549 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T17:25:31Z", - "description": "French writer", - "normalizedtitle": "Jacques Amyot" - } - ], - "year": 1513 - }, - { - "text": "Anne d'Alençon, French noblewoman (d. 1562)", - "pages": [ - { - "title": "Anne_d'Alençon", - "displaytitle": "Anne d'Alençon", - "pageid": 9790096, - "extract": "Anne d'Alençon (Italian: Anna d'Alençon) (30 October 1492 – 18 October 1562), Lady of La Guerche, was a French noblewoman and a Marquise of Montferrat as the wife of William IX, Marquis of Montferrat.", - "extract_html": "

Anne d'Alençon (Italian: Anna d'Alençon) (30 October 1492 – 18 October 1562), Lady of La Guerche, was a French noblewoman and a Marquise of Montferrat as the wife of William IX, Marquis of Montferrat.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Macrino_d%E2%80%99Alba%2C_Ritratto_di_Anna_d%E2%80%99Alen%C3%A7on._Tempera_su_tavola._Crea%2C_Santuario_dell%E2%80%99Assunta.jpg/279px-Macrino_d%E2%80%99Alba%2C_Ritratto_di_Anna_d%E2%80%99Alen%C3%A7on._Tempera_su_tavola._Crea%2C_Santuario_dell%E2%80%99Assunta.jpg", - "width": 279, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b2/Macrino_d%E2%80%99Alba%2C_Ritratto_di_Anna_d%E2%80%99Alen%C3%A7on._Tempera_su_tavola._Crea%2C_Santuario_dell%E2%80%99Assunta.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b2/Macrino_d%E2%80%99Alba%2C_Ritratto_di_Anna_d%E2%80%99Alen%C3%A7on._Tempera_su_tavola._Crea%2C_Santuario_dell%E2%80%99Assunta.jpg", - "width": 713, - "height": 819 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-23T18:07:06Z", - "description": "marquise of Montferrat", - "normalizedtitle": "Anne d'Alençon" - } - ], - "year": 1492 - }, - { - "text": "Lucas Watzenrode, Prince-Bishop of Warmia (d. 1512)", - "pages": [ - { - "title": "Lucas_Watzenrode", - "displaytitle": "Lucas Watzenrode", - "pageid": 4248882, - "extract": "Lucas Watzenrode the Younger (sometimes Watzelrode and Waisselrod; German: Lucas Watzenrode der Jüngere; Polish: Łukasz Watzenrode; 30 October 1447 – 29 March 1512) was Prince-Bishop of Warmia (Ermeland) and patron to his nephew, astronomer Nicolaus Copernicus.", - "extract_html": "

Lucas Watzenrode the Younger (sometimes Watzelrode and Waisselrod; German: Lucas Watzenrode der Jüngere; Polish: Łukasz Watzenrode; 30 October 1447 – 29 March 1512) was Prince-Bishop of Warmia (Ermeland) and patron to his nephew, astronomer Nicolaus Copernicus.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/%C5%81ukasz_Watzenrode.jpeg/268px-%C5%81ukasz_Watzenrode.jpeg", - "width": 268, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/01/%C5%81ukasz_Watzenrode.jpeg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/01/%C5%81ukasz_Watzenrode.jpeg", - "width": 335, - "height": 400 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-14T21:59:21Z", - "description": "Prince-Bishop of Warmia", - "normalizedtitle": "Lucas Watzenrode" - } - ], - "year": 1447 - }, - { - "text": "Andrew, Duke of Calabria (d. 1345)", - "pages": [ - { - "title": "Andrew,_Duke_of_Calabria", - "displaytitle": "Andrew, Duke of Calabria", - "pageid": 3038383, - "extract": "Andrew, Duke of Calabria (30 October 1327 – 18 September 1345) was the first husband of Joanna I of Naples, and a son of Charles I of Hungary and brother of Louis I of Hungary.", - "extract_html": "

Andrew, Duke of Calabria (30 October 1327 – 18 September 1345) was the first husband of Joanna I of Naples, and a son of Charles I of Hungary and brother of Louis I of Hungary.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Arms_of_Andre_of_Hungary_and_Naples.svg/274px-Arms_of_Andre_of_Hungary_and_Naples.svg.png", - "width": 274, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/f7/Arms_of_Andre_of_Hungary_and_Naples.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/f7/Arms_of_Andre_of_Hungary_and_Naples.svg", - "width": 410, - "height": 478 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-09T02:31:09Z", - "description": "King consort of Naples", - "normalizedtitle": "Andrew, Duke of Calabria" - } - ], - "year": 1327 - }, - { - "text": "Emperor Chūkyō of Japan (d. 1234)", - "pages": [ - { - "title": "Emperor_Chūkyō", - "displaytitle": "Emperor Chūkyō", - "pageid": 195037, - "extract": "Emperor Chūkyō (仲恭天皇, Chūkyō-tennō) (October 30, 1218 – June 18, 1234) was the 85th emperor of Japan, according to the traditional order of succession. His reign spanned only months in 1221, and he was not officially listed amongst the emperors until 1870 because of doubts caused by the length of his reign.", - "extract_html": "

Emperor Chūkyō (仲恭天皇, Chūkyō-tennō) (October 30, 1218 – June 18, 1234) was the 85th emperor of Japan, according to the traditional order of succession. His reign spanned only months in 1221, and he was not officially listed amongst the emperors until 1870 because of doubts caused by the length of his reign.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-02T16:42:35Z", - "description": "Emperor of Japan", - "normalizedtitle": "Emperor Chūkyō" - } - ], - "year": 1218 - }, - { - "text": "Julia the Elder, Roman daughter of Augustus (d. 14)", - "pages": [ - { - "title": "Julia_the_Elder", - "displaytitle": "Julia the Elder", - "pageid": 2020952, - "extract": "Julia the Elder (30 October 39 BC – AD 14), known to her contemporaries as Julia Caesaris filia or Julia Augusti filia (Classical Latin: IVLIA•CAESARIS•FILIA or IVLIA•AVGVSTI•FILIA), was the daughter and only biological child of Augustus, the first emperor of the Roman Empire. Augustus subsequently adopted several male members of his close family as sons.", - "extract_html": "

Julia the Elder (30 October 39 BC – AD 14), known to her contemporaries as Julia Caesaris filia or Julia Augusti filia (Classical Latin: IVLIA•CAESARIS•FILIA or IVLIA•AVGVSTI•FILIA), was the daughter and only biological child of Augustus, the first emperor of the Roman Empire. Augustus subsequently adopted several male members of his close family as sons.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Berl%C3%ADn_Julia_Augusti.TIF/lossy-page1-212px-Berl%C3%ADn_Julia_Augusti.TIF.jpg", - "width": 212, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/af/Berl%C3%ADn_Julia_Augusti.TIF" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/af/Berl%C3%ADn_Julia_Augusti.TIF", - "width": 717, - "height": 1080 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T04:02:05Z", - "description": "only biological child of Augustus", - "normalizedtitle": "Julia the Elder" - }, - { - "title": "Augustus", - "displaytitle": "Augustus", - "pageid": 1273, - "extract": "Augustus (Latin: Imperātor Caesar Dīvī Fīlius Augustus; 23 September 63 BC – 19 August 14 AD) was the founder of the Roman Principate and considered the first Roman emperor, controlling the Roman Empire from 27 BC until his death in AD 14. He was born Gaius Octavius into an old and wealthy equestrian branch of the plebeian gens Octavia. His maternal great-uncle Julius Caesar was assassinated in 44 BC, and Octavius was named in Caesar's will as his adopted son and heir, then known as Octavianus (Anglicized as Octavian). He, Mark Antony, and Marcus Lepidus formed the Second Triumvirate to defeat the assassins of Caesar. Following their victory at the Battle of Philippi, the Triumvirate divided the Roman Republic among themselves and ruled as military dictators.", - "extract_html": "


Augustus (Latin: Imperātor Caesar Dīvī Fīlius Augustus; 23 September 63 BC – 19 August 14 AD) was the founder of the Roman Principate and considered the first Roman emperor, controlling the Roman Empire from 27 BC until his death in AD 14. He was born Gaius Octavius into an old and wealthy equestrian branch of the plebeian gens Octavia. His maternal great-uncle Julius Caesar was assassinated in 44 BC, and Octavius was named in Caesar's will as his adopted son and heir, then known as Octavianus (Anglicized as Octavian). He, Mark Antony, and Marcus Lepidus formed the Second Triumvirate to defeat the assassins of Caesar. Following their victory at the Battle of Philippi, the Triumvirate divided the Roman Republic among themselves and ruled as military dictators.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/Statue-Augustus.jpg/213px-Statue-Augustus.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/eb/Statue-Augustus.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/eb/Statue-Augustus.jpg", - "width": 1500, - "height": 2250 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T12:18:31Z", - "description": "founder of Julio-Claudian dynasty and first emperor of the Roman Empire", - "normalizedtitle": "Augustus" - } - ], - "year": -39 - } - ], - "deaths": [ - { - "text": "Norm Siebern, American baseball player and scout (b. 1933)", - "pages": [ - { - "title": "Norm_Siebern", - "displaytitle": "Norm Siebern", - "pageid": 4399691, - "extract": "Norman Leroy \"Norm\" Siebern (July 26, 1933 – October 30, 2015) was a Major League Baseball player for the New York Yankees, Kansas City Athletics, Baltimore Orioles, California Angels, San Francisco Giants, and Boston Red Sox from 1956 to 1968. His best season came in 1962 with the A's, when he hit 25 home runs, had 117 runs batted in and a .308 batting average. He might be most remembered however, as being one of the players the Yankees traded for Roger Maris. He was signed by Yankees scout Lou Maguolo.\nSiebern played for the 1956 and 1958 World Series champion Yankees, and nine years later returned to the '67 Series with the Red Sox.\nOn December 11, 1959, he was part of a seven-player trade that sent him along with World Series heroes Don Larsen and Hank Bauer to the Kansas City A's in exchange for outfielder Roger Maris and two other players. Maris ended up breaking Babe Ruth's single-season home run record in 1961.\nThe Orioles acquired Siebern on November 27, 1963 in an exchange of starting first basemen, sending Jim Gentile and $25,000 to the Athletics.", - "extract_html": "

Norman Leroy \"Norm\" Siebern (July 26, 1933 – October 30, 2015) was a Major League Baseball player for the New York Yankees, Kansas City Athletics, Baltimore Orioles, California Angels, San Francisco Giants, and Boston Red Sox from 1956 to 1968. His best season came in 1962 with the A's, when he hit 25 home runs, had 117 runs batted in and a .308 batting average. He might be most remembered however, as being one of the players the Yankees traded for Roger Maris. He was signed by Yankees scout Lou Maguolo.

\n

Siebern played for the 1956 and 1958 World Series champion Yankees, and nine years later returned to the '67 Series with the Red Sox.

\n

On December 11, 1959, he was part of a seven-player trade that sent him along with World Series heroes Don Larsen and Hank Bauer to the Kansas City A's in exchange for outfielder Roger Maris and two other players. Maris ended up breaking Babe Ruth's single-season home run record in 1961.

\n

The Orioles acquired Siebern on November 27, 1963 in an exchange of starting first basemen, sending Jim Gentile and $25,000 to the Athletics.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-01T00:09:48Z", - "description": "American baseball player", - "normalizedtitle": "Norm Siebern" - } - ], - "year": 2015 - }, - { - "text": "Sinan Şamil Sam, Turkish boxer (b. 1974)", - "pages": [ - { - "title": "Sinan_Şamil_Sam", - "displaytitle": "Sinan Şamil Sam", - "pageid": 6498426, - "extract": "Sinan Şamil Sam (23 June 1974 – 30 October 2015) was a Turkish heavyweight professional boxer. As a professional boxer, Sam won the EBU, World Boxing Council and WBC Mediterranean titles in the heavyweight division.", - "extract_html": "

Sinan Şamil Sam (23 June 1974 – 30 October 2015) was a Turkish heavyweight professional boxer. As a professional boxer, Sam won the EBU, World Boxing Council and WBC Mediterranean titles in the heavyweight division.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-02-14T20:43:15Z", - "description": "Turkish boxer", - "normalizedtitle": "Sinan Şamil Sam" - } - ], - "year": 2015 - }, - { - "text": "Mel Daniels, American basketball player and coach (b. 1944)", - "pages": [ - { - "title": "Mel_Daniels", - "displaytitle": "Mel Daniels", - "pageid": 2359991, - "extract": "Melvin Joe \"Mel\" Daniels (July 20, 1944 – October 30, 2015) was an American professional basketball player. He played in the American Basketball Association (ABA) for the Minnesota Muskies, Indiana Pacers, and Memphis Sounds, and in the National Basketball Association for the New York Nets. Daniels was a two-time ABA Most Valuable Player and a seven-time ABA All-Star.", - "extract_html": "

Melvin Joe \"Mel\" Daniels (July 20, 1944 – October 30, 2015) was an American professional basketball player. He played in the American Basketball Association (ABA) for the Minnesota Muskies, Indiana Pacers, and Memphis Sounds, and in the National Basketball Association for the New York Nets. Daniels was a two-time ABA Most Valuable Player and a seven-time ABA All-Star.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Mel_Daniels.jpg/221px-Mel_Daniels.jpg", - "width": 221, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/89/Mel_Daniels.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/89/Mel_Daniels.jpg", - "width": 519, - "height": 751 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-24T18:00:15Z", - "description": "American basketball player and coach", - "normalizedtitle": "Mel Daniels" - } - ], - "year": 2015 - }, - { - "text": "Al Molinaro, American actor (b. 1919)", - "pages": [ - { - "title": "Al_Molinaro", - "displaytitle": "Al Molinaro", - "pageid": 2263266, - "extract": "Albert Francis \"Al\" Molinaro (born Umberto Francesco Molinaro; June 24, 1919 – October 30, 2015) was an American actor. He was known for his television sitcom roles as Al Delvecchio on Happy Days and Officer Murray Greshler on The Odd Couple.", - "extract_html": "

Albert Francis \"Al\" Molinaro (born Umberto Francesco Molinaro; June 24, 1919 – October 30, 2015) was an American actor. He was known for his television sitcom roles as Al Delvecchio on Happy Days and Officer Murray Greshler on The Odd Couple.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Al_Molinaro_Murray_the_cop_Odd_Couple_1974.JPG/244px-Al_Molinaro_Murray_the_cop_Odd_Couple_1974.JPG", - "width": 244, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2d/Al_Molinaro_Murray_the_cop_Odd_Couple_1974.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2d/Al_Molinaro_Murray_the_cop_Odd_Couple_1974.JPG", - "width": 1073, - "height": 1409 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-08T14:14:33Z", - "description": "American actor", - "normalizedtitle": "Al Molinaro" - } - ], - "year": 2015 - }, - { - "text": "Bob Geigel, American wrestler and promoter (b. 1924)", - "pages": [ - { - "title": "Bob_Geigel", - "displaytitle": "Bob Geigel", - "pageid": 4442192, - "extract": "Robert Geigel (October 1, 1924 – October 30, 2014) was an American professional wrestling promoter and also a professional wrestler. Geigel ran the NWA Central States promotion between 1963 and 1986, until it was bought out by Jim Crockett Promotions.", - "extract_html": "

Robert Geigel (October 1, 1924 – October 30, 2014) was an American professional wrestling promoter and also a professional wrestler. Geigel ran the NWA Central States promotion between 1963 and 1986, until it was bought out by Jim Crockett Promotions.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Bob_Geigel.jpg/320px-Bob_Geigel.jpg", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/36/Bob_Geigel.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/36/Bob_Geigel.jpg", - "width": 640, - "height": 479 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T06:35:25Z", - "description": "American professional wrestler", - "normalizedtitle": "Bob Geigel" - } - ], - "year": 2014 - }, - { - "text": "Juan Flavier, Filipino physician and politician (b. 1935)", - "pages": [ - { - "title": "Juan_Flavier", - "displaytitle": "Juan Flavier", - "pageid": 7051462, - "extract": "Juan Martin Flavier (June 23, 1935 – October 30, 2014) was a politician from the Philippines, who served as Secretary of the Department of Health and as senator.", - "extract_html": "

Juan Martin Flavier (June 23, 1935 – October 30, 2014) was a politician from the Philippines, who served as Secretary of the Department of Health and as senator.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-14T23:00:37Z", - "description": "Filipino politician", - "normalizedtitle": "Juan Flavier" - } - ], - "year": 2014 - }, - { - "text": "Renée Asherson, English actress (b. 1915)", - "pages": [ - { - "title": "Renée_Asherson", - "displaytitle": "Renée Asherson", - "pageid": 4298075, - "extract": "Dorothy Renée Ascherson (19 May 1915 – 30 October 2014), known professionally as Renée Asherson, was an English actress. Much of her theatrical career was spent in Shakespearean plays, appearing at such venues as the Old Vic, the Liverpool Playhouse, and the Westminster Theatre. Her first stage appearance was on 17 October 1935, aged 20, and her first major film appearance was in The Way Ahead (1944).", - "extract_html": "

Dorothy Renée Ascherson (19 May 1915 – 30 October 2014), known professionally as Renée Asherson, was an English actress. Much of her theatrical career was spent in Shakespearean plays, appearing at such venues as the Old Vic, the Liverpool Playhouse, and the Westminster Theatre. Her first stage appearance was on 17 October 1935, aged 20, and her first major film appearance was in The Way Ahead (1944).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/e2/Renee_Asherson.png", - "width": 178, - "height": 233, - "original": "https://upload.wikimedia.org/wikipedia/en/e/e2/Renee_Asherson.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/e2/Renee_Asherson.png", - "width": 178, - "height": 233 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-30T21:25:19Z", - "description": "actress", - "normalizedtitle": "Renée Asherson" - } - ], - "year": 2014 - }, - { - "text": "Elijah Malok Aleng, Sudanese general and politician (b. 1937)", - "pages": [ - { - "title": "Elijah_Malok_Aleng", - "displaytitle": "Elijah Malok Aleng", - "pageid": 40445835, - "extract": "Elijah Malok Aleng (28 November 1937 – 30 October 2014, Nairobi, Kenya) was a South Sudanese public servant, general, and politician, from Bor in Jonglei State. He was born on 28 November 1937 at Thianwong village when his family was living among the Pen people in Angakuei in Baidit, about 20 miles northeast of Bor town. His family, which is originally from Awulian in Wangulei, Twic East County, migrated back to be with fellow Awulian kinfolks.He attended Malek Primary School (1950–1953), and then Juba Intermediate School and Juba Commercial Senior Secondary School, graduating He then attended Free University of the Congo, in the present Democratic Republic of Congo (DRC), and later got a scholarship to study in Fribourg Catholic University, Switzerland, from which he obtained a master's degree in Economics in 1972. In 1975 he obtained another Masters in Development Studies and Economic Planning from Wolfson College, Cambridge in the United Kingdom.", - "extract_html": "

Elijah Malok Aleng (28 November 1937 – 30 October 2014, Nairobi, Kenya) was a South Sudanese public servant, general, and politician, from Bor in Jonglei State. He was born on 28 November 1937 at Thianwong village when his family was living among the Pen people in Angakuei in Baidit, about 20 miles northeast of Bor town. His family, which is originally from Awulian in Wangulei, Twic East County, migrated back to be with fellow Awulian kinfolks.He attended Malek Primary School (1950–1953), and then Juba Intermediate School and Juba Commercial Senior Secondary School, graduating He then attended Free University of the Congo, in the present Democratic Republic of Congo (DRC), and later got a scholarship to study in Fribourg Catholic University, Switzerland, from which he obtained a master's degree in Economics in 1972. In 1975 he obtained another Masters in Development Studies and Economic Planning from Wolfson College, Cambridge in the United Kingdom.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-21T02:01:52Z", - "description": "South Sudanese public servant", - "normalizedtitle": "Elijah Malok Aleng" - } - ], - "year": 2014 - }, - { - "text": "Thomas Menino, American businessman and politician, 53rd Mayor of Boston (b. 1942)", - "pages": [ - { - "title": "Thomas_Menino", - "displaytitle": "Thomas Menino", - "pageid": 2665060, - "extract": "Thomas Michael Menino (December 27, 1942 – October 30, 2014) was an American politician who served as the 53rd Mayor of Boston, Massachusetts from 1993 to 2014. He was the city's longest-serving mayor. Before becoming mayor, the Boston native was a member and President of Boston City Council.\nMenino was President of the United States Conference of Mayors (2002–2003) and co-chair and co-founder with Michael Bloomberg of Mayors Against Illegal Guns. In January 2014, he was appointed Professor of the Practice of Political Science at Boston University.", - "extract_html": "

Thomas Michael Menino (December 27, 1942 – October 30, 2014) was an American politician who served as the 53rd Mayor of Boston, Massachusetts from 1993 to 2014. He was the city's longest-serving mayor. Before becoming mayor, the Boston native was a member and President of Boston City Council.

\n

Menino was President of the United States Conference of Mayors (2002–2003) and co-chair and co-founder with Michael Bloomberg of Mayors Against Illegal Guns. In January 2014, he was appointed Professor of the Practice of Political Science at Boston University.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Thomas_Menino%2C_Mayor_of_Boston.jpg/208px-Thomas_Menino%2C_Mayor_of_Boston.jpg", - "width": 208, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/f7/Thomas_Menino%2C_Mayor_of_Boston.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/f7/Thomas_Menino%2C_Mayor_of_Boston.jpg", - "width": 652, - "height": 1000 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-11T15:42:27Z", - "description": "53rd mayor of Boston, Massachusetts, USA", - "normalizedtitle": "Thomas Menino" - }, - { - "title": "Mayor_of_Boston", - "displaytitle": "Mayor of Boston", - "pageid": 853502, - "extract": "The Mayor of Boston is the head of the municipal government in Boston, Massachusetts. Boston has a mayor-council system of government. The mayor's office is in Boston City Hall, in Government Center.", - "extract_html": "

The Mayor of Boston is the head of the municipal government in Boston, Massachusetts. Boston has a mayor-council system of government. The mayor's office is in Boston City Hall, in Government Center.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Seal_of_Boston.svg/320px-Seal_of_Boston.svg.png", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/8e/Seal_of_Boston.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/8e/Seal_of_Boston.svg", - "width": 390, - "height": 390 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-29T01:30:44Z", - "normalizedtitle": "Mayor of Boston" - } - ], - "year": 2014 - }, - { - "text": "Ida Elizabeth Osbourne, Australian actress and radio host (b. 1916)", - "pages": [ - { - "title": "Ida_Elizabeth_Osbourne", - "displaytitle": "Ida Elizabeth Osbourne", - "pageid": 24579895, - "extract": "Ida Elizabeth \"Liz\" Lea MBE (29 August 1916 – 30 October 2014), professionally known as \"Elizabeth\" Osbourne and Ida Elizabeth Jenkins, was an Australian actor and broadcaster, best known as the co-founder of the Australian Broadcasting Commission's long-running children's radio program the Argonauts Club.", - "extract_html": "

Ida Elizabeth \"Liz\" Lea MBE (29 August 1916 – 30 October 2014), professionally known as \"Elizabeth\" Osbourne and Ida Elizabeth Jenkins, was an Australian actor and broadcaster, best known as the co-founder of the Australian Broadcasting Commission's long-running children's radio program the Argonauts Club.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-16T12:43:46Z", - "description": "Australian actress", - "normalizedtitle": "Ida Elizabeth Osbourne" - } - ], - "year": 2014 - }, - { - "text": "Michael Palmer, American physician and author (b. 1942)", - "pages": [ - { - "title": "Michael_Palmer_(novelist)", - "displaytitle": "Michael Palmer (novelist)", - "pageid": 3380565, - "extract": "Michael Stephen Palmer, M.D. (October 9, 1942 – October 30, 2013), was an American physician and author. His novels are often referred to as medical thrillers. Some of his novels have made the New York Times Best Seller List and have been translated into 35 languages.", - "extract_html": "

Michael Stephen Palmer, M.D. (October 9, 1942 – October 30, 2013), was an American physician and author. His novels are often referred to as medical thrillers. Some of his novels have made the New York Times Best Seller List and have been translated into 35 languages.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/1/14/Dr._Michael_Palmer.jpg", - "width": 270, - "height": 309, - "original": "https://upload.wikimedia.org/wikipedia/en/1/14/Dr._Michael_Palmer.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/1/14/Dr._Michael_Palmer.jpg", - "width": 270, - "height": 309 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-21T16:24:52Z", - "description": "novelist", - "normalizedtitle": "Michael Palmer (novelist)" - } - ], - "year": 2013 - }, - { - "text": "Pete Haycock, English singer-songwriter and guitarist (b. 1951)", - "pages": [ - { - "title": "Pete_Haycock", - "displaytitle": "Pete Haycock", - "pageid": 21333603, - "extract": "Peter John Haycock (4 March 1951 – 30 October 2013) was an English musician and film score composer.", - "extract_html": "

Peter John Haycock (4 March 1951 – 30 October 2013) was an English musician and film score composer.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Pete_Haycock_2_-_Climax_Blues_Band_-_1974.jpg/226px-Pete_Haycock_2_-_Climax_Blues_Band_-_1974.jpg", - "width": 226, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/9d/Pete_Haycock_2_-_Climax_Blues_Band_-_1974.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/9d/Pete_Haycock_2_-_Climax_Blues_Band_-_1974.jpg", - "width": 1869, - "height": 2645 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-12T18:25:14Z", - "description": "British musician", - "normalizedtitle": "Pete Haycock" - } - ], - "year": 2013 - }, - { - "text": "Frank Wess, American saxophonist and flute player (b. 1922)", - "pages": [ - { - "title": "Frank_Wess", - "displaytitle": "Frank Wess", - "pageid": 231323, - "extract": "Frank Wellington Wess (January 4, 1922 – October 30, 2013) was an American jazz saxophonist and flautist. In addition to his extensive solo work, Wess is remembered for his time in Count Basie's band from the early 1950s into the '60s.", - "extract_html": "

Frank Wellington Wess (January 4, 1922 – October 30, 2013) was an American jazz saxophonist and flautist. In addition to his extensive solo work, Wess is remembered for his time in Count Basie's band from the early 1950s into the '60s.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Frank_Wess_%26_Jimmy_Owens.jpg/320px-Frank_Wess_%26_Jimmy_Owens.jpg", - "width": 320, - "height": 212, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/9e/Frank_Wess_%26_Jimmy_Owens.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/9e/Frank_Wess_%26_Jimmy_Owens.jpg", - "width": 8581, - "height": 5689 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-06T11:57:27Z", - "description": "American saxophonist and flautist, composer and arranger", - "normalizedtitle": "Frank Wess" - } - ], - "year": 2013 - }, - { - "text": "Bill Currie, American baseball player (b. 1928)", - "pages": [ - { - "title": "Bill_Currie_(baseball)", - "displaytitle": "Bill Currie (baseball)", - "pageid": 32624288, - "extract": "William Cleveland Currie (November 29, 1928 – October 30, 2013) was an American professional baseball player. He was a right-handed pitcher whose ten-year minor league career was punctuated by a three-game stint in Major League Baseball with the 1955 Washington Senators.\nFrom 1950 to 1959, the 6 ft (1.8 m), 175 lb (79 kg) Currie compiled a 92–72 win–loss record in minor league baseball, playing for at least six Major League organizations. His brief trial with Washington in April 1955, however, was marked by his rude treatment by the New York Yankees in his MLB debut at Yankee Stadium. Currie entered the game (the Senators' second of the year) in the fifth inning as his team's third pitcher of the day with New York already leading 7–0. He loaded the bases on two walks and a hit batsman and gave up a two-run single to Whitey Ford in his first inning.", - "extract_html": "

William Cleveland Currie (November 29, 1928 – October 30, 2013) was an American professional baseball player. He was a right-handed pitcher whose ten-year minor league career was punctuated by a three-game stint in Major League Baseball with the 1955 Washington Senators.

\n

From 1950 to 1959, the 6 ft (1.8 m), 175 lb (79 kg) Currie compiled a 92–72 win–loss record in minor league baseball, playing for at least six Major League organizations. His brief trial with Washington in April 1955, however, was marked by his rude treatment by the New York Yankees in his MLB debut at Yankee Stadium. Currie entered the game (the Senators' second of the year) in the fifth inning as his team's third pitcher of the day with New York already leading 7–0. He loaded the bases on two walks and a hit batsman and gave up a two-run single to Whitey Ford in his first inning.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-17T22:00:43Z", - "description": "Baseball player", - "normalizedtitle": "Bill Currie (baseball)" - } - ], - "year": 2013 - }, - { - "text": "Dan Tieman, American basketball player and coach (b. 1940)", - "pages": [ - { - "title": "Dan_Tieman", - "displaytitle": "Dan Tieman", - "pageid": 20202907, - "extract": "Daniel Theodore Tieman (November 30, 1940 – October 30, 2012) was an American basketball player, coach, and teacher.\nHailing from Covington Catholic High School in Kentucky, Tieman played basketball and baseball at Villa Madonna College, today known as Thomas More College. He was the basketball team's MVP in 1960 and 1961, and he appeared in the 1960 NAIA Division I Men's Basketball Tournament. In his college career, he recorded 1,454 points and 319 assists. Tieman was drafted by the Kansas City Steers of the American Basketball League, but was later invited to play with the National Basketball Association's Cincinnati Royals, who were coached by Tieman's college coach, Charlie Wolf. Tieman played in 29 games with the Cincinnati Royals during the 1962–63 NBA season.\nAfter his playing days, he worked at Covington Catholic as a teacher, basketball coach, and administrator.", - "extract_html": "

Daniel Theodore Tieman (November 30, 1940 – October 30, 2012) was an American basketball player, coach, and teacher.

\n

Hailing from Covington Catholic High School in Kentucky, Tieman played basketball and baseball at Villa Madonna College, today known as Thomas More College. He was the basketball team's MVP in 1960 and 1961, and he appeared in the 1960 NAIA Division I Men's Basketball Tournament. In his college career, he recorded 1,454 points and 319 assists. Tieman was drafted by the Kansas City Steers of the American Basketball League, but was later invited to play with the National Basketball Association's Cincinnati Royals, who were coached by Tieman's college coach, Charlie Wolf. Tieman played in 29 games with the Cincinnati Royals during the 1962–63 NBA season.

\n

After his playing days, he worked at Covington Catholic as a teacher, basketball coach, and administrator.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-10T12:14:27Z", - "description": "American basketball player", - "normalizedtitle": "Dan Tieman" - } - ], - "year": 2012 - }, - { - "text": "Samina Raja, Pakistani poet and educator (b. 1961)", - "pages": [ - { - "title": "Samina_Raja", - "displaytitle": "Samina Raja", - "pageid": 20165487, - "extract": "Samina Raja (Urdu: ثمینہ راجہ ‎‎‎ 11 September 1961 – 30 October 2012) was a Pakistani Urdu poet, writer, editor, translator, educationist and broadcaster.", - "extract_html": "

Samina Raja (Urdu: ثمینہ راجہ‎‎ 11 September 1961 – 30 October 2012) was a Pakistani Urdu poet, writer, editor, translator, educationist and broadcaster.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-08T10:20:49Z", - "description": "Pakistani poet, writer", - "normalizedtitle": "Samina Raja" - } - ], - "year": 2012 - }, - { - "text": "Franck Biancheri, French politician (b. 1961)", - "pages": [ - { - "title": "Franck_Biancheri", - "displaytitle": "Franck Biancheri", - "pageid": 11552803, - "extract": "Franck Biancheri (11 March 1961 – 30 October 2012) was the founder of the Newropeans European political party and the leader from June 2006.", - "extract_html": "

Franck Biancheri (11 March 1961 – 30 October 2012) was the founder of the Newropeans European political party and the leader from June 2006.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/Portrait_FB_12-2011.JPG/240px-Portrait_FB_12-2011.JPG", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/ac/Portrait_FB_12-2011.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/ac/Portrait_FB_12-2011.JPG", - "width": 480, - "height": 640 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-05T21:54:25Z", - "description": "French politician", - "normalizedtitle": "Franck Biancheri" - } - ], - "year": 2012 - }, - { - "text": "Harry Mulisch, Dutch author, poet, and playwright (b. 1927)", - "pages": [ - { - "title": "Harry_Mulisch", - "displaytitle": "Harry Mulisch", - "pageid": 74809, - "extract": "Harry Kurt Victor Mulisch ( pronunciation ; 29 July 1927 – 30 October 2010) was a Dutch writer. He wrote more than 80 novels, plays, essays, poems, and philosophical reflections. Mulisch's works have been translated into over 30 languages.\nAlong with Willem Frederik Hermans and Gerard Reve, Mulisch is considered one of the \"Great Three\" of Dutch postwar literature. His novel The Assault (1982) was adapted into a film that won both a Golden Globe and an Academy Award. Mulisch's work is also popular among the country's public: a 2007 poll of NRC Handelsblad readers voted his novel The Discovery of Heaven (1992) the greatest Dutch book ever written.", - "extract_html": "

Harry Kurt Victor Mulisch ( pronunciation ; 29 July 1927 – 30 October 2010) was a Dutch writer. He wrote more than 80 novels, plays, essays, poems, and philosophical reflections. Mulisch's works have been translated into over 30 languages.

\n

Along with Willem Frederik Hermans and Gerard Reve, Mulisch is considered one of the \"Great Three\" of Dutch postwar literature. His novel The Assault (1982) was adapted into a film that won both a Golden Globe and an Academy Award. Mulisch's work is also popular among the country's public: a 2007 poll of NRC Handelsblad readers voted his novel The Discovery of Heaven (1992) the greatest Dutch book ever written.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/81/Harry_Mulisch_%281981%29.jpg/240px-Harry_Mulisch_%281981%29.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/81/Harry_Mulisch_%281981%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/81/Harry_Mulisch_%281981%29.jpg", - "width": 2022, - "height": 2696 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-16T17:23:27Z", - "description": "Dutch author", - "normalizedtitle": "Harry Mulisch" - } - ], - "year": 2010 - }, - { - "text": "Claude Lévi-Strauss, French anthropologist and ethnologist (b. 1908)", - "pages": [ - { - "title": "Claude_Lévi-Strauss", - "displaytitle": "Claude Lévi-Strauss", - "pageid": 19544151, - "extract": "Claude Lévi-Strauss (English: ; French: [klod levi stʁos]; 28 November 1908 – 30 October 2009) was a French anthropologist and ethnologist whose work was key in the development of the theory of structuralism and structural anthropology. He held the chair of Social Anthropology at the Collège de France between 1959 and 1982 and was elected a member of the Académie française in 1973. He received numerous honors from universities and institutions throughout the world and has been called, alongside James George Frazer and Franz Boas, the \"father of modern anthropology\".\nLévi-Strauss argued that the \"savage\" mind had the same structures as the \"civilized\" mind and that human characteristics are the same everywhere. These observations culminated in his famous book Tristes Tropiques that established his position as one of the central figures in the structuralist school of thought. As well as sociology, his ideas reached into many fields in the humanities, including philosophy.", - "extract_html": "

Claude Lévi-Strauss (English: ; French: [klod levi stʁos]; 28 November 1908 – 30 October 2009) was a French anthropologist and ethnologist whose work was key in the development of the theory of structuralism and structural anthropology. He held the chair of Social Anthropology at the Collège de France between 1959 and 1982 and was elected a member of the Académie française in 1973. He received numerous honors from universities and institutions throughout the world and has been called, alongside James George Frazer and Franz Boas, the \"father of modern anthropology\".

\n

Lévi-Strauss argued that the \"savage\" mind had the same structures as the \"civilized\" mind and that human characteristics are the same everywhere. These observations culminated in his famous book Tristes Tropiques that established his position as one of the central figures in the structuralist school of thought. As well as sociology, his ideas reached into many fields in the humanities, including philosophy.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/Levi-strauss_260.jpg/320px-Levi-strauss_260.jpg", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b8/Levi-strauss_260.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b8/Levi-strauss_260.jpg", - "width": 3023, - "height": 2008 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T19:08:39Z", - "description": "French anthropologist and ethnologist", - "normalizedtitle": "Claude Lévi-Strauss" - } - ], - "year": 2009 - }, - { - "text": "Pedro Pompilio, Argentinian businessman (b. 1950)", - "pages": [ - { - "title": "Pedro_Pompilio", - "displaytitle": "Pedro Pompilio", - "pageid": 20820108, - "extract": "Pedro Pompilio (11 November 1949 — 30 October 2008 in Bernal, Buenos Aires) was a football businessman and chairman of Boca Juniors. He began his mandate at the club on 4 December 2007 and it lasted until his death on 30 October 2008 due to heart problems.", - "extract_html": "

Pedro Pompilio (11 November 1949 — 30 October 2008 in Bernal, Buenos Aires) was a football businessman and chairman of Boca Juniors. He began his mandate at the club on 4 December 2007 and it lasted until his death on 30 October 2008 due to heart problems.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-04-17T20:45:15Z", - "description": "Argentine football executive", - "normalizedtitle": "Pedro Pompilio" - } - ], - "year": 2008 - }, - { - "text": "John Woodruff, American runner and colonel (b. 1915)", - "pages": [ - { - "title": "John_Woodruff", - "displaytitle": "John Woodruff", - "pageid": 771512, - "extract": "John Youie \"Long John\" Woodruff (July 5, 1915 – October 30, 2007) was an American middle-distance runner, winner of the 800 m event at the 1936 Summer Olympics.\nWoodruff was only a freshman at the University of Pittsburgh in 1936 when he placed second at the National AAU meet and first at the Olympic Trials (in the heat 1:49,9; WR 1:49,8), earning a spot on the U.S. Olympic team. Woodruff was a member of Alpha Phi Alpha fraternity.\nDespite his inexperience, he was the favorite in the Olympic 800 meter run, and he did not disappoint. In one of the most exciting races in Olympic history, Woodruff became boxed in by other runners and was forced to stop running. He then came from behind to win in 1:52.9. The New York Times described the race:\n\nHe remembers the anguish of his Olympic race: “Phil Edwards, the Canadian doctor, set the pace, and it was very slow.", - "extract_html": "

John Youie \"Long John\" Woodruff (July 5, 1915 – October 30, 2007) was an American middle-distance runner, winner of the 800 m event at the 1936 Summer Olympics.

\n

Woodruff was only a freshman at the University of Pittsburgh in 1936 when he placed second at the National AAU meet and first at the Olympic Trials (in the heat 1:49,9; WR 1:49,8), earning a spot on the U.S. Olympic team. Woodruff was a member of Alpha Phi Alpha fraternity.

\n

Despite his inexperience, he was the favorite in the Olympic 800 meter run, and he did not disappoint. In one of the most exciting races in Olympic history, Woodruff became boxed in by other runners and was forced to stop running. He then came from behind to win in 1:52.9. The New York Times described the race:

\n
\n

He remembers the anguish of his Olympic race: “Phil Edwards, the Canadian doctor, set the pace, and it was very slow.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/John_Woodruff_1936.jpg/158px-John_Woodruff_1936.jpg", - "width": 158, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/1c/John_Woodruff_1936.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/1c/John_Woodruff_1936.jpg", - "width": 472, - "height": 956 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-04-26T06:56:37Z", - "description": "American middle distance runner", - "normalizedtitle": "John Woodruff" - } - ], - "year": 2007 - }, - { - "text": "Linda S. Stein, American businesswoman and manager (b. 1945)", - "pages": [ - { - "title": "Linda_S._Stein", - "displaytitle": "Linda S. Stein", - "pageid": 2435732, - "extract": "Linda Stein (April 24, 1945 – October 30, 2007) was an American rock music manager and real estate broker.", - "extract_html": "

Linda Stein (April 24, 1945 – October 30, 2007) was an American rock music manager and real estate broker.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/d/d1/Linda_Stein.jpg", - "width": 220, - "height": 279, - "original": "https://upload.wikimedia.org/wikipedia/en/d/d1/Linda_Stein.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/d/d1/Linda_Stein.jpg", - "width": 220, - "height": 279 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T15:32:47Z", - "description": "American talent agent", - "normalizedtitle": "Linda S. Stein" - } - ], - "year": 2007 - }, - { - "text": "Robert Goulet, American actor and singer (b. 1933)", - "pages": [ - { - "title": "Robert_Goulet", - "displaytitle": "Robert Goulet", - "pageid": 326309, - "extract": "Robert Gerard Goulet (November 26, 1933 – October 30, 2007) was an American singer and actor of French-Canadian ancestry. Goulet was born and raised in Lawrence, Massachusetts. Cast as Sir Lancelot and originating the role in the 1960 Broadway musical Camelot starring opposite established Broadway stars Richard Burton and Julie Andrews, he achieved instant recognition with his performance and interpretation of the song \"If Ever I Would Leave You\", which became his signature song. His debut in Camelot marked the beginning of a stage, screen, and recording career.", - "extract_html": "

Robert Gerard Goulet (November 26, 1933 – October 30, 2007) was an American singer and actor of French-Canadian ancestry. Goulet was born and raised in Lawrence, Massachusetts. Cast as Sir Lancelot and originating the role in the 1960 Broadway musical Camelot starring opposite established Broadway stars Richard Burton and Julie Andrews, he achieved instant recognition with his performance and interpretation of the song \"If Ever I Would Leave You\", which became his signature song. His debut in Camelot marked the beginning of a stage, screen, and recording career.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Robert_Goulet_photo.jpg/213px-Robert_Goulet_photo.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/bf/Robert_Goulet_photo.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/bf/Robert_Goulet_photo.jpg", - "width": 1190, - "height": 1787 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T15:54:48Z", - "description": "singer and actor of French Canadian ancestry", - "normalizedtitle": "Robert Goulet" - } - ], - "year": 2007 - }, - { - "text": "Washoe, American chimpanzee (b. 1965)", - "pages": [ - { - "title": "Washoe_(chimpanzee)", - "displaytitle": "Washoe (chimpanzee)", - "pageid": 311686, - "extract": "Washoe (c.", - "extract_html": "

Washoe (c.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/4/48/Washoe_chimpanzee.jpg", - "width": 297, - "height": 197, - "original": "https://upload.wikimedia.org/wikipedia/en/4/48/Washoe_chimpanzee.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/4/48/Washoe_chimpanzee.jpg", - "width": 297, - "height": 197 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-27T13:20:46Z", - "description": "chimpanzee research subject", - "normalizedtitle": "Washoe (chimpanzee)" - } - ], - "year": 2007 - }, - { - "text": "Junji Kinoshita, Japanese playwright and scholar (b. 1914)", - "pages": [ - { - "title": "Junji_Kinoshita", - "displaytitle": "Junji Kinoshita", - "pageid": 8246505, - "extract": "Junji Kinoshita (木下 順二, Kinoshita Junji, 2 August 1914 – 30 October 2006) was the foremost playwright of modern drama in postwar Japan. He was also a translator and scholar of Shakespeare's plays. Kinoshita’s achievements were not limited to Japan. He helped to promote theatrical exchanges between Japan and the People’s Republic of China, and he traveled broadly in Europe and Asia.", - "extract_html": "

Junji Kinoshita (木下 順二, Kinoshita Junji, 2 August 1914 – 30 October 2006) was the foremost playwright of modern drama in postwar Japan. He was also a translator and scholar of Shakespeare's plays. Kinoshita’s achievements were not limited to Japan. He helped to promote theatrical exchanges between Japan and the People’s Republic of China, and he traveled broadly in Europe and Asia.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-13T21:03:13Z", - "description": "Japanese writer", - "normalizedtitle": "Junji Kinoshita" - } - ], - "year": 2006 - }, - { - "text": "Clifford Geertz, American anthropologist and author (b. 1926)", - "pages": [ - { - "title": "Clifford_Geertz", - "displaytitle": "Clifford Geertz", - "pageid": 655989, - "extract": "Clifford James Geertz ( ( listen); August 23, 1926 – October 30, 2006) was an American anthropologist who is remembered mostly for his strong support for and influence on the practice of symbolic anthropology, and who was considered \"for three decades...the single most influential cultural anthropologist in the United States.\" He served until his death as professor emeritus at the Institute for Advanced Study, Princeton.", - "extract_html": "

Clifford James Geertz ( ( listen); August 23, 1926 – October 30, 2006) was an American anthropologist who is remembered mostly for his strong support for and influence on the practice of symbolic anthropology, and who was considered \"for three decades...the single most influential cultural anthropologist in the United States.\" He served until his death as professor emeritus at the Institute for Advanced Study, Princeton.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/4/46/Clifford_Geertz.jpg/214px-Clifford_Geertz.jpg", - "width": 214, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/en/4/46/Clifford_Geertz.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/4/46/Clifford_Geertz.jpg", - "width": 258, - "height": 386 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-22T21:55:21Z", - "description": "American anthropologist", - "normalizedtitle": "Clifford Geertz" - } - ], - "year": 2006 - }, - { - "text": "Al López, American baseball player and manager (b. 1908)", - "pages": [ - { - "title": "Al_López", - "displaytitle": "Al López", - "pageid": 747430, - "extract": "Alfonso Ramón López (August 20, 1908 – October 30, 2005) was a Spanish-American professional baseball catcher and manager. He played in Major League Baseball (MLB) for the Brooklyn Robins / Dodgers, Boston Bees, Pittsburgh Pirates, and Cleveland Indians between 1928 and 1947, and was the manager for the Cleveland Indians and the Chicago White Sox from 1951 to 1965 and during portions of the 1968 and 1969 seasons. Due to his Spanish ancestry and \"gentlemanly\" nature, he was nicknamed \"El Señor\".\nAs a player, López was a two-time All-Star known for his defensive skills, leadership, and durability, as he established a major league record for career games played at catcher (1,918) that stood for decades. As a manager, his .584 career winning percentage ranks fourth best in major league history among managers of at least 2,000 games. His 1954 Cleveland Indians and 1959 Chicago White Sox teams were the only squads to interrupt the New York Yankees' string of American League pennants from 1949 to 1964, inclusive.", - "extract_html": "

Alfonso Ramón López (August 20, 1908 – October 30, 2005) was a Spanish-American professional baseball catcher and manager. He played in Major League Baseball (MLB) for the Brooklyn Robins / Dodgers, Boston Bees, Pittsburgh Pirates, and Cleveland Indians between 1928 and 1947, and was the manager for the Cleveland Indians and the Chicago White Sox from 1951 to 1965 and during portions of the 1968 and 1969 seasons. Due to his Spanish ancestry and \"gentlemanly\" nature, he was nicknamed \"El Señor\".

\n

As a player, López was a two-time All-Star known for his defensive skills, leadership, and durability, as he established a major league record for career games played at catcher (1,918) that stood for decades. As a manager, his .584 career winning percentage ranks fourth best in major league history among managers of at least 2,000 games. His 1954 Cleveland Indians and 1959 Chicago White Sox teams were the only squads to interrupt the New York Yankees' string of American League pennants from 1949 to 1964, inclusive.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Al_Lopez_-_WJROneOfAKind.jpg/320px-Al_Lopez_-_WJROneOfAKind.jpg", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/48/Al_Lopez_-_WJROneOfAKind.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/48/Al_Lopez_-_WJROneOfAKind.jpg", - "width": 640, - "height": 480 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-28T03:05:16Z", - "description": "American Major League Baseball players, catcher, Major League Baseball managers, Baseball Hall of Fame member", - "normalizedtitle": "Al López" - } - ], - "year": 2005 - }, - { - "text": "Shamsher Singh Sheri, Indian politician (b. 1942)", - "pages": [ - { - "title": "Shamsher_Singh_Sheri", - "displaytitle": "Shamsher Singh Sheri", - "pageid": 3348114, - "extract": "Shamsher Singh Sheri (1942 – 30 October 2005), commonly known by his nom de guerre, Karam Singh (Hindi pronunciation: [krm sɪŋɦ]), was a communist leader and a Politburo member of the CPI (Maoist) in India.", - "extract_html": "

Shamsher Singh Sheri (1942 – 30 October 2005), commonly known by his nom de guerre, Karam Singh (Hindi pronunciation: [krm sɪŋɦ]), was a communist leader and a Politburo member of the CPI (Maoist) in India.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-14T15:50:55Z", - "description": "A cadre and Politburo member of the Communist Party of India", - "normalizedtitle": "Shamsher Singh Sheri" - } - ], - "year": 2005 - }, - { - "text": "Peggy Ryan, American actress and dancer (b. 1924)", - "pages": [ - { - "title": "Peggy_Ryan", - "displaytitle": "Peggy Ryan", - "pageid": 1127664, - "extract": "Margaret O'Rene \"Peggy\" Ryan (August 28, 1924 – October 30, 2004) was an American dancer, best known for starring in a series of movie musicals at Universal Pictures with Donald O'Connor and Gloria Jean.", - "extract_html": "

Margaret O'Rene \"Peggy\" Ryan (August 28, 1924 – October 30, 2004) was an American dancer, best known for starring in a series of movie musicals at Universal Pictures with Donald O'Connor and Gloria Jean.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/9/94/Peggy_Ryan.jpg", - "width": 214, - "height": 317, - "original": "https://upload.wikimedia.org/wikipedia/en/9/94/Peggy_Ryan.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/9/94/Peggy_Ryan.jpg", - "width": 214, - "height": 317 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T15:19:14Z", - "description": "American actress and dancer", - "normalizedtitle": "Peggy Ryan" - } - ], - "year": 2004 - }, - { - "text": "Phyllis Frost, Australian philanthropist, founded Keep Australia Beautiful (b. 1917)", - "pages": [ - { - "title": "Phyllis_Frost", - "displaytitle": "Phyllis Frost", - "pageid": 9275663, - "extract": "Dame Phyllis Irene Frost (14 September 1917 – 30 October 2004) was an Australian welfare worker and philanthropist, known for her commitment to causes, such as helping prisoners.", - "extract_html": "

Dame Phyllis Irene Frost (14 September 1917 – 30 October 2004) was an Australian welfare worker and philanthropist, known for her commitment to causes, such as helping prisoners.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-18T21:25:34Z", - "description": "Australian welfare worker and philanthropist", - "normalizedtitle": "Phyllis Frost" - }, - { - "title": "Keep_Australia_Beautiful", - "displaytitle": "Keep Australia Beautiful", - "pageid": 23250972, - "extract": "Keep Australia Beautiful is a not-for-profit Australian environmental conservation organisation. The Keep Australia Beautiful National Association is a federation of independent organisations formed in each of Australian states and territories – the first of which, Keep Australia Beautiful – Victoria (now Keep Victoria Beautiful) was formed in Melbourne in 1968 by Dame Phyllis Frost.\nKeep Australia Beautiful is best known for its \"Do the Right Thing\" campaign against littering, as well as its national awards programs, including the Australian Tidy Town Awards, the Australian Sustainable Cities Awards and Australian Clean Beaches Awards. Keep Australia Beautiful also offer community recycling grants, as well as corporate volunteering and litter resources. Keep Australia Beautiful became the national operator for the international environmental education program Eco-Schools in 2014.\nThe organisation releases annual litter research called the National Litter Index. This is Australia's only national measure of the amount of litter.", - "extract_html": "

Keep Australia Beautiful is a not-for-profit Australian environmental conservation organisation. The Keep Australia Beautiful National Association is a federation of independent organisations formed in each of Australian states and territories – the first of which, Keep Australia Beautiful – Victoria (now Keep Victoria Beautiful) was formed in Melbourne in 1968 by Dame Phyllis Frost.

\n

Keep Australia Beautiful is best known for its \"Do the Right Thing\" campaign against littering, as well as its national awards programs, including the Australian Tidy Town Awards, the Australian Sustainable Cities Awards and Australian Clean Beaches Awards. Keep Australia Beautiful also offer community recycling grants, as well as corporate volunteering and litter resources. Keep Australia Beautiful became the national operator for the international environmental education program Eco-Schools in 2014.

\n

The organisation releases annual litter research called the National Litter Index. This is Australia's only national measure of the amount of litter.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-12T04:23:10Z", - "normalizedtitle": "Keep Australia Beautiful" - } - ], - "year": 2004 - }, - { - "text": "Steve O'Rourke, English race car driver and manager (b. 1940)", - "pages": [ - { - "title": "Steve_O'Rourke", - "displaytitle": "Steve O'Rourke", - "pageid": 3021847, - "extract": "Steve O'Rourke ((1940-10-01)1 October 1940 – (2003-10-30)30 October 2003) became the manager of the influential British rock band Pink Floyd after the departure of Syd Barrett in 1968.", - "extract_html": "

Steve O'Rourke ((1940-10-01)1 October 1940 – (2003-10-30)30 October 2003) became the manager of the influential British rock band Pink Floyd after the departure of Syd Barrett in 1968.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-07T08:11:20Z", - "description": "Band manager and racecar driver", - "normalizedtitle": "Steve O'Rourke" - } - ], - "year": 2003 - }, - { - "text": "Juan Antonio Bardem, Spanish actor, director, and screenwriter (b. 1922)", - "pages": [ - { - "title": "Juan_Antonio_Bardem", - "displaytitle": "Juan Antonio Bardem", - "pageid": 7171028, - "extract": "Juan Antonio Bardem (Spanish pronunciation: [ˈxwan baɾˈðem]; 2 June 1922 – 30 October 2002) was a Spanish film director and screen writer. He was a member of the Communist Party. Bardem was best known for Muerte de un ciclista (1955) which won the FIPRESCI Prize at the 1955 Cannes Film Festival, and El puente (1977) which won the Golden Prize at the 10th Moscow International Film Festival. His 1979 film Seven Days in January won the Golden Prize at the 11th Moscow International Film Festival. In 1981 he was a member of the jury at the 12th Moscow International Film Festival.", - "extract_html": "

Juan Antonio Bardem (Spanish pronunciation: [ˈxwan baɾˈðem]; 2 June 1922 – 30 October 2002) was a Spanish film director and screen writer. He was a member of the Communist Party. Bardem was best known for Muerte de un ciclista (1955) which won the FIPRESCI Prize at the 1955 Cannes Film Festival, and El puente (1977) which won the Golden Prize at the 10th Moscow International Film Festival. His 1979 film Seven Days in January won the Golden Prize at the 11th Moscow International Film Festival. In 1981 he was a member of the jury at the 12th Moscow International Film Festival.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-19T18:37:18Z", - "description": "Film director, Screenwriter", - "normalizedtitle": "Juan Antonio Bardem" - } - ], - "year": 2002 - }, - { - "text": "Jam Master Jay, American rapper and producer (b. 1965)", - "pages": [ - { - "title": "Jam_Master_Jay", - "displaytitle": "Jam Master Jay", - "pageid": 23727639, - "extract": "Jason William Mizell (January 21, 1965 – October 30, 2002), better known by his stage name Jam Master Jay, was an American musician and DJ. He was the DJ of the influential hip hop group Run–D.M.C. During the 1980s, Run-D.M.C. became one of the biggest hip-hop groups and are credited with breaking hip-hop into mainstream music.\nFor his skill re-working riffs from classic guitar records, he was ranked No. 10 on Spin's list of the \"100 Greatest Guitarists of All Time.", - "extract_html": "

Jason William Mizell (January 21, 1965 – October 30, 2002), better known by his stage name Jam Master Jay, was an American musician and DJ. He was the DJ of the influential hip hop group Run–D.M.C. During the 1980s, Run-D.M.C. became one of the biggest hip-hop groups and are credited with breaking hip-hop into mainstream music.

\n

For his skill re-working riffs from classic guitar records, he was ranked No. 10 on Spin's list of the \"100 Greatest Guitarists of All Time.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/b/b6/Jam_Master_Jay.jpg/240px-Jam_Master_Jay.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/en/b/b6/Jam_Master_Jay.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/b/b6/Jam_Master_Jay.jpg", - "width": 307, - "height": 409 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T17:00:47Z", - "description": "Hip-hop musician", - "normalizedtitle": "Jam Master Jay" - } - ], - "year": 2002 - }, - { - "text": "Steve Allen, American actor, television personality, game show panelist, and talk show host (b. 1921)", - "pages": [ - { - "title": "Steve_Allen", - "displaytitle": "Steve Allen", - "pageid": 144196, - "extract": "Stephen Valentine Patrick William Allen (December 26, 1921 – October 30, 2000) was an American television personality, radio personality, musician, composer, actor, comedian, writer, and advocate of scientific skepticism. He achieved national fame as the first host of The Tonight Show, the first late night television talk show in September 1954.\nThough he got his start in radio, Allen is best known for his extensive network television career. He gained national attention as a guest host on Arthur Godfrey's Talent Scouts. After he hosted The Tonight Show, he went on to host numerous game and variety shows, including his own The Steve Allen Show, I've Got a Secret, and The New Steve Allen Show. He was a regular panel member on CBS's What's My Line?, and from 1977 until 1981 wrote, produced, and hosted the award-winning public broadcasting show Meeting of Minds, a series of historical dramas presented in a talk format.\nAllen was a pianist and a prolific composer, having written – by his own estimate – more than 8,500 songs, some of which were recorded by numerous leading singers. Working as a lyricist, Allen won the 1964 Grammy Award for Best Original Jazz Composition.", - "extract_html": "

Stephen Valentine Patrick William Allen (December 26, 1921 – October 30, 2000) was an American television personality, radio personality, musician, composer, actor, comedian, writer, and advocate of scientific skepticism. He achieved national fame as the first host of The Tonight Show, the first late night television talk show in September 1954.

\n

Though he got his start in radio, Allen is best known for his extensive network television career. He gained national attention as a guest host on Arthur Godfrey's Talent Scouts. After he hosted The Tonight Show, he went on to host numerous game and variety shows, including his own The Steve Allen Show, I've Got a Secret, and The New Steve Allen Show. He was a regular panel member on CBS's What's My Line?, and from 1977 until 1981 wrote, produced, and hosted the award-winning public broadcasting show Meeting of Minds, a series of historical dramas presented in a talk format.

\n

Allen was a pianist and a prolific composer, having written – by his own estimate – more than 8,500 songs, some of which were recorded by numerous leading singers. Working as a lyricist, Allen won the 1964 Grammy Award for Best Original Jazz Composition.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Steve_Allen_-_press_photo.JPG/252px-Steve_Allen_-_press_photo.JPG", - "width": 252, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d2/Steve_Allen_-_press_photo.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d2/Steve_Allen_-_press_photo.JPG", - "width": 729, - "height": 927 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-19T12:58:42Z", - "description": "American comedian, actor, musician and writer", - "normalizedtitle": "Steve Allen" - } - ], - "year": 2000 - }, - { - "text": "Maigonis Valdmanis, Latvian basketball player (b. 1933)", - "pages": [ - { - "title": "Maigonis_Valdmanis", - "displaytitle": "Maigonis Valdmanis", - "pageid": 17889348, - "extract": "Maigonis Valdmanis (September 8, 1933 – October 30, 1999) was a Latvian basketball player.", - "extract_html": "

Maigonis Valdmanis (September 8, 1933 – October 30, 1999) was a Latvian basketball player.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/0/01/Maigonis_Valdmanis_%281933%29.jpg", - "width": 150, - "height": 200, - "original": "https://upload.wikimedia.org/wikipedia/en/0/01/Maigonis_Valdmanis_%281933%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/0/01/Maigonis_Valdmanis_%281933%29.jpg", - "width": 150, - "height": 200 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-11T09:23:59Z", - "description": "basketball player", - "normalizedtitle": "Maigonis Valdmanis" - } - ], - "year": 1999 - }, - { - "text": "Florence Nagle, English trainer and breeder of racehorses (b. 1894)", - "pages": [ - { - "title": "Florence_Nagle", - "displaytitle": "Florence Nagle", - "pageid": 44075819, - "extract": "Florence Nagle (26 October 1894 – 30 October 1988) was a trainer and breeder of racehorses, a breeder of pedigree dogs, and an active feminist. Nagle purchased her first Irish Wolfhound in 1913, and went on to own or breed twenty-one United Kingdom Champions. Best in Show at Crufts in 1960 was awarded to Sulhamstead Merman, who was bred, owned and exhibited by Nagle. She also competed successfully in field trials with Irish Setters, from the 1920s until the mid-1960s resulting in eighteen Field Trial Champions. The male dog who was a linchpin in the 1970s revival of the Irish Red and White Setter breed was descended from one of Nagle's Irish Setters.\nDescribed as \"the Mrs.", - "extract_html": "

Florence Nagle (26 October 1894 – 30 October 1988) was a trainer and breeder of racehorses, a breeder of pedigree dogs, and an active feminist. Nagle purchased her first Irish Wolfhound in 1913, and went on to own or breed twenty-one United Kingdom Champions. Best in Show at Crufts in 1960 was awarded to Sulhamstead Merman, who was bred, owned and exhibited by Nagle. She also competed successfully in field trials with Irish Setters, from the 1920s until the mid-1960s resulting in eighteen Field Trial Champions. The male dog who was a linchpin in the 1970s revival of the Irish Red and White Setter breed was descended from one of Nagle's Irish Setters.

\n

Described as \"the Mrs.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/b/b6/Portrait_photo_of_Florence_Nagle.jpeg/233px-Portrait_photo_of_Florence_Nagle.jpeg", - "width": 233, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/en/b/b6/Portrait_photo_of_Florence_Nagle.jpeg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/b/b6/Portrait_photo_of_Florence_Nagle.jpeg", - "width": 269, - "height": 370 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T12:29:19Z", - "description": "breeder and trainer of race horses", - "normalizedtitle": "Florence Nagle" - }, - { - "title": "Horse_racing", - "displaytitle": "Horse racing", - "pageid": 74711, - "extract": "Horse racing is an equestrian performance sport, typically involving two or more horses ridden by jockeys or driven over a set distance for competition. It is one of the most ancient of all sports and its basic premise – to identify which of two or more horses is the fastest over a set course or distance – has remained unchanged since the earliest times.\nHorse races vary widely in format. Often, countries have developed their own particular horse racing traditions.", - "extract_html": "

Horse racing is an equestrian performance sport, typically involving two or more horses ridden by jockeys or driven over a set distance for competition. It is one of the most ancient of all sports and its basic premise – to identify which of two or more horses is the fastest over a set course or distance – has remained unchanged since the earliest times.

\n

Horse races vary widely in format. Often, countries have developed their own particular horse racing traditions.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1d/Horserace_520133030.jpg/320px-Horserace_520133030.jpg", - "width": 320, - "height": 223, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/1d/Horserace_520133030.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/1d/Horserace_520133030.jpg", - "width": 726, - "height": 505 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T11:05:56Z", - "description": "equestrian sport", - "normalizedtitle": "Horse racing" - } - ], - "year": 1998 - }, - { - "text": "Samuel Fuller, American actor, director, producer, and screenwriter (b. 1912)", - "pages": [ - { - "title": "Samuel_Fuller", - "displaytitle": "Samuel Fuller", - "pageid": 1056321, - "extract": "Samuel Michael Fuller (August 12, 1912 – October 30, 1997) was an American screenwriter , novelist, and film director known for low-budget, understated genre movies with controversial themes, often made outside the conventional studio system. Fuller wrote his first screenplay for Hats Off in 1936, and made his directorial debut with the Western I Shot Jesse James (1949). He would continue to direct several other Westerns and war thrillers throughout the 1950s.\nFuller shifted from Westerns and war thrillers in the 1960s with his low-budget thriller Shock Corridor in 1963, followed by the neo-noir The Naked Kiss (1964).", - "extract_html": "

Samuel Michael Fuller (August 12, 1912 – October 30, 1997) was an American screenwriter , novelist, and film director known for low-budget, understated genre movies with controversial themes, often made outside the conventional studio system. Fuller wrote his first screenplay for Hats Off in 1936, and made his directorial debut with the Western I Shot Jesse James (1949). He would continue to direct several other Westerns and war thrillers throughout the 1950s.

\n

Fuller shifted from Westerns and war thrillers in the 1960s with his low-budget thriller Shock Corridor in 1963, followed by the neo-noir The Naked Kiss (1964).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Samuel_Fuller01.JPG/259px-Samuel_Fuller01.JPG", - "width": 259, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/92/Samuel_Fuller01.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/92/Samuel_Fuller01.JPG", - "width": 1736, - "height": 2144 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T15:43:57Z", - "description": "American screenwriter, actor and film director", - "normalizedtitle": "Samuel Fuller" - } - ], - "year": 1997 - }, - { - "text": "John Young, Scottish actor (b. 1916)", - "pages": [ - { - "title": "John_Young_(actor)", - "displaytitle": "John Young (actor)", - "pageid": 5131368, - "extract": "John Young (16 June 1916 – 30 October 1996) was a Scottish actor.", - "extract_html": "

John Young (16 June 1916 – 30 October 1996) was a Scottish actor.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-02T00:34:38Z", - "description": "Scottish actor", - "normalizedtitle": "John Young (actor)" - } - ], - "year": 1996 - }, - { - "text": "Paul Grégoire, Canadian cardinal (b. 1911)", - "pages": [ - { - "title": "Paul_Grégoire", - "displaytitle": "Paul Grégoire", - "pageid": 2130621, - "extract": "Paul Grégoire, (October 24, 1911 – October 30, 1993) was a Canadian Cardinal of the Roman Catholic Church.", - "extract_html": "

Paul Grégoire, (October 24, 1911 – October 30, 1993) was a Canadian Cardinal of the Roman Catholic Church.", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-02-16T08:41:39Z", - "description": "Canadian Catholic cardinal", - "normalizedtitle": "Paul Grégoire" - } - ], - "year": 1993 - }, - { - "text": "Joan Mitchell, American painter (b. 1925)", - "pages": [ - { - "title": "Joan_Mitchell", - "displaytitle": "Joan Mitchell", - "pageid": 4904950, - "extract": "Joan Mitchell (February 12, 1925 – October 30, 1992) was an American \"second generation\" abstract expressionist painter and printmaker. She was a member of the American abstract expressionist movement, even though much of her career took place in France. Along with Lee Krasner, Grace Hartigan, Helen Frankenthaler, Shirley Jaffe and Sonia Gechtoff, she was one of her era's few female painters to gain critical and public acclaim.", - "extract_html": "

Joan Mitchell (February 12, 1925 – October 30, 1992) was an American \"second generation\" abstract expressionist painter and printmaker. She was a member of the American abstract expressionist movement, even though much of her career took place in France. Along with Lee Krasner, Grace Hartigan, Helen Frankenthaler, Shirley Jaffe and Sonia Gechtoff, she was one of her era's few female painters to gain critical and public acclaim.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-03T20:36:35Z", - "description": "American painter", - "normalizedtitle": "Joan Mitchell" - } - ], - "year": 1992 - }, - { - "text": "V. Shantaram, Indian actor, director, and producer (b. 1901)", - "pages": [ - { - "title": "V._Shantaram", - "displaytitle": "V. Shantaram", - "pageid": 3759130, - "extract": "Shantaram Rajaram Vankudre (18 November 1901 – 30 October 1990), referred to as V. Shantaram, was an Indian filmmaker, film producer and actor. He is most known for films such as Dr. Kotnis Ki Amar Kahani (1946), Amar Bhoopali (1951), Jhanak Jhanak Payal Baaje (1955), Do Aankhen Barah Haath (1957), Navrang (1959), Duniya Na Mane (1937), Pinjra (1972), Chani, Iye Marathiche Nagari and Zunj.\nHe directed his first film Netaji Palkar, in 1927. In 1929, he founded the Prabhat Film Company along with Vishnupant Damle, K.R. Dhaiber, S. Fatelal and S.B. Kulkarni, which made Ayodhyecha Raja, the first Marathi language film in 1932 under his direction. He left Prabhat co.", - "extract_html": "

Shantaram Rajaram Vankudre (18 November 1901 – 30 October 1990), referred to as V. Shantaram, was an Indian filmmaker, film producer and actor. He is most known for films such as Dr. Kotnis Ki Amar Kahani (1946), Amar Bhoopali (1951), Jhanak Jhanak Payal Baaje (1955), Do Aankhen Barah Haath (1957), Navrang (1959), Duniya Na Mane (1937), Pinjra (1972), Chani, Iye Marathiche Nagari and Zunj.

\n

He directed his first film Netaji Palkar, in 1927. In 1929, he founded the Prabhat Film Company along with Vishnupant Damle, K.R. Dhaiber, S. Fatelal and S.B. Kulkarni, which made Ayodhyecha Raja, the first Marathi language film in 1932 under his direction. He left Prabhat co.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/7/75/V._Shantaram_%281901-1990%29.jpg", - "width": 238, - "height": 277, - "original": "https://upload.wikimedia.org/wikipedia/en/7/75/V._Shantaram_%281901-1990%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/7/75/V._Shantaram_%281901-1990%29.jpg", - "width": 238, - "height": 277 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-27T21:50:54Z", - "description": "Film director, actor", - "normalizedtitle": "V. Shantaram" - } - ], - "year": 1990 - }, - { - "text": "T. Hee, American animator and screenwriter (b. 1911)", - "pages": [ - { - "title": "T._Hee", - "displaytitle": "T. Hee", - "pageid": 8948402, - "extract": "\"T.\" (Thornton) Hee (March 26, 1911 – October 30, 1988) was an American animator, director, and teacher. He taught character design and caricature. He is always credited as T. Hee.\nHee worked at Leon Schlesinger Productions from 1935–36 as a character designer. He designed many of the celebrity caricatures used in The Coo Coo Nut Grove (1936) and The Woods Are Full of Cuckoos (1937). A 1936 Christmas card that he drew, featuring caricatures of the Schlesinger animators, was used to design the gremlins in the 1944 animated short Russian Rhapsody.\nHee joined The Walt Disney Company around 1937.", - "extract_html": "

\"T.\" (Thornton) Hee (March 26, 1911 – October 30, 1988) was an American animator, director, and teacher. He taught character design and caricature. He is always credited as T. Hee.

\n

Hee worked at Leon Schlesinger Productions from 1935–36 as a character designer. He designed many of the celebrity caricatures used in The Coo Coo Nut Grove (1936) and The Woods Are Full of Cuckoos (1937). A 1936 Christmas card that he drew, featuring caricatures of the Schlesinger animators, was used to design the gremlins in the 1944 animated short Russian Rhapsody.

\n

Hee joined The Walt Disney Company around 1937.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-07T03:25:51Z", - "description": "American animator, director and teacher", - "normalizedtitle": "T. Hee" - } - ], - "year": 1988 - }, - { - "text": "Joseph Campbell, American mythologist, scholar, and author (b. 1904)", - "pages": [ - { - "title": "Joseph_Campbell", - "displaytitle": "Joseph Campbell", - "pageid": 16315, - "extract": "Joseph John Campbell (March 26, 1904 – October 30, 1987) was an American mythologist, writer, and lecturer, best known for his work in comparative mythology and comparative religion. His work covers many aspects of the human experience. Campbell's magnum opus is his book The Hero with a Thousand Faces (1949), in which he discusses his theory of the journey of the archetypal hero found in world mythologies. Since the book's publication, Campbell's theory has been consciously applied by a wide variety of modern writers and artists.", - "extract_html": "

Joseph John Campbell (March 26, 1904 – October 30, 1987) was an American mythologist, writer, and lecturer, best known for his work in comparative mythology and comparative religion. His work covers many aspects of the human experience. Campbell's magnum opus is his book The Hero with a Thousand Faces (1949), in which he discusses his theory of the journey of the archetypal hero found in world mythologies. Since the book's publication, Campbell's theory has been consciously applied by a wide variety of modern writers and artists.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/f/f9/Joseph_Campbell_circa_1982.jpg", - "width": 150, - "height": 197, - "original": "https://upload.wikimedia.org/wikipedia/en/f/f9/Joseph_Campbell_circa_1982.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/f/f9/Joseph_Campbell_circa_1982.jpg", - "width": 150, - "height": 197 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-01T18:22:39Z", - "description": "American mythologist, writer and lecturer", - "normalizedtitle": "Joseph Campbell" - } - ], - "year": 1987 - }, - { - "text": "Iryna Vilde, Ukrainian author and educator (b. 1907)", - "pages": [ - { - "title": "Iryna_Vilde", - "displaytitle": "Iryna Vilde", - "pageid": 41359778, - "extract": "Iryna Vilde, a pen name of Daryna Dmytrivna Polotniuk (Ukrainian: Дарина Дмитрівна Полотнюк, née Makohon Ukrainian: Макогон), was a Ukrainian writer and Soviet correspondent. She was married to Yevhen Polotniuk who in 1943 was shot by the Gestapo.\nVilde was born on May 5, 1907 in Chernivtsi, Austro-Hungarian monarchy. She died after a long illness October 30, 1982 and was buried at the Lychakivskiy Cemetery in Lviv.\nHer father was the folk lecturer and writer Dmytro Makohon.", - "extract_html": "

Iryna Vilde, a pen name of Daryna Dmytrivna Polotniuk (Ukrainian: Дарина Дмитрівна Полотнюк, née Makohon Ukrainian: Макогон), was a Ukrainian writer and Soviet correspondent. She was married to Yevhen Polotniuk who in 1943 was shot by the Gestapo.

\n

Vilde was born on May 5, 1907 in Chernivtsi, Austro-Hungarian monarchy. She died after a long illness October 30, 1982 and was buried at the Lychakivskiy Cemetery in Lviv.

\n

Her father was the folk lecturer and writer Dmytro Makohon.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Iryna_Vilde.jpg/251px-Iryna_Vilde.jpg", - "width": 251, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/c0/Iryna_Vilde.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/c0/Iryna_Vilde.jpg", - "width": 491, - "height": 625 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-02T07:07:06Z", - "description": "Ukrainian writer", - "normalizedtitle": "Iryna Vilde" - } - ], - "year": 1982 - }, - { - "text": "Barnes Wallis, English scientist and engineer, invented the \"bouncing bomb\" (b. 1887)", - "pages": [ - { - "title": "Barnes_Wallis", - "displaytitle": "Barnes Wallis", - "pageid": 201812, - "extract": "Sir Barnes Neville Wallis (26 September 1887 – 30 October 1979), was an English scientist, engineer and inventor. He is best known for inventing the bouncing bomb used by the Royal Air Force in Operation Chastise (the \"Dambusters\" raid) to attack the dams of the Ruhr Valley during World War II. The raid was the subject of the 1955 film The Dam Busters, in which Wallis was played by Michael Redgrave.", - "extract_html": "

Sir Barnes Neville Wallis (26 September 1887 – 30 October 1979), was an English scientist, engineer and inventor. He is best known for inventing the bouncing bomb used by the Royal Air Force in Operation Chastise (the \"Dambusters\" raid) to attack the dams of the Ruhr Valley during World War II. The raid was the subject of the 1955 film The Dam Busters, in which Wallis was played by Michael Redgrave.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ed/Barnes_Wallis_%28RNV%29.jpg/196px-Barnes_Wallis_%28RNV%29.jpg", - "width": 196, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/ed/Barnes_Wallis_%28RNV%29.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/ed/Barnes_Wallis_%28RNV%29.jpg", - "width": 980, - "height": 1598 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T19:52:08Z", - "description": "English scientist, engineer and inventor", - "normalizedtitle": "Barnes Wallis" - }, - { - "title": "Bouncing_bomb", - "displaytitle": "Bouncing bomb", - "pageid": 602842, - "extract": "A bouncing bomb is a bomb designed to bounce to a target across water in a calculated manner to avoid obstacles such as torpedo nets, and to allow both the bomb's speed on arrival at the target and the timing of its detonation to be pre-determined, in a similar fashion to a regular naval depth charge.", - "extract_html": "

A bouncing bomb is a bomb designed to bounce to a target across water in a calculated manner to avoid obstacles such as torpedo nets, and to allow both the bomb's speed on arrival at the target and the timing of its detonation to be pre-determined, in a similar fashion to a regular naval depth charge.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Duxford_UK_Feb2005_bouncingbomb.JPG/320px-Duxford_UK_Feb2005_bouncingbomb.JPG", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/c9/Duxford_UK_Feb2005_bouncingbomb.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/c9/Duxford_UK_Feb2005_bouncingbomb.JPG", - "width": 1600, - "height": 1200 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-26T21:13:44Z", - "normalizedtitle": "Bouncing bomb" - } - ], - "year": 1979 - }, - { - "text": "Gustav Ludwig Hertz, German physicist and academic, Nobel Prize laureate (b. 1887)", - "pages": [ - { - "title": "Gustav_Ludwig_Hertz", - "displaytitle": "Gustav Ludwig Hertz", - "pageid": 345776, - "extract": "Gustav Ludwig Hertz (22 July 1887 – 30 October 1975) was a German experimental physicist and Nobel Prize winner, and a nephew of Heinrich Rudolf Hertz.", - "extract_html": "

Gustav Ludwig Hertz (22 July 1887 – 30 October 1975) was a German experimental physicist and Nobel Prize winner, and a nephew of Heinrich Rudolf Hertz.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Gustav_Hertz.jpg/226px-Gustav_Hertz.jpg", - "width": 226, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/51/Gustav_Hertz.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/51/Gustav_Hertz.jpg", - "width": 280, - "height": 396 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-26T10:36:07Z", - "description": "German physicist", - "normalizedtitle": "Gustav Ludwig Hertz" - }, - { - "title": "Nobel_Prize_in_Physics", - "displaytitle": "Nobel Prize in Physics", - "pageid": 52497, - "extract": "The Nobel Prize in Physics (Swedish: Nobelpriset i fysik) is a yearly award given by the Royal Swedish Academy of Sciences for those who conferred the most outstanding contributions for mankind in the field of physics. It is one of the five Nobel Prizes established by the will of Alfred Nobel in 1895 and awarded since 1901; the others being the Nobel Prize in Chemistry, Nobel Prize in Literature, Nobel Peace Prize, and Nobel Prize in Physiology or Medicine.\nThe first Nobel Prize in Physics was awarded to physicist Wilhelm Röntgen in recognition of the extraordinary services he has rendered by the discovery of the remarkable rays (or x-rays). This award is administered by the Nobel Foundation and widely regarded as the most prestigious award that a scientist can receive in physics. It is presented in Stockholm at an annual ceremony on December 10, the anniversary of Nobel's death.", - "extract_html": "

The Nobel Prize in Physics (Swedish: Nobelpriset i fysik) is a yearly award given by the Royal Swedish Academy of Sciences for those who conferred the most outstanding contributions for mankind in the field of physics. It is one of the five Nobel Prizes established by the will of Alfred Nobel in 1895 and awarded since 1901; the others being the Nobel Prize in Chemistry, Nobel Prize in Literature, Nobel Peace Prize, and Nobel Prize in Physiology or Medicine.

\n

The first Nobel Prize in Physics was awarded to physicist Wilhelm Röntgen in recognition of the extraordinary services he has rendered by the discovery of the remarkable rays (or x-rays). This award is administered by the Nobel Foundation and widely regarded as the most prestigious award that a scientist can receive in physics. It is presented in Stockholm at an annual ceremony on December 10, the anniversary of Nobel's death.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/e/ed/Nobel_Prize.png/320px-Nobel_Prize.png", - "width": 320, - "height": 315, - "original": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png", - "width": 500, - "height": 492 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-07T08:06:06Z", - "description": "Awarded once a year by the Royal Swedish Academy of Sciences", - "normalizedtitle": "Nobel Prize in Physics" - } - ], - "year": 1975 - }, - { - "text": "Ants Lauter, Estonian actor and director (b. 1894)", - "pages": [ - { - "title": "Ants_Lauter", - "displaytitle": "Ants Lauter", - "pageid": 29674738, - "extract": "Ants Lauter (5 July [O.S. 23 June] 1894 – – 30 October 1973) was an Estonian actor, theatre director and pedagogue, People's Artist of the USSR (1948).", - "extract_html": "

Ants Lauter (5 July [O.S. 23 June] 1894 – – 30 October 1973) was an Estonian actor, theatre director and pedagogue, People's Artist of the USSR (1948).", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-12-21T04:22:07Z", - "description": "Estonian actor", - "normalizedtitle": "Ants Lauter" - } - ], - "year": 1973 - }, - { - "text": "Conrad Richter, American journalist and novelist (b. 1890)", - "pages": [ - { - "title": "Conrad_Richter", - "displaytitle": "Conrad Richter", - "pageid": 960017, - "extract": "Conrad Michael Richter (October 13, 1890 – October 30, 1968) was an American novelist whose lyrical work is concerned largely with life on the American frontier in various periods. His novel The Town (1950), the last story of his trilogy The Awakening Land about the Ohio frontier, won the 1951 Pulitzer Prize for Fiction. His novel The Waters of Kronos won the 1961 National Book Award for Fiction.", - "extract_html": "

Conrad Michael Richter (October 13, 1890 – October 30, 1968) was an American novelist whose lyrical work is concerned largely with life on the American frontier in various periods. His novel The Town (1950), the last story of his trilogy The Awakening Land about the Ohio frontier, won the 1951 Pulitzer Prize for Fiction. His novel The Waters of Kronos won the 1961 National Book Award for Fiction.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/7/70/Conrad_Richter.jpg", - "width": 200, - "height": 250, - "original": "https://upload.wikimedia.org/wikipedia/en/7/70/Conrad_Richter.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/7/70/Conrad_Richter.jpg", - "width": 200, - "height": 250 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-22T17:54:49Z", - "description": "American novelist", - "normalizedtitle": "Conrad Richter" - } - ], - "year": 1968 - }, - { - "text": "Rose Wilder Lane, American journalist and author (b. 1886)", - "pages": [ - { - "title": "Rose_Wilder_Lane", - "displaytitle": "Rose Wilder Lane", - "pageid": 195726, - "extract": "Rose Wilder Lane (December 5, 1886 – October 30, 1968) was an American journalist, travel writer, novelist, political theorist, and daughter of American writer Laura Ingalls Wilder.", - "extract_html": "

Rose Wilder Lane (December 5, 1886 – October 30, 1968) was an American journalist, travel writer, novelist, political theorist, and daughter of American writer Laura Ingalls Wilder.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/RoseWilderLane01.jpg/224px-RoseWilderLane01.jpg", - "width": 224, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/91/RoseWilderLane01.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/91/RoseWilderLane01.jpg", - "width": 415, - "height": 593 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-11T06:10:30Z", - "description": "American journalist", - "normalizedtitle": "Rose Wilder Lane" - } - ], - "year": 1968 - }, - { - "text": "Ramon Novarro, Mexican-American actor, singer, and director (b. 1899)", - "pages": [ - { - "title": "Ramon_Novarro", - "displaytitle": "Ramon Novarro", - "pageid": 564349, - "extract": "Jose Ramón Gil Samaniego, best known as Ramón Novarro (February 6, 1899 – October 30, 1968), was a Mexican film, stage and television actor who began his career in silent films in 1917 and eventually became a leading man and one of the top box office attractions of the 1920s and early 1930s.", - "extract_html": "

Jose Ramón Gil Samaniego, best known as Ramón Novarro (February 6, 1899 – October 30, 1968), was a Mexican film, stage and television actor who began his career in silent films in 1917 and eventually became a leading man and one of the top box office attractions of the 1920s and early 1930s.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Ramon_Novarro_in_The_Blue_Book_of_the_Screen.jpg/248px-Ramon_Novarro_in_The_Blue_Book_of_the_Screen.jpg", - "width": 248, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/7a/Ramon_Novarro_in_The_Blue_Book_of_the_Screen.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/7a/Ramon_Novarro_in_The_Blue_Book_of_the_Screen.jpg", - "width": 2147, - "height": 2771 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-19T06:27:10Z", - "description": "actor in Mexican-American film, stage and television. A leading man and one of the top box office attractions of the 1920s and early 1930s.", - "normalizedtitle": "Ramon Novarro" - } - ], - "year": 1968 - }, - { - "text": "Yiorgos Theotokas, Greek author and playwright (b. 1906)", - "pages": [ - { - "title": "Yiorgos_Theotokas", - "displaytitle": "Yiorgos Theotokas", - "pageid": 30863795, - "extract": "Yiorgos Theotokas (Greek: Γιώργος Θεοτοκάς), formally Georgios Theotokas (Γεώργιος Θεοτοκάς; 27 April 1906 – 30 October 1966), was a Greek novelist.", - "extract_html": "

Yiorgos Theotokas (Greek: Γιώργος Θεοτοκάς), formally Georgios Theotokas (Γεώργιος Θεοτοκάς; 27 April 1906 – 30 October 1966), was a Greek novelist.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-02T13:48:47Z", - "description": "Greek novelist", - "normalizedtitle": "Yiorgos Theotokas" - } - ], - "year": 1966 - }, - { - "text": "Arthur M. Schlesinger, Sr., American historian and author (b. 1888)", - "pages": [ - { - "title": "Arthur_M._Schlesinger_Sr.", - "displaytitle": "Arthur M. Schlesinger Sr.", - "pageid": 1119963, - "extract": "Arthur Meier Schlesinger Sr. (; (February 27, 1888 – October 30, 1965) was an American historian who taught at Harvard University, pioneering social history and urban history. He was a Progressive Era intellectual who stressed material causes (such as economic profit and conflict between businessmen and farmers) and downplayed ideology and values as motivations for historical actors. He was highly influential as a director of PhD dissertations at Harvard for three decades, especially in the fields of social, women's, and immigration history. His son, Arthur M. Schlesinger Jr.", - "extract_html": "

Arthur Meier Schlesinger Sr. (; (February 27, 1888 – October 30, 1965) was an American historian who taught at Harvard University, pioneering social history and urban history. He was a Progressive Era intellectual who stressed material causes (such as economic profit and conflict between businessmen and farmers) and downplayed ideology and values as motivations for historical actors. He was highly influential as a director of PhD dissertations at Harvard for three decades, especially in the fields of social, women's, and immigration history. His son, Arthur M. Schlesinger Jr.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T18:35:31Z", - "description": "American historian", - "normalizedtitle": "Arthur M. Schlesinger Sr." - } - ], - "year": 1965 - }, - { - "text": "U. Muthuramalingam Thevar, Indian lawyer and politician (b. 1908)", - "pages": [ - { - "title": "U._Muthuramalingam_Thevar", - "displaytitle": "U. Muthuramalingam Thevar", - "pageid": 3574728, - "extract": "Ukkirapandi Muthuramalingam Thevar (30 October 1908 – 30 October 1963), also known as Pasumpon Muthuramalinga Thevar, was an Indian political leader. He became the leader of the All India Forward Bloc (AIFB) in Tamil Nadu, and was national deputy chairman of the party from 1952 onwards.", - "extract_html": "

Ukkirapandi Muthuramalingam Thevar (30 October 1908 – 30 October 1963), also known as Pasumpon Muthuramalinga Thevar, was an Indian political leader. He became the leader of the All India Forward Bloc (AIFB) in Tamil Nadu, and was national deputy chairman of the party from 1952 onwards.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T17:50:56Z", - "description": "Indian politician", - "normalizedtitle": "U. Muthuramalingam Thevar" - } - ], - "year": 1963 - }, - { - "text": "Luigi Einaudi, Italian economist and politician, 2nd President of the Italian Republic (b. 1874)", - "pages": [ - { - "title": "Luigi_Einaudi", - "displaytitle": "Luigi Einaudi", - "pageid": 775026, - "extract": "Luigi Einaudi, (Italian: [luˈiːʤi eiˈnaːudi]; 24 March 1874 – 30 October 1961) was an Italian politician and economist.", - "extract_html": "

Luigi Einaudi, (Italian: [luˈiːʤi eiˈnaːudi]; 24 March 1874 – 30 October 1961) was an Italian politician and economist.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/cc/Luigi_Einaudi.jpg", - "width": 247, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/cc/Luigi_Einaudi.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/cc/Luigi_Einaudi.jpg", - "width": 247, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T04:24:26Z", - "description": "2nd President of Italy", - "normalizedtitle": "Luigi Einaudi" - }, - { - "title": "President_of_Italy", - "displaytitle": "President of Italy", - "pageid": 3612085, - "extract": "The President of the Italian Republic (Italian: Presidente della Repubblica Italiana) is the head of state of Italy and, in that role, represents national unity and guarantees that Italian politics comply with the Constitution. The president's term of office lasts for seven years. The 11th President of the Republic, Giorgio Napolitano, was elected on 10 May 2006, and elected to a second term for the first time in Italian Republic history, on 20 April 2013.", - "extract_html": "

The President of the Italian Republic (Italian: Presidente della Repubblica Italiana) is the head of state of Italy and, in that role, represents national unity and guarantees that Italian politics comply with the Constitution. The president's term of office lasts for seven years. The 11th President of the Republic, Giorgio Napolitano, was elected on 10 May 2006, and elected to a second term for the first time in Italian Republic history, on 20 April 2013.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Presidential_Standard_of_Italy.svg/320px-Presidential_Standard_of_Italy.svg.png", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/74/Presidential_Standard_of_Italy.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/74/Presidential_Standard_of_Italy.svg", - "width": 700, - "height": 700 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-04T17:02:41Z", - "description": "head of state of Italy", - "normalizedtitle": "President of Italy" - } - ], - "year": 1961 - }, - { - "text": "Fred Beebe, American baseball player and coach (b. 1880)", - "pages": [ - { - "title": "Fred_Beebe", - "displaytitle": "Fred Beebe", - "pageid": 6013377, - "extract": "Frederick Leonard Beebe (December 31, 1879 – October 30, 1957) was a professional baseball player. He played for the Chicago Cubs, St.", - "extract_html": "

Frederick Leonard Beebe (December 31, 1879 – October 30, 1957) was a professional baseball player. He played for the Chicago Cubs, St.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Fred-beebe.jpg/261px-Fred-beebe.jpg", - "width": 261, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/02/Fred-beebe.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/02/Fred-beebe.jpg", - "width": 522, - "height": 640 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-01-03T10:24:42Z", - "description": "American baseball player", - "normalizedtitle": "Fred Beebe" - } - ], - "year": 1957 - }, - { - "text": "Walter Buckmaster, English polo player and stockbroker, co-founded Buckmaster & Moore (b. 1872)", - "pages": [ - { - "title": "Walter_Buckmaster", - "displaytitle": "Walter Buckmaster", - "pageid": 11776000, - "extract": "Walter Selby Buckmaster (16 October 1872 – 30 October 1942) was a British polo player in the 1900 Summer Olympics and in the 1908 Summer Olympics.", - "extract_html": "

Walter Selby Buckmaster (16 October 1872 – 30 October 1942) was a British polo player in the 1900 Summer Olympics and in the 1908 Summer Olympics.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Walter_Buckmaster%2C_Vanity_Fair%2C_4_September_1907.jpg/217px-Walter_Buckmaster%2C_Vanity_Fair%2C_4_September_1907.jpg", - "width": 217, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/3a/Walter_Buckmaster%2C_Vanity_Fair%2C_4_September_1907.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3a/Walter_Buckmaster%2C_Vanity_Fair%2C_4_September_1907.jpg", - "width": 475, - "height": 700 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-17T23:54:19Z", - "description": "British polo player", - "normalizedtitle": "Walter Buckmaster" - }, - { - "title": "Buckmaster_&_Moore", - "displaytitle": "Buckmaster & Moore", - "pageid": 40436983, - "extract": "Buckmaster & Moore (B&M) was a London stockbroker established in 1895 and acquired by Credit Suisse Group in 1987.", - "extract_html": "

Buckmaster & Moore (B&M) was a London stockbroker established in 1895 and acquired by Credit Suisse Group in 1987.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-14T06:12:18Z", - "description": "London stockbroker established in 1895", - "normalizedtitle": "Buckmaster & Moore" - } - ], - "year": 1942 - }, - { - "text": "Svend Kornbeck, Danish actor (b. 1869)", - "pages": [ - { - "title": "Svend_Kornbeck", - "displaytitle": "Svend Kornbeck", - "pageid": 36670781, - "extract": "Svend Kornbeck (3 July 1869 – 30 October 1933) was a Danish stage and film actor.", - "extract_html": "

Svend Kornbeck (3 July 1869 – 30 October 1933) was a Danish stage and film actor.

", - "lang": "en", - "dir": "ltr", - "timestamp": "2016-09-09T14:44:42Z", - "description": "Danish actor", - "normalizedtitle": "Svend Kornbeck" - } - ], - "year": 1933 - }, - { - "text": "Andrew Bonar Law, Canadian-English banker and politician, Prime Minister of the United Kingdom (b. 1858)", - "pages": [ - { - "title": "Bonar_Law", - "displaytitle": "Bonar Law", - "pageid": 218283, - "extract": "Andrew Bonar Law (16 September 1858 – 30 October 1923), commonly called Bonar Law (), was a British Conservative Party politician and Prime Minister. Born in the British colony of New Brunswick (now in Canada), he is the only British prime minister to have been born outside of the British Isles.\nLaw was of Scottish and Ulster Scots descent, and having moved back to Scotland in 1870, he left school aged sixteen to work in the iron industry, becoming a wealthy man by the age of thirty. He entered Parliament at the 1900 general election, relatively late in life for a front-rank politician, and was made a junior minister, Parliamentary Secretary to the Board of Trade, in 1902. Law joined the Shadow Cabinet in opposition after the 1906 election. In 1911, he was appointed a Privy Councillor, and stood for the vacant party leadership.", - "extract_html": "

Andrew Bonar Law (16 September 1858 – 30 October 1923), commonly called Bonar Law (), was a British Conservative Party politician and Prime Minister. Born in the British colony of New Brunswick (now in Canada), he is the only British prime minister to have been born outside of the British Isles.

\n

Law was of Scottish and Ulster Scots descent, and having moved back to Scotland in 1870, he left school aged sixteen to work in the iron industry, becoming a wealthy man by the age of thirty. He entered Parliament at the 1900 general election, relatively late in life for a front-rank politician, and was made a junior minister, Parliamentary Secretary to the Board of Trade, in 1902. Law joined the Shadow Cabinet in opposition after the 1906 election. In 1911, he was appointed a Privy Councillor, and stood for the vacant party leadership.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Andrew_Bonar_Law_02.jpg/248px-Andrew_Bonar_Law_02.jpg", - "width": 248, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/f4/Andrew_Bonar_Law_02.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/f4/Andrew_Bonar_Law_02.jpg", - "width": 596, - "height": 770 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T19:50:20Z", - "description": "Prime Minister of the United Kingdom", - "normalizedtitle": "Bonar Law" - }, - { - "title": "Prime_Minister_of_the_United_Kingdom", - "displaytitle": "Prime Minister of the United Kingdom", - "pageid": 24150, - "extract": "The Prime Minister of the United Kingdom is the head of Her Majesty's Government in the United Kingdom. The Prime Minister (sometimes informally abbreviated to PM) and Cabinet (consisting of all the most senior ministers, most of whom are government department heads) are collectively accountable for their policies and actions to the Monarch, to Parliament, to their political party and ultimately to the electorate. The office is one of the Great Offices of State. The current holder of the office, Theresa May, leader of the Conservative Party, was appointed by the Queen on 13 July 2016.\nThe office is not established by any constitution or law but exists only by long-established convention, which stipulates that the monarch must appoint as Prime Minister the person most likely to command the confidence of the House of Commons; this individual is typically the leader of the political party or coalition of parties that holds the largest number of seats in that chamber. The position of Prime Minister was not created; it evolved slowly and erratically over three hundred years due to numerous acts of Parliament, political developments, and accidents of history.", - "extract_html": "

The Prime Minister of the United Kingdom is the head of Her Majesty's Government in the United Kingdom. The Prime Minister (sometimes informally abbreviated to PM) and Cabinet (consisting of all the most senior ministers, most of whom are government department heads) are collectively accountable for their policies and actions to the Monarch, to Parliament, to their political party and ultimately to the electorate. The office is one of the Great Offices of State. The current holder of the office, Theresa May, leader of the Conservative Party, was appointed by the Queen on 13 July 2016.

\n

The office is not established by any constitution or law but exists only by long-established convention, which stipulates that the monarch must appoint as Prime Minister the person most likely to command the confidence of the House of Commons; this individual is typically the leader of the political party or coalition of parties that holds the largest number of seats in that chamber. The position of Prime Minister was not created; it evolved slowly and erratically over three hundred years due to numerous acts of Parliament, political developments, and accidents of history.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Royal_Coat_of_Arms_of_the_United_Kingdom_%28HM_Government%29.svg/320px-Royal_Coat_of_Arms_of_the_United_Kingdom_%28HM_Government%29.svg.png", - "width": 320, - "height": 263, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/1a/Royal_Coat_of_Arms_of_the_United_Kingdom_%28HM_Government%29.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/1a/Royal_Coat_of_Arms_of_the_United_Kingdom_%28HM_Government%29.svg", - "width": 1530, - "height": 1256 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T13:57:51Z", - "description": "head of Her Majesty's Government in the United Kingdom", - "normalizedtitle": "Prime Minister of the United Kingdom" - } - ], - "year": 1923 - }, - { - "text": "Ella Wheeler Wilcox, American author and poet (b. 1850)", - "pages": [ - { - "title": "Ella_Wheeler_Wilcox", - "displaytitle": "Ella Wheeler Wilcox", - "pageid": 440272, - "extract": "Ella Wheeler Wilcox (November 5, 1850 – October 30, 1919) was an American author and poet. Her best-known work was Poems of Passion. Her most enduring work was \"Solitude\", which contains the lines \"Laugh, and the world laughs with you; weep, and you weep alone\".", - "extract_html": "

Ella Wheeler Wilcox (November 5, 1850 – October 30, 1919) was an American author and poet. Her best-known work was Poems of Passion. Her most enduring work was \"Solitude\", which contains the lines \"Laugh, and the world laughs with you; weep, and you weep alone\".", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Ella_Wheeler_Wilcox_circa_1919.jpg/234px-Ella_Wheeler_Wilcox_circa_1919.jpg", - "width": 234, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/a1/Ella_Wheeler_Wilcox_circa_1919.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/a1/Ella_Wheeler_Wilcox_circa_1919.jpg", - "width": 650, - "height": 890 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-05T12:53:44Z", - "description": "American author and poet", - "normalizedtitle": "Ella Wheeler Wilcox" - } - ], - "year": 1919 - }, - { - "text": "Talbot Mercer Papineau, Canadian lawyer and soldier (b. 1883)", - "pages": [ - { - "title": "Talbot_Mercer_Papineau", - "displaytitle": "Talbot Mercer Papineau", - "pageid": 5946303, - "extract": "Major Talbot Mercer Papineau, MC (25 March 1883 – 30 October 1917) was a lawyer and decorated soldier from Quebec, Canada.", - "extract_html": "

Major Talbot Mercer Papineau, MC (25 March 1883 – 30 October 1917) was a lawyer and decorated soldier from Quebec, Canada.

", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/39/TalbotPapineau.jpg", - "width": 145, - "height": 222, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/39/TalbotPapineau.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/39/TalbotPapineau.jpg", - "width": 145, - "height": 222 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-11T23:25:18Z", - "description": "Canadian Army officer", - "normalizedtitle": "Talbot Mercer Papineau" - } - ], - "year": 1917 - }, - { - "text": "Charles Tupper, Canadian physician, lawyer, and politician, 6th Prime Minister of Canada (b. 1821)", - "pages": [ - { - "title": "Charles_Tupper", - "displaytitle": "Charles Tupper", - "pageid": 5981, - "extract": "Sir Charles Tupper, 1st Baronet (July 2, 1821 – October 30, 1915) was a Canadian father of Confederation: as the Premier of Nova Scotia from 1864 to 1867, he led Nova Scotia into Confederation. He went on to serve as the sixth Prime Minister of Canada, sworn into office on May 1, 1896, seven days after parliament had been dissolved. He lost the June 23 election and resigned on July 8, 1896. His 69-day term as prime minister is currently the shortest in Canadian history.\nTupper was born in Amherst, Nova Scotia to the Rev. Charles Tupper and Miriam Lockhart.", - "extract_html": "

Sir Charles Tupper, 1st Baronet (July 2, 1821 – October 30, 1915) was a Canadian father of Confederation: as the Premier of Nova Scotia from 1864 to 1867, he led Nova Scotia into Confederation. He went on to serve as the sixth Prime Minister of Canada, sworn into office on May 1, 1896, seven days after parliament had been dissolved. He lost the June 23 election and resigned on July 8, 1896. His 69-day term as prime minister is currently the shortest in Canadian history.

\n

Tupper was born in Amherst, Nova Scotia to the Rev. Charles Tupper and Miriam Lockhart.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/TupperUniform.jpg/251px-TupperUniform.jpg", - "width": 251, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/8/82/TupperUniform.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/82/TupperUniform.jpg", - "width": 480, - "height": 611 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-23T07:15:21Z", - "description": "6th Prime Minister of Canada", - "normalizedtitle": "Charles Tupper" - }, - { - "title": "Prime_Minister_of_Canada", - "displaytitle": "Prime Minister of Canada", - "pageid": 24135, - "extract": "The Prime Minister of Canada (French: Premier ministre du Canada) is the primary minister of the Crown, chairman of the Cabinet, and thus Canada's head of government, charged with advising the Canadian monarch or federal viceroy on the exercise of the executive powers vested in them by the constitution. Not outlined in any constitutional document, the office exists only as per long-established convention (originating in Canada's former colonial power, the United Kingdom) that stipulates the monarch's representative, the governor general, must select as prime minister the person most likely to command the confidence of the elected House of Commons; this individual is typically the leader of the political party that holds the largest number of seats in that chamber.", - "extract_html": "

The Prime Minister of Canada (French: Premier ministre du Canada) is the primary minister of the Crown, chairman of the Cabinet, and thus Canada's head of government, charged with advising the Canadian monarch or federal viceroy on the exercise of the executive powers vested in them by the constitution. Not outlined in any constitutional document, the office exists only as per long-established convention (originating in Canada's former colonial power, the United Kingdom) that stipulates the monarch's representative, the governor general, must select as prime minister the person most likely to command the confidence of the elected House of Commons; this individual is typically the leader of the political party that holds the largest number of seats in that chamber.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/Justin_Trudeau_and_Benigno_Aquino_III_November_2015_cropped.jpg/240px-Justin_Trudeau_and_Benigno_Aquino_III_November_2015_cropped.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/be/Justin_Trudeau_and_Benigno_Aquino_III_November_2015_cropped.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/be/Justin_Trudeau_and_Benigno_Aquino_III_November_2015_cropped.jpg", - "width": 675, - "height": 900 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-11T05:41:41Z", - "description": "head of government for Canada", - "normalizedtitle": "Prime Minister of Canada" - } - ], - "year": 1915 - }, - { - "text": "Alejandro Gorostiaga, Chilean colonel (b. 1840)", - "pages": [ - { - "title": "Alejandro_Gorostiaga", - "displaytitle": "Alejandro Gorostiaga", - "pageid": 21186846, - "extract": "Alejandro Gorostiaga Orrego (May 12, 1840 - October 30, 1912), was a Chilean military officer born in La Serena. He joined the Escuela Militar de Chile in 1857 till his retirement in 1878. Alejandro Gorostiaga was of Basque descent.\nIn 1879, colonel Gorostiaga joined the Chilean Army due to the War of the Pacific, between Chile, Peru and Bolivia. In May of that year, Alejandro Gorostiaga was named commandant of the civic battalion Coquimbo Nº1.\nParticipated in the \"Asalto y Toma de Pisagua\".", - "extract_html": "

Alejandro Gorostiaga Orrego (May 12, 1840 - October 30, 1912), was a Chilean military officer born in La Serena. He joined the Escuela Militar de Chile in 1857 till his retirement in 1878. Alejandro Gorostiaga was of Basque descent.

\n

In 1879, colonel Gorostiaga joined the Chilean Army due to the War of the Pacific, between Chile, Peru and Bolivia. In May of that year, Alejandro Gorostiaga was named commandant of the civic battalion Coquimbo Nº1.

\n

Participated in the \"Asalto y Toma de Pisagua\".", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Alejando_Gorostiaga.jpg/245px-Alejando_Gorostiaga.jpg", - "width": 245, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/19/Alejando_Gorostiaga.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/19/Alejando_Gorostiaga.jpg", - "width": 306, - "height": 400 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-09-26T15:05:15Z", - "description": "Chilean Army officer", - "normalizedtitle": "Alejandro Gorostiaga" - } - ], - "year": 1912 - }, - { - "text": "James S. Sherman, American lawyer and politician, 27th Vice President of the United States (b. 1855)", - "pages": [ - { - "title": "James_S._Sherman", - "displaytitle": "James S. Sherman", - "pageid": 92207, - "extract": "James Schoolcraft Sherman (October 24, 1855 – October 30, 1912) was an American politician who was a United States Representative from New York from 1887 to 1891 and 1893 to 1909, and the 27th Vice President of the United States from 1909 until his death. He was a member of the interrelated Baldwin, Hoar, and Sherman families, prominent lawyers and politicians of New England and New York.\nAlthough not a high-powered administrator, he made a natural congressional committee chairman, and his genial personality eased the workings of the House, so that he was known as 'Sunny Jim'.", - "extract_html": "

James Schoolcraft Sherman (October 24, 1855 – October 30, 1912) was an American politician who was a United States Representative from New York from 1887 to 1891 and 1893 to 1909, and the 27th Vice President of the United States from 1909 until his death. He was a member of the interrelated Baldwin, Hoar, and Sherman families, prominent lawyers and politicians of New England and New York.

\n

Although not a high-powered administrator, he made a natural congressional committee chairman, and his genial personality eased the workings of the House, so that he was known as 'Sunny Jim'.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/James_Schoolcraft_Sherman.jpg/240px-James_Schoolcraft_Sherman.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b7/James_Schoolcraft_Sherman.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b7/James_Schoolcraft_Sherman.jpg", - "width": 677, - "height": 903 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-13T09:55:13Z", - "description": "American politician", - "normalizedtitle": "James S. Sherman" - }, - { - "title": "Vice_President_of_the_United_States", - "displaytitle": "Vice President of the United States", - "pageid": 32759, - "extract": "The Vice President of the United States (informally referred to as VPOTUS, or Veep) is a constitutional officer in the legislative branch of the federal government of the United States as the President of the Senate under Article One, Section Three of the U.S. Constitution.\nThe vice president is a statutory member of the National Security Council under the National Security Act of 1947, and through the 25th Amendment is the highest-ranking official in the presidential line of succession in the executive branch of the federal government. The executive power of both the vice president and the president is granted under Article Two, Section One of the Constitution. The vice president is indirectly elected, together with the president, to a four-year term of office by the people of the United States through the Electoral College. The Office of the Vice President of the United States assists and organizes the vice president's official functions.\nAs the president of the United States Senate, the vice president votes only when it is necessary to break a tie. While Senate customs have created supermajority rules that have diminished this constitutional tie-breaking authority, the vice president still retains the ability to influence legislation; for example, the Deficit Reduction Act of 2005 was passed in the Senate by a tie-breaking vice presidential vote.\nWhile the vice president's only constitutionally prescribed functions aside from presidential succession relate to their role as President of the Senate, the role of the vice president evolved during the 20th century into more of an executive branch position.", - "extract_html": "

The Vice President of the United States (informally referred to as VPOTUS, or Veep) is a constitutional officer in the legislative branch of the federal government of the United States as the President of the Senate under Article One, Section Three of the U.S. Constitution.

\n

The vice president is a statutory member of the National Security Council under the National Security Act of 1947, and through the 25th Amendment is the highest-ranking official in the presidential line of succession in the executive branch of the federal government. The executive power of both the vice president and the president is granted under Article Two, Section One of the Constitution. The vice president is indirectly elected, together with the president, to a four-year term of office by the people of the United States through the Electoral College. The Office of the Vice President of the United States assists and organizes the vice president's official functions.

\n

As the president of the United States Senate, the vice president votes only when it is necessary to break a tie. While Senate customs have created supermajority rules that have diminished this constitutional tie-breaking authority, the vice president still retains the ability to influence legislation; for example, the Deficit Reduction Act of 2005 was passed in the Senate by a tie-breaking vice presidential vote.

\n

While the vice president's only constitutionally prescribed functions aside from presidential succession relate to their role as President of the Senate, the role of the vice president evolved during the 20th century into more of an executive branch position.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Seal_of_the_Vice_President_of_the_United_States.svg/320px-Seal_of_the_Vice_President_of_the_United_States.svg.png", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/6a/Seal_of_the_Vice_President_of_the_United_States.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/6a/Seal_of_the_Vice_President_of_the_United_States.svg", - "width": 2437, - "height": 2437 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T16:30:32Z", - "description": "public office in the United States", - "normalizedtitle": "Vice President of the United States" - } - ], - "year": 1912 - }, - { - "text": "Henry Dunant, Swiss activist, founded the Red Cross, Nobel Prize laureate (b. 1828)", - "pages": [ - { - "title": "Henry_Dunant", - "displaytitle": "Henry Dunant", - "pageid": 36845, - "extract": "Henry Dunant (born Jean-Henri Dunant; 8 May 1828 – 30 October 1910), also known as Henri Dunant, was a Swiss businessman and social activist, the founder of the Red Cross, and the first recipient of the Nobel Peace Prize. The 1864 Geneva Convention was based on Dunant's ideas. In 1901 he received the first Nobel Peace Prize together with Frédéric Passy, making Dunant the first Swiss Nobel laureate.\nDuring a business trip in 1859, Dunant was witness to the aftermath of the Battle of Solferino in modern-day Italy.", - "extract_html": "

Henry Dunant (born Jean-Henri Dunant; 8 May 1828 – 30 October 1910), also known as Henri Dunant, was a Swiss businessman and social activist, the founder of the Red Cross, and the first recipient of the Nobel Peace Prize. The 1864 Geneva Convention was based on Dunant's ideas. In 1901 he received the first Nobel Peace Prize together with Frédéric Passy, making Dunant the first Swiss Nobel laureate.

\n

During a business trip in 1859, Dunant was witness to the aftermath of the Battle of Solferino in modern-day Italy.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Henry_Dunant-young.jpg/228px-Henry_Dunant-young.jpg", - "width": 228, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/38/Henry_Dunant-young.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/38/Henry_Dunant-young.jpg", - "width": 495, - "height": 693 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-10T17:56:39Z", - "description": "Swiss businessman and founder of the Red Cross", - "normalizedtitle": "Henry Dunant" - }, - { - "title": "International_Red_Cross_and_Red_Crescent_Movement", - "displaytitle": "International Red Cross and Red Crescent Movement", - "pageid": 15487, - "extract": "The International Red Cross and Red Crescent Movement is an international humanitarian movement with approximately 97 million volunteers, members and staff worldwide which was founded to protect human life and health, to ensure respect for all human beings, and to prevent and alleviate human suffering.\nThe movement consists of several distinct organizations that are legally independent from each other, but are united within the movement through common basic principles, objectives, symbols, statutes and governing organisations. The movement's parts are:\nThe International Committee of the Red Cross (ICRC) is a private humanitarian institution founded in 1863 in Geneva, Switzerland, by Henry Dunant and Gustave Moynier. Its 25-member committee has a unique authority under international humanitarian law to protect the life and dignity of the victims of international and internal armed conflicts. The ICRC was awarded the Nobel Peace Prize on three occasions (in 1917, 1944 and 1963).\nThe International Federation of Red Cross and Red Crescent Societies (IFRC) was founded in 1919 and today it coordinates activities between the 190 National Red Cross and Red Crescent Societies within the Movement. On an international level, the Federation leads and organizes, in close cooperation with the National Societies, relief assistance missions responding to large-scale emergencies.", - "extract_html": "

The International Red Cross and Red Crescent Movement is an international humanitarian movement with approximately 97 million volunteers, members and staff worldwide which was founded to protect human life and health, to ensure respect for all human beings, and to prevent and alleviate human suffering.

\n

The movement consists of several distinct organizations that are legally independent from each other, but are united within the movement through common basic principles, objectives, symbols, statutes and governing organisations. The movement's parts are:

\n
  • The International Committee of the Red Cross (ICRC) is a private humanitarian institution founded in 1863 in Geneva, Switzerland, by Henry Dunant and Gustave Moynier. Its 25-member committee has a unique authority under international humanitarian law to protect the life and dignity of the victims of international and internal armed conflicts. The ICRC was awarded the Nobel Peace Prize on three occasions (in 1917, 1944 and 1963).
  • \n
  • The International Federation of Red Cross and Red Crescent Societies (IFRC) was founded in 1919 and today it coordinates activities between the 190 National Red Cross and Red Crescent Societies within the Movement. On an international level, the Federation leads and organizes, in close cooperation with the National Societies, relief assistance missions responding to large-scale emergencies.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/Movement-6-4.jpg/320px-Movement-6-4.jpg", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/ca/Movement-6-4.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/ca/Movement-6-4.jpg", - "width": 366, - "height": 244 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-28T11:59:13Z", - "description": "international humanitarian movement", - "coordinates": { - "lat": 46.22777778, - "lon": 6.13722222 - }, - "normalizedtitle": "International Red Cross and Red Crescent Movement" - }, - { - "title": "Nobel_Peace_Prize", - "displaytitle": "Nobel Peace Prize", - "pageid": 26230922, - "extract": "The Nobel Peace Prize (Swedish: Nobels fredspris) is one of the five Nobel Prizes created by the Swedish industrialist, inventor, and armaments manufacturer Alfred Nobel, along with the prizes in Chemistry, Physics, Physiology or Medicine, and Literature. Since March 1901, it has been awarded annually (with some exceptions) to those who have \"done the most or the best work for fraternity between nations, for the abolition or reduction of standing armies and for the holding and promotion of peace congresses\".\nAs per Alfred Nobel's will, the recipient is selected by the Norwegian Nobel Committee, a five-member committee appointed by the Parliament of Norway. Since 1990, the prize is awarded on 10 December in Oslo City Hall each year.", - "extract_html": "

    The Nobel Peace Prize (Swedish: Nobels fredspris) is one of the five Nobel Prizes created by the Swedish industrialist, inventor, and armaments manufacturer Alfred Nobel, along with the prizes in Chemistry, Physics, Physiology or Medicine, and Literature. Since March 1901, it has been awarded annually (with some exceptions) to those who have \"done the most or the best work for fraternity between nations, for the abolition or reduction of standing armies and for the holding and promotion of peace congresses\".

    \n

    As per Alfred Nobel's will, the recipient is selected by the Norwegian Nobel Committee, a five-member committee appointed by the Parliament of Norway. Since 1990, the prize is awarded on 10 December in Oslo City Hall each year.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/e/ed/Nobel_Prize.png/320px-Nobel_Prize.png", - "width": 320, - "height": 315, - "original": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/e/ed/Nobel_Prize.png", - "width": 500, - "height": 492 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T22:00:43Z", - "description": "Nobel Peace Prize", - "normalizedtitle": "Nobel Peace Prize" - } - ], - "year": 1910 - }, - { - "text": "Boyd Dunlop Morehead, Australian politician, 10th Premier of Queensland (b. 1843)", - "pages": [ - { - "title": "Boyd_Dunlop_Morehead", - "displaytitle": "Boyd Dunlop Morehead", - "pageid": 2676070, - "extract": "Boyd Dunlop Morehead (24 August 1843 – 30 October 1905) was a politician in Queensland, Australia.", - "extract_html": "

    Boyd Dunlop Morehead (24 August 1843 – 30 October 1905) was a politician in Queensland, Australia.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Boyd_Dunlop_Morehead_2_-_Queensland_politician.jpg/233px-Boyd_Dunlop_Morehead_2_-_Queensland_politician.jpg", - "width": 233, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d7/Boyd_Dunlop_Morehead_2_-_Queensland_politician.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d7/Boyd_Dunlop_Morehead_2_-_Queensland_politician.jpg", - "width": 365, - "height": 500 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-16T02:18:13Z", - "description": "Premier of Queensland, Australia, 1888 to 1890", - "normalizedtitle": "Boyd Dunlop Morehead" - }, - { - "title": "Premier_of_Queensland", - "displaytitle": "Premier of Queensland", - "pageid": 24677, - "extract": "The Premier of Queensland is the head of government in the Australian state of Queensland.\nBy convention the Premier is the leader of the party with a parliamentary majority in the unicameral Legislative Assembly of Queensland.", - "extract_html": "

    The Premier of Queensland is the head of government in the Australian state of Queensland.

    \n

    By convention the Premier is the leader of the party with a parliamentary majority in the unicameral Legislative Assembly of Queensland.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/State_Badge_of_Queensland.svg/320px-State_Badge_of_Queensland.svg.png", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b5/State_Badge_of_Queensland.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b5/State_Badge_of_Queensland.svg", - "width": 222, - "height": 222 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-06T15:03:14Z", - "description": "head of government for the state of Queensland, Australia", - "normalizedtitle": "Premier of Queensland" - } - ], - "year": 1905 - }, - { - "text": "William H. Webb, American shipbuilder and philanthropist (b. 1816)", - "pages": [ - { - "title": "William_H._Webb", - "displaytitle": "William H. Webb", - "pageid": 2784846, - "extract": "William Henry Webb (19 June 1816 – 30 October 1899) was a 19th-century New York shipbuilder and philanthropist, who has been called America's first true naval architect.\nWebb inherited his father's shipyard, Webb & Allen, in 1840, renamed it William H. Webb, and turned it into America's most prolific shipyard, building 133 vessels between 1840 and 1865. Webb designed some of the fastest and most successful sailing packets and clipper ships ever built, and he also built some of the largest and most celebrated steamboats and steamships of his era, including the giant ironclad USS Dunderberg, in its day the world's longest wooden-hulled ship.\nAfter the American Civil War, the U.S. shipbuilding industry experienced a prolonged slump, and Webb, having already made a considerable fortune, decided to close his shipyard and turn his energies toward philanthropic goals.", - "extract_html": "

    William Henry Webb (19 June 1816 – 30 October 1899) was a 19th-century New York shipbuilder and philanthropist, who has been called America's first true naval architect.

    \n

    Webb inherited his father's shipyard, Webb & Allen, in 1840, renamed it William H. Webb, and turned it into America's most prolific shipyard, building 133 vessels between 1840 and 1865. Webb designed some of the fastest and most successful sailing packets and clipper ships ever built, and he also built some of the largest and most celebrated steamboats and steamships of his era, including the giant ironclad USS Dunderberg, in its day the world's longest wooden-hulled ship.

    \n

    After the American Civil War, the U.S. shipbuilding industry experienced a prolonged slump, and Webb, having already made a considerable fortune, decided to close his shipyard and turn his energies toward philanthropic goals.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/9/95/William_Henry_Webb.jpg/295px-William_Henry_Webb.jpg", - "width": 295, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/en/9/95/William_Henry_Webb.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/9/95/William_Henry_Webb.jpg", - "width": 921, - "height": 998 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-18T16:23:00Z", - "description": "American shipbuilder", - "normalizedtitle": "William H. Webb" - } - ], - "year": 1899 - }, - { - "text": "Carol Benesch, Czech architect, designed Peleș Castle (b. 1822)", - "pages": [ - { - "title": "Carol_Benesch", - "displaytitle": "Carol Benesch", - "pageid": 35995220, - "extract": "Carol Benesch (January 9, 1822, Jägerndorf, Austro-Hungarian Empire, today Krnov, Czech Republic - October 30, 1896, Bucharest, Romania) was a Silesian architect of Historicism and Eclecticism orientation established in the Kingdom of Romania.", - "extract_html": "

    Carol Benesch (January 9, 1822, Jägerndorf, Austro-Hungarian Empire, today Krnov, Czech Republic - October 30, 1896, Bucharest, Romania) was a Silesian architect of Historicism and Eclecticism orientation established in the Kingdom of Romania.

    ", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-31T08:54:26Z", - "description": "romanian architect", - "normalizedtitle": "Carol Benesch" - }, - { - "title": "Peleș_Castle", - "displaytitle": "Peleș Castle", - "pageid": 422624, - "extract": "Peleș Castle (Romanian: Castelul Peleș pronounced [kasˈtelul ˈpeleʃ]) is a Neo-Renaissance castle in the Carpathian Mountains, near Sinaia, in Prahova County, Romania, on an existing medieval route linking Transylvania and Wallachia, built between 1873 and 1914. Its inauguration was held in 1883.", - "extract_html": "

    Peleș Castle (Romanian: Castelul Peleș pronounced [kasˈtelul ˈpeleʃ]) is a Neo-Renaissance castle in the Carpathian Mountains, near Sinaia, in Prahova County, Romania, on an existing medieval route linking Transylvania and Wallachia, built between 1873 and 1914. Its inauguration was held in 1883.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Castelul_Peles%2C_Sinaia_-_Vedere_panoramica.jpg/320px-Castelul_Peles%2C_Sinaia_-_Vedere_panoramica.jpg", - "width": 320, - "height": 228, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/6d/Castelul_Peles%2C_Sinaia_-_Vedere_panoramica.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/6d/Castelul_Peles%2C_Sinaia_-_Vedere_panoramica.jpg", - "width": 3238, - "height": 2306 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-12T07:58:59Z", - "description": "Castle in Romania", - "normalizedtitle": "Peleș Castle" - } - ], - "year": 1896 - }, - { - "text": "James Patterson, English-Australian politician, 17th Premier of Victoria (b. 1833)", - "pages": [ - { - "title": "James_Patterson_(Australian_politician)", - "displaytitle": "James Patterson (Australian politician)", - "pageid": 3011580, - "extract": "Sir James Brown Patterson, KCMG (18 November 1833 – 30 October 1895), Australian colonial politician, was the 17th Premier of Victoria.\nPatterson was born in 1833 at Patterson Cottage, Alnwick, Northumberland, England to James Patterson, contractor, and Agnes, née Brown. Patterson emigrated to Victoria in 1852 to seek his fortune on the goldfields. After a few years as a digger and four as a farmer, he settled in Chewton, where he went into business as a butcher, later moving into real estate. He was Mayor of Chewton for four years before he was elected to the Victorian Legislative Assembly for Castlemaine in 1870.\nA moderate conservative, Patterson served in the second third governments of the liberal leader Graham Berry, as Commissioner for Public Works in August 1875 and as Commissioner for Public Works and Vice-President of the Board of Land and Works in 1877–1880. From July 1878 to March 1880 he was also Postmaster-General.", - "extract_html": "

    Sir James Brown Patterson, KCMG (18 November 1833 – 30 October 1895), Australian colonial politician, was the 17th Premier of Victoria.

    \n

    Patterson was born in 1833 at Patterson Cottage, Alnwick, Northumberland, England to James Patterson, contractor, and Agnes, née Brown. Patterson emigrated to Victoria in 1852 to seek his fortune on the goldfields. After a few years as a digger and four as a farmer, he settled in Chewton, where he went into business as a butcher, later moving into real estate. He was Mayor of Chewton for four years before he was elected to the Victorian Legislative Assembly for Castlemaine in 1870.

    \n

    A moderate conservative, Patterson served in the second third governments of the liberal leader Graham Berry, as Commissioner for Public Works in August 1875 and as Commissioner for Public Works and Vice-President of the Board of Land and Works in 1877–1880. From July 1878 to March 1880 he was also Postmaster-General.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/17Jamespatterson.jpg/223px-17Jamespatterson.jpg", - "width": 223, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/e3/17Jamespatterson.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e3/17Jamespatterson.jpg", - "width": 392, - "height": 562 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-29T09:20:03Z", - "description": "Australian politician", - "normalizedtitle": "James Patterson (Australian politician)" - }, - { - "title": "Premier_of_Victoria", - "displaytitle": "Premier of Victoria", - "pageid": 24655, - "extract": "The Premier of Victoria is the leader of the government in the Australian state of Victoria. The Premier is appointed by the Governor of Victoria, and is the leader of the political party able to secure a majority in the Legislative Assembly.\nResponsible government came to the colony of Victoria in 1855. Between 1856 and 1892, the head of the government was commonly called the Premier or the Prime Minister, but neither title had any legal basis. The head of government always held another portfolio, usually Chief Secretary or Treasurer, for which they were paid a salary.", - "extract_html": "

    The Premier of Victoria is the leader of the government in the Australian state of Victoria. The Premier is appointed by the Governor of Victoria, and is the leader of the political party able to secure a majority in the Legislative Assembly.

    \n

    Responsible government came to the colony of Victoria in 1855. Between 1856 and 1892, the head of the government was commonly called the Premier or the Prime Minister, but neither title had any legal basis. The head of government always held another portfolio, usually Chief Secretary or Treasurer, for which they were paid a salary.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/04/Coat_of_Arms_of_Victoria.svg/255px-Coat_of_Arms_of_Victoria.svg.png", - "width": 255, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/04/Coat_of_Arms_of_Victoria.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/04/Coat_of_Arms_of_Victoria.svg", - "width": 1298, - "height": 1630 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-23T15:04:11Z", - "description": "head of government for the state of Victoria, Australia", - "normalizedtitle": "Premier of Victoria" - } - ], - "year": 1895 - }, - { - "text": "Honoré Mercier, Canadian lawyer and politician, 9th Premier of Quebec (b. 1840)", - "pages": [ - { - "title": "Honoré_Mercier", - "displaytitle": "Honoré Mercier", - "pageid": 387479, - "extract": "Honoré Mercier (October 15, 1840 – October 30, 1894) was a lawyer, journalist and politician in Quebec, Canada. He was the ninth Premier of Quebec from January 27, 1887 to December 21, 1891, as leader of the Parti National or Quebec Liberal Party (PLQ).", - "extract_html": "

    Honoré Mercier (October 15, 1840 – October 30, 1894) was a lawyer, journalist and politician in Quebec, Canada. He was the ninth Premier of Quebec from January 27, 1887 to December 21, 1891, as leader of the Parti National or Quebec Liberal Party (PLQ).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Honor%C3%A9_Mercier.png/282px-Honor%C3%A9_Mercier.png", - "width": 282, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/42/Honor%C3%A9_Mercier.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/42/Honor%C3%A9_Mercier.png", - "width": 521, - "height": 592 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-13T19:27:14Z", - "description": "Canadian politician", - "normalizedtitle": "Honoré Mercier" - }, - { - "title": "Premier_of_Quebec", - "displaytitle": "Premier of Quebec", - "pageid": 370751, - "extract": "The Premier of Quebec (French: Premier ministre du Québec (masculine) or Première ministre du Québec (feminine)) is the head of government of the Canadian province of Quebec.", - "extract_html": "

    The Premier of Quebec (French: Premier ministre du Québec (masculine) or Première ministre du Québec (feminine)) is the head of government of the Canadian province of Quebec.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Philippe_Couillard_2014-11-11_E.jpg/241px-Philippe_Couillard_2014-11-11_E.jpg", - "width": 241, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/03/Philippe_Couillard_2014-11-11_E.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/03/Philippe_Couillard_2014-11-11_E.jpg", - "width": 1472, - "height": 1956 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-23T06:47:28Z", - "description": "head of the government of Quebec", - "normalizedtitle": "Premier of Quebec" - } - ], - "year": 1894 - }, - { - "text": "John Abbott, Canadian lawyer and politician, 3rd Prime Minister of Canada (b. 1821)", - "pages": [ - { - "title": "John_Abbott", - "displaytitle": "John Abbott", - "pageid": 98531, - "extract": "Sir John Joseph Caldwell Abbott, (March 12, 1821 – October 30, 1893), was a Canadian politician who served as the third Prime Minister of Canada, in office from 1891 to 1892. He held office as the leader of the Conservative Party.\nAbbott was born in what is now Saint-André-d'Argenteuil, Quebec. He studied law at McGill University and became one of Montreal's best-known lawyers, later returning to McGill as a professor of law and earning a Doctor of Civil Law degree. He was perhaps best known for his successful defence of the perpetrators of the St. Albans Raid.", - "extract_html": "

    Sir John Joseph Caldwell Abbott, (March 12, 1821 – October 30, 1893), was a Canadian politician who served as the third Prime Minister of Canada, in office from 1891 to 1892. He held office as the leader of the Conservative Party.

    \n

    Abbott was born in what is now Saint-André-d'Argenteuil, Quebec. He studied law at McGill University and became one of Montreal's best-known lawyers, later returning to McGill as a professor of law and earning a Doctor of Civil Law degree. He was perhaps best known for his successful defence of the perpetrators of the St. Albans Raid.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/68/SirJohnAbbott1.jpg/253px-SirJohnAbbott1.jpg", - "width": 253, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/6/68/SirJohnAbbott1.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/6/68/SirJohnAbbott1.jpg", - "width": 476, - "height": 601 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-24T02:57:33Z", - "description": "3rd Prime Minister of Canada", - "normalizedtitle": "John Abbott" - }, - { - "title": "Prime_Minister_of_Canada", - "displaytitle": "Prime Minister of Canada", - "pageid": 24135, - "extract": "The Prime Minister of Canada (French: Premier ministre du Canada) is the primary minister of the Crown, chairman of the Cabinet, and thus Canada's head of government, charged with advising the Canadian monarch or federal viceroy on the exercise of the executive powers vested in them by the constitution. Not outlined in any constitutional document, the office exists only as per long-established convention (originating in Canada's former colonial power, the United Kingdom) that stipulates the monarch's representative, the governor general, must select as prime minister the person most likely to command the confidence of the elected House of Commons; this individual is typically the leader of the political party that holds the largest number of seats in that chamber.", - "extract_html": "

    The Prime Minister of Canada (French: Premier ministre du Canada) is the primary minister of the Crown, chairman of the Cabinet, and thus Canada's head of government, charged with advising the Canadian monarch or federal viceroy on the exercise of the executive powers vested in them by the constitution. Not outlined in any constitutional document, the office exists only as per long-established convention (originating in Canada's former colonial power, the United Kingdom) that stipulates the monarch's representative, the governor general, must select as prime minister the person most likely to command the confidence of the elected House of Commons; this individual is typically the leader of the political party that holds the largest number of seats in that chamber.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/Justin_Trudeau_and_Benigno_Aquino_III_November_2015_cropped.jpg/240px-Justin_Trudeau_and_Benigno_Aquino_III_November_2015_cropped.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/be/Justin_Trudeau_and_Benigno_Aquino_III_November_2015_cropped.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/be/Justin_Trudeau_and_Benigno_Aquino_III_November_2015_cropped.jpg", - "width": 675, - "height": 900 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-11T05:41:41Z", - "description": "head of government for Canada", - "normalizedtitle": "Prime Minister of Canada" - } - ], - "year": 1893 - }, - { - "text": "Robert Volkmann, German pianist and composer (b. 1815)", - "pages": [ - { - "title": "Robert_Volkmann", - "displaytitle": "Robert Volkmann", - "pageid": 337511, - "extract": "Friedrich Robert Volkmann, (Hungarian: Volkmann Róbert), (6 April 1815, Lommatzsch bei Meißen – 30 October 1883, Budapest) was a German composer.", - "extract_html": "

    Friedrich Robert Volkmann, (Hungarian: Volkmann Róbert), (6 April 1815, Lommatzsch bei Meißen – 30 October 1883, Budapest) was a German composer.

    ", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Briefe_von_Robert_Volkmann%2C_Bildnis.jpg/248px-Briefe_von_Robert_Volkmann%2C_Bildnis.jpg", - "width": 248, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/fc/Briefe_von_Robert_Volkmann%2C_Bildnis.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/fc/Briefe_von_Robert_Volkmann%2C_Bildnis.jpg", - "width": 1550, - "height": 2000 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-07-19T08:49:45Z", - "description": "German-born Hungarian composer, conductor and teacher", - "normalizedtitle": "Robert Volkmann" - } - ], - "year": 1883 - }, - { - "text": "Dayananda Saraswati, Indian philosopher and scholar (b. 1824)", - "pages": [ - { - "title": "Dayananda_Saraswati", - "displaytitle": "Dayananda Saraswati", - "pageid": 45654, - "extract": "Dayanand Saraswati pronunciation (12 February 1824 – 30 October 1883) was a Hindu religious leader and founder of the Arya Samaj, a Hindu reform movements of the Vedic tradition. He was also a renowned scholar of the Vedic lore and Sanskrit language. He was the first to give the call for Swaraj as \"Indian for India\" in 1876, a call later taken up by Lokmanya Tilak. Denouncing the idolatry and ritualistic worship prevalent in Hinduism at the time, he worked towards reviving Vedic ideologies. Subsequently, the philosopher and President of India, S. Radhakrishnan called him one of the \"makers of Modern India\", as did Sri Aurobindo.\nThose who were influenced by and followed Dayananda included Madam Cama, Pandit Lekh Ram, Swami Shraddhanand, Pandit Guru Dutt Vidyarthi, Shyamji Krishna Varma (who established India House in England for Freedom fighters,) Vinayak Damodar Savarkar, Lala Hardayal, Madan Lal Dhingra, Ram Prasad Bismil, Mahadev Govind Ranade Swami Shraddhanand, Mahatma Hansraj, Lala Lajpat Rai, and others.", - "extract_html": "

    Dayanand Saraswati pronunciation (12 February 1824 – 30 October 1883) was a Hindu religious leader and founder of the Arya Samaj, a Hindu reform movements of the Vedic tradition. He was also a renowned scholar of the Vedic lore and Sanskrit language. He was the first to give the call for Swaraj as \"Indian for India\" in 1876, a call later taken up by Lokmanya Tilak. Denouncing the idolatry and ritualistic worship prevalent in Hinduism at the time, he worked towards reviving Vedic ideologies. Subsequently, the philosopher and President of India, S. Radhakrishnan called him one of the \"makers of Modern India\", as did Sri Aurobindo.

    \n

    Those who were influenced by and followed Dayananda included Madam Cama, Pandit Lekh Ram, Swami Shraddhanand, Pandit Guru Dutt Vidyarthi, Shyamji Krishna Varma (who established India House in England for Freedom fighters,) Vinayak Damodar Savarkar, Lala Hardayal, Madan Lal Dhingra, Ram Prasad Bismil, Mahadev Govind Ranade Swami Shraddhanand, Mahatma Hansraj, Lala Lajpat Rai, and others.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Dayananda_Saraswati.jpg/185px-Dayananda_Saraswati.jpg", - "width": 185, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/ea/Dayananda_Saraswati.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/ea/Dayananda_Saraswati.jpg", - "width": 315, - "height": 545 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-26T20:14:58Z", - "description": "founder of the Arya Samaj, a Hindu reform movement", - "normalizedtitle": "Dayananda Saraswati" - } - ], - "year": 1883 - }, - { - "text": "William Forster, Indian-Australian politician, 4th Premier of New South Wales (b. 1818)", - "pages": [ - { - "title": "William_Forster_(Australian_politician)", - "displaytitle": "William Forster (Australian politician)", - "pageid": 2778005, - "extract": "William Forster (16 October 1818 – 30 October 1882) was an Australian politician, Premier of New South Wales from 27 October 1859 to 9 March 1860 and poet.\nForster was described in his youth as a \"sallow, thin, saturnine young gentleman\". He was not a great orator but was a debater of ability, though his habit of indulging in bitter personalities detracted from the effectiveness of his speeches. James Martin once described him as \"disagreeable in opposition, insufferable as a supporter, and fatal as a colleague\" but, however true that may have been, it was only one side of his character. A cultured and honest man, thoroughly aware and disdainful of the tricks and shifts of party government, he tried to hold an independent course and do what was best for his country.", - "extract_html": "

    William Forster (16 October 1818 – 30 October 1882) was an Australian politician, Premier of New South Wales from 27 October 1859 to 9 March 1860 and poet.

    \n

    Forster was described in his youth as a \"sallow, thin, saturnine young gentleman\". He was not a great orator but was a debater of ability, though his habit of indulging in bitter personalities detracted from the effectiveness of his speeches. James Martin once described him as \"disagreeable in opposition, insufferable as a supporter, and fatal as a colleague\" but, however true that may have been, it was only one side of his character. A cultured and honest man, thoroughly aware and disdainful of the tricks and shifts of party government, he tried to hold an independent course and do what was best for his country.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/PremierWilliamForster.jpg/249px-PremierWilliamForster.jpg", - "width": 249, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/ab/PremierWilliamForster.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/ab/PremierWilliamForster.jpg", - "width": 432, - "height": 555 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-28T10:21:33Z", - "description": "Premier of New South Wales", - "normalizedtitle": "William Forster (Australian politician)" - }, - { - "title": "Premier_of_New_South_Wales", - "displaytitle": "Premier of New South Wales", - "pageid": 24654, - "extract": "The Premier of New South Wales is the head of government in the state of New South Wales, Australia. The Government of New South Wales follows the Westminster system, with a Parliament of New South Wales acting as the legislature. The Premier is appointed by the Governor of New South Wales, and by modern convention holds office by virtue of his or her ability to command the support of a majority of members of the lower house of Parliament, the Legislative Assembly.\nPrior to Federation in 1901 the term \"Prime Minister of New South Wales\" was used, \"Premier\" was used from 1901.\nThe current Premier is Gladys Berejiklian, the Leader of the New South Wales Liberal Party, who assumed office on 23 January 2017.", - "extract_html": "

    The Premier of New South Wales is the head of government in the state of New South Wales, Australia. The Government of New South Wales follows the Westminster system, with a Parliament of New South Wales acting as the legislature. The Premier is appointed by the Governor of New South Wales, and by modern convention holds office by virtue of his or her ability to command the support of a majority of members of the lower house of Parliament, the Legislative Assembly.

    \n

    Prior to Federation in 1901 the term \"Prime Minister of New South Wales\" was used, \"Premier\" was used from 1901.

    \n

    The current Premier is Gladys Berejiklian, the Leader of the New South Wales Liberal Party, who assumed office on 23 January 2017.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Coat_of_Arms_of_New_South_Wales.svg/320px-Coat_of_Arms_of_New_South_Wales.svg.png", - "width": 320, - "height": 226, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/21/Coat_of_Arms_of_New_South_Wales.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/21/Coat_of_Arms_of_New_South_Wales.svg", - "width": 1050, - "height": 743 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-16T05:16:19Z", - "description": "head of government for the state of New South Wales, Australia", - "normalizedtitle": "Premier of New South Wales" - } - ], - "year": 1882 - }, - { - "text": "Pietro Raimondi, Italian composer (b. 1786)", - "pages": [ - { - "title": "Pietro_Raimondi", - "displaytitle": "Pietro Raimondi", - "pageid": 1956581, - "extract": "Pietro Raimondi (December 20, 1786, Rome – October 30, 1853) was an Italian composer, transitional between the Classical and Romantic eras. While he was famous at the time as a composer of operas and sacred music, he was also as an innovator in contrapuntal technique as well as in creation of gigantic musical simultaneities.\nRaimondi was born in Rome, and received his early education in Naples. He spent part of his early career in Genoa, and then in Sicily, where he had operas performed in Catania and Messina; however he moved back to Naples in 1820, and began a career as an opera composer there. While he was best known as an opera composer during this time, he was obsessed with counterpoint, and spent his spare time writing fugues for many voices, as well as simultaneous fugues in different keys and modes for multiple groups of different instruments. He considered this work to be experimental, and did not incorporate his experimentation, early in his career, into his operas.\nFew of Raimondi's operas were successful, and as soon as he realized he was being eclipsed by Rossini, and later by Bellini and Donizetti, he changed his compositional direction from production of operas to sacred music; in that domain he had a better opportunity to indulge his love of counterpoint.", - "extract_html": "

    Pietro Raimondi (December 20, 1786, Rome – October 30, 1853) was an Italian composer, transitional between the Classical and Romantic eras. While he was famous at the time as a composer of operas and sacred music, he was also as an innovator in contrapuntal technique as well as in creation of gigantic musical simultaneities.

    \n

    Raimondi was born in Rome, and received his early education in Naples. He spent part of his early career in Genoa, and then in Sicily, where he had operas performed in Catania and Messina; however he moved back to Naples in 1820, and began a career as an opera composer there. While he was best known as an opera composer during this time, he was obsessed with counterpoint, and spent his spare time writing fugues for many voices, as well as simultaneous fugues in different keys and modes for multiple groups of different instruments. He considered this work to be experimental, and did not incorporate his experimentation, early in his career, into his operas.

    \n

    Few of Raimondi's operas were successful, and as soon as he realized he was being eclipsed by Rossini, and later by Bellini and Donizetti, he changed his compositional direction from production of operas to sacred music; in that domain he had a better opportunity to indulge his love of counterpoint.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/cc/Pietro_Raimondi.jpg/227px-Pietro_Raimondi.jpg", - "width": 227, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/cc/Pietro_Raimondi.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/cc/Pietro_Raimondi.jpg", - "width": 455, - "height": 640 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-26T20:05:05Z", - "description": "Italian composer", - "normalizedtitle": "Pietro Raimondi" - } - ], - "year": 1853 - }, - { - "text": "Allan Cunningham, Scottish author and poet (b. 1784)", - "pages": [ - { - "title": "Allan_Cunningham_(author)", - "displaytitle": "Allan Cunningham (author)", - "pageid": 223049, - "extract": "", - "extract_html": "

    ", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Allan_Cunningham_by_Henry_Room.jpg/245px-Allan_Cunningham_by_Henry_Room.jpg", - "width": 245, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d9/Allan_Cunningham_by_Henry_Room.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d9/Allan_Cunningham_by_Henry_Room.jpg", - "width": 2400, - "height": 3132 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-03-25T17:58:58Z", - "description": "Scottish poet and author", - "normalizedtitle": "Allan Cunningham (author)" - } - ], - "year": 1842 - }, - { - "text": "Frederick I of Württemberg (b. 1754)", - "pages": [ - { - "title": "Frederick_I_of_Württemberg", - "displaytitle": "Frederick I of Württemberg", - "pageid": 113148, - "extract": "Frederick I (German: Friedrich Wilhelm Karl; 6 November 1754 – 30 October 1816) was the last Duke of Würtemberg, then briefly Elector of Württemberg, and was later elevated to the status of King of Württemberg, by Napoleon I. He was known for his size: at 2.11 m (6 ft 11 in) and about 200 kg (440 lb).", - "extract_html": "

    Frederick I (German: Friedrich Wilhelm Karl; 6 November 1754 – 30 October 1816) was the last Duke of Würtemberg, then briefly Elector of Württemberg, and was later elevated to the status of King of Württemberg, by Napoleon I. He was known for his size: at 2.11 m (6 ft 11 in) and about 200 kg (440 lb).

    ", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Seele-Friedrich_I..jpg/243px-Seele-Friedrich_I..jpg", - "width": 243, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2a/Seele-Friedrich_I..jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2a/Seele-Friedrich_I..jpg", - "width": 1419, - "height": 1868 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-23T01:11:42Z", - "description": "last Duke of Würtemberg, then briefly Elector of Württemberg, and was later elevated to the status of King of Württemberg, by Napoleon I", - "normalizedtitle": "Frederick I of Württemberg" - } - ], - "year": 1816 - }, - { - "text": "William Cavendish-Bentinck, 3rd Duke of Portland, English politician, Prime Minister of the United Kingdom (b. 1738)", - "pages": [ - { - "title": "William_Cavendish-Bentinck,_3rd_Duke_of_Portland", - "displaytitle": "William Cavendish-Bentinck, 3rd Duke of Portland", - "pageid": 232782, - "extract": "William Henry Cavendish Cavendish-Bentinck, 3rd Duke of Portland, (14 April 1738 – 30 October 1809) was a British Whig and Tory statesman, Chancellor of the University of Oxford, Prime Minister of Great Britain, serving in 1783 and Prime Minister of the United Kingdom from 1807 to 1809. The 24 years between his two terms as Prime Minister is the longest gap between terms of office of any Prime Minister. He was known before 1762 by the courtesy title Marquess of Titchfield. He held a title of every degree of British nobility—Duke, Marquess, Earl, Viscount, and Baron.", - "extract_html": "

    William Henry Cavendish Cavendish-Bentinck, 3rd Duke of Portland, (14 April 1738 – 30 October 1809) was a British Whig and Tory statesman, Chancellor of the University of Oxford, Prime Minister of Great Britain, serving in 1783 and Prime Minister of the United Kingdom from 1807 to 1809. The 24 years between his two terms as Prime Minister is the longest gap between terms of office of any Prime Minister. He was known before 1762 by the courtesy title Marquess of Titchfield. He held a title of every degree of British nobility—Duke, Marquess, Earl, Viscount, and Baron.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/3rd_Duke_of_Portland_1804.jpg/247px-3rd_Duke_of_Portland_1804.jpg", - "width": 247, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d2/3rd_Duke_of_Portland_1804.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d2/3rd_Duke_of_Portland_1804.jpg", - "width": 497, - "height": 644 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T15:20:43Z", - "description": "British politician", - "normalizedtitle": "William Cavendish-Bentinck, 3rd Duke of Portland" - }, - { - "title": "Prime_Minister_of_the_United_Kingdom", - "displaytitle": "Prime Minister of the United Kingdom", - "pageid": 24150, - "extract": "The Prime Minister of the United Kingdom is the head of Her Majesty's Government in the United Kingdom. The Prime Minister (sometimes informally abbreviated to PM) and Cabinet (consisting of all the most senior ministers, most of whom are government department heads) are collectively accountable for their policies and actions to the Monarch, to Parliament, to their political party and ultimately to the electorate. The office is one of the Great Offices of State. The current holder of the office, Theresa May, leader of the Conservative Party, was appointed by the Queen on 13 July 2016.\nThe office is not established by any constitution or law but exists only by long-established convention, which stipulates that the monarch must appoint as Prime Minister the person most likely to command the confidence of the House of Commons; this individual is typically the leader of the political party or coalition of parties that holds the largest number of seats in that chamber. The position of Prime Minister was not created; it evolved slowly and erratically over three hundred years due to numerous acts of Parliament, political developments, and accidents of history.", - "extract_html": "

    The Prime Minister of the United Kingdom is the head of Her Majesty's Government in the United Kingdom. The Prime Minister (sometimes informally abbreviated to PM) and Cabinet (consisting of all the most senior ministers, most of whom are government department heads) are collectively accountable for their policies and actions to the Monarch, to Parliament, to their political party and ultimately to the electorate. The office is one of the Great Offices of State. The current holder of the office, Theresa May, leader of the Conservative Party, was appointed by the Queen on 13 July 2016.

    \n

    The office is not established by any constitution or law but exists only by long-established convention, which stipulates that the monarch must appoint as Prime Minister the person most likely to command the confidence of the House of Commons; this individual is typically the leader of the political party or coalition of parties that holds the largest number of seats in that chamber. The position of Prime Minister was not created; it evolved slowly and erratically over three hundred years due to numerous acts of Parliament, political developments, and accidents of history.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Royal_Coat_of_Arms_of_the_United_Kingdom_%28HM_Government%29.svg/320px-Royal_Coat_of_Arms_of_the_United_Kingdom_%28HM_Government%29.svg.png", - "width": 320, - "height": 263, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/1a/Royal_Coat_of_Arms_of_the_United_Kingdom_%28HM_Government%29.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/1a/Royal_Coat_of_Arms_of_the_United_Kingdom_%28HM_Government%29.svg", - "width": 1530, - "height": 1256 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T13:57:51Z", - "description": "head of Her Majesty's Government in the United Kingdom", - "normalizedtitle": "Prime Minister of the United Kingdom" - } - ], - "year": 1809 - }, - { - "text": "Edward Vernon, English admiral and politician (b. 1684)", - "pages": [ - { - "title": "Edward_Vernon", - "displaytitle": "Edward Vernon", - "pageid": 754254, - "extract": "Admiral Edward Vernon (12 November 1684 – 30 October 1757) was an English naval officer. Vernon was born in Westminster and went to Westminster School. He joined the Royal Navy in 1700 and was promoted to Lieutenant in 1702. After five years as Lieutenant, he was appointed Captain in 1706. His first command was the HMS Rye, part of the fleet of Admiral Sir Cloudesley Shovell.\nVernon had a long and distinguished career, rising to the rank of Admiral after 46 years service.", - "extract_html": "

    Admiral Edward Vernon (12 November 1684 – 30 October 1757) was an English naval officer. Vernon was born in Westminster and went to Westminster School. He joined the Royal Navy in 1700 and was promoted to Lieutenant in 1702. After five years as Lieutenant, he was appointed Captain in 1706. His first command was the HMS Rye, part of the fleet of Admiral Sir Cloudesley Shovell.

    \n

    Vernon had a long and distinguished career, rising to the rank of Admiral after 46 years service.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Edward_Vernon_by_Thomas_Gainsborough.jpg/259px-Edward_Vernon_by_Thomas_Gainsborough.jpg", - "width": 259, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/38/Edward_Vernon_by_Thomas_Gainsborough.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/38/Edward_Vernon_by_Thomas_Gainsborough.jpg", - "width": 2400, - "height": 2966 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-23T19:32:24Z", - "description": "Royal Navy admiral", - "normalizedtitle": "Edward Vernon" - } - ], - "year": 1757 - }, - { - "text": "Osman III, Ottoman sultan (b. 1699)", - "pages": [ - { - "title": "Osman_III", - "displaytitle": "Osman III", - "pageid": 208625, - "extract": "Osman III (Ottoman Turkish: عثمان ثالث‎ ‘Osmān-i sālis;‎ 2/3 January 1699 – 30 October 1757) was the Sultan of the Ottoman Empire from 1754 to 1757.", - "extract_html": "

    Osman III (Ottoman Turkish: عثمان ثالث‘Osmān-i sālis;‎ 2/3 January 1699 – 30 October 1757) was the Sultan of the Ottoman Empire from 1754 to 1757.

    ", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/OsmanIII.jpg/232px-OsmanIII.jpg", - "width": 232, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/2/2b/OsmanIII.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/2/2b/OsmanIII.jpg", - "width": 361, - "height": 497 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-26T04:55:24Z", - "description": "Ottoman sultan", - "normalizedtitle": "Osman III" - } - ], - "year": 1757 - }, - { - "text": "Nedîm, Turkish poet (b. 1681)", - "pages": [ - { - "title": "Nedîm", - "displaytitle": "Nedîm", - "pageid": 4567349, - "extract": "Ahmet Nedîm Efendi (نديم) (1681? – 30 October 1730) was the pen name (Ottoman Turkish: ﻡﺨﻠﺺ mahlas) of one of the most celebrated Ottoman poets. He achieved his greatest fame during the reign of Ahmed III, the so-called Tulip Era from 1718 to 1730. Both his life and his work are often seen as being representative of the relaxed attitude and European influences of that time.", - "extract_html": "

    Ahmet Nedîm Efendi (نديم) (1681? – 30 October 1730) was the pen name (Ottoman Turkish: ﻡﺨﻠﺺ mahlas) of one of the most celebrated Ottoman poets. He achieved his greatest fame during the reign of Ahmed III, the so-called Tulip Era from 1718 to 1730. Both his life and his work are often seen as being representative of the relaxed attitude and European influences of that time.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Nedim_%28divan_edb.%C5%9Fairi%29.JPG/284px-Nedim_%28divan_edb.%C5%9Fairi%29.JPG", - "width": 284, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/c/c4/Nedim_%28divan_edb.%C5%9Fairi%29.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/c/c4/Nedim_%28divan_edb.%C5%9Fairi%29.JPG", - "width": 603, - "height": 680 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-26T05:27:44Z", - "description": "Ottoman poet", - "normalizedtitle": "Nedîm" - } - ], - "year": 1730 - }, - { - "text": "Hieronymus van Beverningh, Dutch diplomat and politician (b. 1614)", - "pages": [ - { - "title": "Hieronymus_van_Beverningh", - "displaytitle": "Hieronymus van Beverningh", - "pageid": 18256013, - "extract": "Hieronymus van Beverningh (sometimes spelled Beverningk) (Gouda, April 25, 1614 – Oud Teylingen, October 30, 1690) was a prominent Dutch regent, diplomat, amateur botanist, and patron of the arts, who lived during the Dutch Golden Age.", - "extract_html": "

    Hieronymus van Beverningh (sometimes spelled Beverningk) (Gouda, April 25, 1614 – Oud Teylingen, October 30, 1690) was a prominent Dutch regent, diplomat, amateur botanist, and patron of the arts, who lived during the Dutch Golden Age.

    ", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/37/Jan_de_Baen_002.jpg/247px-Jan_de_Baen_002.jpg", - "width": 247, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/37/Jan_de_Baen_002.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/37/Jan_de_Baen_002.jpg", - "width": 1311, - "height": 1698 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T07:28:32Z", - "description": "Dutch diplomat and politician", - "normalizedtitle": "Hieronymus van Beverningh" - } - ], - "year": 1690 - }, - { - "text": "Michel Le Tellier, French lawyer and politician, French Secretary of State for War (b. 1603)", - "pages": [ - { - "title": "Michel_Le_Tellier", - "displaytitle": "Michel Le Tellier", - "pageid": 30876781, - "extract": "Michel Le Tellier, marquis de Barbezieux, seigneur de Chaville et de Viroflay (19 April 1603 – 30 October 1685) was a French statesman.", - "extract_html": "

    Michel Le Tellier, marquis de Barbezieux, seigneur de Chaville et de Viroflay (19 April 1603 – 30 October 1685) was a French statesman.

    ", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Michel-le-tellier.jpg/264px-Michel-le-tellier.jpg", - "width": 264, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b9/Michel-le-tellier.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b9/Michel-le-tellier.jpg", - "width": 400, - "height": 485 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-04-27T20:36:27Z", - "description": "French statesman", - "normalizedtitle": "Michel Le Tellier" - }, - { - "title": "Minister_of_the_Armed_Forces_(France)", - "displaytitle": "Minister of the Armed Forces (France)", - "pageid": 871772, - "extract": "The Ministry of the Armed Forces (French: Ministre des Armées) is the French cabinet member charged with running the French Armed Forces.\nThe minister in charge of the Armed Forces has evolved within the epoque and regimes. The minister is always attached to a ministry or state secretary bureau, today attached to the Ministry of the Armed Forces.\nThe Secretary of State of War was one of the four specialised secretaries of state established in France in 1589. This State Secretary was responsible for the French Army (similarly, the Naval Ministers of France and the Colonies was created in 1669). In 1791, the secretary of state of war becomes Minister of War, with this ministerial function being abolished in 1794 and re-established in 1795. In 1930, the position was often referred to as Minister of War and National Defense.", - "extract_html": "

    The Ministry of the Armed Forces (French: Ministre des Armées) is the French cabinet member charged with running the French Armed Forces.

    \n

    The minister in charge of the Armed Forces has evolved within the epoque and regimes. The minister is always attached to a ministry or state secretary bureau, today attached to the Ministry of the Armed Forces.

    \n

    The Secretary of State of War was one of the four specialised secretaries of state established in France in 1589. This State Secretary was responsible for the French Army (similarly, the Naval Ministers of France and the Colonies was created in 1669). In 1791, the secretary of state of war becomes Minister of War, with this ministerial function being abolished in 1794 and re-established in 1795. In 1930, the position was often referred to as Minister of War and National Defense.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Marque_mindef.svg/320px-Marque_mindef.svg.png", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b2/Marque_mindef.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b2/Marque_mindef.svg", - "width": 300, - "height": 300 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-14T11:37:20Z", - "description": "cabinet official of the French government", - "normalizedtitle": "Minister of the Armed Forces (France)" - } - ], - "year": 1685 - }, - { - "text": "Antoinette Bourignon, French-Flemish mystic (b. 1616)", - "pages": [ - { - "title": "Antoinette_Bourignon", - "displaytitle": "Antoinette Bourignon", - "pageid": 733132, - "extract": "Antoinette Bourignon de la Porte (13 January 1616 – 30 October 1680) was a French-Flemish mystic and adventurer. She taught that the end times would come soon and that the Last Judgment would then be felled. Her belief was that she was chosen by God to restore true Christianity on earth and became the central figure of a spiritual network that extended beyond the borders of the Dutch Republic, including Holstein and Scotland.", - "extract_html": "

    Antoinette Bourignon de la Porte (13 January 1616 – 30 October 1680) was a French-Flemish mystic and adventurer. She taught that the end times would come soon and that the Last Judgment would then be felled. Her belief was that she was chosen by God to restore true Christianity on earth and became the central figure of a spiritual network that extended beyond the borders of the Dutch Republic, including Holstein and Scotland.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/14/Antoinette_Bourignon.jpg", - "width": 215, - "height": 308, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/14/Antoinette_Bourignon.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/14/Antoinette_Bourignon.jpg", - "width": 215, - "height": 308 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-15T20:56:03Z", - "description": "17th-century French-Flemish mystic", - "normalizedtitle": "Antoinette Bourignon" - } - ], - "year": 1680 - }, - { - "text": "Emperor Go-Kōmyō of Japan (b. 1633)", - "pages": [ - { - "title": "Emperor_Go-Kōmyō", - "displaytitle": "Emperor Go-Kōmyō", - "pageid": 218732, - "extract": "Emperor Go-Kōmyō (後光明天皇, Go-Kōmyō-tennō, April 20, 1633 – October 30, 1654) was the 110th emperor of Japan, according to the traditional order of succession.\nGo-Kōmyō's reign spanned the years from 1643 through 1654.\nThis 17th-century sovereign was named after the 14th-century Nanboku-chō Emperor Kōmyō and go- (後), translates as later, and thus, he could be called the \"Later Emperor Kōmyō\".", - "extract_html": "

    Emperor Go-Kōmyō (後光明天皇, Go-Kōmyō-tennō, April 20, 1633 – October 30, 1654) was the 110th emperor of Japan, according to the traditional order of succession.

    \n

    Go-Kōmyō's reign spanned the years from 1643 through 1654.

    \n

    This 17th-century sovereign was named after the 14th-century Nanboku-chō Emperor Kōmyō and go- (後), translates as later, and thus, he could be called the \"Later Emperor Kōmyō\".", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Emperor_Go-K%C5%8Dmy%C5%8D.jpg/320px-Emperor_Go-K%C5%8Dmy%C5%8D.jpg", - "width": 320, - "height": 294, - "original": "https://upload.wikimedia.org/wikipedia/commons/0/02/Emperor_Go-K%C5%8Dmy%C5%8D.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/0/02/Emperor_Go-K%C5%8Dmy%C5%8D.jpg", - "width": 1755, - "height": 1610 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-10T21:43:04Z", - "description": "emperor of Japan", - "normalizedtitle": "Emperor Go-Kōmyō" - } - ], - "year": 1654 - }, - { - "text": "Henri II de Montmorency, French admiral and politician (b. 1595)", - "pages": [ - { - "title": "Henri_II_de_Montmorency", - "displaytitle": "Henri II de Montmorency", - "pageid": 603915, - "extract": "Henri II de Montmorency (30 April 1595 – 30 October 1632) was a French nobleman and military commander.", - "extract_html": "

    Henri II de Montmorency (30 April 1595 – 30 October 1632) was a French nobleman and military commander.

    ", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d5/Henri_II_Duke_of_Montmorency_1595_1632.jpg/283px-Henri_II_Duke_of_Montmorency_1595_1632.jpg", - "width": 283, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d5/Henri_II_Duke_of_Montmorency_1595_1632.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d5/Henri_II_Duke_of_Montmorency_1595_1632.jpg", - "width": 1999, - "height": 2258 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-25T14:13:34Z", - "description": "French admiral and noble", - "normalizedtitle": "Henri II de Montmorency" - } - ], - "year": 1632 - }, - { - "text": "Willebrord Snell, Dutch astronomer and mathematician (b. 1580)", - "pages": [ - { - "title": "Willebrord_Snellius", - "displaytitle": "Willebrord Snellius", - "pageid": 213858, - "extract": "Willebrord Snellius (born Willebrord Snel van Royen) (13 June 1580 – 30 October 1626) was a Dutch astronomer and mathematician, known in the English-speaking world as Snell. In the west, especially the English speaking countries, his name has been attached to the law of refraction of light for several centuries, but it is now known that this law was already known to Ibn Sahl in 984. The same law was also investigated by Ptolemy and in the Middle Ages by Witelo, but due to lack of adequate mathematical instruments (trigonometric functions) their results were saved as tables, not functions.\nThe lunar crater Snellius is named after Willebrord Snellius.", - "extract_html": "

    Willebrord Snellius (born Willebrord Snel van Royen) (13 June 1580 – 30 October 1626) was a Dutch astronomer and mathematician, known in the English-speaking world as Snell. In the west, especially the English speaking countries, his name has been attached to the law of refraction of light for several centuries, but it is now known that this law was already known to Ibn Sahl in 984. The same law was also investigated by Ptolemy and in the Middle Ages by Witelo, but due to lack of adequate mathematical instruments (trigonometric functions) their results were saved as tables, not functions.

    \n

    The lunar crater Snellius is named after Willebrord Snellius.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/Willebrord_Snellius.jpg/223px-Willebrord_Snellius.jpg", - "width": 223, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b8/Willebrord_Snellius.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b8/Willebrord_Snellius.jpg", - "width": 407, - "height": 584 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-06T07:38:35Z", - "description": "Dutch astronomer and mathematician", - "normalizedtitle": "Willebrord Snellius" - } - ], - "year": 1626 - }, - { - "text": "Charles IX of Sweden (b. 1550)", - "pages": [ - { - "title": "Charles_IX_of_Sweden", - "displaytitle": "Charles IX of Sweden", - "pageid": 70026, - "extract": "Charles IX, also Carl (Swedish: Karl IX; 4 October 1550 – 30 October 1611), was King of Sweden from 1604 until his death. He was the youngest son of King Gustav I and his second wife, Margaret Leijonhufvud, brother of Eric XIV and John III, and uncle of Sigismund who was king of both Sweden and Poland. By his father's will he got, by way of appanage, the Duchy of Södermanland, which included the provinces of Närke and Värmland; but he did not come into actual possession of them till after the fall of Eric and the succession to the throne of John in 1568.\nThe Swedish kings Eric XIV (1560–68) and Charles IX (1604–1611) took their numbers according to a fictitious History of Sweden. He was actually the third Swedish king called Charles.\nHe came into the throne by championing the Protestant cause during the increasingly tense times of religious strife between competing sects of Christianity. In just over a decade, these would break out as the Thirty Years' War.", - "extract_html": "

    Charles IX, also Carl (Swedish: Karl IX; 4 October 1550 – 30 October 1611), was King of Sweden from 1604 until his death. He was the youngest son of King Gustav I and his second wife, Margaret Leijonhufvud, brother of Eric XIV and John III, and uncle of Sigismund who was king of both Sweden and Poland. By his father's will he got, by way of appanage, the Duchy of Södermanland, which included the provinces of Närke and Värmland; but he did not come into actual possession of them till after the fall of Eric and the succession to the throne of John in 1568.

    \n

    The Swedish kings Eric XIV (1560–68) and Charles IX (1604–1611) took their numbers according to a fictitious History of Sweden. He was actually the third Swedish king called Charles.

    \n

    He came into the throne by championing the Protestant cause during the increasingly tense times of religious strife between competing sects of Christianity. In just over a decade, these would break out as the Thirty Years' War.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Charles_IX_of_Sweden.jpg/237px-Charles_IX_of_Sweden.jpg", - "width": 237, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/bb/Charles_IX_of_Sweden.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/bb/Charles_IX_of_Sweden.jpg", - "width": 273, - "height": 369 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-04T14:54:37Z", - "description": "King of Sweden", - "normalizedtitle": "Charles IX of Sweden" - } - ], - "year": 1611 - }, - { - "text": "Jean-Jacques Boissard, French poet and illustrator (b. 1528)", - "pages": [ - { - "title": "Jean-Jacques_Boissard", - "displaytitle": "Jean-Jacques Boissard", - "pageid": 297201, - "extract": "Jean-Jacques Boissard (1528 – 30 October 1602) was a French antiquary and Neo-Latin poet.", - "extract_html": "

    Jean-Jacques Boissard (1528 – 30 October 1602) was a French antiquary and Neo-Latin poet.

    ", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Jean_Jacques_Boissard.jpg/241px-Jean_Jacques_Boissard.jpg", - "width": 241, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/38/Jean_Jacques_Boissard.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/38/Jean_Jacques_Boissard.jpg", - "width": 442, - "height": 586 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-27T23:11:08Z", - "description": "French antiquarian and poet", - "normalizedtitle": "Jean-Jacques Boissard" - } - ], - "year": 1602 - }, - { - "text": "Jacob Sturm von Sturmeck, German politician (b. 1489)", - "pages": [ - { - "title": "Jacob_Sturm_von_Sturmeck", - "displaytitle": "Jacob Sturm von Sturmeck", - "pageid": 1177262, - "extract": "Jacob (or Jakob, or Jacques) Sturm von Sturmeck (10 August 1489 – 30 October 1553) was a German statesman, one of the preeminent promoters of the Protestant Reformation in Germany.", - "extract_html": "

    Jacob (or Jakob, or Jacques) Sturm von Sturmeck (10 August 1489 – 30 October 1553) was a German statesman, one of the preeminent promoters of the Protestant Reformation in Germany.

    ", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Jacques_Sturm-Strasbourg.jpg/182px-Jacques_Sturm-Strasbourg.jpg", - "width": 182, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/fb/Jacques_Sturm-Strasbourg.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/fb/Jacques_Sturm-Strasbourg.jpg", - "width": 1121, - "height": 1974 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-08-10T12:45:01Z", - "description": "German politician", - "normalizedtitle": "Jacob Sturm von Sturmeck" - } - ], - "year": 1553 - }, - { - "text": "Jean Mouton, French composer and educator (b. 1459)", - "pages": [ - { - "title": "Jean_Mouton", - "displaytitle": "Jean Mouton", - "pageid": 1156688, - "extract": "Jean Mouton (c. 1459 – 30 October 1522) was a French composer of the Renaissance.", - "extract_html": "

    Jean Mouton (c. 1459 – 30 October 1522) was a French composer of the Renaissance.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-24T20:05:59Z", - "description": "French composer", - "normalizedtitle": "Jean Mouton" - } - ], - "year": 1522 - }, - { - "text": "Johann Fust, German printer (b. c. 1400)", - "pages": [ - { - "title": "Johann_Fust", - "displaytitle": "Johann Fust", - "pageid": 275989, - "extract": "Johann Fust or Faust (c.", - "extract_html": "

    Johann Fust or Faust (c.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Johann_Fust00.jpg/249px-Johann_Fust00.jpg", - "width": 249, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/e4/Johann_Fust00.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e4/Johann_Fust00.jpg", - "width": 478, - "height": 614 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-25T20:17:34Z", - "description": "German printer", - "normalizedtitle": "Johann Fust" - } - ], - "year": 1466 - }, - { - "text": "Poggio Bracciolini, Italian scholar and translator (b. 1380)", - "pages": [ - { - "title": "Poggio_Bracciolini", - "displaytitle": "Poggio Bracciolini", - "pageid": 996597, - "extract": "Gian Francesco Poggio Bracciolini (11 February 1380 – 30 October 1459), best known simply as Poggio Bracciolini, was an Italian scholar and an early humanist. He was responsible for rediscovering and recovering a great number of classical Latin manuscripts, mostly decaying and forgotten in German, Swiss, and French monastic libraries.", - "extract_html": "

    Gian Francesco Poggio Bracciolini (11 February 1380 – 30 October 1459), best known simply as Poggio Bracciolini, was an Italian scholar and an early humanist. He was responsible for rediscovering and recovering a great number of classical Latin manuscripts, mostly decaying and forgotten in German, Swiss, and French monastic libraries.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Gianfrancesco_Poggio_Bracciolini_-_Imagines_philologorum.jpg/257px-Gianfrancesco_Poggio_Bracciolini_-_Imagines_philologorum.jpg", - "width": 257, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/a/a9/Gianfrancesco_Poggio_Bracciolini_-_Imagines_philologorum.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/a9/Gianfrancesco_Poggio_Bracciolini_-_Imagines_philologorum.jpg", - "width": 458, - "height": 570 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-13T17:42:10Z", - "description": "Italian scholar, writer and humanist", - "normalizedtitle": "Poggio Bracciolini" - } - ], - "year": 1459 - }, - { - "text": "Ibn Khallikan, Iraqi scholar and judge (b. 1211)", - "pages": [ - { - "title": "Ibn_Khallikan", - "displaytitle": "Ibn Khallikan", - "pageid": 1316107, - "extract": "Aḥmad b. Muḥammad b. Ibrāhīm Abu ’l-ʿAbbās S̲h̲ams al-Dīn al-Barmakī al-Irbilī al-S̲h̲āfiʿī (Arabic: احمد ابن محمد ابن ابراهيم ابوالعباس شمس الدين البرمكي الاربيلي الشافعي‎‎) (September 22, 1211 – October 30, 1282) was a 13th Century Shafi'i Islamic scholar. He was described as \"a pious man, virtuous, and learned; amiable in temper, in conversation serious and instructive.", - "extract_html": "

    Aḥmad b. Muḥammad b. Ibrāhīm Abu ’l-ʿAbbās S̲h̲ams al-Dīn al-Barmakī al-Irbilī al-S̲h̲āfiʿī (Arabic: احمد ابن محمد ابن ابراهيم ابوالعباس شمس الدين البرمكي الاربيلي الشافعي‎‎) (September 22, 1211 – October 30, 1282) was a 13th Century Shafi'i Islamic scholar. He was described as \"a pious man, virtuous, and learned; amiable in temper, in conversation serious and instructive.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-16T14:00:50Z", - "description": "Hadith scholar", - "normalizedtitle": "Ibn Khallikan" - } - ], - "year": 1282 - }, - { - "text": "Roger Mortimer, 1st Baron Mortimer", - "pages": [ - { - "title": "Roger_Mortimer,_1st_Baron_Mortimer", - "displaytitle": "Roger Mortimer, 1st Baron Mortimer", - "pageid": 441237, - "extract": "Roger Mortimer, 1st Baron Mortimer, of Wigmore (1231 – 30 October 1282), was a famous and honoured knight from Wigmore Castle in Herefordshire. He was a loyal ally of King Henry III of England.", - "extract_html": "

    Roger Mortimer, 1st Baron Mortimer, of Wigmore (1231 – 30 October 1282), was a famous and honoured knight from Wigmore Castle in Herefordshire. He was a loyal ally of King Henry III of England.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Arms_of_the_House_of_Mortimer.svg/274px-Arms_of_the_House_of_Mortimer.svg.png", - "width": 274, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/5/5b/Arms_of_the_House_of_Mortimer.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/5/5b/Arms_of_the_House_of_Mortimer.svg", - "width": 410, - "height": 478 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-06T19:27:45Z", - "description": "English Baron", - "normalizedtitle": "Roger Mortimer, 1st Baron Mortimer" - } - ], - "year": 1282 - }, - { - "text": "Sergius VII, Duke of Naples", - "pages": [ - { - "title": "Sergius_VII_of_Naples", - "displaytitle": "Sergius VII of Naples", - "pageid": 4870864, - "extract": "Sergius VII (died 30 October 1137) was the thirty-ninth and last duke (or magister militum) of Naples. He succeeded his father John VI on the Neapolitan throne in 1122 at a time when Roger II of Sicily was rising rapidly in power. When Roger succeeded as duke of Apulia in 1127 and was crowned king in 1130, the fate of Naples hinged on Sergius' relations with the Sicilian court.\nIn 1131, Roger demanded from the citizens of Amalfi the defences of their city and the keys to their castle. When the citizens refused, Sergius initially prepared to aid them with a fleet, but the Admiral George of Antioch blockaded the port city with a larger fleet and Sergius submitted to Roger. According to the chronicler Alexander of Telese, Naples \"which, since Roman times, had hardly ever been conquered by the sword now submitted to Roger on the strength of a mere report.\" Sergius' prestige was not high and all of southern Italy was now in Roger's hands.\nIn 1134, Sergius supported the rebellion of Robert II of Capua and Ranulf II of Alife, but avoided any direct confrontation with Roger.", - "extract_html": "

    Sergius VII (died 30 October 1137) was the thirty-ninth and last duke (or magister militum) of Naples. He succeeded his father John VI on the Neapolitan throne in 1122 at a time when Roger II of Sicily was rising rapidly in power. When Roger succeeded as duke of Apulia in 1127 and was crowned king in 1130, the fate of Naples hinged on Sergius' relations with the Sicilian court.

    \n

    In 1131, Roger demanded from the citizens of Amalfi the defences of their city and the keys to their castle. When the citizens refused, Sergius initially prepared to aid them with a fleet, but the Admiral George of Antioch blockaded the port city with a larger fleet and Sergius submitted to Roger. According to the chronicler Alexander of Telese, Naples \"which, since Roman times, had hardly ever been conquered by the sword now submitted to Roger on the strength of a mere report.\" Sergius' prestige was not high and all of southern Italy was now in Roger's hands.

    \n

    In 1134, Sergius supported the rebellion of Robert II of Capua and Ranulf II of Alife, but avoided any direct confrontation with Roger.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Southern_Italy_1112.svg/282px-Southern_Italy_1112.svg.png", - "width": 282, - "height": 320, - "original": "http://upload.wikimedia.org/wikipedia/commons/a/a4/Southern_Italy_1112.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/a4/Southern_Italy_1112.svg", - "width": 712, - "height": 807 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-10-09T18:53:33Z", - "description": "Duke of Naples", - "normalizedtitle": "Sergius VII of Naples" - }, - { - "title": "Duke_of_Naples", - "displaytitle": "Duke of Naples", - "pageid": 4882023, - "extract": "The Dukes of Naples were the military commanders of the ducatus Neapolitanus, a Byzantine outpost in Italy, one of the few remaining after the conquest of the Lombards. In 661, Emperor Constans II, highly interested in south Italian affairs (he established his court in Syracuse), appointed a Neapolitan named Basil dux or magister militum. Thereafter a line of dukes, often largely independent and dynastic from the mid-ninth century, ruled until the coming of the Normans, a new menace they could not weather.", - "extract_html": "

    The Dukes of Naples were the military commanders of the ducatus Neapolitanus, a Byzantine outpost in Italy, one of the few remaining after the conquest of the Lombards. In 661, Emperor Constans II, highly interested in south Italian affairs (he established his court in Syracuse), appointed a Neapolitan named Basil dux or magister militum. Thereafter a line of dukes, often largely independent and dynastic from the mid-ninth century, ruled until the coming of the Normans, a new menace they could not weather.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-09-14T16:06:34Z", - "description": "Wikimedia list article", - "normalizedtitle": "Duke of Naples" - } - ], - "year": 1137 - }, - { - "text": "Paul of Edessa, Syrian Orthodox bishop of Edessa", - "pages": [ - { - "title": "Paul_of_Edessa", - "displaytitle": "Paul of Edessa", - "pageid": 27825040, - "extract": "Paul of Edessa (died 30 October 526) was the Syrian Orthodox bishop of Edessa. He was consecrated 510, succeeding Peter. In the first year of his episcopate Paul joined with Gamalinus, bishop of Perrha, against certain sectarians who refused the use of bread, water, and wine, except in celebrating the Eucharist. Justin, becoming emperor, undertook to force the decrees of Chalcedon on Severus of Antioch and his followers, and committed the task to Patricius. Patricius arrived at Edessa in November 519, then ordered Paul either to subscribe the council or resign.", - "extract_html": "

    Paul of Edessa (died 30 October 526) was the Syrian Orthodox bishop of Edessa. He was consecrated 510, succeeding Peter. In the first year of his episcopate Paul joined with Gamalinus, bishop of Perrha, against certain sectarians who refused the use of bread, water, and wine, except in celebrating the Eucharist. Justin, becoming emperor, undertook to force the decrees of Chalcedon on Severus of Antioch and his followers, and committed the task to Patricius. Patricius arrived at Edessa in November 519, then ordered Paul either to subscribe the council or resign.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-09T19:49:00Z", - "description": "Monophysite bishop of Edessa, Mesopotamia", - "normalizedtitle": "Paul of Edessa" - }, - { - "title": "Syriac_Orthodox_Church", - "displaytitle": "Syriac Orthodox Church", - "pageid": 219283, - "extract": "The Syriac Orthodox Church of Antioch (Syriac: ܥܺܕܬܳܐ ܣܽܘ̣ܪܝܳܝܬܳܐ ܬܪܺܝܨܰܬ ܫܽܘ̣ܒ̥ܚܳܐ‎, translit. ʿĪṯo Suryoyṯo Trišaṯ Šubḥo; Arabic: الكنيسة السريانية الأرثوذكسية‎‎), or Syriac Orthodox Patriarchate of Antioch and All the East, is an autocephalous Oriental Orthodox Church, tracing its foundation to Saints Peter and Paul, by its tradition. In circa 518, the Syriac Orthodox Church continued to recognize Patriarch Severus of Antioch as the legitimate patriarch despite his deposition by the Byzantine Empire while those who sought communion with Rome accepted the Council of Chalcedon and the formula of Pope Hormisdas, recognized the new Chalcedonian patriarch of Antioch Paul the Jew. Employing the Divine Liturgy of Saint James with Syriac as its official and liturgical language, it is part of the Syriac Christianity by heritage. The church is led by the Syriac Orthodox Patriarch of Antioch Ignatius Aphrem II who was enthroned in 2014, seated in Cathedral of Saint George, Bab Tuma, Damascus, Syria. The church is often referred to as the Jacobite Church (after Jacob Baradaeus), but it rejects this name due to its Apostolic origin.\nThe Syriac Orthodox Church is part of Oriental Orthodoxy, a distinct communion of churches claiming to continue the patristic and Apostolic Christology before the schism following the Council of Chalcedon in 451.\nPatriarch Severus of Antioch was a significant bishop in the establishment, or continuation of the organisation of the Syriac Orthodox Patriarchate of Antioch, Byzantine Empire, after he was expelled from Antioch in 518.", - "extract_html": "

    The Syriac Orthodox Church of Antioch (Syriac: ܥܺܕܬܳܐ ܣܽܘ̣ܪܝܳܝܬܳܐ ܬܪܺܝܨܰܬ ܫܽܘ̣ܒ̥ܚܳܐ‎, translit. ʿĪṯo Suryoyṯo Trišaṯ Šubḥo; Arabic: الكنيسة السريانية الأرثوذكسية‎‎), or Syriac Orthodox Patriarchate of Antioch and All the East, is an autocephalous Oriental Orthodox Church, tracing its foundation to Saints Peter and Paul, by its tradition. In circa 518, the Syriac Orthodox Church continued to recognize Patriarch Severus of Antioch as the legitimate patriarch despite his deposition by the Byzantine Empire while those who sought communion with Rome accepted the Council of Chalcedon and the formula of Pope Hormisdas, recognized the new Chalcedonian patriarch of Antioch Paul the Jew. Employing the Divine Liturgy of Saint James with Syriac as its official and liturgical language, it is part of the Syriac Christianity by heritage. The church is led by the Syriac Orthodox Patriarch of Antioch Ignatius Aphrem II who was enthroned in 2014, seated in Cathedral of Saint George, Bab Tuma, Damascus, Syria. The church is often referred to as the Jacobite Church (after Jacob Baradaeus), but it rejects this name due to its Apostolic origin.

    \n

    The Syriac Orthodox Church is part of Oriental Orthodoxy, a distinct communion of churches claiming to continue the patristic and Apostolic Christology before the schism following the Council of Chalcedon in 451.

    \n

    Patriarch Severus of Antioch was a significant bishop in the establishment, or continuation of the organisation of the Syriac Orthodox Patriarchate of Antioch, Byzantine Empire, after he was expelled from Antioch in 518.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/St_George_Syriac_orthodox_church_in_Damascus.jpg/240px-St_George_Syriac_orthodox_church_in_Damascus.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b0/St_George_Syriac_orthodox_church_in_Damascus.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b0/St_George_Syriac_orthodox_church_in_Damascus.jpg", - "width": 768, - "height": 1024 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-09T05:22:06Z", - "normalizedtitle": "Syriac Orthodox Church" - }, - { - "title": "Edessa", - "displaytitle": "Edessa", - "pageid": 285454, - "extract": "Edessa (Ancient Greek: Ἔδεσσα; Turkish: Şanlıurfa; Arabic: الرها‎‎; Kurdish: Riha‎) was a city in Upper Mesopotamia, founded on an earlier site by Seleucus I Nicator ca. 302 BC. It was also known as Antiochia on the Callirhoe from the 2nd century BC. It was the capital of the semi-independent kingdom of Osroene from c. 132 BC and fell under direct Roman rule in ca. 242. It became an important early centre of Syriac Christianity.", - "extract_html": "

    Edessa (Ancient Greek: Ἔδεσσα; Turkish: Şanlıurfa; Arabic: الرها‎‎; Kurdish: Riha‎) was a city in Upper Mesopotamia, founded on an earlier site by Seleucus I Nicator ca. 302 BC. It was also known as Antiochia on the Callirhoe from the 2nd century BC. It was the capital of the semi-independent kingdom of Osroene from c. 132 BC and fell under direct Roman rule in ca. 242. It became an important early centre of Syriac Christianity.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Urfa_Castle_02.jpg/320px-Urfa_Castle_02.jpg", - "width": 320, - "height": 221, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/1c/Urfa_Castle_02.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/1c/Urfa_Castle_02.jpg", - "width": 4536, - "height": 3126 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T23:54:13Z", - "description": "ancient city in upper Mesopotamia", - "coordinates": { - "lat": 37.15, - "lon": 38.8 - }, - "normalizedtitle": "Edessa" - } - ], - "year": 526 - } - ], - "holidays": [ - { - "text": "Anniversary of the Declaration of the Slovak Nation (Slovakia)", - "pages": [ - { - "title": "Remembrance_days_in_Slovakia", - "displaytitle": "Remembrance days in Slovakia", - "pageid": 375715, - "extract": "Remembrance Days in Slovakia are working days.", - "extract_html": "

    Remembrance Days in Slovakia are working days.

    ", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-06T20:41:51Z", - "normalizedtitle": "Remembrance days in Slovakia" - }, - { - "title": "Slovakia", - "displaytitle": "Slovakia", - "pageid": 26830, - "extract": "\nSlovakia ( ( listen); Slovak: Slovensko [ˈsloʋensko] ( listen)), officially the Slovak Republic (Slovak: Slovenská republika, listen ), is a landlocked country in Central Europe. It is bordered by the Czech Republic and Austria to the west, Poland to the north, Ukraine to the east and Hungary to the south. Slovakia's territory spans about 49,000 square kilometres (19,000 sq mi) and is mostly mountainous. The population is over 5 million and comprises mostly ethnic Slovaks. The capital and largest city is Bratislava.", - "extract_html": "

    \n

    Slovakia ( ( listen); Slovak: Slovensko [ˈsloʋensko] ( listen)), officially the Slovak Republic (Slovak: Slovenská republika, listen ), is a landlocked country in Central Europe. It is bordered by the Czech Republic and Austria to the west, Poland to the north, Ukraine to the east and Hungary to the south. Slovakia's territory spans about 49,000 square kilometres (19,000 sq mi) and is mostly mountainous. The population is over 5 million and comprises mostly ethnic Slovaks. The capital and largest city is Bratislava.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Flag_of_Slovakia.svg/320px-Flag_of_Slovakia.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/e6/Flag_of_Slovakia.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e6/Flag_of_Slovakia.svg", - "width": 900, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T08:20:01Z", - "description": "republic in Central Europe", - "coordinates": { - "lat": 48.66666667, - "lon": 19.5 - }, - "normalizedtitle": "Slovakia" - } - ] - }, - { - "text": "Christian feast day:\nEthelnoth (Egelnoth) the Good", - "pages": [ - { - "title": "Æthelnoth_(archbishop_of_Canterbury)", - "displaytitle": "Æthelnoth (archbishop of Canterbury)", - "pageid": 145871, - "extract": "Æthelnoth (died 1038) was a medieval Archbishop of Canterbury. Descended from an earlier English king, Æthelnoth became a monk prior to becoming archbishop. While archbishop, he travelled to Rome and brought back saint's relics. He consecrated a number of other bishops who came from outside his archdiocese, leading to some friction with other archbishops.", - "extract_html": "

    Æthelnoth (died 1038) was a medieval Archbishop of Canterbury. Descended from an earlier English king, Æthelnoth became a monk prior to becoming archbishop. While archbishop, he travelled to Rome and brought back saint's relics. He consecrated a number of other bishops who came from outside his archdiocese, leading to some friction with other archbishops.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-21T21:04:04Z", - "description": "Archbishop of Canterbury", - "normalizedtitle": "Æthelnoth (archbishop of Canterbury)" - } - ] - }, - { - "text": "Christian feast day:\nBlessed Dominic Collins (Catholic, Ireland, Society of Jesus)", - "pages": [ - { - "title": "Dominic_Collins", - "displaytitle": "Dominic Collins", - "pageid": 25014159, - "extract": "Dominic Collins, S.J., (1566 - 31 October 1602) was an Irish Jesuit lay brother, an ex-army man, who died for his Catholic faith.", - "extract_html": "

    Dominic Collins, S.J., (1566 - 31 October 1602) was an Irish Jesuit lay brother, an ex-army man, who died for his Catholic faith.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T12:08:27Z", - "description": "Irish Jesuit lay brother and martyr", - "normalizedtitle": "Dominic Collins" - }, - { - "title": "Society_of_Jesus", - "displaytitle": "Society of Jesus", - "pageid": 16083, - "extract": "The Society of Jesus (S.J. – from Latin: Societas Iesu) is a scholarly religious congregation of the Catholic Church which originated in sixteenth-century Spain. The members are called Jesuits. The society is engaged in evangelization and apostolic ministry in 112 nations on six continents. Jesuits work in education (founding schools, colleges, universities, and seminaries), intellectual research, and cultural pursuits. Jesuits also give retreats, minister in hospitals and parishes, sponsor direct social ministries, and promote ecumenical dialogue.\nIgnatius of Loyola, a Basque nobleman from the Pyrenees area of northern Spain, founded the society after discerning his spiritual vocation while recovering from a wound sustained in the Battle of Pamplona.", - "extract_html": "

    The Society of Jesus (S.J. – from Latin: Societas Iesu) is a scholarly religious congregation of the Catholic Church which originated in sixteenth-century Spain. The members are called Jesuits. The society is engaged in evangelization and apostolic ministry in 112 nations on six continents. Jesuits work in education (founding schools, colleges, universities, and seminaries), intellectual research, and cultural pursuits. Jesuits also give retreats, minister in hospitals and parishes, sponsor direct social ministries, and promote ecumenical dialogue.

    \n

    Ignatius of Loyola, a Basque nobleman from the Pyrenees area of northern Spain, founded the society after discerning his spiritual vocation while recovering from a wound sustained in the Battle of Pamplona.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Ihs-logo.svg/320px-Ihs-logo.svg.png", - "width": 320, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/1c/Ihs-logo.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/1c/Ihs-logo.svg", - "width": 567, - "height": 567 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-29T15:53:35Z", - "description": "christian male religious congregation of the Roman Catholic Church", - "coordinates": { - "lat": 41.90136111, - "lon": 12.46061111 - }, - "normalizedtitle": "Society of Jesus" - } - ] - }, - { - "text": "Christian feast day:\nGerard of Potenza", - "pages": [ - { - "title": "Gerard_of_Potenza", - "displaytitle": "Gerard of Potenza", - "pageid": 28495680, - "extract": "Saint Gerard of Potenza, also Gerard La Porta (Italian: Gerardo di Potenza, Gerardo La Porta) (d.", - "extract_html": "

    Saint Gerard of Potenza, also Gerard La Porta (Italian: Gerardo di Potenza, Gerardo La Porta) (d.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-20T23:13:04Z", - "description": "Roman Catholic saint and a bishop of Potenza", - "normalizedtitle": "Gerard of Potenza" - } - ] - }, - { - "text": "Christian feast day:\nBlessed Maria Teresa of St. Joseph", - "pages": [ - { - "title": "Beatification", - "displaytitle": "Beatification", - "pageid": 233724, - "extract": "Beatification (from Latin beatus, \"blessed\" and facere, \"to make\") is a recognition accorded by the Catholic Church of a dead person's entrance into Heaven and capacity to intercede on behalf of individuals who pray in his or her name.", - "extract_html": "

    Beatification (from Latin beatus, \"blessed\" and facere, \"to make\") is a recognition accorded by the Catholic Church of a dead person's entrance into Heaven and capacity to intercede on behalf of individuals who pray in his or her name.

    ", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/46/JohannesPaul2-portrait.jpg", - "width": 217, - "height": 266, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/46/JohannesPaul2-portrait.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/46/JohannesPaul2-portrait.jpg", - "width": 217, - "height": 266 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-31T03:06:41Z", - "description": "recognition accorded by the Catholic Church of a dead person", - "normalizedtitle": "Beatification" - }, - { - "title": "Maria_Teresa_of_St._Joseph", - "displaytitle": "Maria Teresa of St. Joseph", - "pageid": 41596283, - "extract": "Blessed Maria Teresa of Saint Joseph (19 June 1855 - 20 September 1938) - Anna Maria Tauscher van den Bosch was a German Roman Catholic professed religious and the founder of the Carmelite Sisters of the Divine Heart of Jesus.", - "extract_html": "

    Blessed Maria Teresa of Saint Joseph (19 June 1855 - 20 September 1938) - Anna Maria Tauscher van den Bosch was a German Roman Catholic professed religious and the founder of the Carmelite Sisters of the Divine Heart of Jesus.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e4/Mariat.jpg", - "width": 247, - "height": 289, - "original": "https://upload.wikimedia.org/wikipedia/commons/e/e4/Mariat.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/e/e4/Mariat.jpg", - "width": 247, - "height": 289 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-06-02T12:26:40Z", - "description": "Catholic nun", - "normalizedtitle": "Maria Teresa of St. Joseph" - } - ] - }, - { - "text": "Christian feast day:\nJohn Wycliffe (Episcopal Church (USA))", - "pages": [ - { - "title": "John_Wycliffe", - "displaytitle": "John Wycliffe", - "pageid": 16483, - "extract": "John Wycliffe (; also spelled Wyclif, Wycliff, Wiclef, Wicliffe, Wickliffe; 1320s – 31 December 1384) was an English scholastic philosopher, theologian, Biblical translator, reformer, and seminary professor at Oxford. He was an influential dissident within the Roman Catholic priesthood during the 14th century.\nWycliffe attacked the privileged status of the clergy, which was central to their powerful role in England. He then attacked the luxury and pomp of local parishes and their ceremonies.\nWycliffe was also an advocate for translation of the Bible into the vernacular. He completed a translation directly from the Vulgate into Middle English in the year 1382, now known as Wycliffe's Bible. It is probable that he personally translated the Gospels of Matthew, Mark, Luke, and John; and it is possible he translated the entire New Testament, while his associates translated the Old Testament.", - "extract_html": "

    John Wycliffe (; also spelled Wyclif, Wycliff, Wiclef, Wicliffe, Wickliffe; 1320s – 31 December 1384) was an English scholastic philosopher, theologian, Biblical translator, reformer, and seminary professor at Oxford. He was an influential dissident within the Roman Catholic priesthood during the 14th century.

    \n

    Wycliffe attacked the privileged status of the clergy, which was central to their powerful role in England. He then attacked the luxury and pomp of local parishes and their ceremonies.

    \n

    Wycliffe was also an advocate for translation of the Bible into the vernacular. He completed a translation directly from the Vulgate into Middle English in the year 1382, now known as Wycliffe's Bible. It is probable that he personally translated the Gospels of Matthew, Mark, Luke, and John; and it is possible he translated the entire New Testament, while his associates translated the Old Testament.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/Wycliffe_by_Kirby.jpg/244px-Wycliffe_by_Kirby.jpg", - "width": 244, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/b/b8/Wycliffe_by_Kirby.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/b/b8/Wycliffe_by_Kirby.jpg", - "width": 917, - "height": 1200 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-24T23:13:44Z", - "description": "English theologian and early dissident in the Roman Catholic Church", - "normalizedtitle": "John Wycliffe" - }, - { - "title": "Calendar_of_saints_(Episcopal_Church)", - "displaytitle": "Calendar of saints (Episcopal Church)", - "pageid": 6054604, - "extract": "The veneration of saints in the Episcopal Church is a continuation of an ancient tradition from the early Church which honors important and influential people of the Christian faith. The usage of the term \"saint\" is similar to Roman Catholic and Orthodox traditions.", - "extract_html": "

    The veneration of saints in the Episcopal Church is a continuation of an ancient tradition from the early Church which honors important and influential people of the Christian faith. The usage of the term \"saint\" is similar to Roman Catholic and Orthodox traditions.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-07-11T20:45:33Z", - "normalizedtitle": "Calendar of saints (Episcopal Church)" - } - ] - }, - { - "text": "Christian feast day:\nMarcellus of Tangier", - "pages": [ - { - "title": "Marcellus_of_Tangier", - "displaytitle": "Marcellus of Tangier", - "pageid": 7729622, - "extract": "Saint Marcellus of Tangier or Saint Marcellus the Centurion (Spanish: San Marcelo) (c. mid 3rd century – 298 AD) is venerated as a Martyr Saint by the Catholic Church and the Eastern Orthodox Church.", - "extract_html": "

    Saint Marcellus of Tangier or Saint Marcellus the Centurion (Spanish: San Marcelo) (c. mid 3rd century – 298 AD) is venerated as a Martyr Saint by the Catholic Church and the Eastern Orthodox Church.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7f/Marcellus_Cassian.jpg/213px-Marcellus_Cassian.jpg", - "width": 213, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/7/7f/Marcellus_Cassian.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/7f/Marcellus_Cassian.jpg", - "width": 800, - "height": 1200 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-05-16T00:38:36Z", - "description": "Martyr and Saint", - "normalizedtitle": "Marcellus of Tangier" - } - ] - }, - { - "text": "Christian feast day:\nSaturninus of Cagliari", - "pages": [ - { - "title": "Saturninus_of_Cagliari", - "displaytitle": "Saturninus of Cagliari", - "pageid": 16815092, - "extract": "Saint Saturninus of Cagliari (Italian: San Saturnino, Saturno) is venerated as the patron saint of Cagliari. According to Christian tradition, Saturninus was a local martyr –that is, he was killed at Cagliari by order of governor Barbarus. The legend states that he was beheaded for refusing to offer sacrifices to Jupiter during the persecutions of Christians by Diocletian.\nHowever, some scholars have determined that this tradition was invented centuries after the supposed martyrdom, and that the legend was devised a posteriori to attach a story to the name to whom the local ancient basilica was dedicated. But the name of the saint in Sardinian language, \"Santu Sadurru\" (Saint Saturnus) suggests that there really was the martyrodom of Saturnus, a young Christian by the pagans and the saint was exactly buried where the ancient church was erected.\n\nSaint Saturninus was so confused with Saturninus of Toulouse (Sernin).", - "extract_html": "

    Saint Saturninus of Cagliari (Italian: San Saturnino, Saturno) is venerated as the patron saint of Cagliari. According to Christian tradition, Saturninus was a local martyr –that is, he was killed at Cagliari by order of governor Barbarus. The legend states that he was beheaded for refusing to offer sacrifices to Jupiter during the persecutions of Christians by Diocletian.

    \n

    However, some scholars have determined that this tradition was invented centuries after the supposed martyrdom, and that the legend was devised a posteriori to attach a story to the name to whom the local ancient basilica was dedicated. But the name of the saint in Sardinian language, \"Santu Sadurru\" (Saint Saturnus) suggests that there really was the martyrodom of Saturnus, a young Christian by the pagans and the saint was exactly buried where the ancient church was erected.

    \n\n

    Saint Saturninus was so confused with Saturninus of Toulouse (Sernin).", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Ssaturnino2.jpg/320px-Ssaturnino2.jpg", - "width": 320, - "height": 217, - "original": "https://upload.wikimedia.org/wikipedia/commons/3/38/Ssaturnino2.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/38/Ssaturnino2.jpg", - "width": 2360, - "height": 1603 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-05-20T03:54:26Z", - "description": "Christian martyr", - "normalizedtitle": "Saturninus of Cagliari" - } - ] - }, - { - "text": "Christian feast day:\nSerapion of Antioch", - "pages": [ - { - "title": "Serapion_of_Antioch", - "displaytitle": "Serapion of Antioch", - "pageid": 326479, - "extract": "Serapion was a Patriarch of Antioch (191–211). He is known primarily through his theological writings. His feast day is celebrated on October 30.\nSerapion was considered one of the chief theologians of his era. Eusebius refers to three works of Serapion in his history, but admits that others probably existed: first is a private letter addressed to Caricus and Pontius against Montanism, from which Eusebius quotes an extract (Historia ecclesiastica V, 19), as well as ascriptions showing that it was circulated amongst bishops in Asia and Thrace; next is a work addressed to a certain Domninus, who in time of persecution abandoned Christianity for the error of \"Jewish will-worship\" (Hist. Eccles, VI, 12).\nLastly, Eusebius quotes (vi.12.2) from a pamphlet Serapion wrote concerning the Docetic Gospel of Peter, in which Serapion presents an argument to the Christian community of Rhossus in Syria against this gospel and condemns it.\nEusebius also alludes to a number of personal letters Serapion wrote to Pontius, Caricus, and others about this Gospel of Peter.\nSerapion also acted (Pantaenus supported him) against the influence of Gnosticism in Osroene by consecrating Palut as bishop of Edessa, where Palut addressed the increasingly Gnostic tendencies that the churchman Bardesanes was introducing to its Christian community.", - "extract_html": "

    Serapion was a Patriarch of Antioch (191–211). He is known primarily through his theological writings. His feast day is celebrated on October 30.

    \n

    Serapion was considered one of the chief theologians of his era. Eusebius refers to three works of Serapion in his history, but admits that others probably existed: first is a private letter addressed to Caricus and Pontius against Montanism, from which Eusebius quotes an extract (Historia ecclesiastica V, 19), as well as ascriptions showing that it was circulated amongst bishops in Asia and Thrace; next is a work addressed to a certain Domninus, who in time of persecution abandoned Christianity for the error of \"Jewish will-worship\" (Hist. Eccles, VI, 12).

    \n

    Lastly, Eusebius quotes (vi.12.2) from a pamphlet Serapion wrote concerning the Docetic Gospel of Peter, in which Serapion presents an argument to the Christian community of Rhossus in Syria against this gospel and condemns it.

    \n

    Eusebius also alludes to a number of personal letters Serapion wrote to Pontius, Caricus, and others about this Gospel of Peter.

    \n

    Serapion also acted (Pantaenus supported him) against the influence of Gnosticism in Osroene by consecrating Palut as bishop of Edessa, where Palut addressed the increasingly Gnostic tendencies that the churchman Bardesanes was introducing to its Christian community.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Petxina_de_la_c%C3%BApula_de_l%27esgl%C3%A9sia_de_sant_Antoni_Abat%2C_Val%C3%A8ncia.JPG/320px-Petxina_de_la_c%C3%BApula_de_l%27esgl%C3%A9sia_de_sant_Antoni_Abat%2C_Val%C3%A8ncia.JPG", - "width": 320, - "height": 227, - "original": "https://upload.wikimedia.org/wikipedia/commons/1/15/Petxina_de_la_c%C3%BApula_de_l%27esgl%C3%A9sia_de_sant_Antoni_Abat%2C_Val%C3%A8ncia.JPG" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/1/15/Petxina_de_la_c%C3%BApula_de_l%27esgl%C3%A9sia_de_sant_Antoni_Abat%2C_Val%C3%A8ncia.JPG", - "width": 4332, - "height": 3071 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-05-04T04:51:12Z", - "description": "Patriarch of Antioch", - "normalizedtitle": "Serapion of Antioch" - } - ] - }, - { - "text": "Christian feast day:\nTalarican (Tarkin)", - "pages": [ - { - "title": "Talarican", - "displaytitle": "Talarican", - "pageid": 18888934, - "extract": "Talarican (Tarkin) was a Scottish Bishop of Sodor (a diocese including the western islands of Scotland) of the eighth century.\nHe was probably of purely Pictish origin, though the Aberdeen Breviary (1509) says he was born in Ireland. The legend in the Breviary states that he was raised to the episcopate by Pope Gregory; and Adam King's Kalendar (1558) styles him \"bischop and confess. in Scotland under King Solvathius\".\nThe Bollandists, following the chronology of the Dalriadic kings as adopted by Pinkerton and Skene, place the reign of Selvach from 706 to 726; and, as Gregory II was pope from 715 to 731, conclude that Talarican became bishop about 720, a few years after the Columban monks of Iona had been induced by St. Egbert to conform to the Roman Rite. He is said to have offered the Holy Sacrifice every day, to have been noted for his zeal and his mortified life, and to have converted many pagans in the northern coasts of Scotland through his preaching and example.", - "extract_html": "

    Talarican (Tarkin) was a Scottish Bishop of Sodor (a diocese including the western islands of Scotland) of the eighth century.

    \n

    He was probably of purely Pictish origin, though the Aberdeen Breviary (1509) says he was born in Ireland. The legend in the Breviary states that he was raised to the episcopate by Pope Gregory; and Adam King's Kalendar (1558) styles him \"bischop and confess. in Scotland under King Solvathius\".

    \n

    The Bollandists, following the chronology of the Dalriadic kings as adopted by Pinkerton and Skene, place the reign of Selvach from 706 to 726; and, as Gregory II was pope from 715 to 731, conclude that Talarican became bishop about 720, a few years after the Columban monks of Iona had been induced by St. Egbert to conform to the Roman Rite. He is said to have offered the Holy Sacrifice every day, to have been noted for his zeal and his mortified life, and to have converted many pagans in the northern coasts of Scotland through his preaching and example.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T14:17:17Z", - "normalizedtitle": "Talarican" - } - ] - }, - { - "text": "Christian feast day:\nTheonistus", - "pages": [ - { - "title": "Theonistus", - "displaytitle": "Theonistus", - "pageid": 17692002, - "extract": "For the martyr of Vercelli, see Theonestus of Vercelli.\nSaint Theonistus (Theonist, Teonesto, Thaumastus, Thaumastos, Theonestus, Thonistus, Onistus, Teonisto, Tonisto) is a saint venerated by the Catholic Church. Theonistus is venerated with two companions, Tabra and Tabratha (also Tabraham and Tubraham). Medieval documents give accounts of his life, which are contradictory and confused.\nHis legend is very confused and complex. He may have been a martyr of the end of the 4th or end of the 5th century. His legend is presented in a shorter, older version of the 10th century, which calls him a bishop of an island called Namsia or Namsis, and a longer version of the 11th century, which calls him a bishop of Philippi.\nAccording to the 11th-century account, Theonistus, along with Alban of Mainz, Tabra, Tabratha, and Ursus, attended a council in Carthage (the Council of Carthage of 670, but the chronology is confused), and then went on a pilgrimage to Rome.", - "extract_html": "

    For the martyr of Vercelli, see Theonestus of Vercelli.
    \n

    Saint Theonistus (Theonist, Teonesto, Thaumastus, Thaumastos, Theonestus, Thonistus, Onistus, Teonisto, Tonisto) is a saint venerated by the Catholic Church. Theonistus is venerated with two companions, Tabra and Tabratha (also Tabraham and Tubraham). Medieval documents give accounts of his life, which are contradictory and confused.

    \n

    His legend is very confused and complex. He may have been a martyr of the end of the 4th or end of the 5th century. His legend is presented in a shorter, older version of the 10th century, which calls him a bishop of an island called Namsia or Namsis, and a longer version of the 11th century, which calls him a bishop of Philippi.

    \n

    According to the 11th-century account, Theonistus, along with Alban of Mainz, Tabra, Tabratha, and Ursus, attended a council in Carthage (the Council of Carthage of 670, but the chronology is confused), and then went on a pilgrimage to Rome.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-01-09T20:16:36Z", - "description": "Italian bishop and saint", - "normalizedtitle": "Theonistus" - } - ] - }, - { - "text": "Christian feast day:\nZenobios and Zenobia", - "pages": [ - { - "title": "Zenobios_and_Zenobia", - "displaytitle": "Zenobios and Zenobia", - "pageid": 44706879, - "extract": "The Holy Martyrs Zenobios and Zenobia (died ~ 290; Greek:Ζηνόβιος/Ζινόβιος κα Ζηνοβία; Σινόβιος κα Σινοβία; Latin: Zenobius et Zenobia, Cyrillic alphabet: Зиновий и Зиновия) are recognized by Eastern Orthodox Church and the Roman Catholic Church; their day is October 30. \nAccording to the Byzantine hagiography, Zenobios and his sister Zenobia were from Aegae, Cilicia. Zenobios was a physician and because of his divine healing powers he was consecrated bishop of Aegae. They were tortured and beheaded at about 290, during Diocletian's persecutions.\nIt has been argued that the characters are legendary, possibly arisen from the confusion of the reading of martyrologies.", - "extract_html": "

    The Holy Martyrs Zenobios and Zenobia (died ~ 290; Greek:Ζηνόβιος/Ζινόβιος κα Ζηνοβία; Σινόβιος κα Σινοβία; Latin: Zenobius et Zenobia, Cyrillic alphabet: Зиновий и Зиновия) are recognized by Eastern Orthodox Church and the Roman Catholic Church; their day is October 30.

    \n

    According to the Byzantine hagiography, Zenobios and his sister Zenobia were from Aegae, Cilicia. Zenobios was a physician and because of his divine healing powers he was consecrated bishop of Aegae. They were tortured and beheaded at about 290, during Diocletian's persecutions.

    \n

    It has been argued that the characters are legendary, possibly arisen from the confusion of the reading of martyrologies.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T14:21:35Z", - "normalizedtitle": "Zenobios and Zenobia" - } - ] - }, - { - "text": "Christian feast day:\nOctober 30 (Eastern Orthodox liturgics)", - "pages": [ - { - "title": "October_30_(Eastern_Orthodox_liturgics)", - "displaytitle": "October 30 (Eastern Orthodox liturgics)", - "pageid": 30181426, - "extract": "October 29 - Eastern Orthodox liturgical calendar - October 31", - "extract_html": "

    October 29 - Eastern Orthodox liturgical calendar - October 31

    ", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/East-Ortho-cross.png/320px-East-Ortho-cross.png", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/9b/East-Ortho-cross.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/9b/East-Ortho-cross.png", - "width": 800, - "height": 600 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-06T14:32:34Z", - "description": "date in Eastern Orthodox liturgics", - "normalizedtitle": "October 30 (Eastern Orthodox liturgics)" - } - ] - }, - { - "text": "Day of Remembrance of the Victims of Political Repressions (former Soviet republics, except Ukraine)", - "pages": [ - { - "title": "Day_of_Remembrance_of_the_Victims_of_Political_Repressions", - "displaytitle": "Day of Remembrance of the Victims of Political Repressions", - "pageid": 12203997, - "extract": "Day of Remembrance of the Victims of Political Repressions (Russian: День памяти жертв политических репрессий), is an annual day of remembrance for victims of political repression in the Soviet Union.\nIt has been commemorated on October 30, since 1991, in former Soviet republics, except for Ukraine, which has its own annual Day of Remembrance for the victims of political repressions by the Soviet regime on the third Sunday of May. In 1991, the Supreme Soviet of Russia officially established 30 October as the Day of Remembrance of the Victims of Political Repressions.", - "extract_html": "

    Day of Remembrance of the Victims of Political Repressions (Russian: День памяти жертв политических репрессий), is an annual day of remembrance for victims of political repression in the Soviet Union.

    \n

    It has been commemorated on October 30, since 1991, in former Soviet republics, except for Ukraine, which has its own annual Day of Remembrance for the victims of political repressions by the Soviet regime on the third Sunday of May. In 1991, the Supreme Soviet of Russia officially established 30 October as the Day of Remembrance of the Victims of Political Repressions.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/40/Solovetsky_Stone_-_Moscow.jpg/320px-Solovetsky_Stone_-_Moscow.jpg", - "width": 320, - "height": 240, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/40/Solovetsky_Stone_-_Moscow.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/40/Solovetsky_Stone_-_Moscow.jpg", - "width": 2592, - "height": 1944 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-02-21T11:22:03Z", - "normalizedtitle": "Day of Remembrance of the Victims of Political Repressions" - }, - { - "title": "Post-Soviet_states", - "displaytitle": "Post-Soviet states", - "pageid": 1609192, - "extract": "The post-Soviet states, also collectively known as the former Soviet Union (FSU) or former Soviet Republics, are the 15 independent states that emerged from the Union of Soviet Socialist Republics in its dissolution in December 1991, with Russia internationally recognised as the successor state to the Soviet Union. On March 11, 1990, Lithuania was the first to declare its independence, with Estonia and Latvia following suit in August 1991. All three Baltic states claimed continuity from the original states that existed prior to their annexation by the Soviet Union in 1944 and were admitted to the United Nations on 17 September 1991. The remaining 12 republics all subsequently seceded.", - "extract_html": "

    The post-Soviet states, also collectively known as the former Soviet Union (FSU) or former Soviet Republics, are the 15 independent states that emerged from the Union of Soviet Socialist Republics in its dissolution in December 1991, with Russia internationally recognised as the successor state to the Soviet Union. On March 11, 1990, Lithuania was the first to declare its independence, with Estonia and Latvia following suit in August 1991. All three Baltic states claimed continuity from the original states that existed prior to their annexation by the Soviet Union in 1944 and were admitted to the United Nations on 17 September 1991. The remaining 12 republics all subsequently seceded.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/USSR_Republics_Numbered_Alphabetically.png/320px-USSR_Republics_Numbered_Alphabetically.png", - "width": 320, - "height": 219, - "original": "https://upload.wikimedia.org/wikipedia/commons/d/d0/USSR_Republics_Numbered_Alphabetically.png" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/d/d0/USSR_Republics_Numbered_Alphabetically.png", - "width": 1356, - "height": 928 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T13:28:27Z", - "normalizedtitle": "Post-Soviet states" - }, - { - "title": "Ukraine", - "displaytitle": "Ukraine", - "pageid": 31750, - "extract": "Ukraine ( ( listen); Ukrainian: Україна, translit. Ukrajina [ukrɑˈjinɑ]), sometimes called the Ukraine, is a sovereign state in Eastern Europe, bordered by Russia to the east and northeast, Belarus to the northwest, Poland, Hungary and Slovakia to the west, Romania, and Moldova to the southwest, and the Black Sea and Sea of Azov to the south and southeast, respectively. Ukraine is currently in territorial dispute with Russia over the Crimean Peninsula which Russia annexed in 2014 but which Ukraine and most of the international community recognise as Ukrainian. Including Crimea, Ukraine has an area of 603,628 km2 (233,062 sq mi), making it the largest country entirely within Europe and the 46th largest country in the world. Excluding Crimea, Ukraine has a population of about 42.5 million, making it the 32nd most populous country in the world.\nThe territory of modern Ukraine has been inhabited since 32,000 BC. During the Middle Ages, the area was a key centre of East Slavic culture, with the powerful state of Kievan Rus' forming the basis of Ukrainian identity. Following its fragmentation in the 13th century, the territory was contested, ruled and divided by a variety of powers, including Lithuania, Poland, the Ottoman Empire, Austria-Hungary, and Russia.", - "extract_html": "

    Ukraine ( ( listen); Ukrainian: Україна, translit. Ukrajina [ukrɑˈjinɑ]), sometimes called the Ukraine, is a sovereign state in Eastern Europe, bordered by Russia to the east and northeast, Belarus to the northwest, Poland, Hungary and Slovakia to the west, Romania, and Moldova to the southwest, and the Black Sea and Sea of Azov to the south and southeast, respectively. Ukraine is currently in territorial dispute with Russia over the Crimean Peninsula which Russia annexed in 2014 but which Ukraine and most of the international community recognise as Ukrainian. Including Crimea, Ukraine has an area of 603,628 km2 (233,062 sq mi), making it the largest country entirely within Europe and the 46th largest country in the world. Excluding Crimea, Ukraine has a population of about 42.5 million, making it the 32nd most populous country in the world.

    \n

    The territory of modern Ukraine has been inhabited since 32,000 BC. During the Middle Ages, the area was a key centre of East Slavic culture, with the powerful state of Kievan Rus' forming the basis of Ukrainian identity. Following its fragmentation in the 13th century, the territory was contested, ruled and divided by a variety of powers, including Lithuania, Poland, the Ottoman Empire, Austria-Hungary, and Russia.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Flag_of_Ukraine.svg/320px-Flag_of_Ukraine.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg", - "width": 1200, - "height": 800 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T05:24:38Z", - "description": "country in Eastern Europe", - "coordinates": { - "lat": 49, - "lon": 32 - }, - "normalizedtitle": "Ukraine" - } - ] - }, - { - "text": "Indonesian Banknote Day (Indonesia)", - "pages": [ - { - "title": "Public_holidays_in_Indonesia", - "displaytitle": "Public holidays in Indonesia", - "pageid": 1200613, - "extract": "The following table indicates declared Indonesian government national holidays for the year 2017 only—cultural variants also provide opportunity for holidays tied to local events. Beside official holidays, there are the so-called \"libur bersama\" or \"cuti bersama\", or joint leave(s) declared nationwide by the government.", - "extract_html": "

    The following table indicates declared Indonesian government national holidays for the year 2017 only—cultural variants also provide opportunity for holidays tied to local events. Beside official holidays, there are the so-called \"libur bersama\" or \"cuti bersama\", or joint leave(s) declared nationwide by the government.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-21T08:48:35Z", - "description": "Wikimedia list article", - "normalizedtitle": "Public holidays in Indonesia" - }, - { - "title": "Indonesia", - "displaytitle": "Indonesia", - "pageid": 14579, - "extract": "\nIndonesia ( ( listen) IN-də-NEE-zhə or IN-doh-NEE-zee-ə; Indonesian: [ɪndonesia]), officially the Republic of Indonesia (Indonesian: Republik Indonesia [rɛpublik ɪndonesia]), is a unitary sovereign state and transcontinental country located mainly in Southeast Asia, with some territories in Oceania. Situated between the Indian and Pacific oceans, it is the world's largest island country, with more than seventeen thousand islands. At 1,904,569 square kilometres (735,358 square miles), Indonesia is the world's 14th-largest country in terms of land area and world's 7th-largest country in terms of combined sea and land area. It has an estimated population of over 261 million people and is the world's fourth most populous country, the most populous Austronesian nation, as well as the most populous Muslim-majority country. The world's most populous island, Java, contains more than half of the country's population.\nIndonesia's republican form of government includes an elected legislature and president.", - "extract_html": "

    \n

    Indonesia ( ( listen) IN-də-NEE-zhə or IN-doh-NEE-zee-ə; Indonesian: [ɪndonesia]), officially the Republic of Indonesia (Indonesian: Republik Indonesia [rɛpublik ɪndonesia]), is a unitary sovereign state and transcontinental country located mainly in Southeast Asia, with some territories in Oceania. Situated between the Indian and Pacific oceans, it is the world's largest island country, with more than seventeen thousand islands. At 1,904,569 square kilometres (735,358 square miles), Indonesia is the world's 14th-largest country in terms of land area and world's 7th-largest country in terms of combined sea and land area. It has an estimated population of over 261 million people and is the world's fourth most populous country, the most populous Austronesian nation, as well as the most populous Muslim-majority country. The world's most populous island, Java, contains more than half of the country's population.

    \n

    Indonesia's republican form of government includes an elected legislature and president.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Flag_of_Indonesia.svg/320px-Flag_of_Indonesia.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/commons/9/9f/Flag_of_Indonesia.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/9f/Flag_of_Indonesia.svg", - "width": 450, - "height": 300 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-25T03:19:31Z", - "description": "republic in Southeast Asia", - "coordinates": { - "lat": -5, - "lon": 120 - }, - "normalizedtitle": "Indonesia" - } - ] - }, - { - "text": "International Orthopaedic Nurses Day", - "pages": [ - { - "title": "Orthopaedic_nursing", - "displaytitle": "Orthopaedic nursing", - "pageid": 6784264, - "extract": "Orthopaedic nursing (or orthopedic nursing) is a nursing specialty focused on the prevention and treatment of musculoskeletal disorders.", - "extract_html": "

    Orthopaedic nursing (or orthopedic nursing) is a nursing specialty focused on the prevention and treatment of musculoskeletal disorders.", - "lang": "en", - "dir": "ltr", - "timestamp": "2015-08-31T23:09:33Z", - "normalizedtitle": "Orthopaedic nursing" - } - ] - }, - { - "text": "Thevar Jayanthi (Thevar community, India)", - "pages": [ - { - "title": "Thevar_Jayanthi", - "displaytitle": "Thevar Jayanthi", - "pageid": 23606990, - "extract": "Thevar Jayanthi, celebrated on 30 October, is an annual commemoration of the birthday of the Indian freedom fighter and politician Pasumpon Muthuramalingam Thevar. It is celebrated in a grand way by the Thevar community in the southern districts of Tamil Nadu. Although not an official public holiday, many schools and businesses in the area remain closed on the day.", - "extract_html": "

    Thevar Jayanthi, celebrated on 30 October, is an annual commemoration of the birthday of the Indian freedom fighter and politician Pasumpon Muthuramalingam Thevar. It is celebrated in a grand way by the Thevar community in the southern districts of Tamil Nadu. Although not an official public holiday, many schools and businesses in the area remain closed on the day.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Thevar_Jayanthi_in_Madurai%2C_2007.jpg/240px-Thevar_Jayanthi_in_Madurai%2C_2007.jpg", - "width": 240, - "height": 320, - "original": "https://upload.wikimedia.org/wikipedia/commons/f/ff/Thevar_Jayanthi_in_Madurai%2C_2007.jpg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/f/ff/Thevar_Jayanthi_in_Madurai%2C_2007.jpg", - "width": 1944, - "height": 2592 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-01-07T18:33:39Z", - "normalizedtitle": "Thevar Jayanthi" - }, - { - "title": "Mukkulathor", - "displaytitle": "Mukkulathor", - "pageid": 5006922, - "extract": "The Mukkulathor people, who are also collectively known as Thevar, are native to the central and southern districts of Tamil Nadu, India.", - "extract_html": "

    The Mukkulathor people, who are also collectively known as Thevar, are native to the central and southern districts of Tamil Nadu, India.", - "lang": "en", - "dir": "ltr", - "timestamp": "2017-08-08T19:40:35Z", - "normalizedtitle": "Mukkulathor" - }, - { - "title": "India", - "displaytitle": "India", - "pageid": 14533, - "extract": "India, officially the Republic of India (Bhārat Gaṇarājya), is a country in South Asia. It is the seventh-largest country by area, the second-most populous country (with over 1.2 billion people), and the most populous democracy in the world. It is bounded by the Indian Ocean on the south, the Arabian Sea on the southwest, and the Bay of Bengal on the southeast. It shares land borders with Pakistan to the west; China, Nepal, and Bhutan to the northeast; and Myanmar (Burma) and Bangladesh to the east. In the Indian Ocean, India is in the vicinity of Sri Lanka and the Maldives.", - "extract_html": "

    India, officially the Republic of India (Bhārat Gaṇarājya), is a country in South Asia. It is the seventh-largest country by area, the second-most populous country (with over 1.2 billion people), and the most populous democracy in the world. It is bounded by the Indian Ocean on the south, the Arabian Sea on the southwest, and the Bay of Bengal on the southeast. It shares land borders with Pakistan to the west; China, Nepal, and Bhutan to the northeast; and Myanmar (Burma) and Bangladesh to the east. In the Indian Ocean, India is in the vicinity of Sri Lanka and the Maldives.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/4/41/Flag_of_India.svg/320px-Flag_of_India.svg.png", - "width": 320, - "height": 213, - "original": "https://upload.wikimedia.org/wikipedia/en/4/41/Flag_of_India.svg" - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/en/4/41/Flag_of_India.svg", - "width": 1350, - "height": 900 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2017-10-30T08:54:15Z", - "description": "federal republic in southern Asia", - "coordinates": { - "lat": 21, - "lon": 78 - }, - "normalizedtitle": "India" - } - ] - } - ] -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/page_lead_mw.json b/data-client/src/test/res/raw/page_lead_mw.json deleted file mode 100644 index ff59493f5f..0000000000 --- a/data-client/src/test/res/raw/page_lead_mw.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "mobileview": { - "normalizedtitle": "Juan Manuel Márquez", - "ns": 0, - "lastmodified": "2017-05-11T17:53:26Z", - "revision": 779895573, - "languagecount": 20, - "displaytitle": "Juan Manuel Márquez", - "id": 3811039, - "pageprops": { - "wikibase_item": "Q557497" - }, - "description": "Mexican boxer", - "image": { - "file": "Juan Manuel Márquez.jpg", - "width": 1152, - "height": 1765 - }, - "thumb": { - "url": "//upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Juan_Manuel_M%C3%A1rquez.jpg/640px-Juan_Manuel_M%C3%A1rquez.jpg", - "width": 640, - "height": 981 - }, - "sections": [ - { - "id": 0, - "text": "

    This name uses Spanish naming customs: the first or paternal family name is Márquez and the second or maternal family name is Méndez.
    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    Juan Manuel Márquez
    \"Juan\n
    Márquez vs Mayweather Jr., 2009
    \n
    Statistics
    Real nameJuan Manuel Márquez Méndez
    Nickname(s)Dinamita (\"Dynamite\")
    Rated at\n\n
    Height5 ft 7 in (170 cm)
    Reach67 in (170 cm)
    NationalityMexican
    Born(1973-08-23) August 23, 1973 (age 43)
    Iztacalco, Mexico City, Mexico
    StanceOrthodox
    Boxing record
    Total fights64
    Wins56
    Wins by KO40
    Losses7
    Draws1

    Juan Manuel Márquez Méndez (born August 23, 1973) is a Mexican professional boxer. He is a former four-weight world champion, being the third Mexican boxer (after Érik Morales and Jorge Arce) to achieve that feat. Márquez has held seven world championships, including the WBA (Super) and IBF featherweight titles; the WBC super featherweight title; the WBA (Super) and WBO lightweight titles; and the WBO junior welterweight title. Additionally, he has held the IBO, Ring magazine, and lineal lightweight titles.

    \n

    An exceptionally skilled combination and counterpuncher, Márquez is known for being a fast and highly technical boxer who is also willing to engage in slugfests with opponents, and is credited for his toughness; in a career spanning more than twenty years, he has never lost via stoppage. He is also known for his four-fight saga with Manny Pacquiao, as well as his fight against fellow Mexican Marco Antonio Barrera. Márquez is considered to be one of the greatest Mexican boxers of all time,[1] and is ranked by BoxRec as the greatest Mexican fighter of all time, pound for pound.[2]

    \n

    " - } - ], - "protection": {}, - "editable": true - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/page_lead_rb.json b/data-client/src/test/res/raw/page_lead_rb.json deleted file mode 100644 index 5f244e4c47..0000000000 --- a/data-client/src/test/res/raw/page_lead_rb.json +++ /dev/null @@ -1,246 +0,0 @@ -{ - "ns": 0, - "id": 3811039, - "revision": "779895573", - "lastmodified": "2017-05-11T17:53:26Z", - "lastmodifier": { - "name": "GreenC bot", - "gender": "unknown" - }, - "displaytitle": "Juan Manuel Márquez", - "normalizedtitle": "Juan Manuel Márquez", - "wikibase_item": "Q557497", - "description": "Mexican boxer", - "description_source": "central", - "protection": {}, - "editable": true, - "languagecount": 20, - "image": { - "file": "Juan Manuel Márquez.jpg", - "urls": { - "320": "//upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Juan_Manuel_M%C3%A1rquez.jpg/320px-Juan_Manuel_M%C3%A1rquez.jpg", - "640": "//upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Juan_Manuel_M%C3%A1rquez.jpg/640px-Juan_Manuel_M%C3%A1rquez.jpg", - "800": "//upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Juan_Manuel_M%C3%A1rquez.jpg/800px-Juan_Manuel_M%C3%A1rquez.jpg", - "1024": "//upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Juan_Manuel_M%C3%A1rquez.jpg/1024px-Juan_Manuel_M%C3%A1rquez.jpg" - } - }, - "hatnotes": [ - "This name uses Spanish naming customs: the first or paternal family name is Márquez and the second or maternal family name is Méndez." - ], - "sections": [ - { - "id": 0, - "text": "

    Juan Manuel Márquez Méndez (born August 23, 1973) is a Mexican professional boxer. He is a former four-weight world champion, being the third Mexican boxer (after Érik Morales and Jorge Arce) to achieve that feat. Márquez has held seven world championships, including the WBA (Super) and IBF featherweight titles; the WBC super featherweight title; the WBA (Super) and WBO lightweight titles; and the WBO junior welterweight title. Additionally, he has held the IBO, Ring magazine, and lineal lightweight titles.

    This name uses Spanish naming customs: the first or paternal family name is Márquez and the second or maternal family name is Méndez.
    \n
    Juan Manuel Márquez
    \n

    Márquez vs Mayweather Jr., 2009
    Statistics
    Real name\nJuan Manuel Márquez Méndez
    Nickname(s)\nDinamita (\"Dynamite\")
    Rated at\n
    Height\n5 ft 7 in (170 cm)
    Reach\n67 in (170 cm)
    Nationality\nMexican
    Born\n (1973-08-23) August 23, 1973 (age 43)
    Iztacalco, Mexico City, Mexico
    Stance\nOrthodox
    Boxing record
    Total fights\n64
    Wins\n56
    Wins by KO\n40
    Losses\n7
    Draws\n1
    \n\n\n\n

    An exceptionally skilled combination and counterpuncher, Márquez is known for being a fast and highly technical boxer who is also willing to engage in slugfests with opponents, and is credited for his toughness; in a career spanning more than twenty years, he has never lost via stoppage. He is also known for his four-fight saga with Manny Pacquiao, as well as his fight against fellow Mexican Marco Antonio Barrera. Márquez is considered to be one of the greatest Mexican boxers of all time,[1] and is ranked by BoxRec as the greatest Mexican fighter of all time, pound for pound.[2]

    \n\n" - }, - { - "id": 1, - "toclevel": 1, - "anchor": "Amateur_career", - "line": "Amateur career" - }, - { - "id": 2, - "toclevel": 1, - "anchor": "Professional_career", - "line": "Professional career" - }, - { - "id": 3, - "toclevel": 2, - "anchor": "Featherweight", - "line": "Featherweight" - }, - { - "id": 4, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Norwood", - "line": "Márquez vs. Norwood" - }, - { - "id": 5, - "toclevel": 2, - "anchor": "Featherweight_Champion", - "line": "Featherweight Champion" - }, - { - "id": 6, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Pacquiao_I", - "line": "Márquez vs. Pacquiao I" - }, - { - "id": 7, - "toclevel": 2, - "anchor": "Defending_Unified_Titles", - "line": "Defending Unified Titles" - }, - { - "id": 8, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._John", - "line": "Márquez vs. John" - }, - { - "id": 9, - "toclevel": 2, - "anchor": "Super_Featherweight", - "line": "Super Featherweight" - }, - { - "id": 10, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Barrera", - "line": "Márquez vs. Barrera" - }, - { - "id": 11, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Pacquiao_II", - "line": "Márquez vs. Pacquiao II" - }, - { - "id": 12, - "toclevel": 2, - "anchor": "Lightweight", - "line": "Lightweight" - }, - { - "id": 13, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Casamayor", - "line": "Márquez vs. Casamayor" - }, - { - "id": 14, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Diaz_I", - "line": "Márquez vs. Diaz I" - }, - { - "id": 15, - "toclevel": 2, - "anchor": "Welterweight", - "line": "Welterweight" - }, - { - "id": 16, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Mayweather", - "line": "Márquez vs. Mayweather" - }, - { - "id": 17, - "toclevel": 2, - "anchor": "Return_to_Lightweight", - "line": "Return to Lightweight" - }, - { - "id": 18, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Diaz_II", - "line": "Márquez vs. Diaz II" - }, - { - "id": 19, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Katsidis", - "line": "Márquez vs. Katsidis" - }, - { - "id": 20, - "toclevel": 2, - "anchor": "Light_Welterweight", - "line": "Light Welterweight" - }, - { - "id": 21, - "toclevel": 2, - "anchor": "Return_to_Welterweight", - "line": "Return to Welterweight" - }, - { - "id": 22, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Pacquiao_III", - "line": "Márquez vs. Pacquiao III" - }, - { - "id": 23, - "toclevel": 2, - "anchor": "Return_to_Light_Welterweight", - "line": "Return to Light Welterweight" - }, - { - "id": 24, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Fedchenko", - "line": "Márquez vs. Fedchenko" - }, - { - "id": 25, - "toclevel": 2, - "anchor": "Third_return_to_Welterweight", - "line": "Third return to Welterweight" - }, - { - "id": 26, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Pacquiao_IV", - "line": "Márquez vs. Pacquiao IV" - }, - { - "id": 27, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Bradley", - "line": "Márquez vs. Bradley" - }, - { - "id": 28, - "toclevel": 3, - "anchor": "M.C3.A1rquez_vs._Alvarado", - "line": "Márquez vs. Alvarado" - }, - { - "id": 29, - "toclevel": 3, - "anchor": "Inactivity", - "line": "Inactivity" - }, - { - "id": 30, - "toclevel": 1, - "anchor": "Professional_boxing_record", - "line": "Professional boxing record" - }, - { - "id": 31, - "toclevel": 1, - "anchor": "Pay-per-view_bouts", - "line": "Pay-per-view bouts" - }, - { - "id": 32, - "toclevel": 1, - "anchor": "Personal_life", - "line": "Personal life" - }, - { - "id": 33, - "toclevel": 1, - "anchor": "See_also", - "line": "See also" - }, - { - "id": 34, - "toclevel": 1, - "anchor": "References", - "line": "References" - }, - { - "id": 35, - "toclevel": 1, - "anchor": "External_links", - "line": "External links" - } - ] -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/prefix_search_results.json b/data-client/src/test/res/raw/prefix_search_results.json deleted file mode 100644 index 2e496be435..0000000000 --- a/data-client/src/test/res/raw/prefix_search_results.json +++ /dev/null @@ -1,308 +0,0 @@ -{ - "batchcomplete": true, - "continue": { - "sroffset": 1, - "gpsoffset": 20, - "continue": "gpsoffset||" - }, - "query": { - "redirects": [ - { - "index": 1, - "from": "Abama", - "to": "Narthecium" - }, - { - "index": 2, - "from": "Abamax", - "to": "Amitriptyline" - } - ], - "pages": [ - { - "pageid": 1934, - "ns": 0, - "title": "Abadan, Iran", - "index": 6, - "terms": { - "description": [ - "city in Iran", - "city in Iran", - "city in Iran" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/Abadan_Catalitic_facilities.jpg/314px-Abadan_Catalitic_facilities.jpg", - "width": 314, - "height": 320 - } - }, - { - "pageid": 2473, - "ns": 0, - "title": "Abacá", - "index": 8, - "terms": { - "description": [ - "species of plant" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Musa_textilis_-_Manila_Hemp_-_desc-flower.jpg/320px-Musa_textilis_-_Manila_Hemp_-_desc-flower.jpg", - "width": 320, - "height": 240 - } - }, - { - "pageid": 2477, - "ns": 0, - "title": "Abakan", - "index": 9, - "terms": { - "description": [ - "city in Russia, capital of the Republic of Khakassia" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Wallpaper_meria.jpg/320px-Wallpaper_meria.jpg", - "width": 320, - "height": 240 - } - }, - { - "pageid": 293833, - "ns": 0, - "title": "Abaza language", - "index": 19, - "terms": { - "description": [ - "language of the Caucasus mountains in the Russian Karachay–Cherkess Republic by the Abazins" - ] - } - }, - { - "pageid": 492154, - "ns": 0, - "title": "Abaiang", - "index": 16, - "terms": { - "description": [ - "atoll" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/04_Map_of_Abaiang%2C_Kiribati.jpg/247px-04_Map_of_Abaiang%2C_Kiribati.jpg", - "width": 247, - "height": 320 - } - }, - { - "pageid": 583678, - "ns": 0, - "title": "Amitriptyline", - "index": 2, - "terms": { - "description": [ - "chemical compound", - "chemical compound" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/68/Amitriptyline2DACS.svg/318px-Amitriptyline2DACS.svg.png", - "width": 318, - "height": 320 - } - }, - { - "pageid": 770058, - "ns": 0, - "title": "Abacavir", - "index": 7, - "terms": { - "description": [ - "chemical compound" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Abacavir.svg/320px-Abacavir.svg.png", - "width": 320, - "height": 253 - } - }, - { - "pageid": 951345, - "ns": 0, - "title": "Abamectin", - "index": 20, - "terms": { - "description": [ - "avermectin" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Avermectins.png/320px-Avermectins.png", - "width": 320, - "height": 206 - } - }, - { - "pageid": 975842, - "ns": 0, - "title": "Abaqa Khan", - "index": 17, - "terms": { - "description": [ - "Mongol ruler of Persia", - "Mongol ruler of Persia" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/AbaqaOnHorseArghunStandingGhazanAsAChild.jpg/320px-AbaqaOnHorseArghunStandingGhazanAsAChild.jpg", - "width": 320, - "height": 204 - } - }, - { - "pageid": 990183, - "ns": 0, - "title": "Abaya", - "index": 18, - "terms": { - "description": [ - "Female dress" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Islamic_Clothing_Abaya.jpg/147px-Islamic_Clothing_Abaya.jpg", - "width": 147, - "height": 320 - } - }, - { - "pageid": 1089694, - "ns": 0, - "title": "Abacab", - "index": 11, - "terms": { - "description": [ - "album" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/2/2c/Abacab.jpg", - "width": 314, - "height": 316 - } - }, - { - "pageid": 1142711, - "ns": 0, - "title": "Aba, Abia", - "index": 14, - "terms": { - "description": [ - "city in Abia State, southern Nigeria" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Aba_Nigeria_hotel.jpg/320px-Aba_Nigeria_hotel.jpg", - "width": 320, - "height": 213 - } - }, - { - "pageid": 2060913, - "ns": 0, - "title": "Narthecium", - "index": 1, - "terms": { - "description": [ - "genus of plants" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Narthecium_ossifragum_01.jpg/240px-Narthecium_ossifragum_01.jpg", - "width": 240, - "height": 320 - } - }, - { - "pageid": 5982795, - "ns": 0, - "title": "ABA All-Time Team", - "index": 13 - }, - { - "pageid": 9267310, - "ns": 0, - "title": "Abarangers", - "index": 10, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/en/thumb/d/da/Abaranger.jpg/320px-Abaranger.jpg", - "width": 320, - "height": 240 - } - }, - { - "pageid": 9514706, - "ns": 0, - "title": "Abatacept", - "index": 12, - "terms": { - "description": [ - "pharmaceutical drug" - ] - } - }, - { - "pageid": 13777854, - "ns": 0, - "title": "Abama Open de Canarias", - "index": 3 - }, - { - "pageid": 22922593, - "ns": 0, - "title": "ABADÁ-Capoeira", - "index": 5 - }, - { - "pageid": 35995057, - "ns": 0, - "title": "Aba Mansuri", - "index": 4, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/Iran_location_map.svg/320px-Iran_location_map.svg.png", - "width": 320, - "height": 286 - } - }, - { - "pageid": 44057826, - "ns": 0, - "title": "Abacavir/dolutegravir/lamivudine", - "index": 15, - "terms": { - "description": [ - "drug combination for HIV" - ] - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Abacavir%2C_dolutegravir_and_lamivudine.svg/200px-Abacavir%2C_dolutegravir_and_lamivudine.svg.png", - "width": 200, - "height": 320 - } - } - ], - "searchinfo": { - "suggestion": "ababa", - "suggestionsnippet": "ababa" - }, - "search": [ - { - "ns": 0, - "title": "Abama Open de Canarias" - } - ] - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/prefix_search_results_empty.json b/data-client/src/test/res/raw/prefix_search_results_empty.json deleted file mode 100644 index f0872fdfa3..0000000000 --- a/data-client/src/test/res/raw/prefix_search_results_empty.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batchcomplete": true, - "query": { - "search": [] - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/rb_page_summary_malformed.json b/data-client/src/test/res/raw/rb_page_summary_malformed.json deleted file mode 100644 index dfd670a4d2..0000000000 --- a/data-client/src/test/res/raw/rb_page_summary_malformed.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extract": "Barack Hussein Obama II (US /bəˈrɑːk huːˈseɪn oʊˈbɑːmə/; born August 4, 1961) is an American politician who is the 44th and current President of the United States. He is the first African American to hold the office and the first president born outside the continental United States. Born in Honolulu, Hawaii, Obama is a graduate of Columbia University and Harvard Law School, where he was president of the Harvard Law Review. He was a community organizer in Chicago before earning his law degree. He worked as a civil rights attorney and taught constitutional law at the University of Chicago Law School between 1992 and 2004.", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/President_Barack_Obama.jpg/256px-President_Barack_Obama.jpg", - "width": 256, - "height": 320 - }, - "lang": "en", - "dir": "ltr", - "timestamp": "2016-11-01T15:48:15Z", - "description": "44th President of the United States of America" -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/rb_page_summary_valid.json b/data-client/src/test/res/raw/rb_page_summary_valid.json deleted file mode 100644 index 43b057a9f4..0000000000 --- a/data-client/src/test/res/raw/rb_page_summary_valid.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "type": "standard", - "title": "Fermat's Last Theorem", - "displaytitle": "Fermat's Last Theorem", - "namespace": { - "id": 0, - "text": "" - }, - "titles": { - "canonical": "Fermat's_Last_Theorem", - "normalized": "Fermat's Last Theorem", - "display": "Fermat's Last Theorem" - }, - "pageid": 19021953, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Diophantus-II-8-Fermat.jpg/203px-Diophantus-II-8-Fermat.jpg", - "width": 203, - "height": 320 - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/4/47/Diophantus-II-8-Fermat.jpg", - "width": 914, - "height": 1440 - }, - "lang": "en", - "dir": "ltr", - "revision": "832091465", - "tid": "f6d6f80c-2ed3-11e8-a436-b2755950c3e1", - "timestamp": "2018-03-23T19:54:06Z", - "description": "theorem in number theory", - "extract": "In number theory, Fermat's Last Theorem states that no three positive integers a, b, and c satisfy the equation an + bn = cn for any integer value of n greater than 2. The cases n = 1 and n = 2 have been known to have infinitely many solutions since antiquity.", - "extract_html": "

    In number theory, Fermat's Last Theorem states that no three positive integers a, b, and c satisfy the equation an + bn = cn for any integer value of n greater than 2. The cases n = 1 and n = 2 have been known to have infinitely many solutions since antiquity.

    ", - "content_urls": { - "desktop": { - "page": "https://en.wikipedia.org/wiki/Fermat's_Last_Theorem", - "revisions": "https://en.wikipedia.org/wiki/Fermat's_Last_Theorem?action=history", - "edit": "https://en.wikipedia.org/wiki/Fermat's_Last_Theorem?action=edit", - "talk": "https://en.wikipedia.org/wiki/Talk:Fermat's_Last_Theorem" - }, - "mobile": { - "page": "https://en.m.wikipedia.org/wiki/Fermat's_Last_Theorem", - "revisions": "https://en.m.wikipedia.org/wiki/Special:History/Fermat's_Last_Theorem", - "edit": "https://en.m.wikipedia.org/wiki/Fermat's_Last_Theorem?action=edit", - "talk": "https://en.m.wikipedia.org/wiki/Talk:Fermat's_Last_Theorem" - } - }, - "api_urls": { - "summary": "https://en.wikipedia.org/api/rest_v1/page/summary/Fermat's_Last_Theorem", - "edit_html": "https://en.wikipedia.org/api/rest_v1/page/html/Fermat's_Last_Theorem", - "talk_page_html": "https://en.wikipedia.org/api/rest_v1/page/html/Talk:Fermat's_Last_Theorem" - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/reading_list_page_info.json b/data-client/src/test/res/raw/reading_list_page_info.json deleted file mode 100644 index 6a04e71b08..0000000000 --- a/data-client/src/test/res/raw/reading_list_page_info.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "batchcomplete": true, - "query": { - "normalized": [ - { - "fromencoded": false, - "from": "Barack_Obama", - "to": "Barack Obama" - }, - { - "fromencoded": false, - "from": "Joe_Biden", - "to": "Joe Biden" - } - ], - "pages": [ - { - "pageid": 145422, - "ns": 0, - "title": "Joe Biden", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Official_portrait_of_Vice_President_Joe_Biden.jpg/255px-Official_portrait_of_Vice_President_Joe_Biden.jpg", - "width": 255, - "height": 320 - }, - "description": "47th Vice President of the United States", - "descriptionsource": "local" - }, - { - "pageid": 534366, - "ns": 0, - "title": "Barack Obama", - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/President_Barack_Obama.jpg/256px-President_Barack_Obama.jpg", - "width": 256, - "height": 320 - }, - "description": "44th President of the United States of America", - "descriptionsource": "central" - } - ] - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/related_pages_search_results.json b/data-client/src/test/res/raw/related_pages_search_results.json deleted file mode 100644 index 1ba871664b..0000000000 --- a/data-client/src/test/res/raw/related_pages_search_results.json +++ /dev/null @@ -1,177 +0,0 @@ -{ - "pages": [{ - "pageid": 33702, - "ns": 0, - "index": 19, - "type": "standard", - "title": "Wolf", - "displaytitle": "Wolf", - "namespace": { - "id": 0, - "text": "" - }, - "titles": { - "canonical": "Wolf", - "normalized": "Wolf", - "display": "Wolf" - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/European_grey_wolf_in_Prague_zoo.jpg/291px-European_grey_wolf_in_Prague_zoo.jpg", - "width": 291, - "height": 320 - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/a/ab/European_grey_wolf_in_Prague_zoo.jpg", - "width": 1412, - "height": 1552 - }, - "lang": "en", - "dir": "ltr", - "revision": "855281275", - "tid": "ce283516-a5f5-11e8-ab3b-ccb113296fc7", - "timestamp": "2018-08-17T05:26:48Z", - "description": "species of mammal", - "extract": "The wolf, also known as the gray wolf, timber wolf, western wolf, and its other subspecies is a canine native to the wilderness and remote areas of Eurasia and North America. It is the largest extant member of its family, with males averaging 43–45 kg (95–99 lb) and females 36–38.5 kg (79–85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy and predominantly a mottled gray in color, although nearly pure white, red, and brown to black also occur. Mammal Species of the World, a standard reference work in zoology, recognises 38 subspecies of C. lupus..", - "extract_html": "

    The wolf, also known as the gray wolf, timber wolf, western wolf, and its other subspecies is a canine native to the wilderness and remote areas of Eurasia and North America. It is the largest extant member of its family, with males averaging 43–45 kg (95–99 lb) and females 36–38.5 kg (79–85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy and predominantly a mottled gray in color, although nearly pure white, red, and brown to black also occur. Mammal Species of the World, a standard reference work in zoology, recognises 38 subspecies of C. lupus..

    ", - "normalizedtitle": "Wolf" - }, { - "pageid": 62893, - "ns": 0, - "index": 6, - "type": "standard", - "title": "Dingo", - "displaytitle": "Dingo", - "namespace": { - "id": 0, - "text": "" - }, - "titles": { - "canonical": "Dingo", - "normalized": "Dingo", - "display": "Dingo" - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Dingo_walking.jpg/320px-Dingo_walking.jpg", - "width": 320, - "height": 170 - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/9/98/Dingo_walking.jpg", - "width": 487, - "height": 259 - }, - "lang": "en", - "dir": "ltr", - "revision": "855391560", - "tid": "19bf86da-a611-11e8-81e0-df69a20262cf", - "timestamp": "2018-08-17T23:30:55Z", - "description": "Canis lupus australian", - "extract": "The dingo is a type of feral dog native to Australia. Its taxonomic status is debated. The first British colonists to arrive established a settlement at Port Jackson in 1788 and recorded dingoes living there with indigenous Australians. Although the dingo exists in the wild, it associates with humans but has not been selectively bred as have other domesticated animals. It is a medium-sized canid that possesses a lean, hardy body adapted for speed, agility and stamina. The dingo's three main coat colours are described as being either light ginger, black and tan, or creamy white. The head is the widest part of the dingo, is wedge-shaped, and large in proportion to the body. The dingo skull differs to that of the domestic dog by its larger palatal width, longer rostrum, shorter skull height, and wider sagittal crest. One can regard the dingo as an ecotype or an ecospecies which has adapted to Australia's unique environment. It is listed as a \"vulnerable species\" on the IUCN Red List due to declining numbers caused by hybridization with the domestic dog.", - "extract_html": "

    The dingo is a type of feral dog native to Australia. Its taxonomic status is debated. The first British colonists to arrive established a settlement at Port Jackson in 1788 and recorded dingoes living there with indigenous Australians. Although the dingo exists in the wild, it associates with humans but has not been selectively bred as have other domesticated animals. It is a medium-sized canid that possesses a lean, hardy body adapted for speed, agility and stamina. The dingo's three main coat colours are described as being either light ginger, black and tan, or creamy white. The head is the widest part of the dingo, is wedge-shaped, and large in proportion to the body. The dingo skull differs to that of the domestic dog by its larger palatal width, longer rostrum, shorter skull height, and wider sagittal crest. One can regard the dingo as an ecotype or an ecospecies which has adapted to Australia's unique environment. It is listed as a "vulnerable species" on the IUCN Red List due to declining numbers caused by hybridization with the domestic dog.

    ", - "normalizedtitle": "Dingo" - }, { - "pageid": 403300, - "ns": 0, - "index": 16, - "type": "standard", - "title": "Canis", - "displaytitle": "Canis", - "namespace": { - "id": 0, - "text": "" - }, - "titles": { - "canonical": "Canis", - "normalized": "Canis", - "display": "Canis" - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Canis.jpg/223px-Canis.jpg", - "width": 223, - "height": 320 - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/3/3f/Canis.jpg", - "width": 2800, - "height": 4024 - }, - "lang": "en", - "dir": "ltr", - "revision": "855521281", - "tid": "7972f3ca-a501-11e8-b794-b18962a72806", - "timestamp": "2018-08-18T22:46:37Z", - "description": "genus of mammals", - "extract": "Canis is a genus of the Canidae containing multiple extant species, such as wolves, coyotes, jackals, dingoes, and dogs. Species of this genus are distinguished by their moderate to large size, their massive, well-developed skulls and dentition, long legs, and comparatively short ears and tails.", - "extract_html": "

    Canis is a genus of the Canidae containing multiple extant species, such as wolves, coyotes, jackals, dingoes, and dogs. Species of this genus are distinguished by their moderate to large size, their massive, well-developed skulls and dentition, long legs, and comparatively short ears and tails.

    ", - "normalizedtitle": "Canis" - }, { - "pageid": 441452, - "ns": 0, - "index": 17, - "type": "standard", - "title": "Saarloos_wolfdog", - "displaytitle": "Saarloos wolfdog", - "namespace": { - "id": 0, - "text": "" - }, - "titles": { - "canonical": "Saarloos_wolfdog", - "normalized": "Saarloos wolfdog", - "display": "Saarloos wolfdog" - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Bow_bow.jpg/213px-Bow_bow.jpg", - "width": 213, - "height": 320 - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/7/7e/Bow_bow.jpg", - "width": 1027, - "height": 1540 - }, - "lang": "en", - "dir": "ltr", - "revision": "855253783", - "tid": "ba12af02-a540-11e8-85b2-4f2120e71031", - "timestamp": "2018-08-17T00:14:47Z", - "description": "dog breed, canid hybrid", - "extract": "The Saarloos wolfdog or Saarloos wolfhound is an established breed of dog originating from wolfdog hybrid crosses.", - "extract_html": "

    The Saarloos wolfdog or Saarloos wolfhound is an established breed of dog originating from wolfdog hybrid crosses.

    ", - "normalizedtitle": "Saarloos wolfdog" - }, { - "pageid": 968202, - "ns": 0, - "index": 10, - "type": "standard", - "title": "Dog_intelligence", - "displaytitle": "Dog intelligence", - "namespace": { - "id": 0, - "text": "" - }, - "titles": { - "canonical": "Dog_intelligence", - "normalized": "Dog intelligence", - "display": "Dog intelligence" - }, - "thumbnail": { - "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Vizsla_r%C3%A1h%C3%BAz_a_vadra.jpg/320px-Vizsla_r%C3%A1h%C3%BAz_a_vadra.jpg", - "width": 320, - "height": 214 - }, - "originalimage": { - "source": "https://upload.wikimedia.org/wikipedia/commons/8/8e/Vizsla_r%C3%A1h%C3%BAz_a_vadra.jpg", - "width": 640, - "height": 427 - }, - "lang": "en", - "dir": "ltr", - "revision": "851689587", - "tid": "aa4f0e1e-a401-11e8-8cf9-20bf79246778", - "timestamp": "2018-07-23T23:36:35Z", - "extract": "Dog intelligence or dog cognition is the process in dogs of acquiring, storing in memory, retrieving, combining, comparing, and using in new situations information and conceptual skills.", - "extract_html": "

    Dog intelligence or dog cognition is the process in dogs of acquiring, storing in memory, retrieving, combining, comparing, and using in new situations information and conceptual skills.

    ", - "normalizedtitle": "Dog intelligence" - }] -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/user_extended_info.json b/data-client/src/test/res/raw/user_extended_info.json deleted file mode 100644 index cabf18b84a..0000000000 --- a/data-client/src/test/res/raw/user_extended_info.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "batchcomplete": true, - "query": { - "users": [ - { - "userid": 24531888, - "name": "USER", - "implicitgroups": [ - "*", - "user" - ] - } - ], - "userinfo": { - "id": 24531888, - "name": "USER" - } - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/user_info.json b/data-client/src/test/res/raw/user_info.json deleted file mode 100644 index afe22cc1c8..0000000000 --- a/data-client/src/test/res/raw/user_info.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "batchcomplete": true, - "query": { - "userinfo": { - "id": 24531888, - "name": "MHolloway (WMF)" - } - } -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/wikidata_entity_label.json b/data-client/src/test/res/raw/wikidata_entity_label.json deleted file mode 100644 index e56b90c749..0000000000 --- a/data-client/src/test/res/raw/wikidata_entity_label.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "entities": { - "Q123": { - "type": "item", - "id": "Q123", - "labels": { - "en": { - "language": "en", - "value": "September" - } - } - } - }, - "success": 1 -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/wikidata_entity_label_invalid_entity.json b/data-client/src/test/res/raw/wikidata_entity_label_invalid_entity.json deleted file mode 100644 index 0afff87aec..0000000000 --- a/data-client/src/test/res/raw/wikidata_entity_label_invalid_entity.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "errors": [ - { - "code": "no-such-entity", - "text": "Could not find such an entity. (Invalid id: User talk:Mhollo)", - "data": { - "messages": [ - { - "name": "wikibase-api-no-such-entity", - "parameters": [], - "html": "Could not find such an entity." - } - ] - }, - "module": "main" - } - ], - "docref": "See https://www.wikidata.org/w/api.php for API usage", - "servedby": "mw1202" -} \ No newline at end of file diff --git a/data-client/src/test/res/raw/wikitext.json b/data-client/src/test/res/raw/wikitext.json deleted file mode 100644 index 6b6b709186..0000000000 --- a/data-client/src/test/res/raw/wikitext.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "continue": { - "rvcontinue": "20170117145345|760522071", - "continue": "||" - }, - "query": { - "pages": [ - { - "pageid": 46498401, - "ns": 2, - "title": "User:Mhollo/sandbox", - "revisions": [ - { - "timestamp": "2018-03-18T18:10:54Z", - "contentformat": "text/x-wiki", - "contentmodel": "wikitext", - "content": "\\o/\n\ntest12\n\n3" - } - ] - } - ] - } -} \ No newline at end of file diff --git a/data-client/src/test/resources/robolectric.properties b/data-client/src/test/resources/robolectric.properties deleted file mode 100644 index b48099528b..0000000000 --- a/data-client/src/test/resources/robolectric.properties +++ /dev/null @@ -1,2 +0,0 @@ -# suppress inspection "UnusedProperty" for whole file -sdk=24 diff --git a/settings.gradle b/settings.gradle index 2b2922f757..e7b4def49c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1 @@ -include ':app', ':wikimedia-data-client' -project(':wikimedia-data-client').projectDir = new File('data-client') \ No newline at end of file +include ':app'