bilibili-search.js
by Shannz
const axios = require('axios');
const cheerio = require('cheerio');
async function bilibili(q) {
try {
const response = await axios.get(`https://www.bilibili.tv/id/search-result?q=${q}`, {
headers: {
'User-Agent': 'Mozilla/5.0 (Linux; Android 8.1.0; CPH1803; Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.4280.141 Mobile Safari/537.36 KiToBrowser/124.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'accept-language': 'id-ID',
'referer': 'https://www.bilibili.tv/id/search',
'upgrade-insecure-requests': '1',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'same-origin',
'sec-fetch-user': '?1',
'priority': 'u=0, i',
'te': 'trailers'
}
});
const html = response.data;
const $ = cheerio.load(html);
let results = [];
$('.section__list__item').each((index, element) => {
let title = $(element).find('.highlights').text().trim();
let url = 'https://www.bilibili.tv' + $(element).find('.bstar-video-card__text a').attr('href');
let thumbnail = $(element).find('.bstar-video-card__cover-img img').attr('src');
let duration = $(element).find('.bstar-video-card__cover-mask-text').text().trim();
let uploader = $(element).find('.bstar-video-card__nickname span').text().trim();
let uploaderUrl = 'https://www.bilibili.tv' + $(element).find('.bstar-video-card__nickname').attr('href');
let views = $(element).find('.bstar-video-card__desc').text().trim().replace(' ยท ', '');
results.push({
title,
url,
thumbnail,
duration,
uploader,
uploaderUrl,
views
});
});
return results;
} catch (error) {
console.error('Error fetching data:', error);
return [];
}
}
// Contoh penggunaan
bilibili('Naruto')