func ShowEpisodeLinks(ctx *gin.Context) { seasonNumber, _ := strconv.Atoi(ctx.Params.ByName("season")) episodeNumber, _ := strconv.Atoi(ctx.Params.ByName("episode")) torrents, longName, err := showEpisodeLinks(ctx.Params.ByName("showId"), seasonNumber, episodeNumber) if err != nil { ctx.Error(err) return } if len(torrents) == 0 { xbmc.Notify("Quasar", "LOCALIZE[30205]", config.AddonIcon()) return } choices := make([]string, 0, len(torrents)) for _, torrent := range torrents { info := make([]string, 0) if torrent.Resolution > 0 { info = append(info, bittorrent.Resolutions[torrent.Resolution]) } if torrent.Size != "" { info = append(info, fmt.Sprintf("[%s]", torrent.Size)) } if torrent.RipType > 0 { info = append(info, bittorrent.Rips[torrent.RipType]) } if torrent.VideoCodec > 0 { info = append(info, bittorrent.Codecs[torrent.VideoCodec]) } if torrent.AudioCodec > 0 { info = append(info, bittorrent.Codecs[torrent.AudioCodec]) } if torrent.Provider != "" { info = append(info, " - "+torrent.Provider) } torrentName := torrent.Name if len(torrentName) > 80 { torrentName = torrentName[:80] } label := fmt.Sprintf("[B](%d / %d) %s[/B]\n%s", torrent.Seeds, torrent.Peers, strings.Join(info, " "), torrentName, ) choices = append(choices, label) } choice := xbmc.ListDialogLarge("LOCALIZE[30228]", longName, choices...) if choice >= 0 { rUrl := UrlQuery(UrlForXBMC("/play"), "uri", torrents[choice].Magnet()) ctx.Redirect(302, rUrl) } }
func MovieLinks(ctx *gin.Context) { torrents, movieTitle := movieLinks(ctx.Params.ByName("tmdbId")) if len(torrents) == 0 { xbmc.Notify("Quasar", "LOCALIZE[30205]", config.AddonIcon()) return } choices := make([]string, 0, len(torrents)) for _, torrent := range torrents { resolution := "" if torrent.Resolution > 0 { resolution = fmt.Sprintf("[B][COLOR %s]%s[/COLOR][/B] ", bittorrent.Colors[torrent.Resolution], bittorrent.Resolutions[torrent.Resolution]) } info := make([]string, 0) if torrent.Size != "" { info = append(info, fmt.Sprintf("[B][%s][/B]", torrent.Size)) } if torrent.RipType > 0 { info = append(info, bittorrent.Rips[torrent.RipType]) } if torrent.VideoCodec > 0 { info = append(info, bittorrent.Codecs[torrent.VideoCodec]) } if torrent.AudioCodec > 0 { info = append(info, bittorrent.Codecs[torrent.AudioCodec]) } if torrent.Provider != "" { info = append(info, fmt.Sprintf(" - [B]%s[/B]", torrent.Provider)) } multi := "" if torrent.Multi { multi = "\nmulti" } label := fmt.Sprintf("%s(%d / %d) %s\n%s\n%s%s", resolution, torrent.Seeds, torrent.Peers, strings.Join(info, " "), torrent.Name, torrent.Icon, multi, ) choices = append(choices, label) } choice := xbmc.ListDialogLarge("LOCALIZE[30228]", movieTitle, choices...) if choice >= 0 { rUrl := UrlQuery(UrlForXBMC("/play"), "uri", torrents[choice].Magnet()) ctx.Redirect(302, rUrl) } }
func MovieLinks(ctx *gin.Context) { torrents, movieTitle := movieLinks(ctx.Params.ByName("imdbId")) if len(torrents) == 0 { xbmc.Notify("Quasar", "LOCALIZE[30205]", config.AddonIcon()) return } choices := make([]string, 0, len(torrents)) for _, torrent := range torrents { info := make([]string, 0) if torrent.Resolution > 0 { info = append(info, bittorrent.Resolutions[torrent.Resolution]) } if torrent.Size != "" { info = append(info, fmt.Sprintf("[%s]", torrent.Size)) } if torrent.RipType > 0 { info = append(info, bittorrent.Rips[torrent.RipType]) } if torrent.VideoCodec > 0 { info = append(info, bittorrent.Codecs[torrent.VideoCodec]) } if torrent.AudioCodec > 0 { info = append(info, bittorrent.Codecs[torrent.AudioCodec]) } if torrent.Provider != "" { info = append(info, " - "+torrent.Provider) } torrentName := torrent.Name if len(torrentName) > 80 { torrentName = torrentName[:80] } label := fmt.Sprintf("(%d / %d) %s\n%s", torrent.Seeds, torrent.Peers, strings.Join(info, " "), torrentName, ) choices = append(choices, label) } choice := xbmc.ListDialogLarge("LOCALIZE[30228]", movieTitle, choices...) if choice >= 0 { rUrl := UrlQuery(UrlForXBMC("/play"), "uri", torrents[choice].Magnet()) ctx.Redirect(302, rUrl) } }
func ShowEpisodeLinks(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, "") longName := fmt.Sprintf("%s S%02dE%02d", show.Name, 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 } choices := make([]string, 0, len(torrents)) for _, torrent := range torrents { resolution := "" if torrent.Resolution > 0 { resolution = fmt.Sprintf("[B][COLOR %s]%s[/COLOR][/B] ", bittorrent.Colors[torrent.Resolution], bittorrent.Resolutions[torrent.Resolution]) } info := make([]string, 0) if torrent.Size != "" { info = append(info, fmt.Sprintf("[B][%s][/B]", torrent.Size)) } if torrent.RipType > 0 { info = append(info, bittorrent.Rips[torrent.RipType]) } if torrent.VideoCodec > 0 { info = append(info, bittorrent.Codecs[torrent.VideoCodec]) } if torrent.AudioCodec > 0 { info = append(info, bittorrent.Codecs[torrent.AudioCodec]) } if torrent.Provider != "" { info = append(info, fmt.Sprintf(" - [B]%s[/B]", torrent.Provider)) } multi := "" if torrent.Multi { multi = "\nmulti" } label := fmt.Sprintf("%s(%d / %d) %s\n%s\n%s%s", resolution, torrent.Seeds, torrent.Peers, strings.Join(info, " "), torrent.Name, torrent.Icon, multi, ) choices = append(choices, label) } choice := xbmc.ListDialogLarge("LOCALIZE[30228]", longName, choices...) if choice >= 0 { AddToTorrentsMap(strconv.Itoa(episode.Id), torrents[choice]) rUrl := UrlQuery( UrlForXBMC("/play"), "uri", torrents[choice].Magnet(), "tmdb", strconv.Itoa(episode.Id), "type", "episode", "runtime", strconv.Itoa(runtime)) ctx.Redirect(302, rUrl) } }