Commit
·
78c135b
1
Parent(s):
21b498c
wip on periodic archiving. small fixes on process video.
Browse files- .gitignore +2 -0
- Pipfile +1 -0
- Pipfile.lock +174 -119
- main.py +28 -11
- utils/archiver.py +11 -0
- utils/periodic_archiver.py +0 -0
- utils/process_video.py +2 -2
.gitignore
CHANGED
@@ -1,6 +1,8 @@
|
|
1 |
data/*
|
|
|
2 |
temp/
|
3 |
api_config.yml
|
|
|
4 |
# Byte-compiled / optimized / DLL files
|
5 |
__pycache__/
|
6 |
*.py[cod]
|
|
|
1 |
data/*
|
2 |
+
archive/*
|
3 |
temp/
|
4 |
api_config.yml
|
5 |
+
|
6 |
# Byte-compiled / optimized / DLL files
|
7 |
__pycache__/
|
8 |
*.py[cod]
|
Pipfile
CHANGED
@@ -12,6 +12,7 @@ requests = "*"
|
|
12 |
python-multipart = "*"
|
13 |
fastapi = "*"
|
14 |
uvicorn = "*"
|
|
|
15 |
|
16 |
[dev-packages]
|
17 |
|
|
|
12 |
python-multipart = "*"
|
13 |
fastapi = "*"
|
14 |
uvicorn = "*"
|
15 |
+
apscheduler = "*"
|
16 |
|
17 |
[dev-packages]
|
18 |
|
Pipfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
{
|
2 |
"_meta": {
|
3 |
"hash": {
|
4 |
-
"sha256": "
|
5 |
},
|
6 |
"pipfile-spec": 6,
|
7 |
"requires": {
|
@@ -32,6 +32,14 @@
|
|
32 |
"markers": "python_version >= '3.7'",
|
33 |
"version": "==3.7.1"
|
34 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
"av": {
|
36 |
"hashes": [
|
37 |
"sha256:04cd0ce13a87870fb0a0ea4673f04934af2b9ac7ae844eafe92e2c19c092ab11",
|
@@ -209,6 +217,14 @@
|
|
209 |
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
210 |
"version": "==15.0.1"
|
211 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
"ctranslate2": {
|
213 |
"hashes": [
|
214 |
"sha256:14db7daeee240c71c41e8021d431a865bb25a1f7ec0d1b37a0dd8cc0ecd64cc0",
|
@@ -295,11 +311,11 @@
|
|
295 |
},
|
296 |
"huggingface-hub": {
|
297 |
"hashes": [
|
298 |
-
"sha256:
|
299 |
-
"sha256:
|
300 |
],
|
301 |
"markers": "python_full_version >= '3.8.0'",
|
302 |
-
"version": "==0.
|
303 |
},
|
304 |
"humanfriendly": {
|
305 |
"hashes": [
|
@@ -516,122 +532,122 @@
|
|
516 |
},
|
517 |
"pydantic": {
|
518 |
"hashes": [
|
519 |
-
"sha256:
|
520 |
-
"sha256:
|
521 |
],
|
522 |
"markers": "python_version >= '3.7'",
|
523 |
-
"version": "==2.5.
|
524 |
},
|
525 |
"pydantic-core": {
|
526 |
"hashes": [
|
527 |
-
"sha256:
|
528 |
-
"sha256:
|
529 |
-
"sha256:
|
530 |
-
"sha256:
|
531 |
-
"sha256:
|
532 |
-
"sha256:
|
533 |
-
"sha256:
|
534 |
-
"sha256:
|
535 |
-
"sha256:
|
536 |
-
"sha256:
|
537 |
-
"sha256:
|
538 |
-
"sha256:
|
539 |
-
"sha256:
|
540 |
-
"sha256:
|
541 |
-
"sha256:
|
542 |
-
"sha256:
|
543 |
-
"sha256:
|
544 |
-
"sha256:
|
545 |
-
"sha256:
|
546 |
-
"sha256:
|
547 |
-
"sha256:
|
548 |
-
"sha256:
|
549 |
-
"sha256:
|
550 |
-
"sha256:
|
551 |
-
"sha256:
|
552 |
-
"sha256:
|
553 |
-
"sha256:
|
554 |
-
"sha256:
|
555 |
-
"sha256:
|
556 |
-
"sha256:
|
557 |
-
"sha256:
|
558 |
-
"sha256:
|
559 |
-
"sha256:
|
560 |
-
"sha256:
|
561 |
-
"sha256:
|
562 |
-
"sha256:
|
563 |
-
"sha256:
|
564 |
-
"sha256:
|
565 |
-
"sha256:
|
566 |
-
"sha256:
|
567 |
-
"sha256:
|
568 |
-
"sha256:
|
569 |
-
"sha256:
|
570 |
-
"sha256:
|
571 |
-
"sha256:
|
572 |
-
"sha256:
|
573 |
-
"sha256:
|
574 |
-
"sha256:
|
575 |
-
"sha256:
|
576 |
-
"sha256:
|
577 |
-
"sha256:
|
578 |
-
"sha256:
|
579 |
-
"sha256:
|
580 |
-
"sha256:
|
581 |
-
"sha256:
|
582 |
-
"sha256:
|
583 |
-
"sha256:
|
584 |
-
"sha256:
|
585 |
-
"sha256:
|
586 |
-
"sha256:
|
587 |
-
"sha256:
|
588 |
-
"sha256:
|
589 |
-
"sha256:
|
590 |
-
"sha256:
|
591 |
-
"sha256:
|
592 |
-
"sha256:
|
593 |
-
"sha256:
|
594 |
-
"sha256:
|
595 |
-
"sha256:
|
596 |
-
"sha256:
|
597 |
-
"sha256:
|
598 |
-
"sha256:
|
599 |
-
"sha256:
|
600 |
-
"sha256:
|
601 |
-
"sha256:
|
602 |
-
"sha256:
|
603 |
-
"sha256:
|
604 |
-
"sha256:
|
605 |
-
"sha256:
|
606 |
-
"sha256:
|
607 |
-
"sha256:
|
608 |
-
"sha256:
|
609 |
-
"sha256:
|
610 |
-
"sha256:
|
611 |
-
"sha256:
|
612 |
-
"sha256:
|
613 |
-
"sha256:
|
614 |
-
"sha256:
|
615 |
-
"sha256:
|
616 |
-
"sha256:
|
617 |
-
"sha256:
|
618 |
-
"sha256:
|
619 |
-
"sha256:
|
620 |
-
"sha256:
|
621 |
-
"sha256:
|
622 |
-
"sha256:
|
623 |
-
"sha256:
|
624 |
-
"sha256:
|
625 |
-
"sha256:
|
626 |
-
"sha256:
|
627 |
-
"sha256:
|
628 |
-
"sha256:
|
629 |
-
"sha256:
|
630 |
-
"sha256:
|
631 |
-
"sha256:
|
632 |
],
|
633 |
"markers": "python_version >= '3.7'",
|
634 |
-
"version": "==2.14.
|
635 |
},
|
636 |
"pyreadline3": {
|
637 |
"hashes": [
|
@@ -641,6 +657,14 @@
|
|
641 |
"markers": "python_version >= '3.8' and sys_platform == 'win32'",
|
642 |
"version": "==3.4.1"
|
643 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
644 |
"python-multipart": {
|
645 |
"hashes": [
|
646 |
"sha256:e9925a80bb668529f1b67c7fdb0a5dacdd7cbfc6fb0bff3ea443fe22bdd62132",
|
@@ -657,6 +681,13 @@
|
|
657 |
"index": "pypi",
|
658 |
"version": "==15.0.0"
|
659 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
660 |
"pyyaml": {
|
661 |
"hashes": [
|
662 |
"sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5",
|
@@ -723,11 +754,19 @@
|
|
723 |
},
|
724 |
"setuptools": {
|
725 |
"hashes": [
|
726 |
-
"sha256:
|
727 |
-
"sha256:
|
728 |
],
|
729 |
"markers": "python_version >= '3.8'",
|
730 |
-
"version": "==69.0.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
731 |
},
|
732 |
"sniffio": {
|
733 |
"hashes": [
|
@@ -873,6 +912,22 @@
|
|
873 |
"markers": "python_version >= '3.8'",
|
874 |
"version": "==4.9.0"
|
875 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
876 |
"urllib3": {
|
877 |
"hashes": [
|
878 |
"sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3",
|
@@ -883,11 +938,11 @@
|
|
883 |
},
|
884 |
"uvicorn": {
|
885 |
"hashes": [
|
886 |
-
"sha256:
|
887 |
-
"sha256:
|
888 |
],
|
889 |
"index": "pypi",
|
890 |
-
"version": "==0.
|
891 |
}
|
892 |
},
|
893 |
"develop": {}
|
|
|
1 |
{
|
2 |
"_meta": {
|
3 |
"hash": {
|
4 |
+
"sha256": "f90758c15beaaa65320f587d37f0a05bf701c10842690a97c92d02674bf3edef"
|
5 |
},
|
6 |
"pipfile-spec": 6,
|
7 |
"requires": {
|
|
|
32 |
"markers": "python_version >= '3.7'",
|
33 |
"version": "==3.7.1"
|
34 |
},
|
35 |
+
"apscheduler": {
|
36 |
+
"hashes": [
|
37 |
+
"sha256:e6df071b27d9be898e486bc7940a7be50b4af2e9da7c08f0744a96d4bd4cef4a",
|
38 |
+
"sha256:fb91e8a768632a4756a585f79ec834e0e27aad5860bac7eaa523d9ccefd87661"
|
39 |
+
],
|
40 |
+
"index": "pypi",
|
41 |
+
"version": "==3.10.4"
|
42 |
+
},
|
43 |
"av": {
|
44 |
"hashes": [
|
45 |
"sha256:04cd0ce13a87870fb0a0ea4673f04934af2b9ac7ae844eafe92e2c19c092ab11",
|
|
|
217 |
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
218 |
"version": "==15.0.1"
|
219 |
},
|
220 |
+
"croniter": {
|
221 |
+
"hashes": [
|
222 |
+
"sha256:4cb064ce2d8f695b3b078be36ff50115cf8ac306c10a7e8653ee2a5b534673d7",
|
223 |
+
"sha256:d199b2ec3ea5e82988d1f72022433c5f9302b3b3ea9e6bfd6a1518f6ea5e700a"
|
224 |
+
],
|
225 |
+
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
226 |
+
"version": "==2.0.1"
|
227 |
+
},
|
228 |
"ctranslate2": {
|
229 |
"hashes": [
|
230 |
"sha256:14db7daeee240c71c41e8021d431a865bb25a1f7ec0d1b37a0dd8cc0ecd64cc0",
|
|
|
311 |
},
|
312 |
"huggingface-hub": {
|
313 |
"hashes": [
|
314 |
+
"sha256:8c88c4c3c8853e22f2dfb4d84c3d493f4e1af52fb3856a90e1eeddcf191ddbb1",
|
315 |
+
"sha256:ecfdea395a8bc68cd160106c5bd857f7e010768d95f9e1862a779010cc304831"
|
316 |
],
|
317 |
"markers": "python_full_version >= '3.8.0'",
|
318 |
+
"version": "==0.20.1"
|
319 |
},
|
320 |
"humanfriendly": {
|
321 |
"hashes": [
|
|
|
532 |
},
|
533 |
"pydantic": {
|
534 |
"hashes": [
|
535 |
+
"sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a",
|
536 |
+
"sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"
|
537 |
],
|
538 |
"markers": "python_version >= '3.7'",
|
539 |
+
"version": "==2.5.3"
|
540 |
},
|
541 |
"pydantic-core": {
|
542 |
"hashes": [
|
543 |
+
"sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556",
|
544 |
+
"sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e",
|
545 |
+
"sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411",
|
546 |
+
"sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245",
|
547 |
+
"sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c",
|
548 |
+
"sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66",
|
549 |
+
"sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd",
|
550 |
+
"sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d",
|
551 |
+
"sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b",
|
552 |
+
"sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06",
|
553 |
+
"sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948",
|
554 |
+
"sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341",
|
555 |
+
"sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0",
|
556 |
+
"sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f",
|
557 |
+
"sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a",
|
558 |
+
"sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2",
|
559 |
+
"sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51",
|
560 |
+
"sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80",
|
561 |
+
"sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8",
|
562 |
+
"sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d",
|
563 |
+
"sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8",
|
564 |
+
"sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb",
|
565 |
+
"sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590",
|
566 |
+
"sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87",
|
567 |
+
"sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534",
|
568 |
+
"sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b",
|
569 |
+
"sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145",
|
570 |
+
"sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba",
|
571 |
+
"sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b",
|
572 |
+
"sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2",
|
573 |
+
"sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e",
|
574 |
+
"sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052",
|
575 |
+
"sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622",
|
576 |
+
"sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab",
|
577 |
+
"sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b",
|
578 |
+
"sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66",
|
579 |
+
"sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e",
|
580 |
+
"sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4",
|
581 |
+
"sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e",
|
582 |
+
"sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec",
|
583 |
+
"sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c",
|
584 |
+
"sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed",
|
585 |
+
"sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937",
|
586 |
+
"sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f",
|
587 |
+
"sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9",
|
588 |
+
"sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4",
|
589 |
+
"sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96",
|
590 |
+
"sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277",
|
591 |
+
"sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23",
|
592 |
+
"sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7",
|
593 |
+
"sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b",
|
594 |
+
"sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91",
|
595 |
+
"sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d",
|
596 |
+
"sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e",
|
597 |
+
"sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1",
|
598 |
+
"sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2",
|
599 |
+
"sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160",
|
600 |
+
"sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9",
|
601 |
+
"sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670",
|
602 |
+
"sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7",
|
603 |
+
"sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c",
|
604 |
+
"sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb",
|
605 |
+
"sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42",
|
606 |
+
"sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d",
|
607 |
+
"sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8",
|
608 |
+
"sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1",
|
609 |
+
"sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6",
|
610 |
+
"sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8",
|
611 |
+
"sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf",
|
612 |
+
"sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e",
|
613 |
+
"sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a",
|
614 |
+
"sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9",
|
615 |
+
"sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1",
|
616 |
+
"sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40",
|
617 |
+
"sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2",
|
618 |
+
"sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d",
|
619 |
+
"sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f",
|
620 |
+
"sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f",
|
621 |
+
"sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af",
|
622 |
+
"sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7",
|
623 |
+
"sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda",
|
624 |
+
"sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a",
|
625 |
+
"sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95",
|
626 |
+
"sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0",
|
627 |
+
"sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60",
|
628 |
+
"sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149",
|
629 |
+
"sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975",
|
630 |
+
"sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4",
|
631 |
+
"sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe",
|
632 |
+
"sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94",
|
633 |
+
"sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03",
|
634 |
+
"sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c",
|
635 |
+
"sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b",
|
636 |
+
"sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a",
|
637 |
+
"sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24",
|
638 |
+
"sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391",
|
639 |
+
"sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c",
|
640 |
+
"sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab",
|
641 |
+
"sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd",
|
642 |
+
"sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786",
|
643 |
+
"sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08",
|
644 |
+
"sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8",
|
645 |
+
"sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6",
|
646 |
+
"sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0",
|
647 |
+
"sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"
|
648 |
],
|
649 |
"markers": "python_version >= '3.7'",
|
650 |
+
"version": "==2.14.6"
|
651 |
},
|
652 |
"pyreadline3": {
|
653 |
"hashes": [
|
|
|
657 |
"markers": "python_version >= '3.8' and sys_platform == 'win32'",
|
658 |
"version": "==3.4.1"
|
659 |
},
|
660 |
+
"python-dateutil": {
|
661 |
+
"hashes": [
|
662 |
+
"sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86",
|
663 |
+
"sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"
|
664 |
+
],
|
665 |
+
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
666 |
+
"version": "==2.8.2"
|
667 |
+
},
|
668 |
"python-multipart": {
|
669 |
"hashes": [
|
670 |
"sha256:e9925a80bb668529f1b67c7fdb0a5dacdd7cbfc6fb0bff3ea443fe22bdd62132",
|
|
|
681 |
"index": "pypi",
|
682 |
"version": "==15.0.0"
|
683 |
},
|
684 |
+
"pytz": {
|
685 |
+
"hashes": [
|
686 |
+
"sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b",
|
687 |
+
"sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"
|
688 |
+
],
|
689 |
+
"version": "==2023.3.post1"
|
690 |
+
},
|
691 |
"pyyaml": {
|
692 |
"hashes": [
|
693 |
"sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5",
|
|
|
754 |
},
|
755 |
"setuptools": {
|
756 |
"hashes": [
|
757 |
+
"sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05",
|
758 |
+
"sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"
|
759 |
],
|
760 |
"markers": "python_version >= '3.8'",
|
761 |
+
"version": "==69.0.3"
|
762 |
+
},
|
763 |
+
"six": {
|
764 |
+
"hashes": [
|
765 |
+
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
|
766 |
+
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
|
767 |
+
],
|
768 |
+
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
769 |
+
"version": "==1.16.0"
|
770 |
},
|
771 |
"sniffio": {
|
772 |
"hashes": [
|
|
|
912 |
"markers": "python_version >= '3.8'",
|
913 |
"version": "==4.9.0"
|
914 |
},
|
915 |
+
"tzdata": {
|
916 |
+
"hashes": [
|
917 |
+
"sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a",
|
918 |
+
"sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"
|
919 |
+
],
|
920 |
+
"markers": "platform_system == 'Windows'",
|
921 |
+
"version": "==2023.3"
|
922 |
+
},
|
923 |
+
"tzlocal": {
|
924 |
+
"hashes": [
|
925 |
+
"sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8",
|
926 |
+
"sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"
|
927 |
+
],
|
928 |
+
"markers": "python_version >= '3.8'",
|
929 |
+
"version": "==5.2"
|
930 |
+
},
|
931 |
"urllib3": {
|
932 |
"hashes": [
|
933 |
"sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3",
|
|
|
938 |
},
|
939 |
"uvicorn": {
|
940 |
"hashes": [
|
941 |
+
"sha256:6dddbad1d7ee0f5140aba5ec138ddc9612c5109399903828b4874c9937f009c2",
|
942 |
+
"sha256:ce107f5d9bd02b4636001a77a4e74aab5e1e2b146868ebbad565237145af444c"
|
943 |
],
|
944 |
"index": "pypi",
|
945 |
+
"version": "==0.25.0"
|
946 |
}
|
947 |
},
|
948 |
"develop": {}
|
main.py
CHANGED
@@ -1,20 +1,19 @@
|
|
1 |
-
from fastapi import FastAPI, UploadFile,
|
2 |
from fastapi.responses import FileResponse, HTMLResponse
|
3 |
from fastapi.security import HTTPBasic, HTTPBasicCredentials
|
4 |
from typing import Optional
|
5 |
from utils.process_video import process_video
|
6 |
from utils.zip_response import zip_response
|
7 |
from utils.api_configs import api_configs
|
|
|
|
|
|
|
8 |
import shutil, os, logging, uvicorn, secrets
|
9 |
|
10 |
-
|
11 |
-
|
12 |
-
level=logging.DEBUG,
|
13 |
-
format='%(asctime)s %(levelname)s %(message)s',
|
14 |
-
datefmt='%m/%d/%Y %I:%M:%S %p')
|
15 |
-
|
16 |
security = HTTPBasic()
|
17 |
-
api_configs_file = os.path.abspath("api_config_example.yml")
|
18 |
|
19 |
def get_current_user(credentials: HTTPBasicCredentials = Depends(security)):
|
20 |
correct_username = secrets.compare_digest(credentials.username, api_configs(api_configs_file)["secrets"]["username"])
|
@@ -27,7 +26,25 @@ def get_current_user(credentials: HTTPBasicCredentials = Depends(security)):
|
|
27 |
)
|
28 |
return credentials.username
|
29 |
|
30 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
@app.get("/")
|
33 |
async def root():
|
@@ -89,9 +106,9 @@ async def process_video_api(video_file: UploadFile = File(...),
|
|
89 |
finally:
|
90 |
srt_file.file.close()
|
91 |
logging.info("Processing the video...")
|
92 |
-
output_path,
|
93 |
logging.info("Archiving response...")
|
94 |
-
zip_path = zip_response(os.path.join(temp_vid_dir,"archive.zip"), [output_path,
|
95 |
return FileResponse(zip_path, media_type='application/zip', filename=f"result_{video_file.filename.split('.')[0]}.zip")
|
96 |
logging.info("Processing the video...")
|
97 |
output_path, srt_path = process_video(temp_input_path, None, max_words_per_line, fontsize, font, bg_color, text_color)
|
|
|
1 |
+
from fastapi import FastAPI, UploadFile, HTTPException, BackgroundTasks, File, Form, Depends
|
2 |
from fastapi.responses import FileResponse, HTMLResponse
|
3 |
from fastapi.security import HTTPBasic, HTTPBasicCredentials
|
4 |
from typing import Optional
|
5 |
from utils.process_video import process_video
|
6 |
from utils.zip_response import zip_response
|
7 |
from utils.api_configs import api_configs
|
8 |
+
from utils.archiver import archiver
|
9 |
+
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
10 |
+
from datetime import datetime
|
11 |
import shutil, os, logging, uvicorn, secrets
|
12 |
|
13 |
+
app = FastAPI()
|
14 |
+
scheduler = AsyncIOScheduler()
|
|
|
|
|
|
|
|
|
15 |
security = HTTPBasic()
|
16 |
+
api_configs_file = os.path.abspath("api_config_example.yml")
|
17 |
|
18 |
def get_current_user(credentials: HTTPBasicCredentials = Depends(security)):
|
19 |
correct_username = secrets.compare_digest(credentials.username, api_configs(api_configs_file)["secrets"]["username"])
|
|
|
26 |
)
|
27 |
return credentials.username
|
28 |
|
29 |
+
logging.basicConfig(filename='main.log',
|
30 |
+
encoding='utf-8',
|
31 |
+
level=logging.DEBUG,
|
32 |
+
format='%(asctime)s %(levelname)s %(message)s',
|
33 |
+
datefmt='%m/%d/%Y %I:%M:%S %p')
|
34 |
+
|
35 |
+
# # 0 6 * * 6
|
36 |
+
# @pycron.cron("*/5 * * * *")
|
37 |
+
async def periodic_archiver(timestamp: datetime):
|
38 |
+
archive = os.path.abspath(os.path.join(os.getcwd(),"archive/"))
|
39 |
+
archiver(archive, timestamp)
|
40 |
+
logging.info(f"Archive writen at {timestamp}")
|
41 |
+
|
42 |
+
@app.on_event("startup")
|
43 |
+
def start_periodic_task():
|
44 |
+
# Schedule the job to run once every day at 3:00 AM
|
45 |
+
scheduler.add_job(periodic_archiver(datetime.now()), "cron", minute="*/2")
|
46 |
+
scheduler.start()
|
47 |
+
|
48 |
|
49 |
@app.get("/")
|
50 |
async def root():
|
|
|
106 |
finally:
|
107 |
srt_file.file.close()
|
108 |
logging.info("Processing the video...")
|
109 |
+
output_path, _ = process_video(temp_input_path, SRT_PATH, max_words_per_line, fontsize, font, bg_color, text_color)
|
110 |
logging.info("Archiving response...")
|
111 |
+
zip_path = zip_response(os.path.join(temp_vid_dir,"archive.zip"), [output_path, SRT_PATH])
|
112 |
return FileResponse(zip_path, media_type='application/zip', filename=f"result_{video_file.filename.split('.')[0]}.zip")
|
113 |
logging.info("Processing the video...")
|
114 |
output_path, srt_path = process_video(temp_input_path, None, max_words_per_line, fontsize, font, bg_color, text_color)
|
utils/archiver.py
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import shutil, os
|
2 |
+
from datetime import datetime
|
3 |
+
|
4 |
+
def archiver(archive:str, timestamp:datetime):
|
5 |
+
TEMP_DIR = os.path.abspath("temp/")
|
6 |
+
LOG_FILE = os.path.abspath("main.log")
|
7 |
+
if os.path.exists(TEMP_DIR):
|
8 |
+
shutil.make_archive(os.path.join(archive, f"{timestamp.year:4d}-{timestamp.month:2d}-{timestamp.day:2d}"), 'zip', [TEMP_DIR, LOG_FILE])
|
9 |
+
shutil.rmtree(TEMP_DIR)
|
10 |
+
if os.path.exists(LOG_FILE):
|
11 |
+
os.remove(LOG_FILE)
|
utils/periodic_archiver.py
DELETED
File without changes
|
utils/process_video.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
# Import necessary modules
|
2 |
from utils.transcriber import transcriber
|
3 |
from utils.subtitler import subtitler
|
4 |
-
from utils.
|
5 |
import logging, os
|
6 |
|
7 |
# Set up logging
|
@@ -28,7 +28,7 @@ def process_video(invideo_filename:str,
|
|
28 |
logging.info("Converting Video to Audio")
|
29 |
INAUDIO_PATH = os.path.abspath(f"{invideo_filename.split('.')[0]}.m4a")
|
30 |
if not os.path.exists(INAUDIO_PATH):
|
31 |
-
|
32 |
SRT_PATH = os.path.abspath(f"{invideo_filename.split('.')[0]}.srt")
|
33 |
logging.info("Transcribing...")
|
34 |
if not os.path.exists(SRT_PATH):
|
|
|
1 |
# Import necessary modules
|
2 |
from utils.transcriber import transcriber
|
3 |
from utils.subtitler import subtitler
|
4 |
+
from utils.convert_video_to_audio import convert_video_to_audio
|
5 |
import logging, os
|
6 |
|
7 |
# Set up logging
|
|
|
28 |
logging.info("Converting Video to Audio")
|
29 |
INAUDIO_PATH = os.path.abspath(f"{invideo_filename.split('.')[0]}.m4a")
|
30 |
if not os.path.exists(INAUDIO_PATH):
|
31 |
+
convert_video_to_audio(invideo_filename, INAUDIO_PATH)
|
32 |
SRT_PATH = os.path.abspath(f"{invideo_filename.split('.')[0]}.srt")
|
33 |
logging.info("Transcribing...")
|
34 |
if not os.path.exists(SRT_PATH):
|