dengdai/PY/html/好帅短剧.py

129 lines
4.4 KiB
Python

# -*- coding: utf-8 -*-
# by @嗷呜
import json
import sys
sys.path.append('..')
from base.spider import Spider
from pyquery import PyQuery as pq
class Spider(Spider):
def init(self, extend=""):
pass
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def action(self, action):
pass
def destroy(self):
pass
host='https://www.nhsyy.com'
headers = {
'Accept': '*/*',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'DNT': '1',
'Origin': host,
'Pragma': 'no-cache',
'Referer': f'{host}/',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'cross-site',
'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="130", "Google Chrome";v="130"',
'sec-ch-ua-mobile': '?1',
'sec-ch-ua-platform': '"Android"',
}
def homeContent(self, filter):
data = pq(self.fetch(self.host, headers=self.headers).text)
result = {}
classes = []
for i in data('.drop-content-items li').items():
j = i('a').attr('href')
if j and 'type' in j:
id = j.split('/')[-1].split('.')[0]
classes.append({
'type_name': i('a').text(),
'type_id': id
})
hlist = self.getlist(data('.module-lines-list .module-item'))
result['class'] = classes
result['list'] = hlist
return result
def homeVideoContent(self):
pass
def categoryContent(self, tid, pg, filter, extend):
data = self.fetch(f'{self.host}/vodshwo/{tid}--------{pg}---.html', headers=self.headers).text
vlist = self.getlist(pq(data)('.module-list .module-item'))
return {"list": vlist, "page": pg, "pagecount": 9999, "limit": 90, "total": 999999}
def detailContent(self, ids):
data = pq(self.fetch(f"{self.host}{ids[0]}", headers=self.headers).text)
udata = data('.scroll-box-y .scroll-content a')
vdata = data('.video-info-main .video-info-item')
vod = {
'vod_year': vdata.eq(2)('div').text(),
'vod_remarks': vdata.eq(3)('div').text(),
'vod_actor': vdata.eq(1)('a').text(),
'vod_director': vdata.eq(0)('a').text(),
'typt_name': data('.video-info-aux a').eq(0).attr('title'),
'vod_content': vdata.eq(4)('p').eq(-1).text(),
'vod_play_from': '嗷呜爱看短剧',
'vod_play_url': '#'.join([f"{i.text()}${i.attr('href')}" for i in udata.items()]),
}
result = {"list": [vod]}
return result
def searchContent(self, key, quick, pg="1"):
dlist = self.fetch(f'{self.host}/vodsearch/{key}----------{pg}---.html', headers=self.headers).text
ldata = pq(dlist)('.module-list .module-search-item')
vlist = []
for i in ldata.items():
img = i('.module-item-pic')
vlist.append({
'vod_id': i('.video-serial').attr('href'),
'vod_name': img('img').attr('alt'),
'vod_pic': img('img').attr('data-src'),
'vod_year': i('.tag-link a').eq(0).text(),
'vod_remarks': i('.video-serial').text()
})
result = {"list": vlist, "page": pg}
return result
def playerContent(self, flag, id, vipFlags):
data=self.fetch(f"{self.host}{id}", headers=self.headers).text
jstr = pq(data)('.player-wrapper script').eq(0).text()
try:
jdata = json.loads(jstr.split('=', 1)[-1])
url = jdata.get('url') or jdata.get('next_url')
p=0
except:
url,p = f"{self.host}{id}",1
return {'parse': p, 'url': url, 'header': self.headers}
def localProxy(self, param):
pass
def getlist(self, data):
vlist = []
for i in data.items():
img = i('.module-item-pic')
vlist.append({
'vod_id': img('a').attr('href'),
'vod_name': img('img').attr('alt'),
'vod_pic': img('img').attr('data-src'),
'vod_remarks': i('.module-item-text').text()
})
return vlist