Skip to content
This repository has been archived by the owner on Feb 10, 2023. It is now read-only.

Commit

Permalink
add option to use backup stream
Browse files Browse the repository at this point in the history
  • Loading branch information
SoMuchForSubtlety committed Aug 30, 2020
1 parent 8016041 commit c6ee1ce
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 7 deletions.
28 changes: 28 additions & 0 deletions api.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package main

import (
"encoding/json"
"io/ioutil"
"net/http"
"path"
"sort"
"strings"
Expand Down Expand Up @@ -288,3 +291,28 @@ func sortEpisodes(episodes []episode) []episode {
func pathToUID(p string) (uid string) {
return path.Base(p)
}

type BackupStream struct {
MetricsEnvKeyPreProd string `json:"metricsEnvKeyPreProd"`
MetricsEnvKeyProd string `json:"metricsEnvKeyProd"`
StreamManifest string `json:"streamManifest"`
Poster string `json:"poster"`
}

func getBackupStream() (string, error) {
resp, err := http.Get("https://f1tv.formula1.com/dr/stream.json")
if err != nil {
return "", nil
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", err
}

var backup BackupStream
err = json.Unmarshal(body, &backup)
if err != nil {
return "", err
}
return backup.StreamManifest, nil
}
15 changes: 12 additions & 3 deletions cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,18 @@ func (session *viewerSession) loadCommands() {
}

func (session *viewerSession) runCustomCommand(cc commandContext) error {
url, err := getPlayableURL(cc.EpID, session.authtoken)
if err != nil {
return err
var url string
var err error
if cc.EpID != "" {
url, err = getPlayableURL(cc.EpID, session.authtoken)
if err != nil {
return err
}
} else {
url, err = getBackupStream()
if err != nil {
return err
}
}
// replace variables
tmpCommand := make([]string, len(cc.CustomOptions.Command))
Expand Down
29 changes: 25 additions & 4 deletions node.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,20 @@ func (session *viewerSession) getPlaybackNodes(sessionTitles Titles, epID string
SetColor(activeTheme.ActionNodeColor).
SetReference(&NodeMetadata{nodeType: ActionNode, titles: sessionTitles})
clipboardNode.SetSelectedFunc(func() {
url, err := getPlayableURL(epID, session.authtoken)
if err != nil {
session.logError(err)
return
var url string
var err error
if epID != "" {
url, err = getPlayableURL(epID, session.authtoken)
if err != nil {
session.logError(err)
return
}
} else {
url, err = getBackupStream()
if err != nil {
session.logError(err)
return
}
}
err = clipboard.WriteAll(url)
if err != nil {
Expand Down Expand Up @@ -197,12 +207,23 @@ func (session *viewerSession) getLiveNode() (bool, *tview.TreeNode, error) {
SetReference(&NodeMetadata{nodeType: PlayableNode, id: event.UID, titles: t})
channels := session.getPerspectiveNodes(st, streams)
appendNodes(sessionNode, channels...)
sessionNode.AddChild(session.getBackupNode(t))
return true, sessionNode, nil
}
}
return false, sessionNode, nil
}

func (session *viewerSession) getBackupNode(sessionTitles Titles) *tview.TreeNode {
node := tview.NewTreeNode("backup stream").
SetExpanded(false).
SetReference(&NodeMetadata{nodeType: StreamNode, id: "", titles: sessionTitles})
nodes := session.getPlaybackNodes(sessionTitles, "")
appendNodes(node, nodes...)

return node
}

func (session *viewerSession) getEventNodes(season seasonStruct) ([]*tview.TreeNode, error) {
// TODO: refactor
errChan := make(chan error)
Expand Down

0 comments on commit c6ee1ce

Please # to comment.