https://github.com/holofans/holoapi
Platform to serve Hololive content to the community tools.
https://github.com/holofans/holoapi
hololive nodejs
Last synced: about 1 year ago
JSON representation
Platform to serve Hololive content to the community tools.
- Host: GitHub
- URL: https://github.com/holofans/holoapi
- Owner: holofans
- License: gpl-3.0
- Created: 2020-04-09T16:48:33.000Z (about 6 years ago)
- Default Branch: develop
- Last Pushed: 2023-01-07T20:12:24.000Z (over 3 years ago)
- Last Synced: 2023-11-07T19:02:19.268Z (over 2 years ago)
- Topics: hololive, nodejs
- Language: JavaScript
- Homepage:
- Size: 1.2 MB
- Stars: 166
- Watchers: 10
- Forks: 20
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-vtuber - Source Code
README
# HoloFans API

Platform to serve Hololive information to community tools
## Development
* Requirements
* **Optional**, you can just run Postgres locally. `docker` and `docker-compose` to run Postgres and PGAdmin4.
* Have a `gcp-key.json` on project root
* You may get this from your GCP Project, [under credentials](https://console.cloud.google.com/apis/credentials)
* Create **Service Account**
* Create **JSON key file**. Rename it to `gcp-key.json`. Store it safely since it cannot be re-downloaded.
* Copy `.env.example` into `.env`
* Change values for your environment
* Change values in `ecosystem.config.js` for your environment
* Execute `docker-compose up` or `npm start` on root
* API is then accessible through `http://localhost:2434/`
## Applications
### Client API
### Crawler: YouTube
Note that cron format used here is:
```
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
```
### Crawler: BiliBili
## Production Deployment
Set up deployment of holotools-api by using the following deployment methods:
- [HEROKU Automatic Deployment](https://devcenter.heroku.com/articles/github-integration#automatic-deploys) using a [Procfile](https://devcenter.heroku.com/articles/preparing-a-codebase-for-heroku-deployment#3-add-a-procfile)
- [Digital Ocean Deployment](https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps)
- or if you'd rather not deploy from local, and would like it semi-automated, use a webhook: https://github.com/adnanh/webhook
### Digital Ocean
Setting up a dev user account
```
# Add user to run DB under
$ adduser holotools
$ usermod -aG sudo holotools
# Have SSH keys synced
$ rsync --archive --chown=holotools:holotools ~/.ssh /home/holotools
```
Setting up postgresql
```
$ sudo apt update && sudo apt install postgresql postgresql-contrib
$ sudo -i -u postgres
# Create a new user in postgres with same username as the dev user (holotools):
$ createuser --interactive
# Set it up with the holotools user.
$ createdb holotools
```
Now you have `holotools` user which can modify `holotools` database without pg auth.
For testing connections from outside, modify the pg_hba.conf for your postgres install:
```
host all all 127.0.0.1/32 trust
```
change the pg_hba.conf for localhost (127.0.0.1/32) from `md5` to `trust` to give pg permissions. This allows SSH tunneling to log in to postgres.
To connect to postgres from external: set up SSH tunnel `-L 9999:localhost:5432` or, use SSH-tunnel connection option bundled with any db administration tools (tableplus, pgAdmin4). Then use `holotools` user to log in. No db password is needed in this setup, but don't open up the db to external or security issues may arise.
Installing Memcached: [Detailed Guide](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-memcached-on-ubuntu-16-04)
```
$ sudo apt install memcached libmemcached-tools
```
This sets up memcached service at localhost:11211, well, it's not daemonized.