You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.5 KiB
102 lines
3.5 KiB
6 years ago
|
# coding=utf-8
|
||
|
import _thread
|
||
|
import os
|
||
|
|
||
|
import django
|
||
|
from django.http import Http404, StreamingHttpResponse, HttpResponse
|
||
|
from django.shortcuts import render
|
||
|
|
||
|
import root
|
||
|
from PixivSearch.dao.bangumi import get_, stop_, getIds
|
||
|
from PixivSearch.pixiv.pixiv import get_nodes
|
||
|
from PixivSearch.settings import logger
|
||
|
|
||
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PixivSearch.settings")
|
||
|
django.setup() # 添加的代码
|
||
|
|
||
|
from PixivSearch.model import config
|
||
|
|
||
|
|
||
|
def search(request):
|
||
|
word = 'R-18'
|
||
|
pageSize = 10
|
||
|
order = 10
|
||
|
type = 'text'
|
||
|
|
||
|
if request.POST.get('word') != '' and request.POST.get('word') is not None:
|
||
|
word = request.POST.get('word')
|
||
|
if request.POST.get('pageSize') != '' and request.POST.get('pageSize') is not None:
|
||
|
pageSize = int(request.POST.get('pageSize'))
|
||
|
if request.POST.get('order') != '' and request.POST.get('order') is not None:
|
||
|
order = int(request.POST.get('order'))
|
||
|
if request.POST.get('type') != '' and request.POST.get('type') is not None:
|
||
|
type = request.POST.get('type')
|
||
|
|
||
|
try:
|
||
|
logger.info("word:%s,pageSize:%d,order:%d,type:%s", word, pageSize, order, type)
|
||
|
array = get_nodes([0, word, pageSize, order, type])
|
||
|
if len(array[0]) > 0:
|
||
|
if request.POST.get('type') == 'img':
|
||
|
nodes = {'imageNodes': array[0], 'msg': array[1], 'download': word + '.zip', 'size': array[2],
|
||
|
'word': word, 'pageSize': pageSize, 'order': order, 'type': type,
|
||
|
'imgPath': root.getConfigValue('imgPath'),
|
||
|
'baseZipPath': root.getConfigValue('baseZipPath')}
|
||
|
else:
|
||
|
nodes = {'imageNodes': array[0], 'msg': array[1], 'word': word, 'pageSize': pageSize, 'order': order,
|
||
|
'type': type}
|
||
|
else:
|
||
|
nodes = {'tip': '没有返回结果'}
|
||
|
return render(request, 'index.html', nodes)
|
||
|
except ValueError:
|
||
|
raise Http404()
|
||
|
|
||
|
|
||
|
def index(request):
|
||
|
return render(request, 'index.html', {'tip': '输入参数进行搜索'})
|
||
|
|
||
|
|
||
|
def download(request):
|
||
|
# do something...
|
||
|
def file_iterator(file_name, chunk_size=512):
|
||
|
with open(file_name) as f:
|
||
|
while True:
|
||
|
c = f.read(chunk_size)
|
||
|
if c:
|
||
|
yield c
|
||
|
else:
|
||
|
break
|
||
|
|
||
|
fileName = os.path.join(os.path.dirname(__file__), 'static/download/').replace('\\', '/') + request.GET.get(
|
||
|
'fileName').encode('utf-8')
|
||
|
response = StreamingHttpResponse(file_iterator(fileName))
|
||
|
response['Content-Type'] = 'application/octet-stream'
|
||
|
response['Content-Disposition'] = 'attachment;filename="{0}"'.format(request.GET.get('fileName').encode('utf-8'))
|
||
|
return response
|
||
|
|
||
|
|
||
|
def saveConfig(request):
|
||
|
if 'GET' == request.method and request.GET.get('param_name'):
|
||
|
p = config.param.objects.get(param_name=request.GET.get('param_name'))
|
||
|
return render(request, 'addConfig.html', p.__dict__)
|
||
|
elif 'POST' == request.method and request.POST.get('param_name') and request.POST.get('param_value'):
|
||
|
p = config.param(param_name=request.POST.get('param_name'), param_value=request.POST.get('param_value'))
|
||
|
p.save()
|
||
|
return render(request, 'addConfig.html', p.__dict__)
|
||
|
else:
|
||
|
return render(request, 'addConfig.html')
|
||
|
|
||
|
|
||
|
def get(request):
|
||
|
return HttpResponse(str(get_().__str__()))
|
||
|
|
||
|
|
||
|
# 测试方法
|
||
|
def start(request):
|
||
|
_thread.start_new_thread(getIds, ())
|
||
|
return HttpResponse("start success")
|
||
|
|
||
|
|
||
|
def stop(request):
|
||
|
stop_()
|
||
|
return HttpResponse("stop success")
|