Это не столько вопрос, как AngularJS, как и API-интерфейсы Wikimedia и Wikidata.Запрос MediaWiki и/или WikidataQuery, чтобы найти статью Википедии
Хотя я пытаюсь отобразить содержимое статьи Википедии в AngularJS после выполнения определенного запроса, это не проблема. Я уже знаю, как отображать его ... проблема заключается в поиске статьи или статей.
Я пытаюсь запросить Википедию по исторической дате события , а также как по геолокации.
Давайте выбираем случайное событие, любое событие. Скажем, «1986 Мозамбикский Ту-134 Ту-134 сбой». Ссылка: http://en.wikipedia.org/wiki/1986_Mozambican_Tupolev_Tu-134_crash
Из статьи, я могу видеть точную дату: 19 октября 1986
, а также гео-место события: -25,911389, 31,957222
Пытаюсь для создания поиска в AngularJS, который может использовать координаты диапазона дат и/или геолокации для поиска события.
Я знаю, что у mediawiki теперь есть API геолокации, и я могу найти вышеупомянутое событие либо по ключевому слову, либо по координатам. В результате и получается любые другие статьи, которые существуют в определенном радиусе вокруг него с помощью этого:
Однако, нет никакого способа, чтобы сделать поиск с MediaWiki по точке во время или дату проведения мероприятие.
С другой стороны, у Wikidata есть два метода поиска данных ... у него есть диапазон дат, а также геолокация.
Однако, когда запрос выполняется, я понятия не имею, что возвращается.
Например, когда я использую эту строку запроса:
https://wdq.wmflabs.org/api?q=AROUND[625,-25.911389,31.957222,5]%20AND%20BETWEEN[585,1985,1987]
возвращает это:
{ "Статус": { "Ошибка": "OK", "пункты": 1 , "querytime": "544ms", "parsed_query": "(ВОКРУГ [625, -25.9114,31.9572,5] И МЕЖДУ [585, + 00000001985-00-00T00: 00: 00Z, + 00000001987-00-00T00 : 00: 00Z]) "}," пункты ": [950273]}
Используя инструмент запроса викиданного в:
Я могу видеть, что представляет статью в некотором роде. Я просто не уверен, как использовать это, чтобы направить меня к фактической статье в Википедии.
Я не знаю, что такое «элементов»: [950273] »представляет или как его использовать, чтобы привести меня к статье в Википедии и отобразить содержимое этой статьи в AngularJS.
Есть ли способ выполнить как запрос по дате исторического события, так и геолокацию. Либо используя mediawiki, либо wikidata, либо их комбинацию?
EDIT: Это решение на мой вопрос выше. Кажется, это немного взломать ... но это работает. Достаточно хорошо. Вот мой контроллер.
.controller('WikiQueryCtrl', ['$scope', '$http', function($scope, $http) {
$http({
//these geo coordinates and the date ranges will eventually be dynamic.
url: 'https://wdq.wmflabs.org/api?q=AROUND[625,-25.911389,31.957222,5]%20AND%20BETWEEN[585,1985,1987]&callback=JSON_CALLBACK',
method: 'jsonp'
})
.success(function(response) {
var items = response.items;
$scope.jason = items;
var wikiDataString = 'http://www.wikidata.org/w/api.php?action=wbgetentities&format=json&ids=Q' + items + '&props=sitelinks%7Csitelinks%2Furls&callback=JSON_CALLBACK';
$http({
url: wikiDataString,
method: 'jsonp'
})
.success(function(response2) {
$scope.jason2 = response2;
var url = response2.entities["Q" + items].sitelinks.enwiki.url;
var wikipediaTitle = url.substr(24, url.length);
var wikipediaURL = 'http://en.wikipedia.org/w/api.php?action=query&prop=extracts|info&exintro&titles=' + wikipediaTitle + '&format=json&explaintext&redirects&inprop=url&indexpageids&format=json&callback=JSON_CALLBACK';
$http({
url: wikipediaURL,
method: 'jsonp'
}).success(function(response4) {
var query = response4.query;
var pageID = response4.query.pageids;
var title = response4.query.pages[pageID].title;
var fullurl = response4.query.pages[pageID].fullurl;
var content = response4.query.pages[pageID].extract;
$scope.title = title;
$scope.content = content;
$scope.fullurl = fullurl;
$scope.jason = query;
});
});
});
}]);
Ваше предложение сработало. Мне потребовалось некоторое время, чтобы понять, как перейти от шага A к C и через B, но я это сделал. Кажется, это немного взломанный, но он работает. Я отправил свой контроллер выше, где находится «Редактировать». – Livi17