Commit 8761966c authored by Mario Chirinos Colunga's avatar Mario Chirinos Colunga 💬

audio play1

parent 5446daa2
......@@ -18,7 +18,7 @@ class Command(BaseCommand):
def handle(self, *args, **options):
if True:
if not True:
#update radio stations recotding time
print("Recording Time:")
# recordingsDir = "/home/mario/virtualHDD/m3/recordings/"
......
......@@ -15,7 +15,14 @@ class AuthRequiredMiddleware(object):
print (request.path_info)
print (reverse('login'))
if request.path_info == reverse('ws-news-list2'):
print(request.path_info)
if "/catalog/streaming/" in request.path_info:
return response
if request.path_info == reverse('ws-news-list2') or request.path_info == reverse('signup'):
return response
if not request.user.is_authenticated and request.path_info != reverse('login'):
......
m3Data={"users": 18, "publishers": 80, "text": 62, "audio": 17, "documents": 3814507, "searches": 47, "audioTime": 5571159};
\ No newline at end of file
m3Data={"users": 24, "publishers": 80, "text": 62, "audio": 17, "documents": 3872970, "searches": 112, "audioTime": 5842777};
\ No newline at end of file
......@@ -22,9 +22,16 @@ urlpatterns = [
url(r'^ws/searches/$', views.wsSearchList, name='ws-search-list'),
url(r'^ws/playlist/$', views.wsAudioList, name='ws-audio-list'),
url(r'^ws/wordcloud/(?P<newsId>\w+)/$', views.wsWordCloud, name='ws-wordcloud'),
url(r'^ws/suggestions/(?P<newsId>\w+)/$', views.wsSuggestions, name='ws-suggestions'),
url(r'^audio/$', views.audioList, name='audio'),
url(r'^audio/(?P<publisher>\w+)$', views.audioPublisher, name='audio'),
url(r'^audioplayer/(?P<publisher>\w+)/(?P<time>\w+)/$', views.audioPlayerTest, name='audioPlayerTest'),
url(r'^streaming/(?P<publisher>\w+)/(?P<time>\w+)/$', views.fileStreaming, name='fileStreaming'),
url(r'^streaming/(?P<publisher>\w+)/(?P<start>\w+)/(?P<end>\w+)/$', views.listStreaming, name='listStreaming'),
url(r'^settings/$', views.settingsView, name='settings'),
url(r'^settings/profile$', views.settingsView, name='settings-profile'),
......
......@@ -47,6 +47,8 @@ import shutil
import wordcloud
from stop_words import get_stop_words
AUDIOPATH = "/home/geoint/M3_NFS/recordings/"
#-------------------------------------------------------------------------------
def getAudiosList2Convert(request, streamPublisher, initTimestamp, endTimestamp, days):
......@@ -148,7 +150,7 @@ def settingsView(request):
if request.method == "POST":
form = ProfileForm(request.POST)
if form.is_valid():
request.user.profile.subscriptions=form.cleaned_data['subscriptions']
request.user.profile.subscriptions.set(form.cleaned_data['subscriptions'])
else:
form = ProfileForm( initial={'subscriptions':[ v for v in request.user.profile.subscriptions.all().values_list('id', flat=True)]})
news = News.objects.all()
......@@ -163,7 +165,7 @@ def settingsView(request):
def settingsSearches(request):
return render(request,'new/searches.html',{})
#-------------------------------------------------------------------------------
def getNewsByRequest(request):
def getNewsByRequest(request, values=None):
print ("getNewsByRequest\n\n\n")
......@@ -190,7 +192,7 @@ def getNewsByRequest(request):
myQuery &= Q(search_vector=request.GET['text'])
print (myQuery)
return News.objects.filter(myQuery)
#-------------------------------------------------------------------------------
def status(request):
......@@ -225,6 +227,7 @@ def index(request):
"""
View function for home page of site.
"""
values = ["publisher", "date", "search_vector", "text"]
news = getNewsByRequest(request)
data = request.GET.copy()
form = SearchForm(data)
......@@ -242,17 +245,16 @@ def index(request):
form.fields['publishers'].choices= subscriptions
if news.count()>0:
if 'startDate' not in form or ('startDate' in form and form['startDate'].value == ""):
form.data.update({'startDate':news.earliest('date').date.strftime("%Y-%m-%d")})
form.data.update({'startDate':news.values("date").earliest('date')["date"].strftime("%Y-%m-%d")})
if 'endDate' not in form or ('endDate' in form and form['endDate'].value == ""):
form.data.update({'endDate':news.latest('date').date.strftime("%Y-%m-%d")})
form.data.update({'endDate':news.values("date").latest('date')["date"].strftime("%Y-%m-%d")})
info = dict()
info['nPublishers'] = news.values('publisher').distinct().count()
tp = 1 #len(subscriptions) if len(form['publishers'].value()) == 0 else len(form['publishers'].value())
info['publishers_percent'] = math.floor(100*info['nPublishers']/float(tp))
info['nNews'] = news.count()
# info['news_percent'] = math.floor(100*float(info['nNews'])/News.objects.filter(publisher_id__in=form['publishers'].value()).count() )
info['nNewsText'] = Quantity(news.count()).render(prec=3)
info['nAudio'] = Publisher.objects.filter(type="audio").count()
......@@ -264,26 +266,10 @@ def index(request):
myRequest = request.GET.copy()
myRequest.update({"publishers":q['publisher']})
urlDict[q['publisher']] = urllib.parse.urlencode(myRequest)
# print (urlDict)
donutChart = [{"label": Publisher.objects.get(id=q['publisher']).name, "value":q["count"], "url":urlDict[q['publisher']]} for q in queryset]
# publishers = Publisher.objects.filter( Q(id__in = news.values('publisher').distinct()))
# queryset = news.values("publisher").annotate(day=TruncMonth('date') )
# dateList =[q['day'].strftime("%Y-%m-%d") for q in queryset.values("day").distinct().order_by("-day")]
# dateDicts = {p.shortName:{ n['day'].strftime("%Y-%m-%d"):n['count'] for n in queryset.filter(publisher=p.id).values("day").distinct().order_by("-day").annotate(count = Count('publisher')) } for p in publishers}
# histogramsData = [ { "date":d, "data":{ k:(dateDicts[k][d] if d in dateDicts[k] else 0) for k in dateDicts.keys()} } for d in dateList]
# histogramsLabels = [p.shortName for p in publishers]
donutChart = [{"label": Publisher.objects.get(id=q['publisher']).name, "value":q["count"], "url":urlDict[q['publisher']]} for q in queryset]
dateCount = news.values("publisher").annotate(day=TruncMonth('date') ).values("day").order_by("day").annotate(count=Count("day"))
histogramsData = [ { "date":d["day"].strftime("%Y-%m-%d"), "data":{ "total": d["count"]}} for d in dateCount ]
histogramsLabels = ["total"]
# return render(request,'index.html',{"form":form, "info":info, "donutChart":{}, "histogram": {}, "histogramsLabels":{}})
......@@ -335,6 +321,14 @@ def newsList(request, publisherShortName="all"):
return render(request,'new/newsList.html',{"form":form})
#-------------------------------------------------------------------------------
def newsDetails(request, newsId):
form = SearchForm(request.GET)
news = News.objects.get(id=newsId)
# news.text = news.text.replace(request.GET['text'], "<b>"+request.GET['text']+"</b>")
return render(request,'new/newsDetails.html',{"form":form,"news":news})
#-------------------------------------------------------------------------------
def wsAudioList(request):
data = dict()
......@@ -441,14 +435,6 @@ def wsNewsList(request):#, publisherShortName="all"):
# print request.GET
return HttpResponse(json.dumps(data), content_type="application/json")
#-------------------------------------------------------------------------------
def newsDetails(request, newsId):
form = SearchForm(request.GET)
news = News.objects.get(id=newsId)
# news.text = news.text.replace(request.GET['text'], "<b>"+request.GET['text']+"</b>")
return render(request,'new/newsDetails.html',{"form":form,"news":news})
#-------------------------------------------------------------------------------
def wsGraphs(request):
data=dict()
if request.GET['type']=="histogram":
......@@ -492,7 +478,13 @@ def wsWordCloud(request, newsId):
response = HttpResponse(content_type="image/jpeg")
image.save(response, "PNG")
return response
#-------------------------------------------------------------------------------
def wsSuggestions(request, newsId):
data = {}
document = News.objects.filter(id=newsId)[0]
data =[n for n in News.objects.values().extra(where=['lev(text,%s)>=0.0'], params=[document.text])]
return HttpResponse(json.dumps(data), content_type="application/json")
#-------------------------------------------------------------------------------
def audioList(request):
form = SearchForm(request.GET)
......@@ -509,3 +501,31 @@ def audioPublisher(request, publisher):
p = Publisher.objects.filter(shortName=publisher)[0]
return render(request,'audioPlay.html',{"form":form, "publisher":p})
#-------------------------------------------------------------------------------
def fileStreaming(request, publisher, time):
response = HttpResponse(content_type="audio/flac")
date = datetime.datetime.fromtimestamp(int(time))
filepath = AUDIOPATH+publisher+"/"+str(date.year)+"/"+str(date.month).zfill(2)+"/"+str(date.day).zfill(2)+"/"+time+".flac"
with open(filepath, 'rb') as fp:
data = fp.read()
response.write(data)
return response
#-------------------------------------------------------------------------------
def listStreaming(request, publisher, start, end):
m3u8="#EXTM3U\n#EXT-X-VERSION:3\n#EXT-X-TARGETDURATION:60\n"
for i in range (int((int(end)-int(start))/60)):
time = int(start)+i*60
print(time)
date = datetime.datetime.fromtimestamp(int(time))
m3u8+="#EXTINF:60.0,"+publisher+":"+str(date.year)+"-"+str(date.month).zfill(2)+"-"+str(date.day).zfill(2)+"_"+str(date.hour).zfill(2)+":"+str(date.minute).zfill(2)+":"+str(date.second).zfill(2)+"\n"
m3u8+="http://m3.geoint.mx/catalog/streaming/"+publisher+"/"+str(time)+"/\n"
return HttpResponse(m3u8,content_type="audio/mpegurl")
#-------------------------------------------------------------------------------
def audioPlayerTest(request, publisher, time):
return render(request,'new/audioPlayerTest.html',{})
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment