本文整理汇总了Golang中github.com/scakemyer/quasar/config.AddonIcon函数的典型用法代码示例。如果您正苦于以下问题:Golang AddonIcon函数的具体用法?Golang AddonIcon怎么用?Golang AddonIcon使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了AddonIcon函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Authorize
func Authorize(fromSettings bool) error {
code, err := GetCode()
if err != nil {
xbmc.Notify("Quasar", err.Error(), config.AddonIcon())
return err
}
log.Noticef("Got code for %s: %s", code.VerificationURL, code.UserCode)
if xbmc.Dialog("LOCALIZE[30058]", fmt.Sprintf("Visit %s and enter your code: %s", code.VerificationURL, code.UserCode)) == false {
return errors.New("Authentication canceled.")
}
token, err := PollToken(code)
if err != nil {
xbmc.Notify("Quasar", err.Error(), config.AddonIcon())
return err
}
success := "Woohoo!"
if fromSettings {
success += " (Save your settings!)"
}
xbmc.Notify("Quasar", success, config.AddonIcon())
xbmc.SetSetting("trakt_token", token.AccessToken)
xbmc.SetSetting("trakt_refresh_token", token.RefreshToken)
return nil
}
示例2: GetList
func GetList(listId string, language string, page int) Movies {
var results *List
listResultsPerPage := config.Get().ResultsPerPage
rateLimiter.Call(func() {
urlValues := napping.Params{
"api_key": apiKey,
}.AsUrlValues()
resp, err := napping.Get(
tmdbEndpoint+"list/"+listId,
&urlValues,
&results,
nil,
)
if err != nil {
log.Error(err.Error())
xbmc.Notify("Quasar", "GetList failed, check your logs.", config.AddonIcon())
} else if resp.Status() != 200 {
message := fmt.Sprintf("GetList bad status: %d", resp.Status())
log.Error(message)
xbmc.Notify("Quasar", message, config.AddonIcon())
}
})
tmdbIds := make([]int, 0, listResultsPerPage)
for i, movie := range results.Items {
if i < page*listResultsPerPage {
continue
}
tmdbIds = append(tmdbIds, movie.Id)
if i >= (startPage+page)*listResultsPerPage-1 {
break
}
}
return GetMovies(tmdbIds, language)
}
示例3: ListShows
func ListShows(endpoint string, params napping.Params, page int) (shows Shows) {
var results *EntityList
params["page"] = strconv.Itoa(startPage + page)
params["api_key"] = apiKey
p := params.AsUrlValues()
rateLimiter.Call(func() {
resp, err := napping.Get(
tmdbEndpoint + endpoint,
&p,
&results,
nil,
)
if err != nil {
log.Error(err.Error())
xbmc.Notify("Quasar", "ListShows failed, check your logs.", config.AddonIcon())
} else if resp.Status() != 200 {
message := fmt.Sprintf("ListShows bad status: %d", resp.Status())
log.Error(message)
xbmc.Notify("Quasar", message, config.AddonIcon())
}
})
if results != nil {
for _, show := range results.Results {
shows = append(shows, GetShow(show.Id, params["language"]))
}
}
return shows
}
示例4: SearchShows
func SearchShows(query string, language string, page int) Shows {
var results EntityList
rateLimiter.Call(func() {
urlValues := napping.Params{
"api_key": apiKey,
"query": query,
"page": strconv.Itoa(startPage + page),
}.AsUrlValues()
resp, err := napping.Get(
tmdbEndpoint+"search/tv",
&urlValues,
&results,
nil,
)
if err != nil {
log.Error(err.Error())
xbmc.Notify("Quasar", "SearchShows failed, check your logs.", config.AddonIcon())
} else if resp.Status() != 200 {
message := fmt.Sprintf("SearchShows bad status: %d", resp.Status())
log.Error(message)
xbmc.Notify("Quasar", message, config.AddonIcon())
}
})
tmdbIds := make([]int, 0, len(results.Results))
for _, entity := range results.Results {
tmdbIds = append(tmdbIds, entity.Id)
}
return GetShows(tmdbIds, language)
}
示例5: Find
func Find(externalId string, externalSource string) *FindResult {
var result *FindResult
cacheStore := cache.NewFileStore(path.Join(config.Get().ProfilePath, "cache"))
key := fmt.Sprintf("com.tmdb.find.%s.%s", externalSource, externalId)
if err := cacheStore.Get(key, &result); err != nil {
rateLimiter.Call(func() {
urlValues := napping.Params{
"api_key": apiKey,
"external_source": externalSource,
}.AsUrlValues()
resp, err := napping.Get(
tmdbEndpoint+"find/"+externalId,
&urlValues,
&result,
nil,
)
if err != nil {
log.Error(err.Error())
xbmc.Notify("Quasar", "Failed Find call, check your logs.", config.AddonIcon())
} else if resp.Status() != 200 {
message := fmt.Sprintf("Find call bad status: %d", resp.Status())
log.Error(message)
xbmc.Notify("Quasar", message, config.AddonIcon())
}
cacheStore.Set(key, result, 365*24*time.Hour)
})
}
return result
}
示例6: ListShowsComplete
func ListShowsComplete(endpoint string, params napping.Params, page int) Shows {
maxPages := MaxPages
if page >= 0 {
maxPages = 1
}
shows := make(Shows, maxPages*resultsPerPage)
params["api_key"] = apiKey
wg := sync.WaitGroup{}
for i := 0; i < maxPages; i++ {
wg.Add(1)
currentpage := i
startIndex := i * resultsPerPage
if page >= 0 {
currentpage = page
}
go func(page int) {
defer wg.Done()
var tmp *EntityList
tmpParams := napping.Params{
"page": strconv.Itoa(startPage + page),
}
for k, v := range params {
tmpParams[k] = v
}
urlValues := tmpParams.AsUrlValues()
rateLimiter.Call(func() {
resp, err := napping.Get(
tmdbEndpoint+endpoint,
&urlValues,
&tmp,
nil,
)
if err != nil {
log.Error(err.Error())
xbmc.Notify("Quasar", "ListShows failed, check your logs.", config.AddonIcon())
} else if resp.Status() != 200 {
message := fmt.Sprintf("ListShows bad status: %d", resp.Status())
xbmc.Notify("Quasar", message, config.AddonIcon())
}
})
if tmp != nil {
for i, entity := range tmp.Results {
shows[startIndex+i] = GetShow(entity.Id, params["language"])
}
}
}(currentpage)
}
wg.Wait()
return shows
}
示例7: RemoveMovieFromWatchlist
func RemoveMovieFromWatchlist(ctx *gin.Context) {
tmdbId := ctx.Params.ByName("tmdbId")
resp, err := trakt.RemoveFromWatchlist("movies", tmdbId)
if err != nil {
xbmc.Notify("Quasar", err.Error(), config.AddonIcon())
} else if resp.Status() != 200 {
xbmc.Notify("Quasar", fmt.Sprintf("Failed with %d status code", resp.Status()), config.AddonIcon())
} else {
xbmc.Notify("Quasar", "Movie removed from watchlist", config.AddonIcon())
os.RemoveAll(filepath.Join(config.Get().Info.Profile, "cache"))
xbmc.Refresh()
}
}
示例8: AddMovieToCollection
func AddMovieToCollection(ctx *gin.Context) {
tmdbId := ctx.Params.ByName("tmdbId")
resp, err := trakt.AddToCollection("movies", tmdbId)
if err != nil {
xbmc.Notify("Quasar", err.Error(), config.AddonIcon())
} else if resp.Status() != 201 {
xbmc.Notify("Quasar", fmt.Sprintf("Failed with %d status code", resp.Status()), config.AddonIcon())
} else {
xbmc.Notify("Quasar", "Movie added to collection", config.AddonIcon())
os.RemoveAll(filepath.Join(config.Get().Info.Profile, "cache"))
xbmc.Refresh()
}
}
示例9: AddShowToWatchlist
func AddShowToWatchlist(ctx *gin.Context) {
tmdbId := ctx.Params.ByName("showId")
resp, err := trakt.AddToWatchlist("shows", tmdbId)
if err != nil {
xbmc.Notify("Quasar", err.Error(), config.AddonIcon())
} else if resp.Status() != 201 {
xbmc.Notify("Quasar", fmt.Sprintf("Failed %d", resp.Status()), config.AddonIcon())
} else {
xbmc.Notify("Quasar", "Show added to watchlist", config.AddonIcon())
os.RemoveAll(filepath.Join(config.Get().Info.Profile, "cache"))
xbmc.Refresh()
}
}
示例10: GetShow
func GetShow(showId int, language string) *Show {
var show *Show
cacheStore := cache.NewFileStore(path.Join(config.Get().ProfilePath, "cache"))
key := fmt.Sprintf("com.tmdb.show.%d.%s", showId, language)
if err := cacheStore.Get(key, &show); err != nil {
rateLimiter.Call(func() {
urlValues := napping.Params{
"api_key": apiKey,
"append_to_response": "credits,images,alternative_titles,translations,external_ids",
"language": language,
}.AsUrlValues()
resp, err := napping.Get(
tmdbEndpoint+"tv/"+strconv.Itoa(showId),
&urlValues,
&show,
nil,
)
if err != nil {
switch e := err.(type) {
case *json.UnmarshalTypeError:
log.Errorf("UnmarshalTypeError: Value[%s] Type[%v] Offset[%d] for %d", e.Value, e.Type, e.Offset, showId)
case *json.InvalidUnmarshalError:
log.Errorf("InvalidUnmarshalError: Type[%v]", e.Type)
default:
log.Error(err.Error())
}
LogError(err)
xbmc.Notify("Quasar", "GetShow failed, check your logs.", config.AddonIcon())
} else if resp.Status() != 200 {
message := fmt.Sprintf("GetShow bad status: %d", resp.Status())
log.Error(message)
xbmc.Notify("Quasar", message, config.AddonIcon())
}
})
if show != nil {
cacheStore.Set(key, show, cacheTime)
}
}
if show == nil {
return nil
}
switch t := show.RawPopularity.(type) {
case string:
if popularity, err := strconv.ParseFloat(t, 64); err == nil {
show.Popularity = popularity
}
case float64:
show.Popularity = t
}
return show
}
示例11: GetSeason
func GetSeason(showId int, seasonNumber int, language string) *Season {
var season *Season
cacheStore := cache.NewFileStore(path.Join(config.Get().ProfilePath, "cache"))
key := fmt.Sprintf("com.tmdb.season.%d.%d.%s", showId, seasonNumber, language)
if err := cacheStore.Get(key, &season); err != nil {
rateLimiter.Call(func() {
urlValues := napping.Params{
"api_key": apiKey,
"append_to_response": "credits,images,videos,external_ids",
"language": language,
}.AsUrlValues()
resp, err := napping.Get(
fmt.Sprintf("%stv/%d/season/%d", tmdbEndpoint, showId, seasonNumber),
&urlValues,
&season,
nil,
)
if err != nil {
log.Error(err.Error())
xbmc.Notify("Quasar", err.Error(), config.AddonIcon())
} else if resp.Status() != 200 {
message := fmt.Sprintf("GetSeason bad status: %d", resp.Status())
log.Error(message)
xbmc.Notify("Quasar", message, config.AddonIcon())
}
})
season.EpisodeCount = len(season.Episodes)
// Fix for shows that have translations but return empty strings
// for episode names and overviews.
// We detect if episodes have their name filled, and if not re-query
// with no language set.
// See https://github.com/scakemyer/plugin.video.quasar/issues/249
if season.EpisodeCount > 0 {
for index := 0; index < season.EpisodeCount; index++ {
if season.Episodes[index].Name == "" {
season.Episodes[index] = GetEpisode(showId, seasonNumber, index+1, "")
}
}
}
if season != nil {
cacheStore.Set(key, season, cacheTime)
}
}
if season == nil {
return nil
}
return season
}
示例12: WatchlistMovies
func WatchlistMovies(ctx *gin.Context) {
movies, err := trakt.WatchlistMovies()
if err != nil {
xbmc.Notify("Quasar", err.Error(), config.AddonIcon())
}
renderTraktMovies(movies, ctx, 0)
}
示例13: ShowEpisodePlay
func ShowEpisodePlay(ctx *gin.Context) {
tmdbId := ctx.Params.ByName("showId")
showId, _ := strconv.Atoi(tmdbId)
seasonNumber, _ := strconv.Atoi(ctx.Params.ByName("season"))
episodeNumber, _ := strconv.Atoi(ctx.Params.ByName("episode"))
show := tmdb.GetShow(showId, "")
episode := tmdb.GetEpisode(showId, seasonNumber, episodeNumber, "")
runtime := 45
if len(show.EpisodeRunTime) > 0 {
runtime = show.EpisodeRunTime[len(show.EpisodeRunTime)-1]
}
torrents, err := showEpisodeLinks(showId, seasonNumber, episodeNumber)
if err != nil {
ctx.Error(err)
return
}
if len(torrents) == 0 {
xbmc.Notify("Quasar", "LOCALIZE[30205]", config.AddonIcon())
return
}
AddToTorrentsMap(strconv.Itoa(episode.Id), torrents[0])
rUrl := UrlQuery(UrlForXBMC("/play"), "uri", torrents[0].Magnet(),
"tmdb", strconv.Itoa(episode.Id),
"type", "episode",
"runtime", strconv.Itoa(runtime))
ctx.Redirect(302, rUrl)
}
示例14: RemoveShow
func RemoveShow(ctx *gin.Context) {
LibraryPath := config.Get().LibraryPath
ShowsLibraryPath := filepath.Join(LibraryPath, "Shows")
DBPath := filepath.Join(LibraryPath, fmt.Sprintf("%s.json", DBName))
showId := ctx.Params.ByName("showId")
show, err := tvdb.NewShow(showId, "en")
if err != nil {
ctx.String(404, "")
return
}
ShowPath := filepath.Join(ShowsLibraryPath, toFileName(show.SeriesName))
if err := RemoveFromJsonDB(DBPath, showId, LShow); err != nil {
libraryLog.Info("Unable to remove show from db")
ctx.String(404, "")
return
}
if err := os.RemoveAll(ShowPath); err != nil {
libraryLog.Info("Unable to remove show folder")
ctx.String(404, "")
return
}
xbmc.Notify("Quasar", "LOCALIZE[30222]", config.AddonIcon())
ctx.String(200, "")
xbmc.VideoLibraryClean()
libraryLog.Info("Show removed")
}
示例15: RemoveMovie
func RemoveMovie(ctx *gin.Context) {
LibraryPath := config.Get().LibraryPath
MoviesLibraryPath := filepath.Join(LibraryPath, "Movies")
DBPath := filepath.Join(LibraryPath, fmt.Sprintf("%s.json", DBName))
imdbId := ctx.Params.ByName("imdbId")
movie := tmdb.GetMovieFromIMDB(imdbId, "en")
MovieStrm := toFileName(fmt.Sprintf("%s (%s)", movie.OriginalTitle, strings.Split(movie.ReleaseDate, "-")[0]))
MoviePath := filepath.Join(MoviesLibraryPath, MovieStrm)
if err := RemoveFromJsonDB(DBPath, imdbId, LMovie); err != nil {
libraryLog.Info("Unable to remove movie from db")
ctx.String(404, "")
return
}
if err := os.RemoveAll(MoviePath); err != nil {
libraryLog.Info("Unable to remove movie folder")
ctx.String(404, "")
return
}
xbmc.Notify("Quasar", "LOCALIZE[30222]", config.AddonIcon())
ctx.String(200, "")
xbmc.VideoLibraryClean()
libraryLog.Info("Movie removed")
}