Pipeline.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from json import dump, load
  2. from os import path
  3. from time import sleep
  4. from typing import List
  5. from pycs.interfaces.AnnotatedMediaFile import AnnotatedMediaFile
  6. from pycs.interfaces.MediaFile import MediaFile
  7. from pycs.interfaces.Pipeline import Pipeline as Interface
  8. class Pipeline(Interface):
  9. def __init__(self, root_folder, distribution):
  10. print('fmv1 init')
  11. self.root_folder = root_folder
  12. def close(self):
  13. print('fmv1 close')
  14. def execute(self, file: MediaFile) -> List[dict]:
  15. print('fmv1 execute')
  16. sleep(0.01)
  17. data_file = path.join(self.root_folder, 'data.json')
  18. if path.exists(data_file):
  19. with open(data_file, 'r') as f:
  20. result = load(f)
  21. else:
  22. result = {}
  23. if file.path in result:
  24. return result[file.path]
  25. else:
  26. return []
  27. def fit(self, files: List[AnnotatedMediaFile]):
  28. print('fmv1 fit')
  29. sleep(5)
  30. result = {}
  31. for f in files:
  32. result[f.path] = f.results
  33. data_file = path.join(self.root_folder, 'data.json')
  34. with open(data_file, 'w') as file:
  35. dump(result, file, indent=4)