Skip to content

Commit

Permalink
docs(readme): update
Browse files Browse the repository at this point in the history
  • Loading branch information
Zibbp committed Jan 20, 2023
1 parent 6343921 commit 7856144
Show file tree
Hide file tree
Showing 5 changed files with 177 additions and 0 deletions.
Binary file added .github/eos-logo.webp
Binary file not shown.
3 changes: 3 additions & 0 deletions .github/eos-logo.webp:Zone.Identifier
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[ZoneTransfer]
ZoneId=3
HostUrl=about:internet
74 changes: 74 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
<br />
<div align="center">
<a>
<img src=".github/eos-logo.webp" alt="Logo" width="80" height="80">
</a>

<h2 align="center">Eos</h2>

<p align="center">
Easily import import and view your archived YouTube collection.
</p>
</div>

---

## Images

![eos-full](https://user-images.githubusercontent.com/21207065/213781832-848afbb9-baa6-40bb-b330-904ecbf61dd6.png)

![eos-channel](https://user-images.githubusercontent.com/21207065/213781835-2fee53e6-6fb2-4660-ae3b-78fdd878838a.png)

## Features

- Video Playback
- Includes support for captions
- Description
- Comments
- Search
- Dark Theme
- 100% Offline. Eos exclusively uses your archive collection.

## About

Videos are scanned and imported into Eos. Eos does not touch or alter your archived files, it only reads them.

## Requirements

Your YouTube collection needs to follow the below file tree. [YT-DLP](https://github.com/yt-dlp/yt-dlp/) generate files like this. I'm using [TheFrenchGhostys-Ultimate-YouTube-DL-Scripts-Collection](https://github.com/TheFrenchGhosty/TheFrenchGhostys-Ultimate-YouTube-DL-Scripts-Collection)'s channel script to archive channels.

```
videos/
├── Zibbp/
│ ├── video_1/
│ │ ├── video_1.info.json
│ │ ├── video_1.mkv
│ │ ├── video_1.webp
│ │ └── video_1.vtt
│ ├── video_2/
│ │ ├── video_2.info.json
│ │ ├── video_2.mkv
│ │ ├── video_2.webp
│ │ └── video_2.vtt
│ └── video_2/
├── Asmongold_TV/
│ └── wow_video/
│ ├── wow_video.info.json
│ ├── wow_video.mkv
│ ├── wow_video.webp
│ └── wow_video.vtt
├── AnotherChannel/
│ └── video
└── OtherChannel/
└── video
```

Three files **must** be present in a video's folder.

- Video (mkv or mp4).
- Thumbnail (webp, jpg, png).
- Info.json (JSON file with the video's information include comments).

## Deployment

Use the provided docker-compose.yml file.
53 changes: 53 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
version: "3.3"
services:
eos-api:
container_name: eos-api
image: ghcr.io/zibbp/eos:latest
restart: unless-stopped
environment:
- DB_HOST=eos-db
- DB_PORT=5432
- DB_USER=eos
- DB_PASS=SECRET
- DB_NAME=eos
volumes:
- /path/to/YouTube/videos:/videos:ro
- ./data:/data
depends_on:
- eos-db
ports:
- 4600:4000
eos-frontend:
container_name: eos-frontend
image: ghcr.io/zibbp/eos-frontend:latest
restart: unless-stopped
environment:
- API_URL=http://IP:4600
- CDN_URL=http://IP:4602/videos
ports:
- 4601:3000
eos-nginx:
container_name: eos-nginx
image: nginx
restart: unless-stopped
volumes:
- /path/to/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- /path/to/YouTube/videos:/mnt/videos:ro
ports:
- 4602:8843
eos-db:
image: postgres:14
container_name: eos-db
restart: always
environment:
- POSTGRES_USER=eos
- POSTGRES_DB=eos
- POSTGRES_PASSWORD=SECRET
logging:
options:
max-size: 10m
max-file: "3"
ports:
- 4603:5432
volumes:
- ./postgres-data:/var/lib/postgresql/data
47 changes: 47 additions & 0 deletions nginx.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
worker_processes 4;
error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {

sendfile on;
sendfile_max_chunk 1m;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;

gzip on;

server {
listen 8843;
root /mnt/videos;

add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;

location /videos {
autoindex on;
alias /mnt/videos;

location ~* \.(ico|css|js|gif|jpeg|jpg|png|svg|webp)$ {
add_header Cache-Control "public";
expires 30d;
}
location ~* \.(mkv)$ {
add_header X-Content-Type-Options "nosniff";
add_header Content-Type "video/webm";
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;

}
}
}
}

0 comments on commit 7856144

Please sign in to comment.