Go to file
Adler Neves 2fb0c7fb5e fix: outdated readme 2022-12-11 20:25:34 -03:00
liveq fix: code refactor 2022-12-11 19:24:57 -03:00
static fix: code refactor 2022-12-11 19:24:57 -03:00
.gitignore fix: paths 2022-12-11 11:18:57 -03:00
Makefile fix: code refactor 2022-12-11 19:24:57 -03:00
README.md fix: outdated readme 2022-12-11 20:25:34 -03:00
requirements.txt fix: code refactor 2022-12-11 19:24:57 -03:00

README.md

LiveQ

A single music queue for multi-game rhythm game livestreamers.

Benefits

  • Design all live interactions around a single interface.
  • Gives your viewers a number they can see it's too easy or too hard.

Compatibility

Only the PC edition of these games:

Current

Soon

Maybe later

Given up

  • Ragnaröck VR bult-in songs: it's all packed inside encrypted Unreal asset bundles.
  • Beat Saber VR bult-in songs: it's all packed inside Unity asset bundles.

Won't even try

Intended architecture

Some games have a built-in queues, but they are not cross-game. That requires an external piece of software to do so:

Streamer side

+----------+ +--------------------+
|  Twitch  | | Streamer's Website |
+----------+ +--------------------+
      ^                ^
      |      ......... | ..........
      |      :    +------------+
     /       :    | NGINX Rev. |
    /        :    |   Proxy    |
   /         :    +------------+
  |  Internet:Server       ^
. | .........:............ | ......
  |     Streamer's         |
  |        PC              |
  |                        |
+-------+            +------------+
|  OBS  |            | SSH Tunnel |
+-------+            +------------+
   ^  ^                     |
   |  |                     |
   |  +-----------+         |
   |              |         |
 +------+   +------------+  |  +-----------+
 | Game |   | Song Queue |<-+->|  Browser  |
 +------+   |  Web View  |  |  | Admin Tab |
    |       +------------+  |  +-----------+
    v                       |
+-------+            +--------------+
| Game  |<-----------| LiveQ Server |
| Files |            |   Process    |
+-------+            +--------------+

In order to close the queue, just close the SSH Tunnel.

Active Viewer Side

+----------------+ +-------------------+
| Stream App/Tab | | Queue Request Tab |
+----------------+ +-------------------+
      |                |
      v                v
+----------+ +--------------------+
|  Twitch  | | Streamer's Website |
+----------+ +--------------------+

Alt+Tab or equivalent.

Your view count isn't expected to decrease on mobile due to Picture in Picture.

Passive Viewer

+----------------+
| Stream App/Tab |
+----------------+
      |
      v
+----------+
|  Twitch  |
+----------+

Files not included

  • config.ini

    [app]
    root=https://live.yourdomain.com
    lang=en-us
    title=Joe`s Playlist
    description=Music queue for many rhythm games
    streamer=twitch:yourlogin
    maxqueue=8  # n songs as total in the queue
    maxbyviewer=2  # m unplayed songs per viewer at a time
    obschangekeepms=5000  # negative for an always-displaying overlay
    
    [modules]
    osuddr4k=1  # 1 means enabled and visible for selection
    osumania4k=0  # 0 means disabled, but visible for selection (not validated by the backend)
    osumania7k=h  # h means hidden from the UI selection (not validated by the backend)
    osutaiko=h
    osucatch=h
    osustd=h
    ragnarock=h
    
    [difficulties]
    osuddr4k=0-1.4
    osumania4k=1.2-2.4
    osumania7k=0-1.5
    osutaiko=0-1.5
    osucatch=0-1.5
    osustd=3.25-4.2
    ragnarock=4-8.5
    
    [localization] # Translate your UI
    search=Buscar
    login_with_twitch=Entrar com Twitch
    logout_username=Sair de
    title=Título
    artist=Artista
    mapper=Mapeador
    queue_add=Adicionar à fila
    queue_remove=Remover da fila
    queue_played=Marcar como jogado
    queue_unplayed=Marcar para rejogar
    playqueue=Fila de jogo
    queue=Fila
    done=Feito
    done_delete=Removido
    not_authenticated=Você não entrou
    done_add=Adicionado
    token_expired=Seu login expirou
    could_not_validate_credentials=Credenciais de login inválidas
    not_found=Não encontrado
    already_in_queue=Já está na fila
    queue_full=Fila cheia
    cannot_remove_others=Não é possível remover item de outro usuário
    cannot_remove_played=Não é possível remover itens já jogados
    only_streamer_can_mark_played=Apenas o streamer poded marcar como jogado
    done_mark_unplayed=Marcado para rejogar
    done_mark_played=Marcado como jogado
    shuffle=Embaralhar
    download=Baixar
    preview=Ouvir prévia
    stop_preview=Parar prévia
    all_variants=Todas as variantes
    osumania1k=osu!mania 1k single
    osumania2k=osu!mania 2k single
    osumania3k=osu!mania 3k single
    osumania4k=osu!mania 4k single
    osumania5k=osu!mania 5k single
    osumania6k=osu!mania 6k single
    osumania7k=osu!mania 7k single
    osumania8k=osu!mania 8k single
    osumania9k=osu!mania 9k single
    osumania10k=osu!mania 5k double
    osumania12k=osu!mania 6k double
    osumania14k=osu!mania 7k double
    osumania16k=osu!mania 8k double
    osumania18k=osu!mania 9k double
    osustd=osu!
    osutaiko=osu!taiko
    osucatch=osu!catch
    osuddr4k=Dance Mat (osu!mania 4k)
    ragnarock=Ragnaröck VR
    beatsaber=Beat Saber VR
    outfoxdance=dance @ Project OutFox
    outfoxpump=pump @ Project OutFox
    outfoxsmx=smx @ Project OutFox
    outfoxtechno=techno @ Project OutFox
    outfoxbemu=bemu @ Project OutFox
    outfoxpomu=pomu @ Project OutFox
    outfoxgddm=gddm @ Project OutFox
    outfoxgdgf=gdgf @ Project OutFox
    outfoxgh=gh @ Project OutFox
    outfoxtaiko=taiko @ Project OutFox
    outfoxbongo=bongo @ Project OutFox
    outfoxpara=para @ Project OutFox
    outfoxkbx=kbx @ Project OutFox
    outfoxez2=ez2 @ Project OutFox
    outfoxds3ddx=ds3ddx @ Project OutFox
    outfoxmaniax=maniax @ Project OutFox
    outfoxstepstage=stepstage @ Project OutFox
    outfoxkickbox=kickbox @ Project OutFox
    
    
  • config.nt.ini

    [paths]
    osu=D:\path\to\osu
    ragnarock=D:\path\to\ragnarock\CustomSongs
    
  • config.posix.ini

    [paths]
    osu=/path/to/osu
    ragnarock=/path/to/ragnarock/CustomSongs
    
  • tokens.ini

    [jwt]
    seed=00000000-0000-4000-0000-000000000000
    
    [twitch]
    client_id=123456789012345678901234567890
    

    replace the client_id placeholder with the ones copied from the Developer Console

    generate your own seed using UUID4 or similar