Add ViewTube (#323)

* Add Viewtube

* Test Config

* Update Names

* Updates Secure

* Update docker-compose.yml

* Config Placeholder

* Update docker-compose.yml

* Final Changes

* Update Viewtube
This commit is contained in:
DrMxrcy 2023-08-28 20:45:36 -04:00 committed by GitHub
parent 22ba91617a
commit d77fc6d418
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 163 additions and 0 deletions

16
apps/viewtube/config.json Normal file
View File

@ -0,0 +1,16 @@
{
"$schema": "../schema.json",
"name": "ViewTube",
"port": 8180,
"available": true,
"exposable": true,
"id": "viewtube",
"tipi_version": 1,
"version": "0.12.2",
"categories": ["media"],
"description": "The open source, privacy-conscious way to enjoy your favorite YouTube content.",
"short_desc": "The open source, privacy-conscious way to enjoy your favorite YouTube content.",
"author": "ViewTube",
"source": "https://github.com/ViewTube/viewtube",
"form_fields": []
}

View File

@ -0,0 +1,66 @@
version: '3'
services:
viewtube:
restart: unless-stopped
container_name: viewtube
image: mauriceo/viewtube:0.12.2
depends_on:
- viewtube-mongodb
- viewtube-redis
volumes:
- ${APP_DATA_DIR}/data/viewtube:/data
environment:
- VIEWTUBE_DATABASE_HOST=viewtube-mongodb
- VIEWTUBE_REDIS_HOST=viewtube-redis
- VIEWTUBE_SECURE=true
- VIEWTUBE_CORS_ORIGIN=${APP_PROTOCOL:-http}://${APP_DOMAIN}
# - VIEWTUBE_YOUTUBE_COOKIE=
# - VIEWTUBE_YOUTUBE_IDENTIFIER=
ports:
- ${APP_PORT}:8066
networks:
- tipi_main_network
labels:
# Main
traefik.enable: true
traefik.http.middlewares.viewtube-web-redirect.redirectscheme.scheme: https
traefik.http.services.viewtube.loadbalancer.server.port: 8066
# Web
traefik.http.routers.viewtube-insecure.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.viewtube-insecure.entrypoints: web
traefik.http.routers.viewtube-insecure.service: viewtube
traefik.http.routers.viewtube-insecure.middlewares: viewtube-web-redirect
# Websecure
traefik.http.routers.viewtube.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.viewtube.entrypoints: websecure
traefik.http.routers.viewtube.service: viewtube
traefik.http.routers.viewtube.tls.certresolver: myresolver
# Local domain
traefik.http.routers.viewtube-local-insecure.rule: Host(`viewtube.${LOCAL_DOMAIN}`)
traefik.http.routers.viewtube-local-insecure.entrypoints: web
traefik.http.routers.viewtube-local-insecure.service: viewtube
traefik.http.routers.viewtube-local-insecure.middlewares: viewtube-web-redirect
# Local domain secure
traefik.http.routers.viewtube-local.rule: Host(`viewtube.${LOCAL_DOMAIN}`)
traefik.http.routers.viewtube-local.entrypoints: websecure
traefik.http.routers.viewtube-local.service: viewtube
traefik.http.routers.viewtube-local.tls: true
viewtube-mongodb:
container_name: viewtube-mongodb
restart: unless-stopped
image: mongo:5
networks:
- tipi_main_network
volumes:
- ${APP_DATA_DIR}/data/db:/data/db
viewtube-redis:
container_name: viewtube-redis
restart: unless-stopped
image: redis:7
networks:
- tipi_main_network
volumes:
- ${APP_DATA_DIR}/data/redis:/data

View File

@ -0,0 +1,44 @@
ViewTube is an alternative YouTube frontend that lets you watch, search and discover YouTube videos without ads or tracking. It's built to be mobile and desktop friendly, with dark and light themes, and a touch-friendly video player with gestures. You can create an account separately from YouTube, read comments, watch playlists, subscribe to channels and receive push notifications for new uploads It's built using [Nuxt](https://nuxt.com/) and [Nest](https://nestjs.com/).
You can find the documentation at [viewtube.wiki](https://viewtube.wiki)
## Features
- Watch videos without ads or tracking
- Built from the ground up to be mobile and desktop friendly
- Dark and light themes
- Touch friendly video player with gestures
- Supports loop, speed, autoplay and volume
- Create an account separately from Youtube
- Read comments
- Search for videos
- Watch playlists
- Subscribe to channels and see their latest uploads
- Receive push notifications for subscribed channels
- Integrated SponsorBlock support
## Where does ViewTube get the data from?
ViewTube does not use the official Youtube API. It instead scrapes the data from the website using a combination of custom built tools and the following open source libraries.
- [node-ytdl-core](https://github.com/fent/node-ytdl-core)
- [node-ytsr](https://github.com/TimeForANinja/node-ytsr)
- [node-ytpl](https://github.com/TimeForANinja/node-ytpl)
- [yt-comment-scraper](https://github.com/FreeTubeApp/yt-comment-scraper)
- [yt-channel-info](https://github.com/FreeTubeApp/yt-channel-info)
## Screenshots
### Homepage
[![Screenshot-Homepage](https://camo.githubusercontent.com/7ca1b34ee39d918f86a7043a3ffae08b574d5630975255eb8840536e7e169248/68747470733a2f2f692e6962622e636f2f476b35744b51372f6c78743179306d6b2e6a7067)](https://camo.githubusercontent.com/7ca1b34ee39d918f86a7043a3ffae08b574d5630975255eb8840536e7e169248/68747470733a2f2f692e6962622e636f2f476b35744b51372f6c78743179306d6b2e6a7067)
### Video
[![Screenshot-Video](https://camo.githubusercontent.com/07ecf2f4a9e61eb326d2125375f674020cbf97b1a998defdeb21fd8d1aa6f8f7/68747470733a2f2f692e6962622e636f2f52544c327633662f6732656a663777662e6a7067)](https://camo.githubusercontent.com/07ecf2f4a9e61eb326d2125375f674020cbf97b1a998defdeb21fd8d1aa6f8f7/68747470733a2f2f692e6962622e636f2f52544c327633662f6732656a663777662e6a7067)
### Channel
[![Screenshot-Channel](https://camo.githubusercontent.com/b50d3f852326d5436cc32507eb2ee48d036092ae1cba3bc61485a8a4661d0ffd/68747470733a2f2f692e6962622e636f2f68396d663179642f366a3435616f35722e6a7067)](https://camo.githubusercontent.com/b50d3f852326d5436cc32507eb2ee48d036092ae1cba3bc61485a8a4661d0ffd/68747470733a2f2f692e6962622e636f2f68396d663179642f366a3435616f35722e6a7067)

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,37 @@
## (Optional) Use cookies from a real account
You can provide your own cookies to circumvent any Rate Limiting Issue.
### YouTube cookie
- Navigate to YouTube in a web browser
- Log in, preferrably with a separate account you don't use often
- Open up the dev tools console
- Type `document.cookie`
- Copy the entire response into the `VIEWTUBE_YOUTUBE_COOKIE` environment variable
### YouTube identifier
- Navigate to a video
- Right click and click "view source"
- Press CTRL+F to search for "ID\_TOKEN"
- Copy this value into the `VIEWTUBE_YOUTUBE_IDENTIFIER` environment variable
```
"form_fields": [
{
"type": "text",
"label": "Youtube Cookie",
"hint": "Optional, Read below",
"required": false,
"env_variable": "VIEWTUBE_YOUTUBE_COOKIE"
},
{
"type": "text",
"label": "Youtube Identifier",
"hint": "Optional, Read below",
"required": false,
"env_variable": "VIEWTUBE_YOUTUBE_IDENTIFIER"
}
]
```