You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.3 KiB
62 lines
1.3 KiB
package service
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"net/url"
|
|
|
|
"github.com/TheHippo/podcastindex"
|
|
"github.com/akhilrex/podgrab/model"
|
|
)
|
|
|
|
type SearchService interface {
|
|
Query(q string) []*model.CommonSearchResultModel
|
|
}
|
|
|
|
type ItunesService struct {
|
|
}
|
|
|
|
const ITUNES_BASE = "https://itunes.apple.com"
|
|
|
|
func (service ItunesService) Query(q string) []*model.CommonSearchResultModel {
|
|
url := fmt.Sprintf("%s/search?term=%s&entity=podcast", ITUNES_BASE, url.QueryEscape(q))
|
|
|
|
body, _ := makeQuery(url)
|
|
var response model.ItunesResponse
|
|
json.Unmarshal(body, &response)
|
|
|
|
var toReturn []*model.CommonSearchResultModel
|
|
|
|
for _, obj := range response.Results {
|
|
toReturn = append(toReturn, GetSearchFromItunes(obj))
|
|
}
|
|
|
|
return toReturn
|
|
}
|
|
|
|
type PodcastIndexService struct {
|
|
}
|
|
|
|
const (
|
|
PODCASTINDEX_KEY = "LNGTNUAFVL9W2AQKVZ49"
|
|
PODCASTINDEX_SECRET = "H8tq^CZWYmAywbnngTwB$rwQHwMSR8#fJb#Bhgb3"
|
|
)
|
|
|
|
func (service PodcastIndexService) Query(q string) []*model.CommonSearchResultModel {
|
|
|
|
c := podcastindex.NewClient(PODCASTINDEX_KEY, PODCASTINDEX_SECRET)
|
|
var toReturn []*model.CommonSearchResultModel
|
|
podcasts, err := c.Search(q)
|
|
if err != nil {
|
|
log.Fatal(err.Error())
|
|
return toReturn
|
|
}
|
|
|
|
for _, obj := range podcasts {
|
|
toReturn = append(toReturn, GetSearchFromPodcastIndex(obj))
|
|
}
|
|
|
|
return toReturn
|
|
}
|