Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
MPAI-Private
MPAI-CAE
arp
Video Analyzer
Commits
76842786
Commit
76842786
authored
Apr 04, 2023
by
Matteo
Browse files
refactor code
parent
fd80e83a
Changes
3
Hide whitespace changes
Inline
Side-by-side
server/main.py
View file @
76842786
from
fastapi
import
FastAPI
,
Response
,
status
from
fastapi
import
FastAPI
,
Response
,
status
,
Path
,
Query
from
typing
import
Annotated
import
server.functions
as
functions
from
mpai_cae_arp.files
import
get_file_content
from
mpai_cae_arp.types.irregularity
import
IrregularityFile
from
mpai_cae_arp.types.schema
import
Info
import
server.utils
as
utils
info
=
functions
.
get_file_content
(
'server/documentation.yaml'
,
'yaml'
)
info
=
get_file_content
(
'server/documentation.yaml'
,
'yaml'
)
app
=
FastAPI
(
**
info
)
@
app
.
get
(
"/"
)
def
index
()
:
return
{
"endpoints"
:
[
"irregularityFile
1"
,
"irregularityFile2
"
,
"description"
,
"docs"
]
}
async
def
list_endpoints
()
->
list
[
str
]
:
return
[
"irregularityFile
/{id}
"
,
"description"
,
"docs"
]
@
app
.
get
(
"/description"
)
async
def
get_
description
()
:
async
def
get_
server_info
()
->
Info
:
return
info
@
app
.
get
(
"/irregularityFile/{id}"
,
status_code
=
200
)
def
get_irregularity_file
(
files_name
:
str
,
id
:
int
,
response
:
Response
,
working_path
:
str
|
None
=
None
):
async
def
get_irregularity_file
(
response
:
Response
,
id
:
Annotated
[
int
,
Path
(
gt
=
0
,
lt
=
3
,
description
=
"Id of the irregularity file to be returned."
)],
files_name
:
Annotated
[
str
,
Query
(
description
=
"Name of the video file to be analyzed without the extension."
,
example
=
"video"
)],
working_path
:
Annotated
[
str
,
Query
(
description
=
"Path to the directory containing the preservation files."
,
examples
=
{
"Absolute path"
:
{
"value"
:
"/home/user/preservation"
},
"Relative path"
:
{
"value"
:
"preservation"
}
}
)]
=
None
)
->
IrregularityFile
:
required_file
=
f
'VideoAnalyser_IrregularityFileOutput
{
id
}
.json'
try
:
return
functions
.
get_file_content
(
required_file
,
'json'
)
return
get_file_content
(
required_file
,
'json'
)
except
:
process
=
function
s
.
analyze
(
files_name
,
working_path
)
process
=
util
s
.
analyze
(
files_name
,
working_path
)
if
process
.
returncode
==
0
:
return
functions
.
get_file_content
(
required_file
,
'json'
)
return
get_file_content
(
required_file
,
'json'
)
else
:
response
.
status_code
=
status
.
HTTP_412_PRECONDITION_FAILED
...
...
server/requirements.txt
View file @
76842786
anyio==3.6.2
appdirs==1.4.4
audioread==3.0.0
certifi==2022.12.7
cffi==1.15.1
charset-normalizer==3.1.0
click==8.1.3
decorator==5.1.1
dnspython==2.3.0
email-validator==1.3.1
fastapi==0.95.0
...
...
@@ -11,17 +16,35 @@ httpx==0.23.3
idna==3.4
itsdangerous==2.1.2
Jinja2==3.1.2
joblib==1.2.0
lazy_loader==0.2
librosa==0.10.0.post2
llvmlite==0.39.1
MarkupSafe==2.1.2
mpai-cae-arp==0.1.0
msgpack==1.0.5
numba==0.56.4
numpy==1.23.3
orjson==3.8.9
packaging==23.0
pooch==1.6.0
pycparser==2.21
pydantic==1.10.7
python-dotenv==1.0.0
python-multipart==0.0.6
PyYAML==6.0
requests==2.28.2
rfc3986==1.5.0
scikit-learn==1.2.2
scipy==1.10.1
sniffio==1.3.0
soundfile==0.12.1
soxr==0.3.4
starlette==0.26.1
threadpoolctl==3.1.0
typing_extensions==4.5.0
ujson==5.7.0
urllib3==1.26.15
uvicorn==0.21.1
uvloop==0.17.0
watchfiles==0.19.0
...
...
server/
function
s.py
→
server/
util
s.py
View file @
76842786
import
os
import
subprocess
import
json
import
yaml
from
mpai_cae_arp.files
import
get_file_content
def
analyze
(
files_name
:
str
,
working_path
:
str
|
None
=
None
)
->
subprocess
.
CompletedProcess
:
...
...
@@ -18,15 +18,3 @@ def analyze(files_name: str, working_path: str | None = None) -> subprocess.Comp
process
=
subprocess
.
run
([
executable
],
capture_output
=
True
)
return
process
def
get_file_content
(
file_name
:
str
,
format
:
str
)
->
dict
:
with
open
(
file_name
)
as
fd
:
if
format
==
"yaml"
:
content
=
yaml
.
safe_load
(
fd
)
return
content
elif
format
==
"json"
:
content
=
json
.
load
(
fd
)
return
content
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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