homehost

self-hosted, Netflix-like app made for streaming

Stars
1.01K
Forks
122
Open issues
17
Closed issues
12
Last release
over 1 year ago
Last commit
about 1 year ago
Watchers
1.01K
Total releases
12
Total commits
184
Open PRs
3
Closed PRs
0
Repo URL
Platform
License
mit
Category
Usecase
Offers premium version?
NO
Proprietary?
NO
About
homehost  

homehost is made for streaming your media collection within the home network
Features: ๐ŸŽฅ Movies, ๐Ÿ“บ TV Shows, ๐ŸŽต Music

  • ๐ŸŽฅ Movies
  • ๐Ÿ“บ TV Shows
  • ๐ŸŽต Music
  • โš™๏ธ Setup
    • Naming conventions
    • Database
    • Run
    • Routes
      • Server-side
      • Client-side

  • Development
  • Powered by
  • License
  • Disclaimer

    • General Copyright Statement

๐ŸŽฅ Movies Home

Search

๐Ÿ“บ TV Shows Home

๐ŸŽต Music Home

Search

Album

โš™๏ธ Setup

Run npm run install-packages

In .env, set a working API key for TMDb API and Spotify Web API, set the media paths, and set tha base url of the homehost client

# packages/client/.env
REACT_APP_HOMEHOST_BASE = "http://localhost:5000"
REACT_APP_IMAGE_BASE = "https://image.tmdb.org/t/p/"
REACT_APP_IMDB_BASE = "https://www.imdb.com"

packages/server/.env

TMDB_KEY = '<api_key>' SPOTIFY_CLIENT_ID = '<client_id>' SPOTIFY_CLIENT_SECRET = '<client_secret>'

MOVIES_PATH = '/path/to/movies/directory' TV_PATH = '/path/to/tv/directory' MUSIC_PATH = '/path/to/music/directory'

DATABASE_URL = 'file:./data/media.db' CLIENT_BASE_URL = 'http://localhost:3000'

If you dont have keys, you can request API authorization from Spotify at https://developer.spotify.com/documentation/web-api/, and TMDb at https://developers.themoviedb.org/3/getting-started/introduction

Media

Your media must appear in the absolute path locations set by .env. Each media must be in a unique location and cannot share the same directory path(s)

Naming conventions

๐ŸŽฅ Movies

<movies_path>

  • (subdirectory)?
    • (movie_file_name <TMDb-movie-ID>) (.mp4|.mkv)

๐Ÿ“บ TV

<tv_path>

  • (tv_show_directory_name <TMDb-tv-show-ID>)
    • (S<season_number>E<episode_number> episode_file_name) (.mp4|.mkv)
  • ๐ŸŽต Music

    <music_path>
    
    
  • (album_directory_name <Spotify-album-ID>)
    • ((<disc_number>-)?<track_number> track_file_name) (.mp3|.flac)
  • Tracks not found on Spotify can be put in a directory titled Unknown Album sans disc/ track number

    <music_path>
    
    
  • Unknown Album
    • (track_file_name) (.mp3|.flac)
  • Database

    Run npm run db:migrate to create migrations from schema, apply them, generate the database client
    homehost scans the media paths and adds the files to the database
    Wait for the async job to finish generating metadata and save
    To browse data, run npm run db:browse and go to http://localhost:5555
    To clear all data, run npm run db:clear

    Run

    Run npm run start to start the application
    By default, the server port is 5000, client port is 3000
    Run npm run start:prod to start the application as prod (default port is 5000)
    While running, homehost continuously saves and retrieves information for any media that was added, moved or removed

    Routes Server-side

    GET
    /api/about
    /api/library/stats
    /api/not_available
    /api/movies
    /api/movies/most_popular
    /api/movies/highest_rated
    /api/movies/recently_added
    /api/movies/genres
    /api/movies/genre/:name
    /api/movies/random
    /api/movies/:id
    /api/tv
    /api/tv/most_popular
    /api/tv/highest_rated
    /api/tv/recently_added
    /api/tv/genres
    /api/tv/genre/:name
    /api/tv/random
    /api/tv/:id
    /api/music/albums/recently_added
    /api/music/albums/latest
    /api/music/artists
    /api/music/artists/most_popular
    /api/music/albums
    /api/music/albums/:id
    /api/music/songs
    /api/music/songs/recently_added
    /movies/:id
    /tv/:tv_show_id/:season_number/:episode_number
    /music/:album_id/:disc_number/:track_number
    /api/watch/search
    /api/listen/search
    /api/watch/billboard

    Client-side

    /movies, /tv, /music

    Development

    Works best in Chrome. Coming to Desktop, iOS, Android.

    Powered by

    โ€ƒ

    Contributing

    See CONTRIBUTING.md.

    License

    This project is licensed under the MIT License - see the LICENSE file for details

    Disclaimer

    All pictures copyright to their respective owner(s). This project does not claim ownership of any of the pictures displayed on this site unless stated otherwise. This project does not knowingly intend or attempt to offend or violate any copyright or intellectual property rights of any entity. Some images used on this project are taken from the web and believed to be in the public domain. In addition, to the best of this project's knowledge, all content, images, photos, etc., if any, are being used in compliance with the Fair Use Doctrine (Copyright Act of 1976, 17 U.S.C. ยง 107.) The pictures are provided for comment/criticism/news reporting/educational purposes only.

    Where every care has been taken to ensure the accuracy of the contents of this project, we do not warrant its completeness, quality and accuracy, nor can we guarantee that it is up-to-date. We will not be liable for any consequences arising from the use of, or reliance on, the contents of this project. The respective owners are exclusively responsible for external websites. This project accepts no liability of the content of external links.

    Our project follows the safe harbor provisions of 17 U.S.C. ยง512, otherwise known as Digital Millennium Copyright Act (โ€œDMCAโ€).

    If any images posted here are in violation of copyright law, please contact us and we will gladly remove the offending images immediately upon receipt of valid proof of copyright infringement.

    General Copyright Statement

    Most of the sourced material is posted according to the โ€œfair useโ€ doctrine of copyright law for non-commercial news reporting, education and discussion purposes. We comply with all takedown requests.

    You may not use the Service for any illegal or unauthorized purpose. You must not, in the use of the Service, violate any laws in your jurisdiction (including but not limited to copyright or trademark laws).

    Alternative Projects
    No projects found

    Subscribe to Open Source Businees Newsletter

    Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.

    We'll never share your email with anyone else.