Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -296,10 +296,14 @@ def process_video(api, drive_service, video_file):
|
|
296 |
st.session_state['bvh_data'] = bvh_data
|
297 |
st.session_state['bvh_filename'] = bvh_filename or "motion_capture.bvh"
|
298 |
|
|
|
|
|
|
|
299 |
return {
|
300 |
'bvh_data': bvh_data,
|
301 |
'bvh_path': bvh_path,
|
302 |
-
'bvh_filename': bvh_filename or "motion_capture.bvh"
|
|
|
303 |
}
|
304 |
|
305 |
if execution_started and current_status in ['complete', 'error']:
|
@@ -404,32 +408,39 @@ def main():
|
|
404 |
if uploaded_file := st.session_state.get('uploaded_file'):
|
405 |
st.video(uploaded_file)
|
406 |
|
|
|
|
|
407 |
if st.session_state.get('uploaded_file'):
|
408 |
st.markdown('<h3 class="section-title">Processing Options</h3>', unsafe_allow_html=True)
|
409 |
|
410 |
-
if st.button("Start Motion Capture"):
|
411 |
result = process_video(api, drive_service, st.session_state['uploaded_file'])
|
412 |
|
413 |
if result and 'bvh_data' in result:
|
414 |
# The BVH file has already been downloaded and deleted from Drive
|
415 |
# Now just offer it for download to the user
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
|
|
|
|
422 |
else:
|
423 |
st.error("Failed to generate BVH file.")
|
424 |
|
425 |
# If BVH data is in session state (from a previous run), offer it for download
|
426 |
if 'bvh_data' in st.session_state and 'bvh_filename' in st.session_state:
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
|
|
|
|
|
|
433 |
|
434 |
st.markdown('</div>', unsafe_allow_html=True)
|
435 |
|
|
|
296 |
st.session_state['bvh_data'] = bvh_data
|
297 |
st.session_state['bvh_filename'] = bvh_filename or "motion_capture.bvh"
|
298 |
|
299 |
+
# Generate a unique timestamp for this result
|
300 |
+
st.session_state['bvh_timestamp'] = int(time.time())
|
301 |
+
|
302 |
return {
|
303 |
'bvh_data': bvh_data,
|
304 |
'bvh_path': bvh_path,
|
305 |
+
'bvh_filename': bvh_filename or "motion_capture.bvh",
|
306 |
+
'timestamp': st.session_state['bvh_timestamp']
|
307 |
}
|
308 |
|
309 |
if execution_started and current_status in ['complete', 'error']:
|
|
|
408 |
if uploaded_file := st.session_state.get('uploaded_file'):
|
409 |
st.video(uploaded_file)
|
410 |
|
411 |
+
download_container = st.container()
|
412 |
+
|
413 |
if st.session_state.get('uploaded_file'):
|
414 |
st.markdown('<h3 class="section-title">Processing Options</h3>', unsafe_allow_html=True)
|
415 |
|
416 |
+
if st.button("Start Motion Capture", key="start_capture_button"):
|
417 |
result = process_video(api, drive_service, st.session_state['uploaded_file'])
|
418 |
|
419 |
if result and 'bvh_data' in result:
|
420 |
# The BVH file has already been downloaded and deleted from Drive
|
421 |
# Now just offer it for download to the user
|
422 |
+
with download_container:
|
423 |
+
st.download_button(
|
424 |
+
label="Download BVH",
|
425 |
+
data=result['bvh_data'],
|
426 |
+
file_name=result['bvh_filename'],
|
427 |
+
mime="application/octet-stream",
|
428 |
+
key=f"download_new_{result['timestamp']}"
|
429 |
+
)
|
430 |
else:
|
431 |
st.error("Failed to generate BVH file.")
|
432 |
|
433 |
# If BVH data is in session state (from a previous run), offer it for download
|
434 |
if 'bvh_data' in st.session_state and 'bvh_filename' in st.session_state:
|
435 |
+
with download_container:
|
436 |
+
timestamp = st.session_state.get('bvh_timestamp', int(time.time()))
|
437 |
+
st.download_button(
|
438 |
+
label="Download BVH",
|
439 |
+
data=st.session_state['bvh_data'],
|
440 |
+
file_name=st.session_state['bvh_filename'],
|
441 |
+
mime="application/octet-stream",
|
442 |
+
key=f"download_saved_{timestamp}"
|
443 |
+
)
|
444 |
|
445 |
st.markdown('</div>', unsafe_allow_html=True)
|
446 |
|