Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump @xmldom/xmldom from 0.7.5 to 0.7.8 in /webapp #104

Open
wants to merge 580 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
580 commits
Select commit Hold shift + click to select a range
4b98b00
Video deletions working, WIP user permission control
horahoradev Apr 23, 2022
96437b6
Administrator user permission controls
horahoradev Apr 23, 2022
8ae4a78
userservice reset password proto
horahoradev Apr 23, 2022
da4f1dc
Password reset working
horahoradev Apr 24, 2022
80749c7
Gluetun http to wireguard proxy setup
horahoradev Apr 24, 2022
2411796
Bump async from 2.6.3 to 2.6.4 in /webapp
dependabot[bot] Apr 24, 2022
9745120
Merge pull request #14 from horahoradev/dependabot/npm_and_yarn/webap…
horahoradev Apr 24, 2022
24b9145
Bump axios from 0.21.1 to 0.21.2 in /webapp
dependabot[bot] Apr 24, 2022
b2d2a98
Bump moment from 2.29.1 to 2.29.3 in /webapp
dependabot[bot] Apr 24, 2022
80d241d
Bump nanoid from 3.1.20 to 3.3.3 in /webapp
dependabot[bot] Apr 24, 2022
a59d190
Bump minimist from 1.2.5 to 1.2.6 in /webapp
dependabot[bot] Apr 24, 2022
1d42a0c
Downloads default to japanese
horahoradev Apr 24, 2022
f78453e
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev Apr 24, 2022
8b69f21
Merge pull request #16 from horahoradev/dependabot/npm_and_yarn/webap…
horahoradev Apr 24, 2022
7c4a37f
Merge pull request #11 from horahoradev/dependabot/npm_and_yarn/webap…
horahoradev Apr 24, 2022
34c3d6b
Merge pull request #10 from horahoradev/dependabot/npm_and_yarn/webap…
horahoradev Apr 24, 2022
39fe51f
Merge pull request #15 from horahoradev/dependabot/npm_and_yarn/webap…
horahoradev Apr 24, 2022
42ff449
Bump url-parse from 1.5.1 to 1.5.10 in /webapp
dependabot[bot] Apr 24, 2022
c6d236f
Fix recommender system defaults
horahoradev Apr 24, 2022
f2af55f
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev Apr 24, 2022
be7b035
Start of comment implementation for react
horahoradev Apr 25, 2022
265c143
Static images
horahoradev Apr 25, 2022
e6d8aef
comment upvotes and state management
horahoradev Apr 25, 2022
d46edeb
Merge pull request #17 from horahoradev/dependabot/npm_and_yarn/webap…
horahoradev Apr 25, 2022
bfaa782
Commented out delete for now
horahoradev Apr 30, 2022
268dd7b
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev Apr 30, 2022
a7e3df9
Fix storage class
horahoradev Apr 30, 2022
835cf3f
Added important transcoding optimization
horahoradev Apr 30, 2022
d5fa38f
Added 5m backoff to transcoding
horahoradev Apr 30, 2022
88ac004
proto bump for archival deletion
horahoradev Apr 30, 2022
d89ed4c
proto bump, deletion grpc endpoint
horahoradev Apr 30, 2022
9d8f8af
Deletion requests work
horahoradev Apr 30, 2022
734f3bb
Recommender result caching
horahoradev Apr 30, 2022
858c574
Audit API for userservice
horahoradev May 1, 2022
35b08e0
proto bump, audit stuff mostly working
horahoradev May 1, 2022
89dd03b
Added uncommitted audit source files
horahoradev May 1, 2022
0f5a4de
Audit logs working
horahoradev May 1, 2022
64035aa
Update README.md
horahoradev May 1, 2022
cf6c74b
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev May 1, 2022
0ad241a
Improved README, archival page
horahoradev May 1, 2022
97e8f1e
Update README.md
horahoradev May 1, 2022
b562663
Update README.md
horahoradev May 1, 2022
6e65b2c
Update README.md
horahoradev May 1, 2022
60c51e0
Update README.md
horahoradev May 1, 2022
e501056
Update README.md
horahoradev May 1, 2022
9439f7f
Update README.md
horahoradev May 1, 2022
e7c64bf
Removed backup service temporarily
horahoradev May 1, 2022
2943d14
Add password-resets link to dropdown
horahoradev May 1, 2022
f8dc32b
Fallback for no tags
horahoradev May 1, 2022
1942ef4
Fix comment overflow
horahoradev May 1, 2022
f33c6e1
Update README.md
horahoradev May 2, 2022
ed78bbc
Update README.md
horahoradev May 2, 2022
ccfdcda
Update README.md
horahoradev May 2, 2022
22fec55
Privacy policy, TOS placeholders
horahoradev May 4, 2022
799f557
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev May 4, 2022
32a1f38
Update README.md
horahoradev May 4, 2022
673f2cd
Fix recommendation ordering
horahoradev May 5, 2022
bdc5824
Default sort order, fix video counts
horahoradev May 5, 2022
e935994
user audits
horahoradev May 5, 2022
792455f
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev May 5, 2022
7ef9bd5
Audit fix
horahoradev May 5, 2022
6ce64b0
Update README.md
horahoradev May 5, 2022
8978d71
Update README.md
horahoradev May 6, 2022
4d45938
Update README.md
horahoradev May 6, 2022
1a718f5
Basic nginx setup, no caching yet
horahoradev May 6, 2022
606a64d
Fix README
horahoradev May 6, 2022
bbad910
minor cleanup
horahoradev May 7, 2022
1ff5aff
SQL injection clarification
horahoradev May 7, 2022
566edaf
Scheduler dockerfile remove animelover1984 ytdl
horahoradev May 7, 2022
cbea89d
Fix CI tests
horahoradev May 7, 2022
11396d7
Drastic performance improvements for video metadata retrieval, move t…
horahoradev May 7, 2022
650f755
Exact matches only
horahoradev May 7, 2022
c07e433
Attempted optimization
horahoradev May 7, 2022
bb36318
Query optimization
horahoradev May 7, 2022
8413030
Optimizations
horahoradev May 7, 2022
191b77e
Recommender optimizations
horahoradev May 7, 2022
9b15077
Recommender bugfixes
horahoradev May 7, 2022
10ab749
Fix retrieval
horahoradev May 7, 2022
e448d7b
Recommender tweak
horahoradev May 7, 2022
04c2620
Recommender fix
horahoradev May 7, 2022
879d900
he does it again
horahoradev May 7, 2022
8bd14eb
Title idx
horahoradev May 7, 2022
771bca6
README improvements
horahoradev May 7, 2022
787bcea
npm upgrades, add fallback recommendations
horahoradev May 8, 2022
1a16ec3
Dependabot issue fix
horahoradev May 8, 2022
b8aeac2
Create CONTRIBUTING.md
horahoradev May 8, 2022
17f74fb
Archival page improvements, idx for archival events
horahoradev May 8, 2022
9c264fb
Update README.md
horahoradev May 8, 2022
1ce2929
Archive page improvements, footer positioning fix
horahoradev May 8, 2022
a5b9e4d
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev May 8, 2022
3f30112
Fix timestamp coalesce
horahoradev May 8, 2022
5256af9
Improved CI tests
horahoradev May 10, 2022
0bf717b
Fix tests
horahoradev May 10, 2022
c482b91
Remove sleep
horahoradev May 10, 2022
c546e54
Update README.md
horahoradev May 10, 2022
971271e
Video page improvements
horahoradev May 10, 2022
b80bc37
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev May 10, 2022
572f23e
Update README.md
horahoradev May 10, 2022
b7ff788
Fix idx
horahoradev May 10, 2022
d31b8c8
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev May 10, 2022
96c8ddd
Update README.md
horahoradev May 10, 2022
1b24e46
idx
horahoradev May 10, 2022
3293854
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev May 10, 2022
434eb39
vscode didnt save
horahoradev May 10, 2022
f739116
Dark mode
horahoradev May 14, 2022
0d2aa41
Update README.md
horahoradev May 14, 2022
c95017a
Delete old files
horahoradev May 14, 2022
3219bda
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev May 14, 2022
8d904f2
Update README.md
horahoradev May 14, 2022
53f402d
Add frontapi logs to gh actions
horahoradev May 14, 2022
40d3489
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev May 14, 2022
2f750b1
Administrative controls on videos
horahoradev May 14, 2022
5837c60
Comment form rerender bugfix
horahoradev May 14, 2022
d191c85
Preventing photosensitive seizures during `make up`
luginbash May 16, 2022
3e725d4
Merge pull request #24 from luginbash/master
horahoradev May 16, 2022
c22e848
Sans serif, default dark mode, fix text visibility on dark mode
horahoradev May 19, 2022
e4a41d6
minor dark mode fixes
horahoradev May 19, 2022
466614c
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev May 19, 2022
3f2050b
bg-black removal on profile page
horahoradev May 19, 2022
b6b6885
Update README.md
horahoradev May 20, 2022
ce3b161
Added sorting by user's ratings
May 19, 2022
61269f7
- Renamed MinioEndpoint to StorageEndpoint.
clearminds May 21, 2022
2091e98
- Added TrimSpace to URL-input on archiverequests POST
clearminds May 21, 2022
6708c1d
Allow for unlimited size
clearminds May 21, 2022
9fd7996
Added support to set AcceptLanguage
clearminds May 21, 2022
a128a85
Merge pull request #26 from sainttttt/master
horahoradev May 21, 2022
437cd07
Merge pull request #29 from clearminds/feature/allow_unlimited_size
horahoradev May 21, 2022
b0ba1e8
Merge pull request #28 from clearminds/feature/trim_url_input
horahoradev May 21, 2022
3853d08
Merge pull request #27 from clearminds/feature/cleanup_s3_minio
horahoradev May 21, 2022
bd22395
proto bump for download retries
horahoradev May 21, 2022
87f2da6
Fixed missed escaping of acceptLanguage
clearminds May 21, 2022
2410353
removed escaping and space
clearminds May 21, 2022
b8d48d8
Defer redlock unlock, improve undownloadable observability and retries
horahoradev May 21, 2022
5711ffa
Merge pull request #32 from horahoradev/Undownloadable_retry
horahoradev May 21, 2022
fa86946
Merge pull request #31 from clearminds/fix/accept_language
horahoradev May 21, 2022
b62a109
add unstaged file
horahoradev May 21, 2022
a8de31a
Merge branch 'master' of https://github.com/horahoradev/horahora into…
horahoradev May 21, 2022
673e6e5
fix among us compilation
horahoradev May 21, 2022
6932841
fix among us funny moments compilation
horahoradev May 21, 2022
8fddfa0
changed how to append max-filesize
clearminds May 21, 2022
cda2893
Merge pull request #33 from clearminds/fix/max_size
horahoradev May 21, 2022
ef348a4
WIP videos being downloaded observability
horahoradev May 21, 2022
3985b74
Improved observability around downloads in progress
horahoradev May 21, 2022
d36a50b
Merge branch 'master' of https://github.com/horahoradev/horahora into…
horahoradev May 21, 2022
4fe3c3a
Videos in progress display working
horahoradev May 21, 2022
2cb7dec
Add uncommitted file
horahoradev May 21, 2022
ff323b0
Added configurable size limit for video_service
clearminds May 22, 2022
b09a06e
Fix missing tx rollback, channel block precautions
horahoradev May 22, 2022
f61c668
language default ja
horahoradev May 22, 2022
9880e79
Set default max fs to 300mb
horahoradev May 22, 2022
d5ca01f
Merge pull request #34 from clearminds/feature/configurable_size_vide…
horahoradev May 23, 2022
c9c2f4e
Remove scheduling transaction
horahoradev May 23, 2022
46b99dd
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev May 24, 2022
d23e97e
move nightwind dependency
horahoradev May 24, 2022
cd2ee4d
minor improvement
horahoradev May 24, 2022
15b7672
build flag for new yt-dlp version
horahoradev May 24, 2022
42621ee
Wipe downloads in progress
horahoradev May 24, 2022
06a9455
Update README.md
horahoradev May 25, 2022
ea7458e
don't sync unsubscribed categories
horahoradev May 25, 2022
8975093
Merge branch 'master' into dev
horahoradev May 25, 2022
3845336
Removed some buildcontainers
clearminds May 25, 2022
9b0a447
Fixed issue where search modal search button would not hide at the sa…
May 25, 2022
38e7e22
Merge pull request #35 from clearminds/feature/remade_docker_scheduler
horahoradev May 25, 2022
8a74fc1
Merge pull request #36 from sainttttt/master
horahoradev May 25, 2022
be2dad0
Scheduler ffmpeg
horahoradev May 25, 2022
f97476d
yt-dlp ffmpeg
horahoradev May 26, 2022
e5cb2cb
Fixed issue where switching order to desc would take two clicks
May 26, 2022
9279c22
Merge pull request #37 from sainttttt/master
horahoradev May 26, 2022
cab3e3f
Video rooms RFC
horahoradev May 27, 2022
2117645
Merge branch 'dev' of https://github.com/horahoradev/horahora into dev
horahoradev May 27, 2022
ac42e3c
Update 2_video_rooms.md
horahoradev May 27, 2022
c32cc80
Update 2_video_rooms.md
horahoradev May 27, 2022
bb2b69c
Update 2_video_rooms.md
horahoradev May 27, 2022
49b534b
WIP kafka ws proxy
horahoradev May 28, 2022
b40d987
Download progress working, roughly
horahoradev May 29, 2022
f529e3a
Syntax fix
horahoradev May 29, 2022
a5ae9a1
Rabbitmq scheduler integration, proto bump, WIP download status
horahoradev May 29, 2022
8eb37ea
Fixed fanout and ordering issues, mostly working now
horahoradev May 30, 2022
4fade8b
Dont touch it or it'll break
horahoradev May 30, 2022
1cd01c0
semi-working with unsubscribe notifications
horahoradev May 30, 2022
7891f2d
Working pretty well now
horahoradev May 30, 2022
0265e9e
Download status hack
horahoradev May 30, 2022
96fc122
Remove rate limit
horahoradev May 30, 2022
a4d9cea
Better dlstatus display
horahoradev Jun 3, 2022
f167b30
Only recommend approved videos
horahoradev Jun 3, 2022
3a6cbb0
Merge branch 'dev' of https://github.com/horahoradev/horahora into dev
horahoradev Jun 3, 2022
9f946fa
Fallback recs only
horahoradev Jun 4, 2022
d4d64c1
Fix erroneous hot-reload mount
horahoradev Jun 4, 2022
d24bb7b
Added stomp proxy
horahoradev Jun 4, 2022
eb0a591
Kinda working
horahoradev Jun 5, 2022
479645a
Finally works!
horahoradev Jun 5, 2022
bf03101
Minor stomp proxy improvements
horahoradev Jun 5, 2022
aa178a5
Remove rate limit
horahoradev Jun 5, 2022
f0e235e
Remove port exposures
horahoradev Jun 5, 2022
46f215c
DL progress cleanup
horahoradev Jun 5, 2022
5ebee71
Merge pull request #38 from horahoradev/video_dl_progress
horahoradev Jun 5, 2022
4bcfaab
Lowercase dlstatus
horahoradev Jun 5, 2022
9dcc071
Fix dlstatus case
horahoradev Jun 5, 2022
50d206d
Remove makefile dependency
horahoradev Jun 5, 2022
d8abe80
Add unstaged build script
horahoradev Jun 5, 2022
74e831d
Added uncommitted activemq dockerfile
horahoradev Jun 5, 2022
8a00186
Merge branch 'dev' of https://github.com/horahoradev/horahora into dev
horahoradev Jun 5, 2022
18ca69c
PR fixes
horahoradev Jun 5, 2022
d836057
Minio unexposed, files served from nginx
horahoradev Jun 7, 2022
9f479f5
Update README.md
horahoradev Jun 9, 2022
277b436
Update README.md
horahoradev Jun 9, 2022
2fb824c
Added PR release workflow
horahoradev Jun 11, 2022
c22ecb1
Test on every push
horahoradev Jun 11, 2022
721e217
Merge pull request #41 from horahoradev/dev
horahoradev Jun 11, 2022
a016e9c
Merge branch 'master' into dev
horahoradev Jun 11, 2022
c36228d
Remove envsubst dependency
horahoradev Jun 11, 2022
0e8a1de
Add unstaged dockerfile for envsubst removal
horahoradev Jun 11, 2022
b942499
Better inline recommendation display
horahoradev Jun 11, 2022
7df2132
Improved inline recommender display
horahoradev Jun 11, 2022
4a35e5c
Merge pull request #42 from horahoradev/dev
horahoradev Jun 11, 2022
778c2cd
Fix rating view incrementation
horahoradev Jun 11, 2022
e4dcf45
Improve multiple tag search
horahoradev Jun 11, 2022
3a8be9f
Fix bug fetching new dls, add expiration to topics
horahoradev Jun 12, 2022
b20dbb2
Revert "Improve multiple tag search"
horahoradev Jun 12, 2022
7dc05e8
Merge pull request #43 from horahoradev/dev
horahoradev Jun 12, 2022
506a01e
fix: add videos folder to gitignore
GabenGar Jun 15, 2022
1351e64
Fix file fetches with latest version of minio
horahoradev Jun 15, 2022
005ce0e
Merge pull request #44 from GabenGar/videos-ignore
horahoradev Jun 15, 2022
0830978
Proto bump
horahoradev Jun 17, 2022
e1da5a3
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev Jun 17, 2022
df26b72
Implement delete
horahoradev Jun 17, 2022
b3eaffb
Dev -> Master (#97)
horahoradev Oct 9, 2022
54f46ed
Bump github.com/labstack/echo/v4 from 4.6.1 to 4.9.0 in /front_api (#96)
dependabot[bot] Oct 9, 2022
833f68e
Improve main compose image sources
horahoradev Oct 9, 2022
f079fb4
remove mem limits
horahoradev Oct 9, 2022
60e4c91
hurr
horahoradev Oct 10, 2022
885c5d6
webpack nginx routing config fix
horahoradev Oct 10, 2022
d68e42d
fix tests
horahoradev Oct 10, 2022
39eaeee
remove search test for nicovideo
horahoradev Oct 10, 2022
39ea19e
release workflow fix
horahoradev Oct 10, 2022
2447961
Release fixes
horahoradev Oct 10, 2022
d32d6a2
Change integration test to tag search
horahoradev Oct 10, 2022
297b5ec
fix builds
horahoradev Oct 10, 2022
85e6cc2
Segfault with missing port in origin
horahoradev Oct 10, 2022
8850a0b
:clown:
horahoradev Oct 10, 2022
9118d5f
Remove buildkit
horahoradev Oct 10, 2022
f1a058b
Update README.md
horahoradev Oct 10, 2022
490cb5b
fix ancient jwt bug that I never pushed?
horahoradev Oct 12, 2022
9ae6475
Merge branch 'master' of https://github.com/horahoradev/horahora
horahoradev Oct 12, 2022
7f9e984
Selenium Tests + more (#98)
horahoradev Oct 15, 2022
49c2757
Update README.md
horahoradev Oct 15, 2022
2023100
Nextjs Production Mode Builds (#100)
horahoradev Oct 16, 2022
ad616a9
Enhanced selenium tests + bugfixes (#101)
horahoradev Oct 16, 2022
676c653
Download limits (#103)
horahoradev Oct 23, 2022
2d56ff6
Bump @xmldom/xmldom from 0.7.5 to 0.7.8 in /webapp
dependabot[bot] Nov 1, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
videos/*
17 changes: 17 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# .github/workflows/release.yml
name: Release

on:
pull_request:
types: closed

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Tag
uses: K-Phoen/semver-release-action@master
with:
release_branch: master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
65 changes: 65 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Build and test

on: [push, pull_request]
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build the stack alternative origin
run: echo "nginx" | ./up.sh
if: always()
- name: Run Selenium tests
run: cd selenium && sleep 90 && sudo docker run --net horahora_default $(docker build -q .)
if: always()
- name: Build the stack localhost
run: echo "localhost" | ./up.sh
if: always()
- name: Run integration API tests
run: cd tests && go run main.go
if: always()
- name: print relevant logs (videoservice)
run: docker logs $(docker ps | grep "videoservice" | awk '{print $1}')
if: always()
- name: print relevant logs (userservice)
run: docker logs $(docker ps | grep "userservice" | awk '{print $1}')
if: always()
- name: print relevant logs (scheduler)
run: docker logs $(docker ps | grep "scheduler" | awk '{print $1}')
if: always()
- name: print relevant logs (postgres)
run: docker logs $(docker ps | grep "postgres" | awk '{print $1}')
if: always()
- name: print relevant logs (frontapi)
run: docker logs $(docker ps | grep "frontapi" | awk '{print $1}')
if: always()
- name: print relevant logs (nginx)
run: docker logs $(docker ps | grep "nginx" | awk '{print $1}')
if: always()
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Log in to the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build the stack localhost
run: echo "localhost" | ./up.sh
if: always()
- name: publish main
uses: pennsignals/[email protected]
with:
version: main
docker_compose: 'docker-compose.yml' # required
26 changes: 25 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,25 @@
youtube-dl*
# CLI build output
/horahora
# CLI windows build output
/horahora.exe

# vscode files
*.code-workspace

# temporary folders created by golang watcher
**/tmp/*

youtube-dl*
packer/vpn_conf*
data*
secrets.env
sql/backup*
/videos

# env file is used for the docker compose
/.env
/.env*

docker-compose.yaml
webapp/.env
configs/*
6 changes: 6 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"recommendations": [
// https://go.dev/doc/editors#options
"golang.go",
]
}
95 changes: 95 additions & 0 deletions .vscode/horahora.code-workspace.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
{
"folders": [
{
"name": "horahora",
"path": "."
},
{
"name": "front_api",
"path": "front_api"
},
{
"name": "backup_service",
"path": "backup_service"
},
{
"name": "scheduler",
"path": "scheduler"
},
{
"name": "stomp_proxy",
"path": "stomp_proxy"
},
{
"name": "tests",
"path": "tests"
},
{
"name": "user_service",
"path": "user_service"
},
{
"name": "video_service",
"path": "video_service"
},
{
"name": "webapp",
"path": "webapp"
},
{
"name": "cli",
"path": "cli"
},
{
"name": "schema",
"path": "schema"
}
],
"settings": {
"files.exclude": {
"**/.git": true,
"**/.svn": true,
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true,
"**/Thumbs.db": true,
"**/node_modules": true,
"front_api": true,
"backup_service": true,
"scheduler": true,
"stomp_proxy": true,
"tests": true,
"user_service": true,
"video_service": true,
"webapp": true,
"schema": true,
"cli": true
},
"files.associations": {
// syntax highlight for example env files
"**/.env*": "dotenv",
// syntax highlight for example workspace files
"**/*.code-workspace*": "jsonc"
},
// remove text 3 options if you've set them up in global editor settings
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true
},
"extensions": {
"recommendations": [
// `.env` syntax highlight
"mikestead.dotenv",
// docker-related features plus highlight in dockerfiles and compose configs
"ms-azuretools.vscode-docker",
// lots of QoL git features
"eamodio.gitlens",
// nginx config highlight
"ahmadalli.vscode-nginx-conf",
// `.sql` formatter
"bradymholt.pgformatter",
// `.proto3` syntax highlight
"zxh404.vscode-proto3"
]
}
}
20 changes: 20 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"gopls": {
"ui.semanticTokens": true
},
"[json]": {
"editor.tabSize": 2
},
"[jsonc]": {
"editor.tabSize": 2
},
"json.schemas": [
{
"fileMatch": ["schema/**/*schema.json"],
"url": "./schema/meta.schema.json"
}
],
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true
}
23 changes: 23 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Contributing
Thank you for your interest in contributing to Horahora! Think you can do better than what we've done? You probably can!

## Architectural Overview
![](https://raw.githubusercontent.com/horahoradev/horahora/master/Architectural_Drawing.png)

Horahora's architecture is microservice-based. The main microservices are:
- `front_api`: which is the RESTful API to the rest of the services
- `userservice`: which does all authentication and handles user storage/permissions
- `videoservice`: which does all video storage, uploads to the origin (e.g. s3/backblaze), queries, transcoding, etc
- `scheduler`: which handles content archival requests and downloads
Communication between userservice, videosercvice, and scheduler is GRPC-based. For more details on individual microservice architecture, see the README for whichever microservice.

Postgresql is used as the database for each service, but Redis is also used for very specific purposes (e.g. distributed locking). Schema migrations can be found within the "migrations" directory within each service. As an example, [here's the migrations directory for Videoservice](https://github.com/horahoradev/horahora/tree/master/video_service/migrations). Migrations are applied using Flyway as a means of providing schema versioning.

Since microservices communicate via GRPC, the API for each service is defined by the domain specific proto3 language. [Here's an example.](https://github.com/horahoradev/horahora/blob/master/video_service/protocol/videoservice.proto) This file in particular defines the API for videoservice, which other services will use to invoke videoservice's functionality. We use this file to generate interface and struct definitions in Golang (our target language), and then implement every method. GRPC implementations for videoservice can be found here: https://github.com/horahoradev/horahora/blob/master/video_service/internal/grpcserver/grpc.go . [Here's a minimal method implementation example](https://github.com/horahoradev/horahora/blob/master/video_service/internal/grpcserver/grpc.go#L442), which rates videos: the implementation simply calls the AddRatingToVideoID method from the videos model (which is really more like an example of the repository pattern) with the supplied GRPC arguments, and returns a response.

## Communication and Coordination
Coordination happens via Discord, here: https://discord.gg/vfwfpctJRZ

Just ping me (Otoman) with a message to the effect of what you're interested in doing, and I'll help you out as best I can.

I've currently listed a few issues for the repo as "help-wanted" and "good first issue"; these represent good places to start, but if you don't see anything you like, or there's nothing that's unassigned, ping me, and I'll think of something that suits your goals.
18 changes: 18 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM golang:1.17

RUN apt-get update && \
apt install -y protobuf-compiler && \
go install google.golang.org/protobuf/cmd/[email protected] && \
go install google.golang.org/grpc/cmd/[email protected]

RUN go env -w GO111MODULE="off" && \
go get github.com/envoyproxy/protoc-gen-validate && \
go env -w GO111MODULE=""

RUN go install github.com/envoyproxy/[email protected]

COPY gen_all.sh /bin/gen_all.sh

WORKDIR /

ENTRYPOINT ["/bin/gen_all.sh"]
1 change: 1 addition & 0 deletions Dockerfile.postgres
98 changes: 61 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,53 +1,77 @@
# Horahora
Horahora is a microservice-based video hosting website with additional functionality for content archival from Niconico, Bilibili, and Youtube. Users can upload their own content, or schedule categories of content from other websites to be archived (e.g. a given channel on Niconico, a tag on Youtube, or a playlist from Bilibili). Content archived from other websites will be accessible in the same manner as user-uploaded videos, and will be organized under the same metadata (author, tags) associated with the original video.
## Locally archive, browse, and share videos from nearly any site

This project is a WIP, and under active development. The MVP for local use is not yet complete, but nearly done. Contributions and suggestions are always welcome! If you have any questions regarding this project, feel free to contact me either via discord or email.
Horahora is a collaborative archival management tool.

Join our discord here: https://discord.gg/6TAEmAA
It allows you to:
- download and continuously sync videos from any link supported by yt-dlp
- browse through downloaded videos by channel, tag, views, rating, upload date, etc
- manage archival with a group of friends or untrusted users, with downloads being prioritized by the number of users subscribed to the video's category
- manage site user permissions, ban users, delete videos, and view audit logs for admin/moderator actions

## Architecture
![](Architectural_Drawing.png)
Join our Discord: https://discord.gg/vfwfpctJRZ

Currently, there are three microservices:
1. User Service, which handles registration, logins, and JWT validation
2. Video Service, which handles video uploads (both from Scheduler and from users), transcoding/chunking as required for DASH, uploads to the origin, and storage of metadata.
3. Scheduler, which handles content archival requests from users. For example, if a user specifies that they'd like all videos on Niconico with the tag "YTPMV" to be downloaded, Scheduler will download those videos, register them (and their associated creator) with video service and user service, and check that category of content regularly for new videos.
![](https://github.com/horahoradev/horahora-designs/blob/master/Screenshot%20from%202022-10-09%2011-56-34.png?raw=true)

For more in-depth information on a given microservice, consult its README.
![](https://github.com/horahoradev/horahora-designs/blob/master/Screenshot%20from%202022-10-09%2011-54-48.png?raw=true)

All microservices are horizontally scalable, containerized, and communicate via gRPC.
![](https://github.com/horahoradev/horahora-designs/blob/master/Screenshot%20from%202022-10-09%2011-57-35.png?raw=true)

The MVP will also consist of a frontend service to handle HTML templating, and a Censorship Service (name is a WIP) to manage the workflow for video approvals, and censorship of obscene content from foreign websites.
![](https://github.com/horahoradev/horahora-designs/blob/master/Screenshot%20from%202022-10-09%2011-57-52.png?raw=true)

## How to Use
Currently, only local use is supported.
To run Horahora locally, follow these steps:
1. First install the following dependencies:
- Flyway
- Docker
- Kubernetes
Archival capabilities are provided by yt-dlp (a fork of youtube-dl).

2. Start minikube with `minikube start --memory=3072`
3. Run `./build.all.sh` (in the Kubernetes directory) to build all Docker images and send to the Docker daemon within minikube
4. `./run-local.sh` to create Kubernetes deployments/services and apply database migrations. Keep running run-local.sh until migrations succeed.
5. `./run-tests.sh` will run local integration tests.
6. Navigate to `localhost:8080` to view the current state of the website.
A word of warning: this application is pretty heavy, and setup can be complicated. If you're looking for something simpler, check out: https://github.com/tubearchivist/tubearchivist

## Designs
Designs are listed here:
https://github.com/horahoradev/horahora-designs

![](https://github.com/horahoradev/horahora-designs/blob/master/Login.png?raw=true)

![](https://github.com/horahoradev/horahora-designs/blob/master/Video.png?raw=true)
## Usage Instructions (START HERE)

![](https://github.com/horahoradev/horahora-designs/blob/master/Profile.png?raw=true)
1. Install docker, python3, and docker-compose
2. ./up.sh
1. respond to requests for input
2. Wait a minute, then visit localhost:80
3. Login as admin/admin
- note that with the current video approval workflow, non-admin users won't be able to view unapproved videos
- it's recommended to visit /password-reset immediately to change the admin user's default password if using in an untrusted environment
4. navigate to the archival requests page from the hamburger menu, add a link, and wait a few minutes

## Task Roadmap
Missing features are tracked using Trello.

Our Trello board is:
https://trello.com/b/Rm5TPR4Q/horahora
That's it for basic usage, and should work. If that doesn't work, bug me on Discord.

## Contributing
Contributions are always welcome. Please see [CONTRIBUTING.md](https://github.com/horahoradev/horahora/blob/master/CONTRIBUTING.md) for details, including an architectural rundown.

## Designs
Designs are listed here:
https://github.com/horahoradev/horahora-designs

## More Detailed Feature List
- performant at 170k videos, even for all varieties of search queries
- support for videos which have been deleted from the origin (e.g. if the original site deletes the video, there's no impact on your instance)
- support for comments, view count, user ratings
- video approval workflow which prevents normal users from seeing videos before they've been approved
- support for TOS/privacy policy
- content archival modeled as one-to-many user subscriptions, so users "subscribe" to a category (link), and links are prioritized according to the number of subscribers
- support for any website supported by yt-dlp which has the required metadata (but I only use YT/nicovideo atm)
- artificial user creation: archived videos will be grouped under a Horahora user created for the archived website's user (e.g. if I archive from Russia Today, then a Russia TOday user will be created on Horahora)
- support for yt-dlp tunneling via Gluetun (see below for setup)
- dark mode toggle

## Advanced Use Cases
### Other Storage Backends (s3, backblaze, anything s3-compatible)
By default, Horahora will store videos locally using Minio.

If you don't want videos to be stored locally, modify .env, adding the relevant values for your use case.

- ORIGIN_FQDN: this will be the public URL of your Backblaze bucket WITH NO TRAILING SLASH. E.g. for me it's: https://f002.backblazeb2.com/file/otomads for backblaze, or https://horahora-dev-otomads.s3-us-west-1.amazonaws.com for s3.
- STORAGE_BACKEND: 'b2' or 's3' (depending on which you want to use)
- STORAGE_API_ID: the API ID for your Backblaze account if using backblaze, otherwise blank
- STORAGE_API_KEY: The API key for your Backblaze account, otherwise blank
- BUCKET_NAME: the storage bucket name for b2 or s3
If you want to use S3, you need to include your aws credentials and config in $HOME/.aws. The config and credentials will be mounted into the relevant services at runtime. See https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html for more information.

### Tunneling yt-dlp Traffic
Horahora comes with Gluetun support out of the box. To enable it, you'll need to set the proper values in the "vpn config" section of the secrets.env.template file. This will enable your yt-dlp traffic to be tunneled through your VPN provider via a local Gluetun HTTP proxy.

### Backup Restoration
(this currently isn't functioning, I'll fix it later)

Backup_service writes psql dumps of the three databases (userservice, videoservice, scheduler) to backblaze. To restore, place the three latest dumps in the sql dir, `docker-compose up`, run migrations, then run restore.sh from within the container.
Loading