]> git.treefish.org Git - photosort.git/blob - src/misc.py
do not look for alternative file in source dir
[photosort.git] / src / misc.py
1 import mimetypes
2 import os
3 import shutil
4
5 def walk_media_files(dir_path):
6     for root, dirs, files in os.walk(dir_path):
7         for f in files:
8             file_path = os.path.join(root, f)
9             if _is_media_file(file_path):
10                 yield (f, file_path)
11
12 def extract_timestamp(file_path):
13     return os.path.getmtime(file_path)
14
15 def find_file(dir_path, file_name, file_size, exclude_dir):
16     for root, dirs, files in os.walk(dir_path):
17         if root == exclude_dir:
18             continue
19         for f in files:
20             if f == file_name:
21                 full_path = os.path.join(root, f)
22                 if os.path.getsize(full_path) == file_size:
23                     return root
24     return None
25
26 def import_file(src_file_path, dst_file_path, move=False):
27     shutil.copyfile(src_file_path, dst_file_path)
28     shutil.copystat(src_file_path, dst_file_path)
29
30 def delete_dir_contents(dir_path):
31     for file_name in os.listdir(dir_path):
32         file_path = os.path.join(dir_path, file_name)
33         if os.path.isfile(file_path) or os.path.islink(file_path):
34             os.unlink(file_path)
35         elif os.path.isdir(file_path):
36             shutil.rmtree(file_path)
37
38 def _is_media_file(file_path):
39     if not os.path.isfile(file_path):
40         return False
41     mime_type = mimetypes.guess_type(file_path)[0]
42     if not mime_type:
43         return False
44     if not mime_type.split('/')[0] in ['image', 'video']:
45         return False
46     return True