Skip to content

Commit

Permalink
report status json api
Browse files Browse the repository at this point in the history
	modified:   search/admin.py
	new file:   search/management/commands/loadstatus.py
	new file:   search/migrations/0001_initial.py
	new file:   search/migrations/0002_filelist_hash_statusreport.py
	new file:   search/migrations/__init__.py
	modified:   search/models.py
	modified:   search/views.py
	modified:   sphinx.conf
	modified:   ssbc/urls.py
	modified:   web/views.py
  • Loading branch information
78 committed May 10, 2015
1 parent 05d089a commit 6c9ff33
Show file tree
Hide file tree
Showing 10 changed files with 116 additions and 14 deletions.
3 changes: 2 additions & 1 deletion search/admin.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from django.contrib import admin
from search.models import Hash, FileList
from search.models import Hash, FileList, StatusReport

# Register your models here.
admin.site.register(Hash)
admin.site.register(FileList)
admin.site.register(StatusReport)

21 changes: 21 additions & 0 deletions search/management/commands/loadstatus.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#coding: utf8
from django.core.management.base import BaseCommand
from django import db as ddb
from search.models import StatusReport
import pymongo

db = pymongo.MongoClient().dht

class Command(BaseCommand):
def handle(self, *args, **options):
StatusReport.objects.all().delete()
print 'inputing ...'
for x in db.report_total_d.find().sort('date', 1):
r = StatusReport()
r.date = x['date']
r.new_hashes = x['new_hashes']
r.total_requests = x['total_requests']
r.valid_requests = x['valid_requests']
r.save()


13 changes: 13 additions & 0 deletions search/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations


class Migration(migrations.Migration):

dependencies = [
]

operations = [
]
51 changes: 51 additions & 0 deletions search/migrations/0002_filelist_hash_statusreport.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations


class Migration(migrations.Migration):

dependencies = [
('search', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='FileList',
fields=[
('info_hash', models.CharField(max_length=40, serialize=False, primary_key=True)),
('file_list', models.TextField()),
],
),
migrations.CreateModel(
name='Hash',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('info_hash', models.CharField(unique=True, max_length=40)),
('category', models.CharField(max_length=20)),
('data_hash', models.CharField(max_length=32)),
('name', models.CharField(max_length=255)),
('extension', models.CharField(max_length=20)),
('classified', models.BooleanField(default=False)),
('source_ip', models.CharField(max_length=20, null=True)),
('tagged', models.BooleanField(default=False)),
('length', models.BigIntegerField()),
('create_time', models.DateTimeField()),
('last_seen', models.DateTimeField()),
('requests', models.PositiveIntegerField()),
('comment', models.CharField(max_length=255, null=True)),
('creator', models.CharField(max_length=20, null=True)),
],
),
migrations.CreateModel(
name='StatusReport',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('date', models.DateField(auto_now_add=True)),
('new_hashes', models.IntegerField()),
('total_requests', models.IntegerField()),
('valid_requests', models.IntegerField()),
],
),
]
Empty file added search/migrations/__init__.py
Empty file.
8 changes: 8 additions & 0 deletions search/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,11 @@ class FileList(models.Model):
def __unicode__(self):
return self.info_hash

class StatusReport(models.Model):
date = models.DateField()
new_hashes = models.IntegerField()
total_requests = models.IntegerField()
valid_requests = models.IntegerField()
def __unicode__(self):
return self.date

10 changes: 8 additions & 2 deletions search/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django.shortcuts import render
from ssbc import settings
from django.http import JsonResponse, HttpResponse
from search.models import Hash, FileList
from search.models import Hash, FileList, StatusReport
from sphinxit.core.helpers import BaseSearchConfig
from sphinxit.core.processor import Search
import binascii
Expand All @@ -10,11 +10,11 @@

class SphinxitConfig(BaseSearchConfig):
WITH_STATUS = False
search_query = Search(indexes=['rt_main'], config=SphinxitConfig)
mc = memcache.Client(['127.0.0.1:11211'],debug=0)

# Create your views here.
def json_search(request):
search_query = Search(indexes=['rt_main'], config=SphinxitConfig)
keyword = request.GET['keyword']
start = request.GET.get('start', 0)
count = request.GET.get('count', 10)
Expand Down Expand Up @@ -57,4 +57,10 @@ def json_info(request):
mc.set(mckey, jsp.content)
return jsp

def json_status(request):
d = {}
d['hash_total'] = Hash.objects.count()
reports = StatusReport.objects.order_by('-date')[:30]
d['reports'] = list(reports.values())
return JsonResponse(d)

16 changes: 8 additions & 8 deletions sphinx.conf
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,14 @@ source src1
}


index main
{
source = src1
path = /data/bt/index/db/main

ngram_len = 1
ngram_chars = U+3000..U+2FA1F
}
#index main
#{
# source = src1
# path = /data/bt/index/db/main
#
# ngram_len = 1
# ngram_chars = U+3000..U+2FA1F
#}


index rt_main
Expand Down
1 change: 1 addition & 0 deletions ssbc/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
url(r'^admin/', include(admin.site.urls)),
url(r'^api/json_search', search.views.json_search),
url(r'^api/json_info', search.views.json_info),
url(r'^api/json_status', search.views.json_status),
url(r'^$', web.views.index, name='index'),
url(r'^h/(\d{1,10})$', web.views.hash, name='hash'),
url(r'^hash/(.{40})$', web.views.hash),
Expand Down
7 changes: 4 additions & 3 deletions web/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
API_HOST = 'www.shousibaocai.com'
re_punctuations = re.compile(
u"。|,|,|!|…|!|《|》|<|>|\"|'|:|:|?|\?|、|\||“|”|‘|’|;|—|(|)|·|\(|\)| |\.|【|】|『|』|@|&|%|\^|\*|\+|\||<|>|~|`|\[|\]")
req_session = requests.Session()

# Create your views here.
def index(request):
Expand All @@ -23,7 +24,7 @@ def hash(request, h):
'hashes': h,
}
url = API_URL + 'json_info?' + urllib.urlencode(qs)
r = requests.get(url, headers={'Host':API_HOST})
r = req_session.get(url, headers={'Host':API_HOST})
try:
j = r.json()
except:
Expand Down Expand Up @@ -54,7 +55,7 @@ def search(request, keyword, p):
'start': d['offset'],
}
url = API_URL + 'json_search?' + urllib.urlencode(qs)
r = requests.get(url, headers={'Host':API_HOST})
r = req_session.get(url, headers={'Host':API_HOST})
d.update(r.json())
# Fill info
ids = '-'.join([str(x['id']) for x in d['result']['items']])
Expand All @@ -63,7 +64,7 @@ def search(request, keyword, p):
'hashes': ids,
}
url = API_URL + 'json_info?' + urllib.urlencode(qs)
r = requests.get(url, headers={'Host':API_HOST})
r = req_session.get(url, headers={'Host':API_HOST})
j = r.json()

for x in d['result']['items']:
Expand Down

0 comments on commit 6c9ff33

Please sign in to comment.