Разрешено загрузок в день: ${allowed_downloads}
`; } if (downloadsData.remaining_downloads) { let remaining_downloads = downloadsData.remaining_downloads; if (remaining_downloads < 0) { remaining_downloads = 0; } downloadSpan.innerHTML += `Осталось загрузок: ${remaining_downloads}
`; } if (downloadsData.reset_time_utc) { const remaining = createRemainingTime(downloadsData.reset_time_utc); if (remaining.startsWith("-")) { setDownloadData({ allowed_downloads: downloadsData.allowed_downloads, remaining_downloads: null, reset_time_utc: null, }); } else { downloadSpan.innerHTML += `Сброс счетчика через ${remaining}
`; } } } function hideDownloadData() { downloadSpan.innerHTML = ""; } function setDownloadData(data) { downloadsData = data; } function showUserData(id) { profileSpan.innerHTML = `Идентификатор пользователя: ${id}`; showDownloadData(); } function hideUserData() { profileSpan.innerHTML = ""; hideDownloadData(); } setInterval(() => { showDownloadData(); }, 1000); function loadProfile() { GM_xmlhttpRequest({ method: "GET", url: "https://api.opensubtitles.com/api/v1/infos/user", headers: { "Api-Key": hc.subtitles.key, "Authorization": `Bearer ${hc.settings.getSetting("hs-opensubtitles-key")}` || "", "User-Agent": hc.useragent, "Content-Type": "application/json", }, onload(response) { if (response.status === 200) { const responseJSON = JSON.parse(response.responseText); console.debug(responseJSON); setDownloadData({ allowed_downloads: responseJSON.data.allowed_downloads, remaining_downloads: responseJSON.data.remaining_downloads, reset_time_utc: responseJSON.data.reset_time_utc, }); showUserData(responseJSON.data.user_id); } else { console.debug(response); //logout(); showError(parseOpensubtitlesError(response)); } }, onerror(e) { console.debug(e); showError("Something went wrong"); }, }); } function parseOpensubtitlesError(response) { localStorage.setItem("hc-opensubtitles-error-status", response.status); localStorage.setItem("hc-opensubtitles-error-text", response.responseText); try { const responseJSON = JSON.parse(response.responseText); if (responseJSON.message) { return responseJSON.message; } if (responseJSON.errors) { return responseJSON.errors.join("