friendflix

package module
v0.0.0-...-01875d1 Latest Latest
Warning

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

Go to latest
Published: Oct 18, 2019 License: GPL-2.0 Imports: 25 Imported by: 0

README

FriendFlix

DEPRECATED

This project is no longer actively developed. Many of the goals can be achieved using other tools. Take a look at:

A media content management system for you and your friends.

Organizing, curating, and properly backing up a large media collection can be difficult. FriendFlix lets you and a network of friends cultivate a virtual library of high quality content, which is both fault-tolerant and easy to maintain.

Getting Started

Install Go

Make sure you have a working go environment set up. https://golang.org/doc/install

After setting up your GOPATH you should add $GOPATH/bin to your PATH in ~/.profile

export PATH="$PATH:$GOPATH/bin"
Download & Build FriendFlix

go get this repository.

$ go get -u -d github.com/brendoncarroll/friendflix

Next build and installl the CLI.

$ cd $GOPATH/src/github.com/brendoncarroll/friendflix
$ go install ./cmd/ff/*.go

Now you should be able to run the ff command.

$ ff
NAME:
   FriendFlix - A friendly media content manager

USAGE:
   ff [global options] command [command options] [arguments...]

VERSION:
   0.0.0

AUTHOR(S):
   Brendon Carroll

COMMANDS:
     daemon   
     add      
     track    
     help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help
   --version, -v  print the version
Running

FriendFlix is a long running daemon and a CLI tool. The daemon connects to other instances and mounts a fuse filesystem which is used for viewing content. The CLI is used mostly for adding content, and managing the network of friends.

In order to mount the fuse filesystem you will need to create a directory friendflix in your home folder

$ mkdir $HOME/friendflix

You can import content using the add and track commands. track will not "vendor in" the content. If you have a 3MB mp3 and you track it. You will still have 3MB on disk, plus some metadata. If you use the add command FriendFlix will store the content internally. So it will take up 6MB, plus some metadata.

$ ff track ~/Music

Documentation

Index

Constants

This section is empty.

Variables

View Source
var SupportedExtensions = parsers.ExtMap

Functions

This section is empty.

Types

type Friend

type Friend struct {
	ID_ friends.ID `json:"id"`
	Key string     `json:"public_key"`
	Metrics
}

func NewFriend

func NewFriend(pemBytes []byte) (Friend, error)

func (*Friend) ID

func (f *Friend) ID() friends.ID

func (*Friend) PublicKey

func (f *Friend) PublicKey() crypto.PublicKey

type FriendFlix

type FriendFlix struct {
	// contains filtered or unexported fields
}

func New

func New(r repo.Repo) (*FriendFlix, error)

func (*FriendFlix) AddFriend

func (ff *FriendFlix) AddFriend(pemBytes []byte) error

func (*FriendFlix) GetData

func (ff *FriendFlix) GetData(id blobs.ID) (b blobs.Blob, err error)

func (*FriendFlix) GetRepr

func (ff *FriendFlix) GetRepr(id blobs.ID) (*content.Repr, error)

func (*FriendFlix) Import

func (ff *FriendFlix) Import(ia importing.ImportArgs) (res importing.ImportResult, err error)

func (*FriendFlix) LeafPath

func (ff *FriendFlix) LeafPath(name string) (blobs.ID, error)

func (*FriendFlix) ListIdeas

func (ff *FriendFlix) ListIdeas() (res []content.Idea, err error)

func (*FriendFlix) ListReprs

func (ff *FriendFlix) ListReprs() (res []*content.Repr, err error)

func (*FriendFlix) PEMBytes

func (ff *FriendFlix) PEMBytes() []byte

func (*FriendFlix) PutData

func (ff *FriendFlix) PutData(b blobs.Blob) error

func (*FriendFlix) Run

func (ff *FriendFlix) Run() error

func (*FriendFlix) Shutdown

func (ff *FriendFlix) Shutdown()

func (*FriendFlix) TreePath

func (ff *FriendFlix) TreePath(name string) (subtrees, leaves []string, err error)

type FriendStore

type FriendStore struct {
	// contains filtered or unexported fields
}

func NewFriendStore

func NewFriendStore(file repo.File) *FriendStore

func (*FriendStore) Contains

func (fs *FriendStore) Contains(id friends.ID) bool

func (*FriendStore) Get

func (fs *FriendStore) Get(id friends.ID) (f friends.Friend, err error)

func (*FriendStore) Put

func (fs *FriendStore) Put(f Friend) (err error)

func (*FriendStore) Scan

func (fs *FriendStore) Scan(f func(f friends.Friend) bool) error

type Metrics

type Metrics struct {
	EgressByteCount  uint64
	IngressByteCount uint64
}

type Server

type Server interface {
	Serve(f2f.Listener) error
	Shutdown()
}

Jump to

Keyboard shortcuts

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