print_handler Module
Print layout generation for ttmp32gme.
Key Functions
create_print_layout(album_ids, layout_config, db_handler): Generate HTML print layout
format_tracks(album, oid_map, db_handler): Format track list with OID codes
format_print_button(label, oid_code, size, db_handler): Create control button with OID
create_pdf(html_content, output_path, config): Create PDF (platform-specific)
Layout Presets
List: Full details, 1-2 albums/page
Tiles: Compact grid, 6-12 albums/page
CD Booklet: Standard CD case dimensions
Usage
from ttmp32gme.print_handler import create_print_layout
config = {
"preset": "list",
"columns": 2,
"show_cover": True,
"dpi": 1200,
"pixels_per_dot": 2
}
html = create_print_layout([123, 456], config, db)
Print handling module for ttmp32gme - creates print layouts.
- ttmp32gme.print_handler.is_running_in_container()[source]
Check if the application is running inside a container (Docker/Podman).
- Return type:
bool- Returns:
True if running in a container, False otherwise
- ttmp32gme.print_handler.format_tracks(album, oid_map, db_handler)[source]
Format track list with OID codes for printing.
- Parameters:
album (
Dict[str,Any]) – Album dictionary containing track informationoid_map (
Dict[str,Dict[str,int]]) – Mapping of script names to OID codes (e.g., {“t0”: {“code”: 2663}})db_handler (
DBHandler) – Database handler instance for accessing album data
- Return type:
str- Returns:
HTML content for track list with embedded OID images
- ttmp32gme.print_handler.format_controls(oid_map, db_handler)[source]
Format playback controls with OID codes.
- Parameters:
oid_map (
Dict[str,Dict[str,int]]) – Mapping of script names to OID codes (e.g., {“play”: {“code”: 3947}})db_handler (
DBHandler) – Database handler instance for creating OID images
- Return type:
str- Returns:
HTML content for playback controls (prev, play, stop, next buttons)
- ttmp32gme.print_handler.format_track_control(track_no, oid_map, db_handler)[source]
Format a single track control button.
- Parameters:
track_no (
int) – Track number (1-indexed)oid_map (
Dict[str,Dict[str,int]]) – Mapping of script names to OID codes (e.g., {“t0”: {“code”: 2663}})db_handler (
DBHandler) – Database handler instance for creating OID images
- Return type:
str- Returns:
HTML content for track control button with embedded OID image
- ttmp32gme.print_handler.format_main_oid(oid, db_handler)[source]
Format main OID image for an album.
- Parameters:
oid (
int) – Album OID numberdb_handler (
DBHandler) – Database handler instance for creating OID images
- Return type:
str- Returns:
HTML img tag with embedded OID image
- ttmp32gme.print_handler.format_cover(album)[source]
Format cover image for an album.
- Parameters:
album (
Dict[str,Any]) – Album dictionary containing picture_filename and oid- Return type:
str- Returns:
HTML img tag for cover image, or empty string if no cover exists
- ttmp32gme.print_handler.create_print_layout(oids, template, config, db_handler)[source]
Create print layout for selected albums.
- Parameters:
oids (
List[int]) – List of album OIDs to include in print layouttemplate (
Any) – Flask template object for rendering (unused, kept for compatibility)config (
Dict[str,Any]) – Configuration dictionary with print settingsdb_handler (
DBHandler) – Database handler instance for accessing album data
- Return type:
str- Returns:
HTML content for complete print layout including all albums and controls
- ttmp32gme.print_handler.create_pdf(port, chromium_names=('chromium', 'chromium-browser', 'google-chrome', 'chrome'))[source]
Create PDF from print layout using Chromium headless.
- Parameters:
port (
int) – Server port number for accessing the print page via HTTP- Return type:
Optional[Path]- Returns:
Path to created temporary PDF file, or None if PDF creation failed
- ttmp32gme.print_handler.format_print_button()[source]
Format the print button HTML based on platform and chromium availability.
- Return type:
str- Returns:
HTML string for print/PDF button(s) appropriate for the current platform
- ttmp32gme.print_handler.generate_pdf_with_threading(port, timeout=60)[source]
Generate PDF using threading to avoid server deadlock.
This function generates a PDF in a separate thread to avoid blocking the server when Chromium needs to make a request back to the server to render the page.
- Parameters:
port (
int) – Server port number for accessing the print page via HTTPtimeout (
int) – Maximum time in seconds to wait for PDF generation (default: 60)
- Returns:
‘success’: Boolean indicating if PDF generation succeeded
’file’: Path to the generated PDF file (if successful)
’error’: Error message (if failed)
’timeout’: Boolean indicating if operation timed out
- Return type:
Dictionary with the following keys