Giter Site home page Giter Site logo

nyuuzyou / tubo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from whateveritworks/tubo-reworked

0.0 0.0 0.0 3.34 MB

A libre streaming front-end for the web

Home Page: https://tubo.migalmoreno.com

License: GNU Affero General Public License v3.0

JavaScript 1.29% Scheme 0.06% Emacs Lisp 0.78% Clojure 96.26% Dockerfile 0.32% SCSS 1.29%

tubo's Introduction

Tubo

Tubo is a streaming front-end focused on bringing the NewPipe experience to the web. It aims at providing a clean and simple user interface to consume media from your favorite streaming platforms. It currently supports the same services as NewPipe, including YouTube, SoundCloud, Bandcamp, and more.

To retrieve the data, it wraps the excellent NewPipe Extractor library and it exposes the extracted data over a REST API that is consumed by a local re-frame SPA.

Screenshots

tubo_kiosk_light.jpg tubo_channel_light.jpg tubo_stream_playing_light.jpg tubo_queue_light.jpg tubo_settings_light.jpg
tubo_kiosk_dark.jpg tubo_channel_dark.jpg tubo_stream_dark.jpg tubo_queue_dark.jpg tubo_bookmarks_dark.jpg

Features

  • No ads
  • Audio player
  • Media queue
  • Playlists
  • Settings
  • Subscriptions
  • User login

Instances

URL Country
https://tubo.migalmoreno.com (Official) ๐Ÿ‡ช๐Ÿ‡ธ
https://tubo.reallyaweso.me ๐Ÿ‡ฉ๐Ÿ‡ช

If you consider self-hosting Tubo let me know about your instance via the contribution methods. See installation for ways to set up Tubo in your server.

Installation

Packaging

  • Uberjar

    To bundle the whole project into a self-contained uber-jar you need to follow these build steps:

    npm i
    npm run build
    clojure -T:frontend:build uberjar
    

    After the last command is completed, you'll get a path to the uber-jar, which you can run like this:

    java -jar target/tubo-<VERSION>.jar
    
  • Docker

    Alternatively, you can use Docker to set up Tubo. Simply invoke this:

    docker-compose up -d
    
  • Manual

    You can also set up Tubo manually via the GNU Guix package manager. First, download the necessary tooling:

    cd /path/to/tubo
    guix shell
    

    Then, compile the downloader ahead-of-time:

    clojure -M -e "(compile 'tubo.downloader-impl)"
    

    Fetch the front-end dependencies and build the front-end assets.

    npm i
    npm run build
    

    Finally, compile the front-end.

    clojure -M:frontend release tubo
    

    You can now start a local server that listens on port 3000 by running this:

    clojure -M:run
    

    Access the front-end in your browser at http://localhost:3000.

Reverse Proxy

If you want to self-host Tubo and make it publicly accessible you'll need to set up a reverse proxy.

  • Nginx

    server {
        listen 443 ssl http2;
        server_name tubo.<YOUR_DOMAIN>;
        ssl_certificate /etc/letsencrypt/live/tubo.<YOUR_DOMAIN>/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/tubo.<YOUR_DOMAIN>/privkey.pem;
    
        location / {
            proxy_pass http://localhost:3000;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header HOST $http_host;
        }
    }
    

Browser Extension Support

You can manually add any redirect rule based on regex patterns with this extension. Below are some sample configurations to redirect links from supported services to Tubo so you can get a basic idea of how to write manual Redirector rules. Note the serviceId of each service is: YouTube (0), SoundCloud(1), media.ccc.de(2), PeerTube(3), and Bandcamp(4). Replace https://tubo.migalmoreno.com/ in the redirect rule to the instance of your choice.

Description: YouTube video to Tubo stream
Example URL: https://www.youtube.com/watch?v=YE7VzlLtp-4
Include pattern: ^((?:https?://)(?:www.)?youtube.com/(watch\?v.*|shorts/.*))
Redirect to: https://tubo.migalmoreno.com/stream?url=$1
Example result:
https://tubo.migalmoreno.com/stream?url=https://www.youtube.com/watch?v=YE7VzlLtp-4
Pattern type: Regular Expression
Apply to: Main window (address bar)

Description: SoundCloud stream to Tubo stream
Example URL: https://soundcloud.com/unfa/stop-the-panic
Include pattern: ^((?:https?://)(?:www.)?soundcloud.com/.*/.*)
Redirect to: https://tubo.migalmoreno.com/stream?url=$1
Example result:
https://tubo.migalmoreno.com/stream?url=https://soundcloud.com/unfa/stop-the-panic
Pattern type: Regular Expression
Apply to: Main window (address bar)

Description: Bandcamp album to Tubo playlist
Example URL: https://unfa.bandcamp.com/album/suppressed
Include pattern: ^((?:https?://)(.*\.)?bandcamp.com/album/.*)
Redirect to: https://tubo.migalmoreno.com/playlist?url=$1
Example result: https://tubo.migalmoreno.com/playlist?url=https://unfa.bandcamp.com/album/suppressed
Pattern type: Regular Expression
Apply to: Main window (address bar)

Description: PeerTube (Framatube) channel to Tubo channel
Example URL: https://framatube.org/accounts/[email protected]
Include pattern: ^((?:https?://)(?:www.)?framatube.org/accounts/.*)
Redirect to: https://tubo.migalmoreno.com/channel?url=$1
Example result:
https://tubo.migalmoreno.com/channel?url=https://framatube.org/accounts/[email protected]
Pattern type: Regular Expression
Apply to: Main window (address bar)

Description: media.ccc.de search query to Tubo search query
Example URL: https://media.ccc.de/search/?q=37c3
Include pattern: ^(?:https?://)media.ccc.de/search/\?q=(.*)
Redirect to: https://tubo.migalmoreno.com/search?query=$1&serviceId=2
Example result: https://tubo.migalmoreno.com/search?query=37c3&serviceId=2
Pattern type: Regular Expression
Apply to: Main window (address bar)

Redirects many popular services to their alternative front-ends. Has a ton of features and an active community. Tubo is supported by default for YouTube and SoundCloud, so no need to do anything for these. The rest of services are pending as per #884.

A userscript that redirects popular social media platforms to their privacy respecting front-ends.

Similar to Redirector but for the Nyxt browser, you can manually add any redirect rule based on regex patterns with this extension, which allows you to define all redirection rules in a single "router". A sample configuration for YouTube would look like this:

(make-instance 'router:redirector
               :name 'youtube-to-tubo
               :route (match-domain "youtube.com")
               :redirect
               '(("https://tubo.migalmoreno.com/stream?url=\\&" . (".*/watch\\?v.*" ".*/shorts/.*"))
                 ("https://tubo.migalmoreno.com/playlist?list=\\&" . ".*/playlist/.*")
                 ("https://tubo.migalmoreno.com/channel?url=\\&" . ".*/channel/.*")
                 ("https://tubo.migalmoreno.com/search?q=\\1&serviceId=0" . ".*/search\\?q=(.*)")))

Contributing

Feel free to open an issue with bug reports or feature requests. PRs are more than welcome too.

tubo's People

Contributors

migalmoreno avatar nyuuzyou avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.