Created
December 24, 2022 16:47
-
-
Save qfox/0a7eac193740588f9f9e4b3eb62dabd8 to your computer and use it in GitHub Desktop.
Отписаться (удалить) от всех подписок на rutube (рутуб)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Нужно открыть devtools в хроме или firefox, и скопировать туда полностью содержание файла | |
// Вспомогательная пауза для 429 | |
const pause = delay => new Promise(resolve => setTimeout(resolve, delay)); | |
// Забираем список на кого мы подписаны из ручки | |
const subscriptionReq = await fetch('https://rutube.ru/api/v1/subscription/cards/detail?limit=1000&offset=0', { credentials: 'include' }); | |
const { results } = await subscriptionReq.json(); | |
// Бежим подряд без параллелизма, рутуб всё равно ограничивает кол-во запросов с клиента, поэтому смысла ускорять нет, не даст быстрее | |
for (const { id, object } of results) { | |
// Ручка удаления одной подписки, дергаем для каждой подписки | |
const r = await fetch(`https://rutube.ru/api/subscription/card/userchannel/${object.id}`, { method: 'DELETE', credentials: 'include' }); | |
// Выводим в консоль от кого отписались (info, log в рутубе переопределены, используются в приложении) | |
console.dir(`${id}, ${object.id}, ${object.name}, ${r.status}`); | |
r.status === 204 || (r.text().then(text => console.dir(`${id} ${text}`))); | |
// Если получили 429 — ждём минуту, потому что достигли лимита запросов | |
if (r.status === 429) { | |
await pause(60000); | |
} | |
await pause(300); // Попытка обмануть автоматику, чтобы не достигать лимита запросов | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Спас меня) Спасибо, добрый человек)