# coding=utf-8 import _thread import json import os from django.http import Http404, StreamingHttpResponse, HttpResponse from django.shortcuts import render import root from PixivSearch.dao.bangumi import get_, stop_, getIds from PixivSearch.migu import GetVideoUrl from PixivSearch.pac import CreatePacFile from PixivSearch.pixiv.pixiv import get_nodes from PixivSearch.settings import logger from PixivSearch.pac import RuleManage def search(request): word = 'R-18' pageSize = 10 order = 10 type = 'text' if request.POST.get('word') is not None and len(request.POST.get('word')) > 0: word = request.POST.get('word') if request.POST.get('pageSize') is not None and request.POST.get('pageSize') > 0: pageSize = int(request.POST.get('pageSize')) if request.POST.get('order') is not None and len(request.POST.get('order') != '') > 0: order = int(request.POST.get('order')) if request.POST.get('type') is not None and len(request.POST.get('type')) > 0: 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, 'pixiv/index.html', nodes) except ValueError: raise Http404() def migu(request): if request.GET.get('playurl') != '' and request.GET.get('playurl') is not None: result = GetVideoUrl.getUrl(request.GET.get('playurl')) else: result = {'error': '参数不能为空'} return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json', charset='utf-8') def pac(request): action = request.GET.get('action') value = request.GET.get('value') if action == 'create': return HttpResponse(CreatePacFile.create(), content_type='application/x-ns-proxy-autoconfig', charset='utf-8') else: if action == 'insert' and value != None and len(value) > 0: RuleManage.insert(value) elif action == 'select' and value != None and len(value) > 0: return render(request, 'pac/list.html', {'rules':RuleManage.select(value)}) elif action == 'delete' and value != None and len(value) > 0: RuleManage.delete(value) return render(request, 'pac/list.html', {'rules':RuleManage.select()}) def index(request): return render(request, 'pixiv/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 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")