You are viewing a potentially older version of this package. View all versions.
Lordfirespeed-Configured_Youtube_Boombox-0.3.1 icon

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-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100
Lordfirespeed-YoutubeDLSharp-1.1.0 icon
Lordfirespeed-YoutubeDLSharp

A simple .NET wrapper library for youtube-dl and yt-dlp

Preferred version: 1.1.0

README

Lordfirespeed-Configured_Youtube_Boombox (CYTBB)

GitHub Build Status Thunderstore Version Thunderstore Downloads

A BepInEx plugin for Lethal Company that downloads audio from YouTube for use with Steven's Custom Boombox Music.

Configuration

  1. Create a subdirectory in your BepInEx/plugins directory, e.g. myTracksMod.
  2. Create a new JSON file called configured-youtube-boombox-tracks.json in the BepInEx/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"
        }
      ]
    }
    
  3. Replace the youtubeVideoId and trackName accordingly.
  4. Specify extra options such as startTimestamp, endTimestamp, volumeScalar (See here for an example)
  5. Add additional tracks by adding more items to the array
  6. 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 (extra tracks 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 &quot;$(TargetPath)&quot; &quot;$(TEST_PROFILE_DIR)/BepInEx/plugins/Lordfirespeed-Configured_Youtube_Boombox/&quot;" />
    </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 for youtube.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
  • [Addition] Added DeleteDownloadsOnRestart config option
    • Defaults to true
  • [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