Files
tvbox_collect/aa999ok/CK/18022/lib/rou.js
T
2026-06-29 03:41:14 +00:00

169 lines
4.1 KiB
JavaScript

//来自群友“tou tie”
const cheerio = createCheerio()
// 设置User Agent,模拟iPhone浏览器
const UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0'
let appConfig = {
ver: 1,
title: '肉视频',
site: 'https://rou.video',
}
async function getConfig() {
let config = appConfig
config.tabs = await getTabs()
return jsonify(config)
}
async function getTabs() {
let list = []
let ignore = ['首頁', '分類', '搜索']
function isIgnoreClassName(className) {
return ignore.some((element) => className.includes(element))
}
const { data } = await $fetch.get(`${appConfig.site}/home`, {
headers: {
'User-Agent': UA,
},
})
const $ = cheerio.load(data)
let $allClass = $('.drawer-side div ul > li > a')
$allClass.each((i, e) => {
const name = $(e).text()
const href = $(e).attr('href')
const isIgnore = isIgnoreClassName(name)
if (isIgnore) return
list.push({
name,
ui: 1,
ext: {
url: appConfig.site + href,
},
})
})
return list
}
async function getCards(ext) {
ext = argsify(ext)
let cards = []
let { page = 1, url } = ext
if (page > 1) {
url += `?order=createdAt&page=${page}`
}
const { data } = await $fetch.get(url, {
headers: {
'User-Agent': UA,
},
})
const $ = cheerio.load(data)
$('.grid.grid-cols-2.mb-6 > div').each((_, element) => {
if ($(element).find('.relative').length == 0) return
const href = $(element).find('.relative a').attr('href')
const title = $(element).find('.hidden').text()
const cover = $(element).find('img').attr('src')
const subTitle = $(element).find('.relative a > div:eq(1)').text()
const hdinfo = $(element).find('.relative a > div:first').text()
cards.push({
vod_id: href,
vod_name: title,
vod_pic: cover,
vod_remarks: subTitle || hdinfo,
ext: {
url: appConfig.site + href,
},
})
})
return jsonify({
list: cards,
})
}
async function getTracks(ext) {
ext = argsify(ext)
let tracks = []
let url = ext.url.match(/https?:\/\/rou\.video\/v\/(\w+)/)[1]
let playUrl = `https://rou.video/api/v/${url}`
tracks.push({
name: '播放',
pan: '',
ext: {
url: playUrl,
},
})
return jsonify({
list: [
{
title: '默认分组',
tracks,
},
],
})
}
async function getPlayinfo(ext) {
ext = argsify(ext)
const url = ext.url
const { data } = await $fetch.get(url, {
headers: {
'User-Agent': UA,
},
})
const reslut = argsify(data)
const playurl = reslut.video.videoUrl
return jsonify({ urls: [playurl], headers: [{ 'User-Agent': UA }] })
}
async function search(ext) {
ext = argsify(ext)
let cards = []
let text = encodeURIComponent(ext.text)
let page = ext.page || 1
let url = `${appConfig.site}/search?q=${text}&t=&page=${page}`
const { data } = await $fetch.get(url, {
headers: {
'User-Agent': UA,
},
})
const $ = cheerio.load(data)
$('.grid.grid-cols-2.mb-6 > div').each((_, element) => {
if ($(element).find('.relative').length == 0) return
const href = $(element).find('.relative a').attr('href')
const title = $(element).find('.hidden').text()
const cover = $(element).find('img').attr('src')
const subTitle = $(element).find('.relative a > div:eq(1)').text()
const hdinfo = $(element).find('.relative a > div:first').text()
cards.push({
vod_id: href,
vod_name: title,
vod_pic: cover,
vod_remarks: subTitle || hdinfo,
ext: {
url: appConfig.site + href,
},
})
})
return jsonify({
list: cards,
})
}