264 подписчика
Я — кулхацкер
Как я благодарен своему вебовскому прошлому! Навыки, добытые в эпоху отсутствия современных инструментов — бесценны. Сейчас, например, я восстанавливаю сообщество и сайт ityoutubers. Потребовалось собрать данные о каналах. Ссылки на каналы в ютубе могут быть нескольких видов и только 2 из них содержат информацию, по которой можно из апи достать данные:
Это всё один и тот же канал! Ясное дело, что айтишники из сообщества накидали все возможные варианты. Как достать из них идэшники, типа: UCX3w3jB05SHLbGjZPR0PM6g? Кстати, все начинаются с UC, читают меня — 100%. Какой-то апишки чтобы по любому из урлов получить идешник — нету.
НАДО СМЕКАТЬ
Гуглим, что на странице ютуб канала есть переменная ytInitialData с нужной информацией. Как у любого кулхацкера у меня установлен Tampermonkey. Пишу простецкий скрипт, который будет сбрасывать идешник в консоль:
(function() {
'use strict';
console.log(ytInitialData.metadata.channelMetadataRenderer.externalId);
})();
Прохожу по нужным каналам, собираю айдишники. Да, можно было сделать граббер, но для меня это будет дольше чем открыть руками 50 вкладок. Важное отступление: если один раз разобраться в грабберах, то это было бы быстрее, чем собирать руками.
Дальше нужно собрать сами данные из АПИ. Расчехляю хакерский JS:
const params = {
part: "id,snippet",
maxResults: 50
};
async function main(params) {
let items = [];
while(ids.length > 0) {
const res = await youtubeApi.channels.list({ id: ids.splice(0, 10).join(","), ...params });
items = items.concat(res.data.items);
}
console.log(JSON.stringify(items));
};
main(params).catch(console.error);
И сливаю всю эту ссанину в файлик:
$ node ./scrapper.js > channels.json
Остается сверстать список каналов для морды, это уже любой джун сможет сделать. Берем новый tailwindcss и старый добрый handlebars.js чтобы немного пощекотать любителей смотреть исходники. Готово!
И это только один из тысячи примеров. Я уже не говорю про обход джаваскрипт проверок в формах. Старая школа, детка. На курсах такой смекалочке не учат.
1 минута
11 декабря 2022