Configured Youtube Boombox
Lethal Company plugin for creating boombox song packs from YouTube content
Date uploaded | 10 months ago |
Version | 0.3.1 |
Download link | Lordfirespeed-Configured_Youtube_Boombox-0.3.1.zip |
Downloads | 2953 |
Dependency string | Lordfirespeed-Configured_Youtube_Boombox-0.3.1 |
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>
CHANGELOG
This changelog only has changes from 1.2.0 onward.
Version 1.5.0
- [Technical] Rewrote url parsing. Adding new providers in the future will be easier
- [Technical] Removed dependency to command handler now that it's built into LC API
Version 1.4.1
- [Fix] Fixed an issue where pressing your keybind will always open the boombox gui, even if not holding a boombox
Version 1.4.0
- [Addition] Added a configurable keybind to open the menu instead of left click. Defaults to "B"
- While holding a boombox, you will see a GUI in the bottom right that says which button to press
- [Change] Default boombox functionality is restored. Left click will use it like normal instead
- This is for compatibility with mods that add soundtracks directly
- [Change] As long as the host has the mod, no one requires the mod for it to play
- Anyone that doesn't have it won't hear anything, though. But you will be able to play custom songs without everyone having the mod
- [Change] While the GUI is open, you won't be able to look around
- Still looking for a way to disable movement and crouching
- [Fix] Fixed an issue in
youtu.be
links that have share information attached. The previous fix was only foryoutube.com/watch
links
Version 1.3.1
- [Fix] Fixed an issue where only the host was able to start downloading songs
- [Fix] Fixed an issue where songs that "have drm" set to "maybe" in youtube API would cause song info downloading to break
- [Fix] Fixed an issue where songs with odd characters could not be downloaded (#9)
- [Fix] Fixed a potential issue with links that have additional information attached in query parameters
Version 1.3.0
- [Rewrite] Completely rewrote the networking using unity NGO rpcs. Thanks to UnityNetcodeWeaver
- It should now be much more stable
- [Fix] Fixed an issue where the ui would pop up for everyone when the boombox died and would fail to stop the audio
Version 1.2.0
- [Addition] Support for playlists
- [Addition] The boombox volume command will now affect the closest boombox within 15m if you are not holding one
- [Addition] Added
MaxCachedDownloads
config option- Defaults to
10
, when more songs are downloaded the oldest one is deleted
- Defaults to
- [Addition] Added
DeleteDownloadsOnRestart
config option- Defaults to
true
- Defaults to
- [Addition] Added
MaxSongDuration
config option- Defaults to
600
. Value is in seconds - Songs longer than this value won't be downloaded and you will hear whatever was last played through the boombox instead, if anything
- Defaults to