Sync all projects
This commit is contained in:
@@ -0,0 +1,227 @@
|
||||
# coding=utf-8
|
||||
# !/usr/bin/python
|
||||
import sys
|
||||
import requests
|
||||
import json
|
||||
import re
|
||||
from base.spider import Spider
|
||||
|
||||
sys.path.append('..')
|
||||
xurl = "https://netflav5.com"
|
||||
headerx = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36'
|
||||
}
|
||||
class Spider(Spider):
|
||||
global xurl
|
||||
global headerx
|
||||
|
||||
def getName(self):
|
||||
return "首页"
|
||||
|
||||
def init(self, extend):
|
||||
pass
|
||||
|
||||
def isVideoFormat(self, url):
|
||||
pass
|
||||
|
||||
def manualVideoCheck(self):
|
||||
pass
|
||||
|
||||
def homeVideoContent(self):
|
||||
videos = []
|
||||
try:
|
||||
detail = requests.get(url=xurl, headers=headerx, timeout=10)
|
||||
detail.encoding = "utf-8"
|
||||
source_match = re.search(r'type="application/json">(.*?)</script>', detail.text)
|
||||
if source_match:
|
||||
json_data = source_match.group(1)
|
||||
js1 = json.loads(json_data)
|
||||
for item in js1['props']['initialState']['censored']['docs']:
|
||||
name = item['title_zh']
|
||||
id = item['videoId']
|
||||
pic = item['preview_hp']
|
||||
remark = item['sourceDate']
|
||||
video = {
|
||||
"vod_id": id,
|
||||
"vod_name": name,
|
||||
"vod_pic": pic,
|
||||
"vod_remarks": remark
|
||||
}
|
||||
videos.append(video)
|
||||
result = {'list': videos}
|
||||
return result
|
||||
except:
|
||||
pass
|
||||
|
||||
def homeContent(self, filter):
|
||||
result = {}
|
||||
result['class'] = []
|
||||
result['class'].append({'type_id': '/trending?', 'type_name': '最受欢迎'})
|
||||
result['class'].append({'type_id': '/all?genre=%E5%81%B6%E5%83%8F%E8%97%9D%E4%BA%BA&', 'type_name': '偶像艺人'})
|
||||
result['class'].append({'type_id': '/censored?', 'type_name': '日本有码'})
|
||||
result['class'].append({'type_id': '/uncensored?', 'type_name': '日本无码'})
|
||||
result['class'].append({'type_id': '/chinese-sub?', 'type_name': '中文字幕'})
|
||||
result['class'].append({'type_id': '/browse/fc2ppv?', 'type_name': 'FC2PPV'})
|
||||
result['class'].append({'type_id': '/browse/1pondo?/amateur_jav?', 'type_name': '素人'})
|
||||
result['class'].append({'type_id': '/browse/un_leak?', 'type_name': 'UN-Leak'})
|
||||
result['class'].append({'type_id': '/browse/1pondo?', 'type_name': '一本道'})
|
||||
result['class'].append({'type_id': '/browse/pacopacomama?', 'type_name': 'パコパコママ 無修正'})
|
||||
result['class'].append({'type_id': '/browse/caribbeancompr?', 'type_name': 'Caribbeancompr'})
|
||||
result['class'].append({'type_id': '/browse/heyzo?', 'type_name': 'HEYZO'})
|
||||
return result
|
||||
|
||||
def categoryContent(self, cid, pg, filter, ext):
|
||||
result = {}
|
||||
videos = []
|
||||
if not pg:
|
||||
pg = 1
|
||||
|
||||
url = xurl + cid + "page=" + str(pg)
|
||||
detail = requests.get(url=url, headers=headerx, timeout=10)
|
||||
detail.encoding = "utf-8"
|
||||
source_match = re.search(r'type="application/json">(.*?)</script>', detail.text)
|
||||
if source_match:
|
||||
json_data = source_match.group(1)
|
||||
js1 = json.loads(json_data)
|
||||
if 'props' in js1 and 'initialState' in js1['props']:
|
||||
initial_state = js1['props']['initialState']
|
||||
for key, value in initial_state.items():
|
||||
if value:
|
||||
jz = key
|
||||
jsondata = json.dumps(value)
|
||||
|
||||
break
|
||||
|
||||
js2 = json.loads(jsondata)
|
||||
|
||||
for item in js2['docs']:
|
||||
name = item['title_zh']
|
||||
id = item['videoId']
|
||||
pic = item['preview_hp']
|
||||
remark = item['sourceDate']
|
||||
video = {
|
||||
"vod_id": id,
|
||||
"vod_name": name,
|
||||
"vod_pic": pic,
|
||||
"vod_remarks": remark
|
||||
}
|
||||
videos.append(video)
|
||||
|
||||
result['list'] = videos
|
||||
result['page'] = pg
|
||||
result['pagecount'] = 9999
|
||||
result['limit'] = 90
|
||||
result['total'] = 999999
|
||||
return result
|
||||
|
||||
def detailContent(self, ids):
|
||||
did = ids[0]
|
||||
result = {}
|
||||
videos = []
|
||||
playform = ''
|
||||
playurl = ''
|
||||
detail = requests.get(url=xurl + '/video?id=' + did, headers=headerx, timeout=10)
|
||||
detail.encoding = "utf-8"
|
||||
source_match = re.search(r'type="application/json">(.*?)</script>', detail.text)
|
||||
xh = 1
|
||||
if source_match:
|
||||
json_data = source_match.group(1)
|
||||
js1 = json.loads(json_data)
|
||||
for item in js1['props']['initialState']['video']['data']['srcs']:
|
||||
playform = playform + '线路' + str(xh) + '$$$'
|
||||
playurl = playurl + item + '$$$'
|
||||
xh = xh + 1
|
||||
|
||||
xh = 1
|
||||
for item in js1['props']['initialState']['video']['data']['magnets']:
|
||||
playform = playform + '磁力' + str(xh) + '$$$'
|
||||
playurl = playurl + item['fileSize'] + "$" + item['src'] + '$$$'
|
||||
xh = xh + 1
|
||||
tx = js1['props']['initialState']['video']['data']['title']
|
||||
playform = playform[:-3]
|
||||
playurl = playurl[:-3]
|
||||
|
||||
videos.append({
|
||||
"vod_id": did,
|
||||
"vod_name": tx,
|
||||
"vod_pic": "",
|
||||
"type_name": "ぃぅおか🍬 คิดถึง",
|
||||
"vod_year": "",
|
||||
"vod_area": "",
|
||||
"vod_remarks": "",
|
||||
"vod_actor": "",
|
||||
"vod_director": "",
|
||||
"vod_content": "",
|
||||
"vod_play_from": playform,
|
||||
"vod_play_url": playurl
|
||||
})
|
||||
|
||||
result['list'] = videos
|
||||
return result
|
||||
|
||||
def playerContent(self, flag, id, vipFlags):
|
||||
result = {}
|
||||
str3 = id
|
||||
if 'magnet' in str3:
|
||||
result["parse"] = 0
|
||||
else:
|
||||
result["parse"] = 1
|
||||
result["playUrl"] = ''
|
||||
result["url"] = str3
|
||||
result["header"] = headerx
|
||||
return result
|
||||
|
||||
def searchContent(self, key, quick):
|
||||
return self.searchContentPage(key, quick, '1')
|
||||
|
||||
def searchContentPage(self, key, quick, page):
|
||||
videos = []
|
||||
result = {}
|
||||
if not page:
|
||||
pg = 1
|
||||
else:
|
||||
pg = page
|
||||
|
||||
url = xurl + '/search?keyword=' + key + "&page=" + str(pg) + '&type=title'
|
||||
|
||||
detail = requests.get(url=url, headers=headerx)
|
||||
detail.encoding = "utf-8"
|
||||
source_match = re.search(r'type="application/json">(.*?)</script>', detail.text)
|
||||
if source_match:
|
||||
json_data = source_match.group(1)
|
||||
js1 = json.loads(json_data)
|
||||
for item in js1['props']['initialState']['search']['docs']:
|
||||
name = item['title_zh']
|
||||
id = item['videoId']
|
||||
pic = item['preview_hp']
|
||||
remark = item['sourceDate']
|
||||
video = {
|
||||
"vod_id": id,
|
||||
"vod_name": name,
|
||||
"vod_pic": pic,
|
||||
"vod_remarks": remark
|
||||
}
|
||||
videos.append(video)
|
||||
result = {'list': videos}
|
||||
|
||||
result['list'] = videos
|
||||
result['page'] = pg
|
||||
result['pagecount'] = 9999
|
||||
result['limit'] = 90
|
||||
result['total'] = 999999
|
||||
return result
|
||||
|
||||
|
||||
def searchContent(self, key, quick):
|
||||
return self.searchContentPage(key, quick, '1')
|
||||
|
||||
|
||||
|
||||
def localProxy(self, params):
|
||||
if params['type'] == "m3u8":
|
||||
return self.proxyM3u8(params)
|
||||
elif params['type'] == "media":
|
||||
return self.proxyMedia(params)
|
||||
elif params['type'] == "ts":
|
||||
return self.proxyTs(params)
|
||||
return None
|
||||
Reference in New Issue
Block a user