Skip to main content
icon

songs-to-youtube

Convert audio files to videos and upload them to YouTube automatically.

Example

Features

  • Extracts album covers from audio files
  • Extracts other metadata which can be used in template strings for the video title/description etc.
  • Can concatenate songs to upload an album as a single video
  • Can upload an album as a playlist of multiple videos
  • Does not use official YouTube API; can upload up to 50-100 videos per day
  • Does not re-encode audio before uploading

Pre-installation

  • FFmpeg version 6.1+ is required to convert songs into videos
  • Firefox and geckodriver (or Chrome and Chromedriver) are required to upload to YouTube
  • Make sure FFmpeg and geckodriver/chromedriver are both in your PATH environment variable
  • If you have a package manager you can install through that instead. e.g. with Scoop:
scoop install ffmpeg
scoop install geckodriver

Installation

PyInstaller binary

Download the latest release for your platform here, unzip the archive, and run the songs-to-youtube executable.

Install from PyPI

$ pip install songs-to-youtube
$ songs-to-youtube

Run from source

  1. Have Python version 3.10-3.11 installed, and poetry
  2. Download the source code
  3. Install required Python modules with poetry install
  4. Run the program with poetry run songs-to-youtube

Installing certificates

On your first run you may get an error which says Was not able to load https://youtube.com. Have you installed the certificate at {cert_path} ?. If this happens you should follow the instructions at https://docs.mitmproxy.org/stable/concepts-certificates/#installing-the-mitmproxy-ca-certificate-manually to install the certificate at the given path.

Notes

  • Before you upload any videos, you must sign in to a YouTube account (File > Settings > Add new user)
  • You can drag and drop songs on the main window to add them to the queue. The order in which they are uploaded goes from top to bottom
  • You can also drag and drop images onto a song's current album art to change it
  • Make sure the output file extension stays as .mkv
  • The characters < and > will be replaced with fullwidth versions in titles and descriptions, as YouTube does not allow these symbols
  • Video titles and descriptions longer than YouTube allows will be truncated (100, and 5000 characters respectively)

Template strings

Write ~{key} in any text field and it will be replaced with an appropriate value. If no value exists for that key, it will not be replaced. To see the available keys, right click on an album or song and select "View metadata." Here are some useful values:

Song metadata

  • ~{song_dir} - directory of the input audio file
  • ~{song_file} - file name of the input audio
  • ~{album}
  • ~{artist}
  • ~{title}
  • ~{date}
  • ~{comment}
  • ~{description}

Album metadata

  • ~{album_dir} - directory of the album
  • ~{timestamps} - special key that generates timestamps based on song lengths. they will only be generated when concatenating songs into a single video
  • ~{song.albumartist} - name of the album's artist (usually) The first song of an album can have its keys accessed by the album by prefixing the key with song.

Operators

Optional keys / preference ordering

A template string of the form ~{a|b|c} will be replaced with the value of a if it exists, otherwise the value of b if it exists, and so on. Keys may not contain the character |

String literals

A template string of the form ~{a|"hello"} will be replaced with the value for a if it exists, otherwise it will be replaced with hello. String literals may not contain the character |. They may contain " though, e.g. ~{""hello""} will be replaced with "hello"

Safe filenames

Any key can be surrounded by < and > and the value of that key will be made safe to use as a filename. e.g. ~{<song.album>}.mkv where song.album is ~{:¬Þ} will be replaced with ____Þ_.mkv

Metadata

Release files for songs-to-youtube 0.13.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for songs-to-youtube 0.13.1
File Size Uploaded
songs_to_youtube-0.13.1.tar.gz 99.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for songs-to-youtube 0.13.1
File Interpreter ABI Platform
songs_to_youtube-0.13.1-py3-none-any.whl Python 3 none any Details

Total release size: 208.7 kB

Release files / songs_to_youtube-0.13.1.tar.gz

Download URL songs_to_youtube-0.13.1.tar.gz
Size 99.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c9e9757d5e2ffe0f64c6f76dc16b05fa00c9736faaffd260e90ca41f5916a852
BLAKE2b-256 checksum
How to use checksums
3f00a3915aaad2aa1cc485f2a821c79c0823e98484f976da395a8bfa23457006
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.11.0 Linux/6.5.0-1025-azure

Release files / songs_to_youtube-0.13.1-py3-none-any.whl

Download URL songs_to_youtube-0.13.1-py3-none-any.whl
Size 109.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3a865ee86e65a4961ee2a002b277e55a270fef38b141ebb5e1b0866626345693
BLAKE2b-256 checksum
How to use checksums
4efaf3358644e99ad3627f2fc0da27c420e20c7c857330b7f65415a88c81f2c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.11.0 Linux/6.5.0-1025-azure

Release history Release notifications | RSS feed

This release

0.13.1 This release

2 release files

0.13.0

2 release files

0.12.9

2 release files

0.12.8

2 release files

0.12.7

2 release files

0.12.6

2 release files

0.12.5

2 release files

0.12.3

2 release files

0.12.2

2 release files

0.12.1

2 release files

0.12.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page