Commit 522fd2e7 authored by Mario Chirinos Colunga's avatar Mario Chirinos Colunga 💬

publisher active

parent 8761966c
......@@ -18,7 +18,7 @@ class Command(BaseCommand):
def handle(self, *args, **options):
if not True:
if False:
#update radio stations recotding time
print("Recording Time:")
# recordingsDir = "/home/mario/virtualHDD/m3/recordings/"
......@@ -72,6 +72,7 @@ class Command(BaseCommand):
os.chdir(str(y))
print (os.getcwd())
filesList = sorted(os.listdir("."))
print (filesList)
for f in filesList:
fileDate = datetime.datetime.strptime(f[:f.find(".")], "%Y-%m-%d").date()
......
......@@ -16,6 +16,7 @@ class Publisher(models.Model):
crawler = models.CharField(max_length=64, default="")
type = models.CharField(max_length=32, default='')
url = models.URLField(default="")
active = models.BooleanField(default=True)
def __str__(self):
return self.shortName
......
......@@ -57,35 +57,7 @@
<script type="text/javascript" src="{% static 'js/jquery.rangecalendar.js' %}"></script>
<script>
function getAudioList(publisher, startdate, enddate)
{
url = "/catalog/ws/playlist/?startdate="+startdate+"&enddate="+enddate+"&publisher="+publisher;
console.log(url);
var xmlhttp;
if (window.XMLHttpRequest)
{//IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
// document.getElementById("topics").innerHTML=xmlhttp.responseText;
var jsonObj = JSON.parse(xmlhttp.responseText);
console.log(jsonObj);
var audioDiv = document.getElementById("audioDiv");
audioDiv.appendChild(document.createElement("audio"));
}
}
xmlhttp.open("GET", url ,true);
xmlhttp.send();
};
<script>
$(document).ready(function () {
var emptyMonths = [
......@@ -107,7 +79,8 @@ $(document).ready(function () {
maxRangeWidth: 1,
maxTimeRangeWidth: 6,
changeRangeCallback: rangeChanged,
emptyMonths: emptyMonths
emptyMonths: [{}]
});
var today = new Date();
......@@ -116,18 +89,6 @@ $(document).ready(function () {
function rangeChanged(target, range) {
console.log(range);
//var audioDiv = document.getElementById("audioDiv");
// while (audioDiv.firstChild)
// audioDiv.removeChild(audioDiv.firstChild);
// var sound = document.createElement('audio');
// sound.id = 'audio-player';
// sound.controls = 'controls';
// sound.src = 'media/Blue Browne.mp3';
// sound.type = 'audio/mpeg';
// audioDiv.appendChild(sound);
getAudioList("{{publisher.shortName}}",range.start,range.end);
}
});
</script>
......
......@@ -20,14 +20,14 @@ urlpatterns = [
url(r'^ws/graphs/$', views.wsGraphs, name='ws-graphs'),
url(r'^ws/download/$', views.wsDownloadNews, name='ws-download-news'),
url(r'^ws/searches/$', views.wsSearchList, name='ws-search-list'),
url(r'^ws/playlist/$', views.wsAudioList, name='ws-audio-list'),
url(r'^ws/playlist/(?P<publisher>\w+)/(?P<start>\w+)/(?P<end>\w+)/$', 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'^audioplayer/(?P<publisher>\w+)/(?P<start>\w+)/(?P<end>\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'),
......
......@@ -42,6 +42,7 @@ from quantiphy import Quantity
#from .audioList import getAudioList
from numpy import array_equal
import os
import glob
import shutil
import wordcloud
......@@ -50,82 +51,6 @@ from stop_words import get_stop_words
AUDIOPATH = "/home/geoint/M3_NFS/recordings/"
#-------------------------------------------------------------------------------
def getAudiosList2Convert(request, streamPublisher, initTimestamp, endTimestamp, days):
if not request.session.session_key:
request.session.save()
session_id = request.session.session_key
cwd = settings.BASE_DIR
print ("CDW: " + cwd)
directory = cwd+"/catalog/static/audioPlayList/sessions/"+session_id+"/"
if not os.path.exists(directory):
os.mkdir(directory)
else:
shutil.rmtree(directory)
os.mkdir(directory)
recordingsPath = '/home/mario/virtualHDD/m3/recordings/'
initialDate = datetime.datetime.fromtimestamp(initTimestamp) #+ timedelta(hours=6)
endDate = datetime.datetime.fromtimestamp(endTimestamp) #+ timedelta(hours=6)
audiosList = []
for i in range(days):
audiosPath = '{0}/{1}/{2:02d}/{3:02d}/'.format(
streamPublisher,
initialDate.year,
initialDate.month,
initialDate.day
)
print('Now enter in: {0}'.format(audiosPath))
if os.path.exists(recordingsPath+audiosPath):
for file in os.listdir(recordingsPath+audiosPath):
audioTimestamp = int(file.split(".")[0])
if audioTimestamp >= initTimestamp and audioTimestamp <= endTimestamp:
audiosList.append(audiosPath+file)
os.symlink(recordingsPath+audiosPath+file, directory+file)
# Next day dir
initialDate += datetime.timedelta(days=1)
return audiosList
#-------------------------------------------------------------------------------
def getRecordingDays(initTimestamp, endTimestamp):
initialDate = datetime.datetime.fromtimestamp(initTimestamp) #+ timedelta(hours=6)
endDate = datetime.datetime.fromtimestamp(endTimestamp) #+ timedelta(hours=6)
print(initialDate)
print(endDate)
iDate = [initialDate.day, initialDate.month, initialDate.year]
eDate = [endDate.day, endDate.month, endDate.year]
days = 1
if array_equal(iDate, eDate):
# Iterate over the same day dir
return days
else:
while not array_equal(iDate, eDate):
days += 1
initialDate += datetime.timedelta(days=1)
iDate = [initialDate.day, initialDate.month, initialDate.year]
return days
#-------------------------------------------------------------------------------
def getAudiosList(request, streamPublisher, initTimestamp, endTimestamp):
initTimestamp = float(initTimestamp)
endTimestamp = float(endTimestamp)
days = getRecordingDays(initTimestamp, endTimestamp)
print('Recording days: {0}'.format(days))
audiosList = getAudiosList2Convert(request, streamPublisher, initTimestamp, endTimestamp, days)
return audiosList
#-------------------------------------------------------------------------------
def news2JSON(news):
......@@ -329,19 +254,9 @@ def newsDetails(request, newsId):
return render(request,'new/newsDetails.html',{"form":form,"news":news})
#-------------------------------------------------------------------------------
def wsAudioList(request):
data = dict()
print("wsAudioList", request.GET)
startDate = dateutil.parser.parse(request.GET['startdate']).strftime('%s')
endDate = dateutil.parser.parse(request.GET['enddate']).strftime('%s')
print ("STARTDATE", startDate)
audioList = getAudiosList(request, request.GET['publisher'], startDate, endDate)
# audioList = getAudiosList(request, 'RadioFormula1041', '1512158400', '1512396000')
print ("audioList", audioList)
return HttpResponse(json.dumps(audioList), content_type="application/json")
def wsAudioList(request, publisher, start, end):
filelist=[ f[:-5] for f in listAudioFiles(publisher, int(start), int(end))]
return HttpResponse(json.dumps(filelist), content_type="application/json")
#-------------------------------------------------------------------------------
def wsSearchList(request):
......@@ -486,6 +401,17 @@ def wsSuggestions(request, newsId):
return HttpResponse(json.dumps(data), content_type="application/json")
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
def listAudioFiles(publisher, start, end):
startDate = datetime.datetime.fromtimestamp(int(start))
endDate = datetime.datetime.fromtimestamp(int(end))
filepath = AUDIOPATH+publisher+"/"+str(startDate.year)+"/"+str(startDate.month).zfill(2)+"/"+str(startDate.day).zfill(2)+"/"
os.chdir(filepath)
return [ f for f in sorted(glob.glob("*.flac")) if int(f[:-5])>=start and int(f[:-5])<=end ]
#-------------------------------------------------------------------------------
def audioList(request):
form = SearchForm(request.GET)
......@@ -514,18 +440,15 @@ def fileStreaming(request, publisher, time):
#-------------------------------------------------------------------------------
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(json.dumps(listAudioFiles(publisher, int(start), int(end))), content_type="application/json")
return HttpResponse(m3u8,content_type="audio/mpegurl")
#return HttpResponse(m3u8,content_type="audio/mpegurl")
#-------------------------------------------------------------------------------
def audioPlayerTest(request, publisher, time):
return render(request,'new/audioPlayerTest.html',{})
def audioPlayerTest(request, publisher, start, end):
filelist=[ f[:-5] for f in listAudioFiles(publisher, int(start), int(end))]
return render(request,'new/audioPlayerTest.html',{"filelist":filelist, "publisher":publisher})
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