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.
 
 
 
 
pixiv/PixivSearch/view.py

100 lines
3.3 KiB

# coding=utf-8
import _thread
import os
import django
from django.http import Http404, StreamingHttpResponse, HttpResponse
from django.shortcuts import render
from PixivSearch.dao.bangumi import threadSave, get_, stop_
from PixivSearch.settings import logger
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PixivSearch.settings")
django.setup() # 添加的代码
from PixivSearch.model import config
from PixivSearch.pixiv import get_nodes
def search(request):
if request.POST.get('word') != '':
word = request.POST.get('word')
else:
word = 'R-18'
if request.POST.get('pageSize') != '':
pageSize = request.POST.get('pageSize')
else:
pageSize = 10
if request.POST.get('order') != '':
order = request.POST.get('order')
else:
order = 10
if request.POST.get('type') != '':
type = request.POST.get('type')
else:
type = None
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]}
else:
nodes = {'imageNodes': array[0], 'msg': array[1]}
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):
begin = int(request.GET.get('start'))
end = int(request.GET.get('end'))
_thread.start_new_thread(threadSave, (begin, end))
return HttpResponse("start success")
def stop(request):
stop_()
return HttpResponse("stop success")