No description
  • C# 58.3%
  • HTML 40.7%
  • PowerShell 1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-23 18:28:54 +00:00
.forgejo/workflows Use cmd shell for Windows workflow steps 2026-08-23 15:36:57 +02:00
.github Drop the GitHub PR review workflow 2026-08-20 23:06:15 +02:00
CheapShotcutRandomizer.Core Show job selection summary and estimated final size on queue cards 2026-08-22 17:15:48 +02:00
CheapShotcutRandomizer.Tests Add swing mode alternating short and long clips 2026-08-23 15:13:49 +02:00
Components Only store track selection when it narrows the track set 2026-08-23 20:27:32 +02:00
Data fix render queue races, cancellation handling, playlist order preservation, and UI disposal guards 2026-08-09 22:50:40 +02:00
deploy Put dotnet tools dir on PATH before calling vpk 2026-08-23 15:41:55 +02:00
docs refresh docs: rewrite readme and changelog for the current app, prune stale ci and platform docs 2026-08-17 01:53:04 +02:00
Models remove dead code: AI installer remnants, unused ffmpeg render stack, orphaned dependency UIs 2026-08-09 22:14:23 +02:00
Properties Initial commit - CheapShotcutRandomizer 2026-01-17 18:08:42 +01:00
Services Add swing mode alternating short and long clips 2026-08-23 15:13:49 +02:00
wwwroot Initial commit - CheapShotcutRandomizer 2026-01-17 18:08:42 +01:00
.gitattributes Initial commit - CheapShotcutRandomizer 2026-01-17 18:08:42 +01:00
.gitignore remove dead code: AI installer remnants, unused ffmpeg render stack, orphaned dependency UIs 2026-08-09 22:14:23 +02:00
app.manifest Initial commit - CheapShotcutRandomizer 2026-01-17 18:08:42 +01:00
App.razor new api 2026-01-29 00:06:48 +01:00
CHANGELOG.md refresh docs: rewrite readme and changelog for the current app, prune stale ci and platform docs 2026-08-17 01:53:04 +02:00
CheapShotcutRandomizer.csproj Use CheapAvaloniaBlazor's Velopack integration, update packages 2026-08-22 13:34:44 +02:00
CheapShotcutRandomizer.slnx upgrade to slnx 2026-03-02 22:19:50 +01:00
LICENSE.txt Initial commit - CheapShotcutRandomizer 2026-01-17 18:08:42 +01:00
Program.cs Use CheapAvaloniaBlazor's Velopack integration, update packages 2026-08-22 13:34:44 +02:00
README.md refresh docs: rewrite readme and changelog for the current app, prune stale ci and platform docs 2026-08-17 01:53:04 +02:00
Routes.razor new api 2026-01-29 00:06:48 +01:00
TODO.md Track multi-source, dedupe and swing work in TODO 2026-08-23 15:29:29 +02:00

Cheap Shotcut Randomizer

Desktop app that shuffles and generates randomized playlists from Shotcut projects, then batch-renders them through melt with a full render queue.

Note: AI upscaling and frame interpolation features live in CheapUpscaler.

Features

Randomizer

  • Shuffle playlists — randomly reorder clips per playlist, optionally avoiding consecutive clips from the same source
  • Generate smart compilations — simulated-annealing selection from multiple source playlists with duration and clip-count weights, plus a per-playlist target duration
  • Non-destructive — generated projects are written as separate temp files; your source project is never modified

Render Queue

  • Queue-first workflow — the queue is the home page; a full-page stepper (Source → Video → Audio → Tracks & Range → Review) configures each job
  • Encoder selection — x264/x265 on CPU, or your detected hardware encoders (NVENC/QSV/AMF) with the correct per-encoder quality flags
  • Stock export presets — the MLT/Shotcut preset library (YouTube, HEVC, ProRes, …) found next to your melt install, searchable with recommended picks on top
  • Output overrides — resolution, aspect ratio, frame rate, and audio quality-based VBR
  • True pause/resume — pausing a render suspends the melt process in place; resuming continues without losing progress
  • Pre-flight checks — missing media, duplicate output targets, and low disk space are caught before the render starts
  • Post-completion actions — move the output to a folder or reveal it in Explorer when a job finishes
  • Reliability — persistent SQLite queue, crash recovery, safe-mode retry, keep-awake during renders

Find Files

  • Search clips across playlists by filename, spot duplicates, and jump to every occurrence on the timeline

Usage

  1. Randomizer — load your .mlt project, shuffle a playlist or generate a compilation; both hand off to the render stepper with the generated track pre-selected
  2. Add Files on the Render Queue page opens the same stepper for any .mlt project
  3. Start Queue — jobs process in the background with live progress, ETA, and per-job actions

Generated projects are stored in the app's temp folder and cleaned up automatically once their render finishes.

Requirements

  • Windows 10/11
  • Shotcut (provides melt and the export preset library)
  • FFmpeg/FFprobe (bundled with Shotcut and SVP; auto-detected, or set paths in Settings)

Building

Prerequisites: .NET 11 SDK

dotnet build
dotnet test

Publish a self-contained single-file build (~90 MB, no .NET needed on the target machine):

.\deploy\publish.ps1 -Version 1.0.0

Output: deploy\out\CheapShotcutRandomizer\CheapShotcutRandomizer.exe

Tech Stack

  • Blazor + Avalonia desktop via CheapAvaloniaBlazor
  • MudBlazor UI
  • Entity Framework Core + SQLite (render queue persistence)
  • melt/MLT (rendering), invoked with Shotcut-parity consumer properties
  • CheapHelpers (utilities, media processing)