Files
sunday/comics_data.py
2025-11-18 13:22:56 +10:00

140 lines
5.8 KiB
Python

# Sunday Comics - Comic data configuration
# Copyright (c) 2025 Tomasita Cabrera
# Licensed under the MIT License - see LICENSE file for details
#
# Edit this file to add, remove, or modify comics
# Global setting: The name of your comic/website
COMIC_NAME = 'Sunday Comics'
# Global setting: The name to display in the copyright notice
# If not set (None), defaults to COMIC_NAME
COPYRIGHT_NAME = None # e.g., 'Your Name' or 'Your Studio Name'
# Global setting: Your website's domain (used for RSS feed, Open Graph tags, etc.)
# Update this to your production domain when deploying
SITE_URL = 'http://localhost:3000'
# Global setting: CDN URL for static assets (set to None to use local assets)
# When set, all static assets will be served from this CDN
# Example: CDN_URL = 'https://cdn.example.com' (no trailing slash)
# Leave as None for local development or if not using a CDN
CDN_URL = None
# Global setting: Set to True to make all comics full-width by default
# Individual comics can override this with 'full_width': False
FULL_WIDTH_DEFAULT = False
# Global setting: Set to True to hide header and remove nav border by default
# Individual comics can override this with 'plain': False
PLAIN_DEFAULT = False
# Global setting: Path to site logo (relative to static/images/)
# Set to None to disable logo
# Example: LOGO_IMAGE = 'logo.png' will use static/images/logo.png
LOGO_IMAGE = 'logo.png'
# Global setting: Logo display mode
# 'beside' - Display logo next to the site title
# 'replace' - Replace the site title with the logo
# Only applies when LOGO_IMAGE is set
LOGO_MODE = 'beside'
# Global setting: Path to header image (relative to static/images/)
# Set to None to disable header image
# Example: HEADER_IMAGE = 'title.jpg' will use static/images/title.jpg
HEADER_IMAGE = None
# Global setting: Path to footer image (relative to static/images/)
# Set to None to disable footer image
# Example: FOOTER_IMAGE = 'footer.jpg' will use static/images/footer.jpg
FOOTER_IMAGE = None
# Global setting: Path to shareable banner image (relative to static/images/)
# Set to None to disable "Link to Us" section in footer
# Example: BANNER_IMAGE = 'banner.jpg' will use static/images/banner.jpg
BANNER_IMAGE = 'banner.jpg'
# Global setting: Set to True to display footer in compact mode
# Compact mode: single line, no border, horizontal layout
COMPACT_FOOTER = False
# Global setting: Set to True to make archive page full-width with 4 columns (2 on mobile)
# Full-width archive shows square thumbnails with only dates, no titles
ARCHIVE_FULL_WIDTH = True
# Global setting: Set to True to enable sections/chapters on the archive page
# Add 'section': 'Chapter Title' to comics where a new section starts
SECTIONS_ENABLED = True
# Global setting: Set to True to use icon images for comic navigation buttons
# Icons should be in static/images/icons/ (first.png, previous.png, next.png, latest.png)
USE_COMIC_NAV_ICONS = True
# Global setting: Set to True to show icons next to main header navigation text
# Uses alert.png for Latest, archive.png for Archive, info.png for About
USE_HEADER_NAV_ICONS = True
# Global setting: Set to True to use icons instead of text for footer social links
# Uses instagram.png, youtube.png, and mail.png from static/images/icons/
USE_FOOTER_SOCIAL_ICONS = True
# Global setting: Set to True to show icons in share buttons (permalink and embed)
# Uses link.png for permalink and embed.png for embed from static/images/icons/
USE_SHARE_ICONS = True
# Global setting: Set to True to show newsletter section in footer
NEWSLETTER_ENABLED = False
# Global setting: Custom HTML for newsletter form (only used if NEWSLETTER_ENABLED is True)
# Paste your newsletter service's form HTML here (Mailchimp, ConvertKit, Buttondown, etc.)
# Example:
# NEWSLETTER_HTML = '''
# <form action="https://yourservice.com/subscribe" method="post" class="newsletter-form">
# <input type="email" name="email" placeholder="Enter your email" required>
# <button type="submit">Subscribe</button>
# </form>
# '''
NEWSLETTER_HTML = '<p class="newsletter-placeholder">Newsletter coming soon!</p>'
# Social media links - add/remove/reorder as needed
# Each link should have 'label', 'url', and optionally 'icon' (filename in static/images/icons/)
# Set to empty list [] to show no social links
SOCIAL_LINKS = [
# Example links (uncomment and customize):
# {'label': 'Instagram', 'url': 'https://instagram.com/yourhandle', 'icon': 'instagram.png'},
# {'label': 'YouTube', 'url': 'https://youtube.com/@yourchannel', 'icon': 'youtube.png'},
# {'label': 'Email', 'url': 'mailto:your@email.com', 'icon': 'mail.png'},
# {'label': 'Bluesky', 'url': 'https://bsky.app/profile/yourhandle', 'icon': 'bluesky.png'},
# {'label': 'Patreon', 'url': 'https://patreon.com/yourname', 'icon': 'patreon.png'},
# {'label': 'Ko-fi', 'url': 'https://ko-fi.com/yourname', 'icon': 'kofi.png'},
# {'label': 'Mastodon', 'url': 'https://mastodon.social/@yourhandle', 'icon': 'mastodon.png'},
]
# API documentation link - set to None to hide the link
# Path is relative to static/ directory
API_SPEC_LINK = None # Set to 'openapi.yml' to enable
# Global setting: Set to True to enable comic embed functionality
# When enabled, users can get embed codes to display comics on other websites
EMBED_ENABLED = True
# Global setting: Set to True to enable permalink copy button
# When enabled, users can easily copy a direct link to the current comic
PERMALINK_ENABLED = True
# Load comics from YAML files
from data_loader import load_comics_from_yaml, validate_comics
COMICS = load_comics_from_yaml('data/comics')
# Validate loaded comics
if not validate_comics(COMICS):
print("Warning: Comic validation failed. Please check your YAML files.")
# Show loaded comics count
if COMICS:
print(f"Loaded {len(COMICS)} comics from data/comics/")
else:
print("Warning: No comics loaded! Please add .yaml files to data/comics/")