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

Commit

Permalink
Use 3.0 API for content
Browse files Browse the repository at this point in the history
closes #218
  • Loading branch information
SoMuchForSubtlety committed Mar 26, 2022
1 parent 149507e commit 6f56120
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 75 deletions.
14 changes: 9 additions & 5 deletions internal/ui/nodeV2.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ func (s *UIState) v2PerspectiveNodes(v f1tv.ContentContainer) []*tview.TreeNode
// fall back to just the main stream if there was an error getting details
// or there are no more streams
if err != nil || len(details.Metadata.AdditionalStreams) == 0 {
nodes := s.getPlaybackNodes(meta, func() (string, error) { return s.v2.GetPlaybackURL(f1tv.BIG_SCREEN_HLS, v.Metadata.ContentID) })
nodes := s.getPlaybackNodes(meta, func() (string, error) { return s.v2.GetPlaybackURL(f1tv.BIG_SCREEN_HLS, v.Metadata.ContentID, nil) })
return nodes
}

Expand Down Expand Up @@ -103,7 +103,9 @@ func (s *UIState) v2PerspectiveNodes(v f1tv.ContentContainer) []*tview.TreeNode

node.SetSelectedFunc(func() {
node.SetSelectedFunc(nil)
playbackNodes := s.getPlaybackNodes(meta2, func() (string, error) { return s.v2.GetPerspectivePlaybackURL(f1tv.BIG_SCREEN_HLS, p.PlaybackURL) })
playbackNodes := s.getPlaybackNodes(meta2, func() (string, error) {
return s.v2.GetPlaybackURL(f1tv.BIG_SCREEN_HLS, details.ContentID, &p.ChannelID)
})
appendNodes(node, playbackNodes...)
})
perspectives[i+1] = node
Expand All @@ -113,7 +115,7 @@ func (s *UIState) v2PerspectiveNodes(v f1tv.ContentContainer) []*tview.TreeNode
SetReference(&NodeMetadata{nodeType: PlayableNode, metadata: meta})
node.SetSelectedFunc(func() {
node.SetSelectedFunc(nil)
playbackNodes := s.getPlaybackNodes(meta, func() (string, error) { return s.v2.GetPlaybackURL(f1tv.BIG_SCREEN_HLS, v.Metadata.ContentID) })
playbackNodes := s.getPlaybackNodes(meta, func() (string, error) { return s.v2.GetPlaybackURL(f1tv.BIG_SCREEN_HLS, v.Metadata.ContentID, nil) })
appendNodes(node, playbackNodes...)
})
perspectives[0] = node
Expand Down Expand Up @@ -168,10 +170,12 @@ func (s *UIState) extractCommands(multi cmd.MultiCommand, perspectives []f1tv.Ad

var urlFunc func() (string, error)
if mainFeed != nil {
urlFunc = func() (string, error) { return s.v2.GetPlaybackURL(f1tv.BIG_SCREEN_HLS, mainStream.Metadata.ContentID) }
urlFunc = func() (string, error) {
return s.v2.GetPlaybackURL(f1tv.BIG_SCREEN_HLS, mainStream.Metadata.ContentID, nil)
}
} else {
urlFunc = func() (string, error) {
return s.v2.GetPerspectivePlaybackURL(f1tv.BIG_SCREEN_HLS, perspective.PlaybackURL)
return s.v2.GetPlaybackURL(f1tv.BIG_SCREEN_HLS, mainFeed.Metadata.ContentID, &perspective.ChannelID)
}
}
targetCmd := s.cmd.GetCommand(target)
Expand Down
33 changes: 17 additions & 16 deletions pkg/f1tv/v2/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,9 @@ const (
baseURL = "https://f1tv.formula1.com"
authURL = "https://api.formula1.com/v2/account/subscriber/authenticate/by-password"

playbackRequestPath = "/1.0/R/ENG/%v/ALL/CONTENT/PLAY?contentId=%d"
playbackPerspectiveRequestPath = "/1.0/R/ENG/%v/ALL/%s"
contentDetailsPath = "/2.0/R/ENG/%v/ALL/CONTENT/VIDEO/%d/F1_TV_Pro_Annual/14"
categoryPagePath = "/2.0/R/ENG/%v/ALL/PAGE/%v/F1_TV_Pro_Annual/2"
playbackRequestPath = "/2.0/R/ENG/%v/ALL/CONTENT/PLAY"
contentDetailsPath = "/3.0/R/ENG/%v/ALL/CONTENT/VIDEO/%d/F1_TV_Pro_Annual/14"
categoryPagePath = "/2.0/R/ENG/%v/ALL/PAGE/%v/F1_TV_Pro_Annual/14"

apiKey = "fCUCjWrKPu9ylJwRAv8BpGLEgiAuThx7"

Expand Down Expand Up @@ -217,13 +216,18 @@ func (f *F1TV) GetPageContent(id PageID) ([]TopContainer, []RemoteContent, error

func (s AdditionalStream) PrettyName() string {
switch s.Title {
case "PIT LANE":
return "Pit Lane"
case "F1 LIVE":
return "F1 Live"
case "TRACKER":
return "Driver Tracker"
case "DATA":
return "Data Channel"
case "INTERNATIONAL":
return "International"
default:
if s.DriverFirstName == "" && s.DriverLastName == "" {
return s.Title
}
return fmt.Sprintf("%s %s", s.DriverFirstName, s.DriverLastName)
}
}
Expand Down Expand Up @@ -277,20 +281,17 @@ func (f *F1TV) ContentDetails(contentID int64) (TopContainer, error) {
return details.ResultObj.Containers[0], err
}

func (f *F1TV) GetPerspectivePlaybackURL(format StreamType, path string) (string, error) {
reqURL, err := assembleURL(playbackPerspectiveRequestPath, format, path)
func (f *F1TV) GetPlaybackURL(format StreamType, contentID int64, channelID *int64) (string, error) {
reqURL, err := assembleURL(playbackRequestPath, format)
if err != nil {
return "", nil
}

return f.playbackURL(reqURL.String())
}

func (f *F1TV) GetPlaybackURL(format StreamType, contentID int64) (string, error) {
reqURL, err := assembleURL(playbackRequestPath, format, contentID)
if err != nil {
return "", nil
query := reqURL.Query()
query.Add("contentId", strconv.FormatInt(contentID, 10))
if channelID != nil {
query.Add("channelId", strconv.FormatInt(*channelID, 10))
}
reqURL.RawQuery = query.Encode()

return f.playbackURL(reqURL.String())
}
Expand Down
47 changes: 0 additions & 47 deletions pkg/f1tv/v2/api_test.go

This file was deleted.

17 changes: 10 additions & 7 deletions pkg/f1tv/v2/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -263,16 +263,19 @@ type AvailableLanguages struct {
}

type AdditionalStream struct {
RacingNumber int `json:"racingNumber,omitempty"`
Title string `json:"title,omitempty"`
RacingNumber int `json:"racingNumber"`
TeamName string `json:"teamName"`
Type string `json:"type"`
PlaybackURL string `json:"playbackUrl"`
DriverImg string `json:"driverImg"`
TeamImg string `json:"teamImg"`
ChannelID int64 `json:"channelId"`
Title string `json:"title"`
ReportingName string `json:"reportingName"`
Default bool `json:"default"`
DriverFirstName string `json:"driverFirstName,omitempty"`
DriverLastName string `json:"driverLastName,omitempty"`
TeamName string `json:"teamName,omitempty"`
ConstructorName string `json:"constructorName,omitempty"`
Type string `json:"type,omitempty"`
PlaybackURL string `json:"playbackUrl,omitempty"`
DriverImg string `json:"driverImg,omitempty"`
TeamImg string `json:"teamImg,omitempty"`
Hex string `json:"hex,omitempty"`
}

Expand Down

0 comments on commit 6f56120

Please sign in to comment.