From 75534da70273388f8a7d35a3640ca6c16f3b5b57 Mon Sep 17 00:00:00 2001 From: ari melody Date: Sun, 28 Jun 2026 16:37:42 +0100 Subject: [PATCH] update documentation --- README.md | 42 +++++++++++++++++++++++------------------- main.go | 45 ++++++++++++++++----------------------------- res/help.txt | 7 ++++--- 3 files changed, 43 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 25360ea..d43cc49 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,12 @@ # Vodular -This tool stitches together livestream VOD segments (in `.mkv`format) and automatically uploads them to YouTube, complete with customisable metadata such as titles, descriptions, tags, and a thumbnail! +This tool stitches together livestream VOD segments (in `.mkv` format) and +automatically uploads them to YouTube, complete with customisable metadata such +as titles, descriptions, tags, and a thumbnail! -I built this to greatly simplify the process of getting my full-quality livestream VODs onto YouTube, and I'm open-sourcing it in the hopes that it helps someone else with their workflow. As such, personal forks are welcome and encouraged! +I built this to greatly simplify the process of getting my full-quality +livestream VODs onto YouTube, and I'm open-sourcing it in the hopes that it +helps someone else with their workflow. As such, personal forks are welcome and +encouraged! ## Quick Jump - [Basic Usage](#basic-usage) @@ -9,40 +14,40 @@ I built this to greatly simplify the process of getting my full-quality livestre - [Templates](#templates) ## Basic usage -1. Run the tool for the first time to generate a starter configuration file: -```sh -$ vodular -New config file created (config.toml). Please edit this file before running again! -``` +1. Run `vodular` for the first time to generate a starter configuration file: + The directory which holds your configuration file and templates varies, depending on platform: - **Linux:** `~/.config/vodular/templates` - **macOS:** `~/Library/Application Support/vodular/templates` - **Windows:** `%AppData%/vodular/templates` -2. Edit your configuration file as necessary (You will need to create a [YouTube Data API v3](https://developers.google.com/youtube/v3) service and provide its credentials here). -**IMPORTANT:** `config.toml` contains very sensitive credentials. Do not share this file with anyone. +2. Edit your configuration file as necessary (You will need to create a +[YouTube Data API v3](https://developers.google.com/youtube/v3) service and +provide its credentials here). +**IMPORTANT:** `config.toml` contains very sensitive credentials. Do not share +this file with anyone. 3. Initialise a VOD directory: ```sh -$ vodular --init /path/to/vod -Directory successfully initialised. Be sure to update metadata.toml before uploading! +vodular --init /path/to/vod ``` This directory should contain: - A `metadata.toml` file -- Your footage files, either at the root of the directory or in a specified subdirectory +- Your footage files, either at the root of the directory or in a specified +subdirectory - Your thumbnail, specifically named `thumbnail.png` 4. Modify your newly-created `metadata.toml` to your liking. 5. Upload a VOD! ```sh -# `--deleteAfter` deletes the redundant full VOD export afterwards -vodular --deleteAfter /path/to/vod +vodular /path/to/vod ``` -**NOTE:** On first run, you will be prompted to sign in to YouTube with the channel you wish to upload to. To sign out, simply run `vodular --logout`. +**NOTE:** On first run, you will be prompted to log into YouTube with the +channel you wish to upload to. To log out, simply run `vodular --logout`. ## VOD Metadata When `--init`ialising a directory, a `metadata.toml` file is created. This is a @@ -56,13 +61,12 @@ title = 'Untitled Stream' part = 0 # The date of the stream date = '2026-01-28' -# (Optional) Additional tags to add to this VOD's metadata. +# (Optional) VOD-specific tags. Added to global tags template. tags = ['livestream', 'VOD'] # (Optional) Footage directory override, for more complex directory structures. footage_dir = 'footage' -# Set to `true` by the tool when the VOD has been uploaded successfully. -# Prevents future uploads unless `--force` is used. -uploaded = false +# On successful upload, updated to a URL to the video. +upload_url = false # (Optional) Category details, for additional credits. [category] diff --git a/main.go b/main.go index cd1a461..b6cf248 100644 --- a/main.go +++ b/main.go @@ -30,11 +30,6 @@ const SEGMENT_EXTENSION = "mkv" const MAX_TITLE_LEN = 100 const MAX_DESCRIPTION_LEN = 5000 -func showHelp() { - fmt.Println(helpText) - os.Exit(0) -} - func main() { ctx := context.Background() @@ -65,18 +60,13 @@ func main() { os.Exit(0) } - // arguments - if len(os.Args) < 2 || os.Args[1] == "--help" || os.Args[1] == "-h" { - showHelp() - } - var verbose bool = false var initDirectory bool = false var logout bool = false - var keepFullVOD bool = false + var keepConcatVOD bool = false var forceUpload bool = false var dryRun bool = false - var directory string = "." + var directory string = "" for i, arg := range os.Args { if i == 0 { continue } @@ -86,31 +76,29 @@ func main() { case "-h": fallthrough case "--help": - showHelp() + log.Fatal(helpText) case "-v": fallthrough case "--verbose": verbose = true - case "--init": - initDirectory = true - - case "--logout": - logout = true - - case "-d": - fallthrough - case "--keep-vod": - keepFullVOD = true + case "--dry-run": + dryRun = true case "-f": fallthrough case "--force": forceUpload = true - case "--dry-run": - dryRun = true + case "--init": + initDirectory = true + + case "--keep-vod": + keepConcatVOD = true + + case "--logout": + logout = true default: fmt.Fprintf(os.Stderr, "Unknown option `%s`\n", arg) @@ -135,8 +123,7 @@ func main() { if err != nil { log.Fatalf("Failed to write config: %v", err) } - log.Println("Logged out successfully.") - os.Exit(0) + log.Fatalf("Logged out successfully.") } // initialising directory (--init) @@ -393,9 +380,9 @@ func main() { log.Fatalf("Failed to update metadata: %v", err) } - // delete full VOD after upload, if requested + // delete concatenated VOD after upload, unless specified otherwise // if len(vodFiles) == 1, the full VOD is the *only* VOD. do not delete this!!! - if len(vodFiles) > 1 && !keepFullVOD { + if len(vodFiles) > 1 && !keepConcatVOD { if err = os.Remove(videoMeta.Filepath); err != nil { log.Fatalf("Failed to delete full VOD: %v", err) } diff --git a/res/help.txt b/res/help.txt index 317d416..980e0f1 100644 --- a/res/help.txt +++ b/res/help.txt @@ -5,11 +5,12 @@ USAGE: vodular [options] [directory] OPTIONS: -h, --help: Show this help message. -v, --verbose: Show verbose logging output. - --init: Initialise `directory` as a VOD directory. - --logout: Logs out of the current YouTube account. - -d, --deleteAfter: Deletes the full VOD after upload. + --dry-run: Don't upload or modify any files (Useful with -v) -f, --force: Force uploading the VOD, even if it already exists. + --init: Initialise `directory` as a VOD directory. + --keep-vod: Retains the concatenated VOD (if generated) after upload. + --logout: Logs out of the current YouTube account. SOURCE: https://codeberg.org/arimelody/vodular ISSUES: https://codeberg.org/arimelody/vodular/issues