files
This commit is contained in:
15
Pipfile
Normal file
15
Pipfile
Normal file
@@ -0,0 +1,15 @@
|
||||
[[source]]
|
||||
name = "pypi"
|
||||
url = "https://pypi.org/simple"
|
||||
verify_ssl = true
|
||||
|
||||
[dev-packages]
|
||||
ipython = "*"
|
||||
|
||||
[packages]
|
||||
flask = "*"
|
||||
gunicorn = "*"
|
||||
logzero = "*"
|
||||
|
||||
[requires]
|
||||
python_version = "3.8"
|
||||
215
Pipfile.lock
generated
Normal file
215
Pipfile.lock
generated
Normal file
@@ -0,0 +1,215 @@
|
||||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "0efdad9ebdb9ab5b3e45942eca81c9efdf5f63e067e6ecc15ca9b10d89e6fb07"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
"python_version": "3.8"
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"click": {
|
||||
"hashes": [
|
||||
"sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a",
|
||||
"sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||
"version": "==7.1.2"
|
||||
},
|
||||
"flask": {
|
||||
"hashes": [
|
||||
"sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060",
|
||||
"sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.1.2"
|
||||
},
|
||||
"gunicorn": {
|
||||
"hashes": [
|
||||
"sha256:1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626",
|
||||
"sha256:cd4a810dd51bf497552cf3f863b575dabd73d6ad6a91075b65936b151cbf4f9c"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==20.0.4"
|
||||
},
|
||||
"itsdangerous": {
|
||||
"hashes": [
|
||||
"sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19",
|
||||
"sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==1.1.0"
|
||||
},
|
||||
"jinja2": {
|
||||
"hashes": [
|
||||
"sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0",
|
||||
"sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||
"version": "==2.11.2"
|
||||
},
|
||||
"logzero": {
|
||||
"hashes": [
|
||||
"sha256:1435284574e409b8ec8b680f276bca04cab41f93d6eff4dc8348b7630cddf560",
|
||||
"sha256:1b84ee4c8fdabf7023877ff17cb456d82564097704eb6c4ee37952bd8ce0800f"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.6.3"
|
||||
},
|
||||
"markupsafe": {
|
||||
"hashes": [
|
||||
"sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473",
|
||||
"sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161",
|
||||
"sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235",
|
||||
"sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5",
|
||||
"sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42",
|
||||
"sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff",
|
||||
"sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b",
|
||||
"sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1",
|
||||
"sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e",
|
||||
"sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183",
|
||||
"sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66",
|
||||
"sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b",
|
||||
"sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1",
|
||||
"sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15",
|
||||
"sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1",
|
||||
"sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e",
|
||||
"sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b",
|
||||
"sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905",
|
||||
"sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735",
|
||||
"sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d",
|
||||
"sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e",
|
||||
"sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d",
|
||||
"sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c",
|
||||
"sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21",
|
||||
"sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2",
|
||||
"sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5",
|
||||
"sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b",
|
||||
"sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6",
|
||||
"sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f",
|
||||
"sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f",
|
||||
"sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2",
|
||||
"sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7",
|
||||
"sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==1.1.1"
|
||||
},
|
||||
"werkzeug": {
|
||||
"hashes": [
|
||||
"sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43",
|
||||
"sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||
"version": "==1.0.1"
|
||||
}
|
||||
},
|
||||
"develop": {
|
||||
"backcall": {
|
||||
"hashes": [
|
||||
"sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e",
|
||||
"sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"
|
||||
],
|
||||
"version": "==0.2.0"
|
||||
},
|
||||
"decorator": {
|
||||
"hashes": [
|
||||
"sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760",
|
||||
"sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7"
|
||||
],
|
||||
"version": "==4.4.2"
|
||||
},
|
||||
"ipython": {
|
||||
"hashes": [
|
||||
"sha256:c987e8178ced651532b3b1ff9965925bfd445c279239697052561a9ab806d28f",
|
||||
"sha256:cbb2ef3d5961d44e6a963b9817d4ea4e1fa2eb589c371a470fed14d8d40cbd6a"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==7.19.0"
|
||||
},
|
||||
"ipython-genutils": {
|
||||
"hashes": [
|
||||
"sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8",
|
||||
"sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"
|
||||
],
|
||||
"version": "==0.2.0"
|
||||
},
|
||||
"jedi": {
|
||||
"hashes": [
|
||||
"sha256:86ed7d9b750603e4ba582ea8edc678657fb4007894a12bcf6f4bb97892f31d20",
|
||||
"sha256:98cc583fa0f2f8304968199b01b6b4b94f469a1f4a74c1560506ca2a211378b5"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||
"version": "==0.17.2"
|
||||
},
|
||||
"parso": {
|
||||
"hashes": [
|
||||
"sha256:97218d9159b2520ff45eb78028ba8b50d2bc61dcc062a9682666f2dc4bd331ea",
|
||||
"sha256:caba44724b994a8a5e086460bb212abc5a8bc46951bf4a9a1210745953622eb9"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==0.7.1"
|
||||
},
|
||||
"pexpect": {
|
||||
"hashes": [
|
||||
"sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937",
|
||||
"sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"
|
||||
],
|
||||
"markers": "sys_platform != 'win32'",
|
||||
"version": "==4.8.0"
|
||||
},
|
||||
"pickleshare": {
|
||||
"hashes": [
|
||||
"sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca",
|
||||
"sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"
|
||||
],
|
||||
"version": "==0.7.5"
|
||||
},
|
||||
"prompt-toolkit": {
|
||||
"hashes": [
|
||||
"sha256:25c95d2ac813909f813c93fde734b6e44406d1477a9faef7c915ff37d39c0a8c",
|
||||
"sha256:7debb9a521e0b1ee7d2fe96ee4bd60ef03c6492784de0547337ca4433e46aa63"
|
||||
],
|
||||
"markers": "python_full_version >= '3.6.1'",
|
||||
"version": "==3.0.8"
|
||||
},
|
||||
"ptyprocess": {
|
||||
"hashes": [
|
||||
"sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0",
|
||||
"sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f"
|
||||
],
|
||||
"version": "==0.6.0"
|
||||
},
|
||||
"pygments": {
|
||||
"hashes": [
|
||||
"sha256:ccf3acacf3782cbed4a989426012f1c535c9a90d3a7fc3f16d231b9372d2b716",
|
||||
"sha256:f275b6c0909e5dafd2d6269a656aa90fa58ebf4a74f8fcf9053195d226b24a08"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==2.7.3"
|
||||
},
|
||||
"traitlets": {
|
||||
"hashes": [
|
||||
"sha256:178f4ce988f69189f7e523337a3e11d91c786ded9360174a3d9ca83e79bc5396",
|
||||
"sha256:69ff3f9d5351f31a7ad80443c2674b7099df13cc41fc5fa6e2f6d3b0330b0426"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==5.0.5"
|
||||
},
|
||||
"wcwidth": {
|
||||
"hashes": [
|
||||
"sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784",
|
||||
"sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"
|
||||
],
|
||||
"version": "==0.2.5"
|
||||
}
|
||||
}
|
||||
}
|
||||
51
clean_dirs.log
Normal file
51
clean_dirs.log
Normal file
@@ -0,0 +1,51 @@
|
||||
[I 211128 08:09:56 clean_dirs:80] launching
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/What We Do in the Shadows removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Westworld removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Upload removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/This Way Up removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/This Is Us removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/The White Lotus removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/The Wheel of Time/Season 1 removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/The Umbrella Academy removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/The Sinner removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/The Morning Show removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/The Mandalorian removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/The Handmaid's Tale removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/The Flight Attendant removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/The Crown removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/The Boys removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Tell Me Your Secrets removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Succession removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Station 19 removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Space Force removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Schitt's Creek removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/RUN (2020) removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Outlander removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/New Amsterdam (2018) removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Loki removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Killing Eve removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Hunters (2020) removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Grey's Anatomy removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/For All Mankind removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Euphoria removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Dirty John removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Big Sky (2020) removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/Better Call Saul removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/American Crime Story removed
|
||||
[I 211128 08:09:56 clean_dirs:69] empty dir /home/ubuntu/Medias/Series/A Million Little Things removed
|
||||
[I 211128 08:09:56 clean_dirs:83] ended
|
||||
[I 211129 10:51:52 clean_dirs:76] launching
|
||||
[I 211129 10:51:52 clean_dirs:79] ended
|
||||
[I 211130 07:50:24 clean_dirs:76] launching
|
||||
[I 211130 07:50:24 clean_dirs:65] empty dir /home/ubuntu/Medias/Series/Succession/Season 03 removed
|
||||
[I 211130 07:50:24 clean_dirs:65] empty dir /home/ubuntu/Medias/Series/Succession removed
|
||||
[I 211130 07:50:24 clean_dirs:65] empty dir /home/ubuntu/Medias/Movies/7 Prisoners (2021) [1080p] [WEBRip] [5.1] [YTS.MX] removed
|
||||
[I 211130 07:50:24 clean_dirs:79] ended
|
||||
[I 211130 13:41:02 clean_dirs:77] launching
|
||||
[I 211130 13:41:02 clean_dirs:32] removed /home/ubuntu/Medias/Triage/Series/Succession.S03E07.720p.WEB.H264-CAKES[rarbg]/RARBG_DO_NOT_MIRROR.exe for suffix
|
||||
[I 211130 13:41:02 clean_dirs:32] removed /home/ubuntu/Medias/Triage/Series/Succession.S03E07.720p.WEB.H264-CAKES[rarbg]/RARBG.txt for suffix
|
||||
[I 211130 13:41:02 clean_dirs:32] removed /home/ubuntu/Medias/Triage/Series/Succession.S03E07.720p.WEB.H264-CAKES[rarbg]/succession.s03e07.720p.web.h264-cakes.nfo for suffix
|
||||
[I 211130 13:41:02 clean_dirs:49] remove_empty_dirs
|
||||
[I 211130 13:41:02 clean_dirs:66] empty dir /home/ubuntu/Medias/Triage/Series/Succession.S03E07.720p.WEB.H264-CAKES[rarbg] removed
|
||||
[I 211130 13:41:02 clean_dirs:66] empty dir /home/ubuntu/Medias/Triage/Movies/7 Prisoners (2021) [1080p] [WEBRip] [5.1] [YTS.MX] removed
|
||||
[I 211130 13:41:02 clean_dirs:80] ended
|
||||
80
clean_dirs.py
Normal file
80
clean_dirs.py
Normal file
@@ -0,0 +1,80 @@
|
||||
import datetime
|
||||
import os
|
||||
import logzero
|
||||
from logzero import logger
|
||||
from pathlib import Path
|
||||
|
||||
from config import ROOT, PROTECTED, EXCLUDED
|
||||
|
||||
|
||||
logzero.logfile("/data/mr_propre/clean_dirs.log", maxBytes=1e6, backupCount=3)
|
||||
|
||||
|
||||
def clean_triage(logger=logger):
|
||||
root = Path(ROOT)# + "Triage/Series")
|
||||
all_files = {p for p in root.rglob("*") if p.is_file()}
|
||||
now = datetime.datetime.now()
|
||||
for p in all_files:
|
||||
if [x for x in PROTECTED if x in p.parents]:
|
||||
pass
|
||||
elif p.suffix.lower() in [
|
||||
".nfo",
|
||||
".txt",
|
||||
".exe",
|
||||
".bat",
|
||||
".url",
|
||||
".gif",
|
||||
".png",
|
||||
".jpg",
|
||||
".jpeg",
|
||||
]:
|
||||
# print('remove', p)
|
||||
logger.info(f"removed {p} for suffix")
|
||||
os.remove(p)
|
||||
elif (now - datetime.datetime.fromtimestamp(p.stat().st_atime)).days > 7:
|
||||
os.remove(p)
|
||||
logger.info(f"removed {p} for old age")
|
||||
|
||||
all_links = {p for p in root.rglob("*") if p.is_symlink()}
|
||||
for p in all_links:
|
||||
try:
|
||||
if (now - datetime.datetime.fromtimestamp(p.stat().st_atime)).days > 3:
|
||||
os.unlink(p)
|
||||
logger.info(f"unlinked {p}")
|
||||
except FileNotFoundError: # Target deleted /broken link
|
||||
os.unlink(p)
|
||||
|
||||
|
||||
def remove_empty_dirs(logger=logger):
|
||||
logger.info('remove_empty_dirs')
|
||||
root = Path(ROOT)
|
||||
excluded = {Path(x) for x in EXCLUDED}
|
||||
non_empty_dirs = {Path(p.parent) for p in root.rglob("*") if p.is_file()}
|
||||
all_dirs = {p for p in root.rglob("*") if not p.is_file()}
|
||||
|
||||
for n in [x for x in non_empty_dirs]:
|
||||
[non_empty_dirs.add(Path(p)) for p in n.parents]
|
||||
real_empty_dirs = [
|
||||
x for x in all_dirs.difference(non_empty_dirs) if x not in excluded
|
||||
]
|
||||
print(real_empty_dirs)
|
||||
|
||||
for g in sorted(real_empty_dirs, reverse=True):
|
||||
# print(g)
|
||||
try:
|
||||
g.rmdir()
|
||||
logger.info(f"empty dir {g} removed")
|
||||
# print("OK ---> ", g)
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
except OSError as e:
|
||||
print(f"{g} raises OS error {e.args}")
|
||||
logger.error(f"{g} raises OS error {e.args}")
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
logger.info("launching")
|
||||
clean_triage()
|
||||
remove_empty_dirs()
|
||||
logger.info("ended")
|
||||
15
client.py
Normal file
15
client.py
Normal file
@@ -0,0 +1,15 @@
|
||||
import requests
|
||||
import socket
|
||||
from pathlib import Path
|
||||
|
||||
url = "http://store.micouleau.info:4000/what_do_you_need/"
|
||||
ROOT = "/home/alex/Medias/Micoustore/"
|
||||
p = Path(ROOT)
|
||||
data = {x.as_posix().replace(ROOT, ""): x.stat().st_size for x in p.rglob("*/*")}
|
||||
# print(data)
|
||||
data["host"] = socket.gethostname()
|
||||
|
||||
data["key"] = "SuperSecretKeyMicou!"
|
||||
|
||||
r = requests.post(url, json=data)
|
||||
print(r.text)
|
||||
8
config.py
Normal file
8
config.py
Normal file
@@ -0,0 +1,8 @@
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = "/home/ubuntu/Medias/" # ne pas oublier le dernier /
|
||||
KEY = "SuperSecretKeyMicou!"
|
||||
PROTECTED = [Path(f"{ROOT}{x}") for x in ["Ebooks"]]
|
||||
EXCLUDED = [
|
||||
f"{ROOT}{x}" for x in ["Triage", "Triage/Series", "Triage/Movies", "Series", "Movies", "Kids", "Ebooks", "incomplete"]
|
||||
]
|
||||
4
launcher.sh
Normal file
4
launcher.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
pip3 install -r requirements.txt
|
||||
#preload pour etre certain que les schedules ne sont lancés qu'une fois
|
||||
gunicorn -w 2 -b 0.0.0.0:4000 server:app --reload --preload
|
||||
# uvicorn --workers 2 --host 0.0.0.0 --port 4000 server:app --reload
|
||||
6
requirements.txt
Normal file
6
requirements.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Flask
|
||||
Flask-APScheduler
|
||||
requests
|
||||
logzero
|
||||
#uvicorn
|
||||
gunicorn
|
||||
1176
server.log
Normal file
1176
server.log
Normal file
File diff suppressed because it is too large
Load Diff
83
server.py
Normal file
83
server.py
Normal file
@@ -0,0 +1,83 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
from flask import Flask, jsonify, request
|
||||
# logger.info("loaded server file")
|
||||
from flask_apscheduler import APScheduler
|
||||
from clean_dirs import clean_triage, remove_empty_dirs
|
||||
from config import ROOT, KEY, PROTECTED
|
||||
from logzero import logfile, logger
|
||||
|
||||
logfile("/data/mr_propre/server.log", maxBytes=1e6, backupCount=3)
|
||||
|
||||
# set configuration values
|
||||
class Config:
|
||||
SCHEDULER_API_ENABLED = True
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config.from_object(Config())
|
||||
|
||||
# initialize scheduler
|
||||
scheduler = APScheduler()
|
||||
# if you don't wanna use a config, you can set options here:
|
||||
# scheduler.api_enabled = True
|
||||
scheduler.init_app(app)
|
||||
|
||||
@scheduler.task('interval', id='do_job_1', minutes=10, misfire_grace_time=900)
|
||||
def job1():
|
||||
print('ok')
|
||||
logger.info('clean_triage')
|
||||
try:
|
||||
clean_triage(logger)
|
||||
except Exception as e:
|
||||
print(e.args)
|
||||
logger.info('empty_dirs')
|
||||
# print('2')
|
||||
try:
|
||||
remove_empty_dirs(logger)
|
||||
except Exception as e:
|
||||
print(e.args)
|
||||
|
||||
scheduler.start()
|
||||
|
||||
@app.route("/what_do_you_need/", methods=["POST"])
|
||||
def hello_world():
|
||||
data = request.json
|
||||
key = data.pop("key", "")
|
||||
client = data.pop("host", "")
|
||||
logger.info(f"{request.remote_addr} requested what do you need")
|
||||
if key == KEY and client in ["bacchus","demeter"]:
|
||||
print()
|
||||
print()
|
||||
print()
|
||||
print("--- WELCOME", client, "---")
|
||||
print()
|
||||
resp = ""
|
||||
for ur, size in data.items():
|
||||
# print(ur)
|
||||
tp = Path(ROOT + ur)
|
||||
if tp.is_file() and not [x for x in PROTECTED if x in tp.parents]:
|
||||
# print("file", ur)
|
||||
if tp.stat().st_size == size:
|
||||
print("XXXXX", ur)
|
||||
logger.info(f"removed {tp}")
|
||||
os.remove(tp)
|
||||
resp += "\ndeleted : " + ur
|
||||
else:
|
||||
print("PARTIAL", ur)
|
||||
resp += "\nkept : " + ur
|
||||
else:
|
||||
# print('is dir',ur)
|
||||
pass
|
||||
|
||||
return resp or "RAS"
|
||||
else:
|
||||
print("nope")
|
||||
return "nope"
|
||||
|
||||
|
||||
@app.route("/ip", methods=["GET"])
|
||||
def test():
|
||||
return jsonify({"ip": request.remote_addr})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user