update README, lots of polish
This commit is contained in:
parent
4624c56e54
commit
ce836b2d46
11 changed files with 210 additions and 121 deletions
72
README.md
72
README.md
|
|
@ -1,30 +1,39 @@
|
|||
# ari's VOD uploader
|
||||
# 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, and tags.
|
||||
|
||||
This tool stitches together livestream VOD segments and automatically uploads
|
||||
them to YouTube.
|
||||
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!
|
||||
|
||||
This tool expects to be run in a directory containing a [metadata](#metadata)
|
||||
file, and targeting a footage directory containing `.mkv` files (these are
|
||||
really quick and easy to stitch together).
|
||||
## Quick Jump
|
||||
- [Basic Usage](#basic-usage)
|
||||
- [VOD Metadata](#vod-metadata)
|
||||
- [Templates](#templates)
|
||||
|
||||
The template [title](template/title.txt) and
|
||||
[description](template/description.txt) files contain my current format
|
||||
for VOD upload metadata. They use generic Go templates
|
||||
|
||||
## Basic usage
|
||||
|
||||
Initialise a VOD directory:
|
||||
## Basic usage
|
||||
1. Run the tool for the first time to generate a starter configuration file:
|
||||
```sh
|
||||
vod-uploader --init /path/to/media
|
||||
$ vodular
|
||||
New config file created (config.toml). Please edit this file before running again!
|
||||
```
|
||||
|
||||
Upload a VOD, deleting the redundant full VOD export afterwards:
|
||||
2. Edit 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
|
||||
vod-uploader -d /path/to/media
|
||||
$ vodular --init /path/to/vod
|
||||
Directory successfully initialised. Be sure to update metadata.toml before uploading!
|
||||
```
|
||||
|
||||
## Metadata
|
||||
4. Modify your newly-created `metadata.toml` to your liking.
|
||||
|
||||
5. Upload a VOD (Optionally, delete the redundant full VOD export afterwards):
|
||||
```sh
|
||||
$ vodular --deleteAfter /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`.
|
||||
|
||||
## VOD Metadata
|
||||
When `--init`ialising a directory, a `metadata.toml` file is created. This is a
|
||||
plain-text file providing some simple options to customise uploads per
|
||||
directory. See this example file with additional comments:
|
||||
|
|
@ -46,18 +55,33 @@ uploaded = false
|
|||
|
||||
# (Optional) Category details, for additional credits.
|
||||
[category]
|
||||
#
|
||||
# Game titles and generic categories are applicable here, i.e. "Minecraft", "Art", etc.
|
||||
name = 'This Thing'
|
||||
# Valid types: gaming, other (default: other)
|
||||
type = 'other'
|
||||
url = 'https://example.org'
|
||||
```
|
||||
|
||||
## Options
|
||||
- `-h`, --help`: Show a help message.
|
||||
- `-v`, --verbose`: Show verbose logging output.
|
||||
- `--init`: Initialise `directory` as a VOD directory.
|
||||
- `-d`, --deleteAfter`: Deletes the full VOD after upload.
|
||||
- `-f`, --force`: Force uploading the VOD, even if it already exists.
|
||||
## Templates
|
||||
Template files can be created at `templates/title.txt`,
|
||||
`template/description.txt`, and `templates/tags.txt` respectively. These
|
||||
files can use Go's [text template format](https://pkg.go.dev/text/template) to
|
||||
customise VOD metadata on upload.
|
||||
|
||||
You can use the following data in templates:
|
||||
- **`.Title`:** The title of the stream.
|
||||
- **`.Date`:** The date of the stream.
|
||||
- **`.Part`:** The part number of the stream (Good for episodic streams!)
|
||||
- **`.Category`:** Stream category details. (**NOTE:** Wrap usage in `{{if .Category}}` to ensure this field exists first!)
|
||||
- **`.Category.Name`:** The stream category name (Game titles and generic categories are applicable here, i.e. "Minecraft", "Art", etc.)
|
||||
- **`.Category.Type`:** At this time, should only ever be `"gaming"` or `"other"`.
|
||||
- **`.Category.Url`:** A URL relevant to the category. Use this to direct viewers to what you were checking out!
|
||||
|
||||
Some helper functions are also provided:
|
||||
- **`FormatTime <time> <format>`:** Format the provided time (`.Date`) according to a [Go time format](https://go.dev/src/time/format.go).
|
||||
- **`ToLower <text>`:** Convert `text` to all-lowercase.
|
||||
- **`ToUpper <text>`:** Convert `text` to all-uppercase.
|
||||
|
||||
For reference, you can find my personal templates [here](templates/). These should prove helpful if you aren't already familiar with Go's templating language!
|
||||
|
||||
*made with <3 by ari melody, 2026*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue