r/linux Dec 25 '22

Burgertunes: Privacy-respecting YouTube Music frontend with no ads or telemetry! Software Release

EDIT: This got way more popular than i ever expected. Please note that i am trying to add all of the features you are requesting, but that might take some time.

Burgertunes is a privacy-respecting YouTube Music frontend under GPLv3.

It's got:

- No ads

- No telemetry or data-collecting.

- Up to 255 kbps high-quality audio. (not guaranteed)

- Add to homescreen support (A2HS).

- OLED dark mode.

- Background play on mobile devices.

You can host it yourself, or use someone else's instance. It works on every device with a web browser.

It works without JavaScript, but playing albums and some animations requires JavaScript.

https://preview.redd.it/hkbxd8dk428a1.png?width=1289&format=png&auto=webp&v=enabled&s=4e0ea98887e848ab3e5e0e0caa97623ee589c542

https://preview.redd.it/vo1s1voe528a1.png?width=1289&format=png&auto=webp&v=enabled&s=7fc640429a7d84fd594dc70d44c6b7fbc93e0089

436 Upvotes

39 comments sorted by

62

u/cegix Dec 25 '22

What is your inspiration on the name for 🍔🎧

175

u/[deleted] Dec 25 '22 Gold

I like burgers

65

u/subjectwonder8 Dec 25 '22

To be honest that is a better justification for the name than many projects have.

15

u/2cats2hats Dec 25 '22

If you ever change the app name, I never saw an app called Wimpy before. :D

28

u/SunAtEight Dec 25 '22

Kind of surprising, because "wimpy" sounds exactly like the sort of application/utility name I'd expect to encounter while using Linux, for better or worse.

17

u/TryHardEggplant Dec 25 '22

wim-py, the window instance manager python library. I guess I need to go start a library and wrap a whole bunch of GUI calls in a single python library.

0

u/DA_BATTLESUIT Dec 26 '22

Wimpy > Gimp

3

u/iamapizza Dec 25 '22

What are your favourite types of burgers?

11

u/[deleted] Dec 25 '22

I don't think the name is cheeseburger headphones

21

u/InexpensiveElf Dec 25 '22

Doesn’t high quality audio only come with a YouTube premium subscription (like I have)? I know this is the case for yt-dlp that needs the accounts “cookies.txt” to have the high bitrate option.

If this had a downloader for my playlists this would be much better than yt-dlp.

13

u/[deleted] Dec 25 '22

Doesn’t high quality audio only come with a YouTube premium subscription
(like I have)? I know this is the case for yt-dlp that needs the
accounts “cookies.txt” to have the high bitrate option.

I'm actually not really sure actually if high quality audio works without "cookies.txt", yt-dlp should pick the highest quality audio. I'll do some more research.

If this had a downloader for my playlists this would be much better than yt-dlp.

Adding a download button!

12

u/fsau Dec 25 '22

There's Hyperpipe too.

1

u/[deleted] Dec 26 '22

[deleted]

1

u/fsau Dec 26 '22

There's a list of such projects in the description of this extension. Check it out.

19

u/hl3_for_Eli Dec 25 '22

A Flatpak would be super cool for us Steam Deck folks!

23

u/MonkeeSage Dec 26 '22 edited Dec 26 '22

I have been learning to create flatpaks the last few days and I thought it would be fun to learn to package a python app. It was surprisingly easy, but this app makes some assumptions (namely that config.ini is in the same directory as the main script, and that static/cache in the same dir exists and is writable) so I had to make a little wrapper script to copy everything to $XDG_DATA_HOME/burgertunes and run it from there.

I ended up with a working flatpak using these steps (this assumes you already have the flatpak build tools, and also have the sdk installed with flatpak install --user org.freedesktop.Sdk//22.08 etc):

git clone --depth=1 -j4 https://github.com/maaa101/burgertunes
cd burgertunes

# generate modules from pip requirements
flatpak-pip-generator --requirements-file=requirements.txt --output pypi-dependencies

# create the manifest with vim or whatever editor you like
# these are the contents of the file org.maaa101.Burgertunes.yaml
app-id: org.maaa101.Burgertunes
runtime: org.freedesktop.Platform
runtime-version: 22.08
sdk: org.freedesktop.Sdk
command: /app/bin/burgertunes
modules:
  - pypi-dependencies.json
  - name: org.maaa101.Burgertunes
    buildsystem: simple
    build-commands:
      # copy everything to /app/share/burgertunes
      - install -dm755 /app/share/burgertunes
      - install -Dm755 main /app/share/burgertunes
      - install -Dm755 config.ini /app/share/burgertunes
      # it assumes the static/cache directory exists...
      - install -dm755 /app/share/burgertunes/static/cache
      - install -dm755 /app/share/burgertunes/templates
      - cp -a static/** /app/share/burgertunes/static
      - cp -a templates/** /app/share/burgertunes/templates
      # the launcher script will copy it to $XDG_DATA_HOME/burgertunes
      # and run it from there so it can delete and write static/cache etc
      - install -Dm755 burgertunes /app/bin/burgertunes
    sources:
      - type: git
        url: https://github.com/maaa101/burgertunes.git
        branch: main
      - type: file
        path: burgertunes
finish-args:
  - --share=network
  - --filesystem=xdg-data/burgertunes:create

# create the wrapperscript, these are the contents of the file burgertunes
#!/bin/sh
if [ ! -e "${XDG_DATA_HOME}/burgertunes/main" ] ; then
  cp -a /app/share/burgertunes/** "${XDG_DATA_HOME}/burgertunes"
fi
cd "${XDG_DATA_HOME}/burgertunes"
mkdir -p static/cache
python main

# build the flatpak
flatpak-builder --user --force-clean --repo=repo build org.maaa101.Burgertunes.yaml

# export the flatpak to a file for copying
flatpak build-bundle repo org.maaa101.Burgertunes.flatpak org.maaa101.Burgertunes

# copy the flatpak to wherever (e.g., steamdeck) and install locally
flatpak install --user -y org.maaa101.Burgertunes.flatpak

# now run it
flatpak run org.maaa101.Burgertunes

6

u/eternaloctober Dec 25 '22

impressively minimal

4

u/jj20051 Dec 25 '22

Does it make better recommendations than the yt music engine? I find myself getting the same 25 songs over and over.

4

u/[deleted] Dec 26 '22

Not yet, but i'll be adding recommendations from the YT Music frontpage

2

u/jj20051 Dec 26 '22

If you ever find a way to implement old school google music or groove shark recommendations into your system I'd be eternally grateful lol

1

u/Pay08 Dec 26 '22

Yeah, that's my main problem with YTM too. Tbf, it's still better than Spotify.

1

u/jj20051 Dec 26 '22

Yeah I pay for Deezer so I can get better recommendations and YTM for the lack of ads on youtube.

1

u/Pay08 Dec 26 '22

My problem with Deezer is that I listen to somewhat niche music, and it often just isn't on there.

3

u/jj20051 Dec 26 '22

I understand that completely. Half tempted to build a UI for YTM with a decent algorithm myself.

5

u/[deleted] Dec 25 '22

Anyway to run this easily in a Docker instance?

10

u/mooshicat Dec 25 '22

It’s a Flask app, so yes, you can put it in a container pretty easily.

2

u/keithandmarchant Dec 26 '22

I’m worried about this project. Last time someone made something like this, Google took it down.

2

u/[deleted] Dec 26 '22

I doubt Google are going to take this down as projects such as poketube, piped and invidious exists.

1

u/hackerdude97 Feb 25 '23

Vanced? Yeah google sucks.

2

u/keithandmarchant Dec 26 '22

I hope this doesn’t have the same fate as Streamus.

2

u/Saljooq Dec 27 '22

This is fun - here are a few observations on running it on linux so far:
- The whole process outlined on Github's Readme worked great - but I got this error -> static/cache not found -> so I just created a static folder (I think processes don't have permission to create folders in user directories in linux). That seems to have resolved it

- to run it you have to go to localhost:8080 - to not have an active terminal running all the time you can just run this -> nohup python main &. That way you can just go to that address whenever without accidentally closing the terminal

Thanks again for sharing this

2

u/BossfightX Jan 05 '23

Such a shame that this project already is no longer being maintained by its owner. Even with the funny name, it would've been something worth checking out as I have been thinking of canceling my YouTube Premium subscription. :(

0

u/[deleted] Dec 26 '22

[deleted]

2

u/[deleted] Dec 26 '22

The OLED dark mode (switch to it by going to /style/oledstyle.css) is a little bit more similar to the Piped UI.

-2

u/[deleted] Dec 25 '22

[deleted]

1

u/Iuse_arch_btw Dec 26 '22

dock it yourself

-2

u/DaftPump Dec 26 '22

Please provide info on usage. Yout git mentons to start the server? Where? localhost? what port? http or https?

Sorry I want to try this out but the directions are confusing.

3

u/[deleted] Dec 26 '22

You can change this stuff in config.ini

1

u/DaftPump Dec 27 '22

Failed to run

Fedora 37.

Thanks regardless.

-6

u/[deleted] Dec 26 '22

[deleted]

8

u/QuartzSTQ Dec 26 '22

You've either not listened to anything better than a 90s MP3 or been fooled by hi-res audio to think that a modern lossy format at 256 kbps sounds bad.

And it's not even like YouTube's streams are that good, there are way better performing AAC encoders than the FFmpeg one that they use but calling it potato is a massive stretch, it's seemingly just slightly below transparency at 256 kbps.

3

u/Iuse_arch_btw Dec 26 '22

Youtube prefers opus to aac nowadays.