Configured Youtube Boombox
Lethal Company plugin for creating boombox song packs from YouTube content
Last updated | a year ago |
Total downloads | 7692 |
Total rating | 0 |
Categories | Mods BepInEx |
Dependency string | Lordfirespeed-Configured_Youtube_Boombox-0.3.1 |
Dependants | 4 other packages depend on this package |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100Lordfirespeed-YoutubeDLSharp
A simple .NET wrapper library for youtube-dl and yt-dlp
Preferred version: 1.1.0README
Lordfirespeed-Configured_Youtube_Boombox (CYTBB)
A BepInEx plugin for Lethal Company that downloads audio from YouTube for use with Steven's Custom Boombox Music.
Configuration
- Create a subdirectory in your
BepInEx/plugins
directory, e.g.myTracksMod
. - Create a new JSON file called
configured-youtube-boombox-tracks.json
in theBepInEx/plugins/myTracksMod
folder. Paste this template into the file:{ "$schema": "https://github.com/Lordfirespeed/ConfiguredYoutubeBoombox/raw/main/assets/configured-youtube-boombox-tracks.schema.json", "tracks": [ { "youtubeVideoId": "yourVideoIdHere", "trackName": "yourTrackName" } ] }
- Replace the
youtubeVideoId
andtrackName
accordingly. - Specify extra options such as
startTimestamp
,endTimestamp
,volumeScalar
(See here for an example) - Add additional tracks by adding more items to the array
- That's it! CYTBB will download the listed tracks from Youtube into the
BepInEx/Custom Songs/Boombox Tracks
folder when the game is opened.
Tracklist Reference
youtubeVideoId
Required string
. Determines the source YouTube video. See this gist
for how to get YouTube video IDs.
trackName
Required string
. Will be formatted into the .mp3
track's filename once downloaded, cytbb-[trackname]-[youtubeId].mp3
startTimestamp
Optional string
of form h:m:s
. The downloaded audio will be cropped to start at this timestamp.
Seconds can be a decimal quantity and leading zeroes can be omitted. For example:
- ✅
128.95
(128.95 seconds) - ✅
2:08.95
(2 minute 8.95 seconds) - ✅
1:35:20.12
(1 hour, 35 minutes and 20.12 seconds) - ❌
35:94
(can't have >=60 seconds when specifying minutes) - ❌
1:62:30
(can't have >=60 minutes when specifying hours)
endTimestamp
Optional string
of same form as startTimestamp
. The downloaded audio will be cropped to start at this timestamp.
FAQ / Common Issues
Other players are hearing different songs to me!
Desync will occur if players have different tracklists. Make sure all players have the same custom boombox tracks to ensure synchronicity.
I've made configured-youtube-boombox-tracks.json
but nothing is being downloaded!
CYTBB will not search for tracklists recursively. Your tracklist must be inside a folder in BepInEx/plugins
.
For example:
- ✅
BepInEx/plugins/portalRadio/configured-youtube-boombox-tracks.json
- ❌
BepInEx/plugins/portalRadio/youtube-boombox-tracks.json
(wrong filename) - ✅
BepInEx/plugins/pirateSongs/configured-youtube-boombox-tracks.json
- ❌
BepInEx/plugins/pirateSongs/tracks/configured-youtube-boombox-tracks.json
(extratracks
folder) - ❌
BepInEx/plugins/configured-youtube-boombox-tracks.json
(missing subfolder)
What is that $schema
property in the template for?
The $schema
property is a link to a JSON Schema which
provides helpful validation and autocomplete features in supported text editors.
Contributing
You will need to create a ConfiguredYoutubeBoombox/ConfiguredYoutubeBoombox.csproj.user
:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LETHAL_COMPANY_DIR>F:/SteamLibrary/steamapps/common/Lethal Company</LETHAL_COMPANY_DIR>
<TEST_PROFILE_DIR>$(APPDATA)/r2modmanPlus-local/LethalCompany/profiles/Test Configured YT Boombox</TEST_PROFILE_DIR>
<NETCODE_PATCHER_DIR>$(SolutionDir)NetcodeWeaver</NETCODE_PATCHER_DIR>
</PropertyGroup>
<!-- Create your 'Test Profile' using your modman of choice before enabling this.
Enable by setting the Condition attribute to "true". *nix users should switch out `copy` for `cp`. -->
<Target Name="CopyToTestProfile" AfterTargets="PostBuildEvent;NetcodeWeave" Condition="false">
<MakeDir
Directories="$(TEST_PROFILE_DIR)/BepInEx/plugins/Lordfirespeed-Configured_Youtube_Boombox"
Condition="Exists('$(TEST_PROFILE_DIR)') And !Exists('$(TEST_PROFILE_DIR)/BepInEx/plugins/Lordfirespeed-Configured_Youtube_Boombox')"
/>
<Exec Command="copy "$(TargetPath)" "$(TEST_PROFILE_DIR)/BepInEx/plugins/Lordfirespeed-Configured_Youtube_Boombox/"" />
</Target>
</Project>