fixes for file naming
formatting_check / formatting_check (push) Failing after 6s
Python Test / test (.sh, ubuntu-latest, 3.9) (push) Failing after 16s
Python Test / test (.ps1, windows-latest, 3.9) (push) Has been cancelled
Python Test / test (.sh, macos-latest, 3.9) (push) Has been cancelled

This commit is contained in:
2026-07-14 21:11:24 +12:00
parent 8f8e2c744d
commit f3dc8e46fd
16 changed files with 236 additions and 117 deletions
+91 -78
View File
@@ -1,11 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>BDFR Web Interface</title>
<link rel="stylesheet" href="/static/css/style.css">
</head>
<body>
<div class="container">
<header>
@@ -22,89 +24,93 @@
</div>
<div class="auth-actions">
<button id="loginBtn" class="btn btn-small btn-outline">🔐 Login with Reddit</button>
<button id="logoutBtn" class="btn btn-small btn-outline" style="display: none;">🚪 Logout</button>
<button id="logoutBtn" class="btn btn-small btn-outline" style="display: none;">🚪
Logout</button>
</div>
</div>
</div>
</header>
<!-- User Downloads Section -->
<section class="user-downloads-section" id="userDownloadsSection" style="display: none;">
<div class="form-container-unified">
<div class="form-card-unified">
<h2>📥 My Downloads</h2>
<p>Download your liked and saved posts from Reddit.</p>
<main>
<!-- User Downloads Section -->
<section class="user-downloads-section" id="userDownloadsSection" style="display: none;">
<div class="form-container-unified">
<div class="form-card-unified">
<h2>📥 My Downloads</h2>
<p>Download your liked and saved posts from Reddit.</p>
<!-- Download Mode Selection -->
<div class="form-section">
<h4>🎯 Download Mode</h4>
<div class="radio-group mode-radio-group">
<label class="radio-label mode-option" data-tooltip="Download media files (images, videos, gifs) from posts">
<input type="radio" name="user_download_mode" value="download" checked>
<span class="radio-custom"></span>
<span class="mode-label">
<strong>Download</strong>
<small>Media files only</small>
</span>
</label>
<label class="radio-label mode-option" data-tooltip="Save post metadata (title, author, comments) as JSON/XML without downloading media">
<input type="radio" name="user_download_mode" value="archive">
<span class="radio-custom"></span>
<span class="mode-label">
<strong>Archive</strong>
<small>Metadata only</small>
</span>
</label>
<label class="radio-label mode-option" data-tooltip="Download media files AND save metadata - complete backup of posts">
<input type="radio" name="user_download_mode" value="clone">
<span class="radio-custom"></span>
<span class="mode-label">
<strong>Clone</strong>
<small>Media + Metadata</small>
</span>
</label>
</div>
</div>
<!-- Scheduling Options -->
<div class="form-section">
<h4>⏰ Scheduling</h4>
<div class="radio-group">
<label class="radio-label">
<input type="radio" name="user_schedule_type" value="now" checked>
<span class="radio-custom"></span>
Run Now
</label>
<label class="radio-label">
<input type="radio" name="user_schedule_type" value="scheduled">
<span class="radio-custom"></span>
Schedule for Later
</label>
<!-- Download Mode Selection -->
<div class="form-section">
<h4>🎯 Download Mode</h4>
<div class="radio-group mode-radio-group">
<label class="radio-label mode-option"
data-tooltip="Download media files (images, videos, gifs) from posts">
<input type="radio" name="user_download_mode" value="download" checked>
<span class="radio-custom"></span>
<span class="mode-label">
<strong>Download</strong>
<small>Media files only</small>
</span>
</label>
<label class="radio-label mode-option"
data-tooltip="Save post metadata (title, author, comments) as JSON/XML without downloading media">
<input type="radio" name="user_download_mode" value="archive">
<span class="radio-custom"></span>
<span class="mode-label">
<strong>Archive</strong>
<small>Metadata only</small>
</span>
</label>
<label class="radio-label mode-option"
data-tooltip="Download media files AND save metadata - complete backup of posts">
<input type="radio" name="user_download_mode" value="clone">
<span class="radio-custom"></span>
<span class="mode-label">
<strong>Clone</strong>
<small>Media + Metadata</small>
</span>
</label>
</div>
</div>
<!-- Scheduled Options (shown when Schedule for Later is selected) -->
<div id="userScheduleOptions" class="schedule-options" style="display: none;">
<div class="form-group">
<label for="userRunTime">Run Time (24-hour format):</label>
<input type="time" id="userRunTime" name="user_run_time" value="02:00">
<small class="form-help">Time to run the download daily (in your local timezone)</small>
<!-- Scheduling Options -->
<div class="form-section">
<h4>⏰ Scheduling</h4>
<div class="radio-group">
<label class="radio-label">
<input type="radio" name="user_schedule_type" value="now" checked>
<span class="radio-custom"></span>
Run Now
</label>
<label class="radio-label">
<input type="radio" name="user_schedule_type" value="scheduled">
<span class="radio-custom"></span>
Schedule for Later
</label>
</div>
<!-- Scheduled Options (shown when Schedule for Later is selected) -->
<div id="userScheduleOptions" class="schedule-options" style="display: none;">
<div class="form-group">
<label for="userRunTime">Run Time (24-hour format):</label>
<input type="time" id="userRunTime" name="user_run_time" value="02:00">
<small class="form-help">Time to run the download daily (in your local
timezone)</small>
</div>
</div>
</div>
<!-- Action Buttons -->
<div class="form-section">
<h4>🚀 Actions</h4>
<div class="user-actions">
<button id="downloadLikesBtn" class="btn btn-primary">❤️ Download My Likes</button>
<button id="downloadSavedBtn" class="btn btn-primary">⭐ Download My Saved Posts</button>
</div>
</div>
</div>
<!-- Action Buttons -->
<div class="form-section">
<h4>🚀 Actions</h4>
<div class="user-actions">
<button id="downloadLikesBtn" class="btn btn-primary">❤️ Download My Likes</button>
<button id="downloadSavedBtn" class="btn btn-primary">⭐ Download My Saved Posts</button>
</div>
</div>
</div>
</div>
</section>
<main>
</section>
<!-- Unified Download Form Section -->
<section class="download-section">
<div class="form-container-unified">
@@ -115,7 +121,8 @@
<div class="form-section mode-section">
<h4>🎯 Download Mode</h4>
<div class="radio-group mode-radio-group">
<label class="radio-label mode-option" data-tooltip="Download media files (images, videos, gifs) from posts">
<label class="radio-label mode-option"
data-tooltip="Download media files (images, videos, gifs) from posts">
<input type="radio" name="download_mode" value="download" checked>
<span class="radio-custom"></span>
<span class="mode-label">
@@ -123,7 +130,8 @@
<small>Media files only</small>
</span>
</label>
<label class="radio-label mode-option" data-tooltip="Save post metadata (title, author, comments) as JSON/XML without downloading media">
<label class="radio-label mode-option"
data-tooltip="Save post metadata (title, author, comments) as JSON/XML without downloading media">
<input type="radio" name="download_mode" value="archive">
<span class="radio-custom"></span>
<span class="mode-label">
@@ -131,7 +139,8 @@
<small>Metadata only</small>
</span>
</label>
<label class="radio-label mode-option" data-tooltip="Download media files AND save metadata - complete backup of posts">
<label class="radio-label mode-option"
data-tooltip="Download media files AND save metadata - complete backup of posts">
<input type="radio" name="download_mode" value="clone">
<span class="radio-custom"></span>
<span class="mode-label">
@@ -162,7 +171,8 @@
<!-- Source Name Input -->
<div class="form-group">
<label for="sourceName" id="sourceNameLabel">Subreddit Name:</label>
<input type="text" id="sourceName" name="source_name" placeholder="e.g., python, machinelearning" required>
<input type="text" id="sourceName" name="source_name"
placeholder="e.g., python, machinelearning" required>
<small class="form-help" id="sourceNameHelp">Enter subreddit name without 'r/'</small>
</div>
@@ -239,13 +249,15 @@
<div id="scheduleOptions" class="schedule-options" style="display: none;">
<div class="form-group">
<label for="taskName">Task Name:</label>
<input type="text" id="taskName" name="task_name" placeholder="e.g., Daily Python Posts">
<input type="text" id="taskName" name="task_name"
placeholder="e.g., Daily Python Posts">
<small class="form-help">A friendly name to identify this scheduled task</small>
</div>
<div class="form-group">
<label for="runTime">Run Time (24-hour format):</label>
<input type="time" id="runTime" name="run_time" value="02:00">
<small class="form-help">Time to run the download daily (in your local timezone)</small>
<small class="form-help">Time to run the download daily (in your local
timezone)</small>
</div>
</div>
</div>
@@ -320,10 +332,11 @@
</main>
<footer>
<p>&copy; 2024 BDFR Web Interface. Powered by FastAPI.</p>
<p>&copy; 2025 BDFR Web Interface. Powered by FastAPI.</p>
</footer>
</div>
<script src="/static/js/app.js"></script>
</body>
</html>