Найти тему
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 минута