Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jcraigk/phishin
An archive of live Phish audio
https://github.com/jcraigk/phishin
music-library phish rails soundmanager2
Last synced: about 1 month ago
JSON representation
An archive of live Phish audio
- Host: GitHub
- URL: https://github.com/jcraigk/phishin
- Owner: jcraigk
- License: mit
- Created: 2013-11-12T07:55:10.000Z (about 11 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T05:39:33.000Z (2 months ago)
- Last Synced: 2024-10-29T23:02:53.204Z (2 months ago)
- Topics: music-library, phish, rails, soundmanager2
- Language: Ruby
- Homepage: http://phish.in
- Size: 4.57 MB
- Stars: 68
- Watchers: 9
- Forks: 10
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: MIT-LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- jimsghstars - jcraigk/phishin - An archive of live Phish audience recordings (Ruby)
README
[![Build Status](https://app.travis-ci.com/jcraigk/phishin.svg?branch=main)](https://travis-ci.org/jcraigk/phishin)
![Phish.in Logo](https://i.imgur.com/Zmj586L.jpg)
Phish.in is an open source archive of live Phish audience recordings.
Ruby on Rails and Grape API wrap a PostgreSQL database on the backend. There's a [web frontend](https://phish.in) written in React for browsing and playing audio content as well as a [JSON API](https://phish.in/api-docs) for accessing content programmatically.
All audio is provided in MP3 format. More formats and sources may be made available at a later time. Assets including audio MP3s, waveform PNGs, and album art JPEGs are served directly from the web server and cached via CloudFlare CDN.
Join the [Discord](https://discord.gg/KZWFsNN) to discuss content and development.
## Developer Setup
1. Install [Docker](https://www.docker.com/)
2. Clone the repo to your local machine
3. Download the [Development SQL File](https://www.dropbox.com/scl/fi/6zv4bzxxcjgv3ouv8d3ek/phishin-dev.sql?rlkey=4trafp2vxcgc1iuuq36yhl9gc&dl=0) and import it:
```bash
# Copy SQL dump into PG container and run it
docker cp /path/to/phishin.sql phishin-pg-1:/docker-entrypoint-initdb.d/dump.sql
docker exec -u postgres phishin-pg-1 psql phishin postgres -f docker-entrypoint-initdb.d/dump.sql
```4. To present production content locally during development, set `PRODUCTION_CONTENT=true` in your local `.env` file.
5. If you want to run the Postgres database in Docker and develop the app natively (recommended), you can spin it up like this:
```bash
make services
make dev
```If you are on a Mac ARM and the `ruby-audio` gem fails to install, try the following:
```
brew install libsndfile
gem install ruby-audio -- --with-sndfile-dir=/opt/homebrew/opt/libsndfile
```Alternatively, if you prefer to develop completely in Docker, build and start the containers like this:
```bash
make up
```## Testing
To run the specs in Docker:
```bash
make spec
```To run the specs natively:
```bash
make services
bundle exec rails db:setup RAILS_ENV=test
bundle exec rspec
```## Importing Content
The content import process uses the [Phish.net API](https://docs.phish.net/) for setlists. You must first obtain an API key from them and assign it to the environment variable `PNET_API_KEY` in `.env`.
If running the Rails app natively, you may need to install `ffmpeg`.
To import a new show or replace an existing one, name the MP3s according to the import format (`I 01 Harry Hood.mp3`) and place them in a folder named by date (`2018-08-12`). Place this folder in `./content/import` and run the following command (`make bash` first if you use Docker):
```bash
bundle exec rails shows:import
```Use the interactive CLI to finish the import process then set `PRODUCTION_CONTENT=false`, restart the server, and visit `http://localhost:3000/` to verify the import.
## Contributions
Forked with permission in 2012 from [StreamPhish](https://github.com/jeffplang/streamphish/) by Jeff Lang.
Layout and graphic design by Mark Craig.
Software and content maintained by [Justin Craig-Kuhn](https://github.com/jcraigk).