Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Roman Karwacik
website
Commits
43b3a99e
Commit
43b3a99e
authored
Oct 05, 2016
by
Andreas Valder
Browse files
finished sorter, now correctly sorting most of our old date
parent
077703e9
Changes
1
Hide whitespace changes
Inline
Side-by-side
sorter.py
View file @
43b3a99e
...
...
@@ -14,7 +14,7 @@ def sort_log():
FROM sortlog
JOIN lectures ON lectures.id = sortlog.lecture_id
JOIN courses ON courses.id = lectures.course_id
ORDER BY sortlog.`when`
ORDER BY sortlog.`when`
DESC
'''
))
...
...
@@ -47,27 +47,25 @@ def sort_now():
filepath
=
coursepath
+
'/'
+
f
# filenames: <handle>-<sorter>-<format>.mp4
# sorter musst be found with fuzzy matching. musst be one or more of the following: (inside the loop)
splitfilename
=
f
.
replace
(
'_'
,
'-'
).
split
(
'-'
)
splitfilename
=
f
.
replace
(
'_
'
,
'-'
).
replace
(
'
'
,
'-'
).
split
(
'-'
)
if
not
os
.
path
.
splitext
(
f
)[
1
]
==
'.mp4'
:
continue
data
=
{
'keywords'
:
[]}
# parse the file name and save all data in 'data'
for
s
in
splitfilename
:
s
=
s
.
replace
(
'.mp4'
,
''
)
#-<YYMMDD> (date)
#-<HHMM> (time)
#-<keyword>
# Looking for keywords in: id,title,speaker,comment, comma seperated list in internal
starting with "tags:" (in this order). first match counts
if
len
(
s
)
==
6
:
try
:
# Looking for keywords in: id,title,speaker,comment, comma seperated list in internal
try
:
if
len
(
s
)
==
6
:
data
[
'date'
]
=
datetime
.
strptime
(
s
,
'%y%m%d'
).
date
()
except
ValueError
:
pass
elif
len
(
s
)
==
4
:
try
:
elif
len
(
s
)
==
4
:
data
[
'time'
]
=
datetime
.
strptime
(
s
,
'%H%M'
).
time
()
e
xcept
ValueError
:
pass
e
lse
:
e
lse
:
data
[
'keywords'
].
append
(
s
)
e
xcept
ValueError
:
data
[
'keywords'
].
append
(
s
)
# try to match the file on a single lecture
matches
=
[]
...
...
@@ -75,16 +73,19 @@ def sort_now():
# first try date and time (if one of them is set)
if
'date'
in
data
:
for
l
in
lectures
:
if
(
l
[
'time'
].
date
()
==
data
[
'date'
])
or
((
'time'
in
data
)
and
l
[
'time'
]
==
datetime
.
combine
(
data
[
'date'
],
data
[
'time'
]))
:
if
(
(
l
[
'time'
].
date
()
==
data
[
'date'
])
and
not
(
'time'
in
data
))
or
((
'time'
in
data
)
and
l
[
'time'
]
==
datetime
.
combine
(
data
[
'date'
],
data
[
'time'
]))
:
matches
.
append
(
l
)
# if we can't match based on date and time, we have to match keywords
if
((
len
(
matches
)
!=
1
)
and
(
len
(
data
[
'keywords'
])
>
0
)):
found
=
False
for
field
in
[
'id'
,
'title'
,
'speaker'
,
'comment'
,
'internal'
]:
#only test lectures with the correct date/time
if
len
(
matches
)
==
0
:
matches
.
extend
(
lectures
)
for
l
in
matches
:
for
k
in
data
[
'keywords'
]:
if
(
k
==
l
[
field
])
or
(
k
in
str
(
l
[
field
])):
# first test for exact match, else make it asci and try substring test
if
(
k
==
l
[
field
])
or
(
str
(
k
).
lower
()
in
str
(
l
[
field
]).
lower
().
replace
(
'ä'
,
'ae'
).
replace
(
'ü'
,
'ue'
).
replace
(
'ö'
,
'oe'
).
replace
(
'ß'
,
'ss'
)
):
found
=
True
matches
=
[
l
]
if
found
:
...
...
@@ -98,20 +99,23 @@ def sort_now():
# now match the format
for
i
in
formats
:
#we match the last part of the file name without the extension
formatstring
=
splitfilename
[
-
1
].
split
(
'.'
,
1
)[
0
]
if
splitfilename
[
-
1
].
split
(
'.'
,
1
)[
0
]
in
i
[
'keywords'
].
split
(
'
,
'
):
formatstring
=
splitfilename
[
-
1
].
split
(
'.'
,
1
)[
0
]
.
lower
()
if
formatstring
in
i
[
'keywords'
].
replace
(
','
,
' '
).
split
(
'
'
):
data
[
'format'
]
=
i
[
'id'
]
break
# if we found the format, insert the video
if
'format'
in
data
:
modify
(
'BEGIN'
)
video_id
=
modify
(
'INSERT INTO videos_data (lecture_id,visible,path,video_format,title,comment,internal,file_modified,time_created,time_updated,created_by,hash,file_size) VALUES (?,0,?,?,"","","",?,?,?,?,"",?)'
,
matches
[
0
][
'id'
],
c
[
'handle'
]
+
'/'
+
f
,
data
[
'format'
],
datetime
.
now
(),
datetime
.
now
(),
datetime
.
now
(),
session
[
'user'
][
'givenName'
],
os
.
stat
(
coursepath
+
'/'
+
f
).
st_size
)
query
(
'INSERT INTO sortlog (lecture_id,video_id,path,`when`) VALUES (?,?,?,?)'
,
matches
[
0
][
'id'
],
video_id
,
c
[
'handle'
]
+
'/'
+
f
,
datetime
.
now
())
modify
(
'COMMIT'
)
else
:
print
(
'unknown format'
,
formatstring
,[
data
,
f
])
else
:
print
(
'failed'
,[
data
,
f
])
if
not
'format'
in
data
:
data
[
'format'
]
=
0
modify
(
'BEGIN'
)
video_id
=
modify
(
'INSERT INTO videos_data (lecture_id,visible,path,video_format,title,comment,internal,file_modified,time_created,time_updated,created_by,hash,file_size) VALUES (?,0,?,?,"","","",?,?,?,?,"",?)'
,
matches
[
0
][
'id'
],
c
[
'handle'
]
+
'/'
+
f
,
data
[
'format'
],
datetime
.
now
(),
datetime
.
now
(),
datetime
.
now
(),
session
[
'user'
][
'givenName'
],
os
.
stat
(
coursepath
+
'/'
+
f
).
st_size
)
query
(
'INSERT INTO sortlog (lecture_id,video_id,path,`when`) VALUES (?,?,?,?)'
,
matches
[
0
][
'id'
],
video_id
,
c
[
'handle'
]
+
'/'
+
f
,
datetime
.
now
())
modify
(
'COMMIT'
)
# for debuging only
# else:
# d = []
# for m in matches:
# d.append(m['id'])
# print('failed',{"data":data,"path":f,"results":d})
if
'ref'
in
request
.
values
:
...
...
Write
Preview
Supports
Markdown
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