freedom-legacy/youtube.go

59 lines
1.7 KiB
Go
Raw Permalink Normal View History

2018-12-28 02:27:34 +00:00
package main
import(
"fmt"
"log"
"encoding/json"
"os"
"net/http"
"net/url"
"io/ioutil"
"regexp"
)
var youtubeToken = os.Getenv("YOUTUBE_TOKEN")
var youtube_api = "https://www.googleapis.com/youtube/v3/search"
var youtube_video_baseurl = "https://youtube.com/watch?v="
func search_on_youtube(searchString string) (youtube_url string) {
reg, _ := regexp.Compile("[^a-zA-Z0-9 -]+")
processedString := reg.ReplaceAllString(searchString, "")
t := &url.URL{Path: processedString}
http_request := t.String()
http_request_encoded := (youtube_api+"?part=snippet&maxResults=1&q="+http_request+"&key="+youtubeToken)
response, err := http.Get(http_request_encoded)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
} else {
defer response.Body.Close()
contents, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
}
data := new(youtubeSearchResult)
json.Unmarshal(contents, &data)
if len(data.Items) > 0 {
youtube_url = youtube_video_baseurl + data.Items[0].ID.VideoID
} else {
// TODO: put this spotify track on 'manual donwload queue'
// youtube_url = "could not find track on yt"
f, err := os.OpenFile("manual-download.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatal(err)
}
if _, err := f.Write([]byte(searchString+"\n")); err != nil {
log.Fatal(err)
}
if err := f.Close(); err != nil {
log.Fatal(err)
}
}
}
return
}