/
stream.go
69 lines (59 loc) · 2.12 KB
/
stream.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
Copyright © 2020 NAME HERE <EMAIL ADDRESS>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package cmd
import (
"strings"
"github.com/bisoncorps/mplayer"
"github.com/go-phie/gophie/engine"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
var selectedPlayer string
const DEFAULT_PLAYER = "browser"
// streamCmd represents the stream command
var streamCmd = &cobra.Command{
Use: "stream",
Short: "Stream a video from gophie",
Long: `Stream a video from Gophie
Gophie stream allows streaming videos using browser player. You can pass a query argument to the stream call to search for a specific query or left blank to retrieve latest uploaded movies on the specified engine. Full list of supported players can be found at https://github.com/bisoncorps/mplayer.
example:
gophie stream Jumanji --player vlc (stream Jumanji using VLC Media Player)
gophie stream -e fzmovies (check for latest movies on fzmovies for streaming)
`,
Run: func(cmd *cobra.Command, args []string) {
selectedEngine, err := engine.GetEngine(viper.GetString("engine"))
if err != nil {
log.Fatal(err)
}
query := strings.Join(args, " ")
var movie engine.Movie
if query == "" {
movie = processList(1, selectedEngine, compResult)
} else {
movie = processSearch(selectedEngine, compResult, query, "1")
}
p, err := mplayer.GetPlayer(selectedPlayer)
if err != nil {
log.Fatal(err)
}
p.SetURL(movie.DownloadLink.String())
p.SetTitle(movie.Title)
p.Play()
},
}
func init() {
streamCmd.Flags().StringVarP(
&selectedPlayer, "player", "p", DEFAULT_PLAYER, "Player to use for streaming")
rootCmd.AddCommand(streamCmd)
}