summaryrefslogtreecommitdiff
path: root/importers
diff options
context:
space:
mode:
authorJames Mills <prologic@shortcircuit.net.au>2020-03-28 13:11:54 +1000
committerJames Mills <prologic@shortcircuit.net.au>2020-03-28 13:11:54 +1000
commitdab8ea9f1a3d97532fc05775f41b3ff2b529798e (patch)
treee8e0e389d082df1b46ca26d8f52530a8c556ad47 /importers
parent88b96784ab4fd19b13d0076d64a95300483363ca (diff)
Add vimeo video importerv1.1.4
Diffstat (limited to 'importers')
-rw-r--r--importers/importer.go2
-rw-r--r--importers/vimeo_importer.go44
2 files changed, 43 insertions, 3 deletions
diff --git a/importers/importer.go b/importers/importer.go
index c74d621..f5d4b36 100644
--- a/importers/importer.go
+++ b/importers/importer.go
@@ -25,7 +25,7 @@ type Importer interface {
func NewImporter(url string) (Importer, error) {
if strings.Contains(url, "youtube.com") || strings.HasPrefix(url, "youtube:") {
return &YoutubeImporter{}, nil
- } else if strings.Contains(url, "youtube.com") || strings.HasPrefix(url, "youtube:") {
+ } else if strings.Contains(url, "vimeo.com") || strings.HasPrefix(url, "vimeo:") {
return &VimeoImporter{}, nil
} else {
return nil, ErrUnsupportedVideoURL
diff --git a/importers/vimeo_importer.go b/importers/vimeo_importer.go
index 5d5ed02..9983a69 100644
--- a/importers/vimeo_importer.go
+++ b/importers/vimeo_importer.go
@@ -1,10 +1,50 @@
package importers
-import "fmt"
+import (
+ "fmt"
+ "strings"
+
+ "github.com/prologic/vimeodl"
+)
type VimeoImporter struct{}
func (i *VimeoImporter) GetVideoInfo(url string) (videoInfo VideoInfo, err error) {
- err = fmt.Errorf("Not Implemented")
+ if strings.HasPrefix(url, "vimeo:") {
+ url = strings.TrimPrefix(url, "vimeo:")
+ }
+
+ if !strings.HasPrefix(url, "http") {
+ url = "https://player.vimeo.com/video/" + url
+ }
+
+ if !strings.HasPrefix(url, "https://player.vimeo.com/video/") {
+ playerURL, err := vimeodl.GetPlayerURL(url)
+ if err != nil {
+ err := fmt.Errorf("error finding player url: %w", err)
+ return VideoInfo{}, err
+ }
+ url = playerURL
+ }
+
+ if !strings.HasSuffix(url, "/") {
+ url += "/"
+ }
+
+ url += "config"
+
+ config, err := vimeodl.GetVideoConfig(url)
+ if err != nil {
+ err := fmt.Errorf("error retrieving video config: %w", err)
+ return VideoInfo{}, err
+ }
+
+ videoInfo.VideoURL = vimeodl.PickBestVideo(config)
+
+ videoInfo.ThumbnailURL = vimeodl.PickBestThumbnail(config)
+
+ videoInfo.ID = string(config.Video.Id)
+ videoInfo.Title = config.Video.Title
+
return
}