updated structurea and file management , improved ppt transformationa and pdf handeling
This commit is contained in:
65
app.py
65
app.py
@@ -181,9 +181,70 @@ def convert_video_and_update_playlist(file_path, original_filename, target_type,
|
||||
else:
|
||||
print(f"Video conversion failed for: {file_path}")
|
||||
|
||||
def convert_pptx_to_images(input_file, output_folder):
|
||||
def convert_pdf_to_images_and_update_playlist(pdf_file, output_folder, duration, target_type, target_id, delete_pdf=True):
|
||||
"""
|
||||
Calls the external pptx_to_images.py script to convert PPTX to images.
|
||||
Converts a PDF file to images and adds them to the playlist.
|
||||
Can be used by both direct PDF uploads and PPTX conversions.
|
||||
"""
|
||||
print(f"Converting PDF to images: {pdf_file}") # Debugging
|
||||
try:
|
||||
images = convert_from_path(pdf_file, dpi=300)
|
||||
print(f"Number of pages in PDF: {len(images)}") # Debugging
|
||||
base_name = os.path.splitext(os.path.basename(pdf_file))[0]
|
||||
image_filenames = []
|
||||
|
||||
for i, image in enumerate(images):
|
||||
image_filename = f"{base_name}_page_{i + 1}.jpg"
|
||||
image_path = os.path.join(output_folder, image_filename)
|
||||
image.save(image_path, 'JPEG')
|
||||
image_filenames.append(image_filename)
|
||||
print(f"Saved page {i + 1} as image: {image_path}") # Debugging
|
||||
|
||||
# Add images to playlist
|
||||
if target_type == 'group':
|
||||
group = Group.query.get_or_404(target_id)
|
||||
for player in group.players:
|
||||
for image_filename in image_filenames:
|
||||
new_content = Content(file_name=image_filename, duration=duration, player_id=player.id)
|
||||
db.session.add(new_content)
|
||||
player.playlist_version += 1
|
||||
group.playlist_version += 1
|
||||
elif target_type == 'player':
|
||||
player = Player.query.get_or_404(target_id)
|
||||
for image_filename in image_filenames:
|
||||
new_content = Content(file_name=image_filename, duration=duration, player_id=target_id)
|
||||
db.session.add(new_content)
|
||||
player.playlist_version += 1
|
||||
|
||||
db.session.commit()
|
||||
print(f"Added {len(image_filenames)} pages to playlist")
|
||||
|
||||
# Delete the PDF file if requested
|
||||
if delete_pdf and os.path.exists(pdf_file):
|
||||
os.remove(pdf_file)
|
||||
print(f"PDF file deleted: {pdf_file}")
|
||||
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"Error converting PDF to images: {e}")
|
||||
return False
|
||||
|
||||
def convert_pdf_to_images_and_upload(input_file, output_folder, duration, target_type, target_id):
|
||||
"""
|
||||
Converts a PDF file to images and adds them to the playlist.
|
||||
Each page is saved as a separate image in the output folder.
|
||||
"""
|
||||
print(f"Converting PDF file: {input_file}") # Debugging
|
||||
if not os.path.exists(output_folder):
|
||||
os.makedirs(output_folder)
|
||||
|
||||
# Convert PDF to images and update playlist
|
||||
return convert_pdf_to_images_and_update_playlist(input_file, output_folder, duration, target_type, target_id, True)
|
||||
|
||||
def convert_pptx_to_images_and_upload(input_file, output_folder, duration, target_type, target_id):
|
||||
"""
|
||||
Converts a PowerPoint file (.pptx) to individual slide images by first converting it to a PDF.
|
||||
Each slide is saved as a separate image in the output folder and added to the playlist.
|
||||
"""
|
||||
command = [
|
||||
"python", "pptx_to_images.py", input_file, output_folder
|
||||
|
||||
Reference in New Issue
Block a user