|
39 | 39 | from invenio_records_files.utils import sorted_files_from_bucket |
40 | 40 | from srt_to_vtt import srt_to_vtt |
41 | 41 |
|
| 42 | +from ..flows.files import move_file_into_local |
42 | 43 | from ..invenio_deposit.signals import post_action |
43 | 44 | from .indexer import cdsdeposit_indexer_receiver |
44 | 45 | from .receivers import ( |
@@ -68,25 +69,26 @@ def _create_vtt_from_srt(srt_obj): |
68 | 69 | if not srt_obj.file or not srt_obj.file.uri: |
69 | 70 | return None |
70 | 71 |
|
71 | | - srt_path = srt_obj.file.uri |
72 | 72 | tmp_dir = None |
73 | 73 | try: |
74 | | - # Create temporary directory for VTT file |
| 74 | + # Create temporary directory for SRT and VTT file |
75 | 75 | tmp_dir = tempfile.mkdtemp() |
76 | 76 | vtt_path = os.path.join(tmp_dir, vtt_key) |
77 | 77 |
|
78 | | - # Convert using srt-to-vtt library |
79 | | - srt_to_vtt(srt_path, vtt_path) |
80 | | - |
81 | | - # Create VTT ObjectVersion |
82 | | - vtt_obj = ObjectVersion.create( |
83 | | - bucket=srt_obj.bucket, |
84 | | - key=vtt_key, |
85 | | - stream=open(vtt_path, "rb"), |
86 | | - size=os.path.getsize(vtt_path), |
87 | | - ) |
88 | | - _create_tags(vtt_obj) |
89 | | - return vtt_obj |
| 78 | + with move_file_into_local(srt_obj, tmp_dir=tmp_dir) as local_srt_path: |
| 79 | + # Convert using srt-to-vtt library |
| 80 | + srt_to_vtt(local_srt_path, vtt_path) |
| 81 | + |
| 82 | + # Create VTT ObjectVersion |
| 83 | + vtt_obj = ObjectVersion.create( |
| 84 | + bucket=srt_obj.bucket, |
| 85 | + key=vtt_key, |
| 86 | + stream=open(vtt_path, "rb"), |
| 87 | + size=os.path.getsize(vtt_path), |
| 88 | + ) |
| 89 | + _create_tags(vtt_obj) |
| 90 | + |
| 91 | + return vtt_obj |
90 | 92 | except (OSError, IOError, AttributeError, Exception): |
91 | 93 | return None |
92 | 94 | finally: |
|
0 commit comments