takeout

package module
v0.15.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2024 License: AGPL-3.0 Imports: 0 Imported by: 0

README

TakeoutFM

TakeoutFM is a copyleft media system that indexes organized media files (S3 or local) using MusicBrainz, Last.fm, Fanart.tv, and TMDB to make media available for streaming using a mobile app, assistant app, TV app, web interface and VLC. Media is browsed using the TakeoutFM server and streamed directly from S3 using pre-signed time-based URLs.

TakeoutFM is primarily designed for music however it also supports radio, movies and podcasts. It's not intended to be a full replacement for more feature-rich systems like Plex, Jellyfin and Kodi. Instead, TakeoutFM takes inspiration from these systems and attempts to be a small yet capable system designed around media being stored in the cloud and locally. You can take your personal media collection with you, on your own terms, create your own personal streaming service, and enjoy your media with free and open source software.

Features

The TakeoutFM server, known as Takeout, has the following features:

  • Music metadata from MusicBrainz and Last.fm
  • Album covers from the Cover Art Archive
  • Artist artwork from Fanart.tv
  • Powerful search and playlists. See search.md
  • Movie metadata and artwork from The Movie Database (TMDB)
  • Podcasts with series and episode metadata using RSS 2.0
  • Internet radio stations (pls)
  • Media streaming directly from S3 using pre-signed time-based URLs
  • Media streaming for local files using JWT tokens
  • User-based access control using cookies, tokens and scrypt
  • Server-based playlist API (using jsonpatch)
  • Web and JSON views
  • Web playback using HTML5 audio - Chrome, Safari & Firefox tested on desktop & mobile
  • Flutter app available for Android (and iOS)
  • Assistant app available for Android
  • XSPF ("spiff") and JSPF playlists
  • Written in Go, with SQLite3 and Bleve
  • Supports caching of metadata API data for faster (re)syncing
  • REST APIs are available to build custom interfaces
  • Free and open source with AGPLv3 license

The privacy policy, setup documentation, and more details on how to manage media in the S3 bucket, can be found in the doc directory.

Please see how you can contribute to TakeoutFM and related projects and services.

Documentation

Index

Constants

View Source
const (
	AppName = "Takeout"
	Version = "0.15.0"
	Contact = "takeoutfm.com"
)

Variables

This section is empty.

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
Package client provides an (partial) implementation of Takeout API with support for authentication and tokens.
Package client provides an (partial) implementation of Takeout API with support for authentication and tokens.
cmd
internal
activity
Package activity manages user activity data.
Package activity manages user activity data.
auth
Package auth manages users, passwords, tokens and sessions.
Package auth manages users, passwords, tokens and sessions.
config
Package config collects all configuration for the server with a single model which allows for easy viper-based configuration files.
Package config collects all configuration for the server with a single model which allows for easy viper-based configuration files.
music
Package music provides support for all music and radio media.
Package music provides support for all music and radio media.
playout
Package playout is a command line music/podcast/radio player with a text and visual view.
Package playout is a command line music/podcast/radio player with a text and visual view.
podcast
Package podcast provides support for all podcast/rss media.
Package podcast provides support for all podcast/rss media.
progress
Package progress manages user progress data which contains media offset and duration to allow incremental watch/listen progress to be saved and retrieved to/from the server based on etag.
Package progress manages user progress data which contains media offset and duration to allow incremental watch/listen progress to be saved and retrieved to/from the server based on etag.
server
Package server Takeout API
Package server Takeout API
video
Package video provides support for all movie media.
Package video provides support for all movie media.
lib
actions
This package works with Google Assistant Actions SDK and provides bindings to support json encoding and decoding for some data types.
This package works with Google Assistant Actions SDK and provides bindings to support json encoding and decoding for some data types.
client
Package client provides an http client used extensively by Takeout for syncing media.
Package client provides an http client used extensively by Takeout for syncing media.
fanart
Package fanart provides an interface to obtain artist artwork from Fanart.tv.
Package fanart provides an interface to obtain artist artwork from Fanart.tv.
gorm
Package gorm provides an alternative gorm.Model that excludes the time fields from serialization, reducing some API bandwidth usage.
Package gorm provides an alternative gorm.Model that excludes the time fields from serialization, reducing some API bandwidth usage.
hub
log
musicbrainz
Package musicbrainz provides fairly good support for the MusicBrainz API with focus on the TakeoutFM needs for media syncing and building search metadata.
Package musicbrainz provides fairly good support for the MusicBrainz API with focus on the TakeoutFM needs for media syncing and building search metadata.
pls
Package pls provide support for pls files as used in Internet radio streams.
Package pls provide support for pls files as used in Internet radio streams.
rss
Package rss provide support for parsing RSS files as used in podcast feeds.
Package rss provide support for parsing RSS files as used in podcast feeds.
search
Package search provides a wrapper for bleve search, building a search database for an index of fields.
Package search provides a wrapper for bleve search, building a search database for an index of fields.
str
tmdb
Package tmdb provides a good coverage for the TMDB API, supporting movies, shows, people and images.
Package tmdb provides a good coverage for the TMDB API, supporting movies, shows, people and images.
Package player provides a simple audio player based on Takeout server-based playlists.
Package player provides a simple audio player based on Takeout server-based playlists.
Package spiff provides the model for all playlists used within TakeoutFM.
Package spiff provides the model for all playlists used within TakeoutFM.
tools
Package view is the TakeoutFM API viewmodel.
Package view is the TakeoutFM API viewmodel.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL