Анализ наиболее посещаемых страниц портала
Материал из Поле цифровой дидактики
Код
library(httr)
library(jsonlite)
library(dplyr)
library(lubridate)
library(tidyr)
library(ggplot2)
library(patchwork)
# Корректный URL API
api_url <- "https://digida.mgpu.ru/api.php"
# Безопасное определение функции (если ещё не существует)
if (!exists("get_mw_data")) {
get_mw_data <- function(action, params) {
query_params <- c(action = action, format = "json", params)
response <- GET(api_url, query = query_params)
# Дополнительная проверка типа ответа
if (http_type(response) != "application/json") {
warning("Ответ не в формате JSON")
}
stop_for_status(response)
fromJSON(content(response, "text"))
}
}
# === ДИАГНОСТИКА API ===
print("=== ДИАГНОСТИКА API DIGIDA ===")
print("Проверяем доступность API...")
# Шаг 1: базовый запрос для проверки API
data_loaded <- FALSE
page_views <- NULL
tryCatch({
test_response <- get_mw_data("query", list(
meta = "siteinfo",
siprop = "general"
))
print("✓ API доступно!")
print(paste("Название сайта:", test_response$query$general$sitename))
}, error = function(e) {
stop(paste("❌ API недоступно:", e$message, "\nПроверьте URL:", api_url))
})
# Шаг 2: пробуем получить данные через recentchanges (косвенный показатель активности)
tryCatch({
print("Пробуем получить данные о недавних изменениях...")
page_views <- get_mw_data("query", list(
list = "recentchanges",
rclimit = "1000",
rcprop = "title|timestamp|user|comment",
rcshow = "!bot",
rcend = format(Sys.Date() - 365, "%Y%m%d%H%M%S")
))
if (!is.null(page_views$query$recentchanges)) {
print("✓ Данные получены через recentchanges")
data_loaded <- TRUE
} else {
warning("В ответе API нет данных recentchanges")
}
}, error = function(e) {
print(paste("Ошибка при запросе recentchanges:"