Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
m3_webInterface
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
m3
m3_webInterface
Commits
522fd2e7
Commit
522fd2e7
authored
Sep 21, 2019
by
Mario Chirinos Colunga
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
publisher active
parent
8761966c
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
31 additions
and
145 deletions
+31
-145
updateDB.py
catalog/management/commands/updateDB.py
+2
-1
models.py
catalog/models.py
+1
-0
audioPlay.html
catalog/templates/audioPlay.html
+3
-42
urls.py
catalog/urls.py
+2
-2
views.py
catalog/views.py
+23
-100
No files found.
catalog/management/commands/updateDB.py
View file @
522fd2e7
...
...
@@ -18,7 +18,7 @@ class Command(BaseCommand):
def
handle
(
self
,
*
args
,
**
options
):
if
not
Tru
e
:
if
Fals
e
:
#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
()
...
...
catalog/models.py
View file @
522fd2e7
...
...
@@ -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
...
...
catalog/templates/audioPlay.html
View file @
522fd2e7
...
...
@@ -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>
...
...
catalog/urls.py
View file @
522fd2e7
...
...
@@ -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'
),
...
...
catalog/views.py
View file @
522fd2e7
...
...
@@ -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
})
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment