#coding=utf-8 #!/usr/bin/python import sys sys.path.append('..') from base.spider import Spider import json class Spider(Spider): # 元类 默认的元类 type def getDependence(self): return ['py_ali'] def getName(self): return "YYDS" def init(self,extend=""): self.ali = extend[0] print("============YYDS============".format(extend)) pass def homeContent(self,filter): result = {} cateManual = { "热门":"0", "电影":"3", "剧集":"12", "综艺":"10" } classes = [] for k in cateManual: classes.append({ 'type_name':k, 'type_id':cateManual[k] }) result['class'] = classes return result def homeVideoContent(self): result = { 'list':[] } return result def categoryContent(self,tid,pg,filter,extend): result = {} form = { 'limit': 24, 'skip': int(pg) * 24 - 24, 'keyword': '', 'category_id': tid, } rsp = self.post("https://cmn.yydshd.com/api/posts",data=form) jo = json.loads(rsp.text) vodList = jo['data']['list'] videos = [] for vod in vodList: name = vod['title'] pic = vod['cover'] sid = vod['id'] suffix = '' if vod['is_vip'] == 1: suffix = ' 会员' mark = str(vod['score']) + suffix videos.append({ "vod_id":sid, "vod_name":name, "vod_pic":pic, "vod_remarks":mark }) result['list'] = videos result['page'] = pg result['pagecount'] = 9999 result['limit'] = 90 result['total'] = 999999 return result token = '' def getHeader(self,force=False): if len(self.token) == 0 or force: form = { 'email': '', 'password': '' } if len(form['password']) > 0: rsp = self.post("https://cmn.yydshd.com/api/login",data=form) jo = json.loads(rsp.text) self.token = jo['data']['token'] return { 'token':self.token, 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36 Edg/104.0.1293.70' } def detailContent(self,array): tid = array[0] result = {} form = { 'id': tid } rsp = self.post("https://cmn.yydshd.com/api/post-info",data=form,headers=self.getHeader()) jo = json.loads(rsp.text) if(jo['status_code'] == 403): retry = self.post("https://cmn.yydshd.com/api/post-info",data=form,headers=self.getHeader(True)) jo = json.loads(retry.text) if jo['status_code'] == 403: return {'list':[]} vodInfo = jo['data'] videos = [] name = vodInfo['title'] pic = vodInfo['cover'] mark = vodInfo['score'] vod = { "vod_id":tid, "vod_name":name, "vod_pic":pic, "type_name":"", "vod_year":vodInfo['year'], "vod_area":vodInfo['region'], "vod_remarks":mark, "vod_actor":vodInfo['actors'], "vod_director":vodInfo['director'], "vod_content":vodInfo['desc'] } playList = vodInfo['links'] tmpLink = '' for play in playList: if play['name'] == '阿里网盘': if len(play['item']) > 0: tmpLink = play['item'][0]['link'] break if len(tmpLink) > 0: vod['vod_play_from'] = 'AliYun$$$AliYun原画' newArray = [tmpLink] rs = self.ali.detailContent(newArray) vod['vod_play_url'] = rs['list'][0]['vod_play_url'] result = { 'list':[ vod ] } return result def searchContent(self,key,quick): result = {} form = { 'limit': 24, 'skip': 0, 'keyword': key, 'category_id': -1, } rsp = self.post("https://cmn.yydshd.com/api/posts",data=form) jo = json.loads(rsp.text) vodList = jo['data']['list'] videos = [] for vod in vodList: name = vod['title'] pic = vod['cover'] sid = vod['id'] suffix = '' if vod['is_vip'] == 1: suffix = ' 会员' mark = str(vod['score']) + suffix videos.append({ "vod_id":sid, "vod_name":name, "vod_pic":pic, "vod_remarks":mark }) result = { 'list':videos } return result config = { "player": {}, "filter": {} } header = { "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36", } def playerContent(self,flag,id,vipFlags): return self.ali.playerContent(flag,id,vipFlags) def isVideoFormat(self,url): pass def manualVideoCheck(self): pass def localProxy(self,param): return [200, "video/MP2T", action, ""]