示例#1
0
            public static string FullInfo(User user, int TVID, out MessageKeyboard keyboard, out List <MediaAttachment> attachments)
            {
                Video trailer = null;
                var   t       = new Task(() => GetTrailer(TVID, ref trailer));

                t.Start();

                var client  = new RestClient("https://kinopoiskapiunofficial.tech/api/v2.1/films/" + TVID.ToString());
                var request = new RestRequest(Method.GET);

                request.AddHeader("X-API-KEY", Bot._kp_key);
                request.AddQueryParameter("append_to_response", "RATING");
                IRestResponse response = client.Execute(request);

                TVObject film;

                try { film = JsonConvert.DeserializeObject <TVObject>(response.Content); }
                catch (Exception) { keyboard = null; attachments = null; return("При загрузке информации о сериале что-то произошло... 😔 Попробуй повторно выполнить запрос"); }
                if (film.data.nameEn != null)
                {
                    user.AddTVSoundtrackAsync(film.data.nameEn, "series");
                }
                else
                {
                    user.AddTVSoundtrackAsync(film.data.nameRu, "сериал");
                }
                var poster = Attachments.PosterObject(user, film.data.posterUrl, film.data.filmId.ToString());

                t.Wait();
                attachments = new List <MediaAttachment> {
                    poster
                };
                if (trailer != null)
                {
                    attachments.Add(trailer);
                }

                if (film.data.nameEn != null && film.data.nameEn != string.Empty)
                {
                    user.AddTVSoundtrackAsync(film.data.nameEn, "ost");
                }
                else
                {
                    user.AddTVSoundtrackAsync(film.data.nameRu, "саундтрек");
                }
                keyboard = Keyboards.TVSearch(film.data.nameRu, film.data.nameEn, film.data.filmId.ToString(), string.Join("*", film.data.genres.Select(g => g.genre)), film.data.premiereRu);
                return(FullInfo(film));
            }
            public void createPostersFacts(User user, string filmID)
            {
                IsTrailer = false;
                var client1  = new RestClient("https://kinopoiskapiunofficial.tech/api/v2.1/films/" + filmID);
                var request1 = new RestRequest(Method.GET);

                request1.AddHeader("X-API-KEY", Bot._kp_key);
                IRestResponse response1 = client1.Execute(request1);

                Film.FilmObject film;
                try { film = JsonConvert.DeserializeObject <Film.FilmObject>(response1.Content); }
                catch (Exception) { film = null; }
                if (film != null)
                {
                    var name = film.data.nameRu ?? film.data.nameEn;
                    var year = film.data.year;

                    var client2  = new RestClient($"https://kinopoiskapiunofficial.tech/api/v2.1/films/{filmID}/frames");
                    var request2 = new RestRequest(Method.GET);
                    request2.AddHeader("X-API-KEY", Bot._kp_key);
                    IRestResponse response2 = client2.Execute(request2);
                    Frames        frames;
                    try { frames = JsonConvert.DeserializeObject <Frames>(response2.Content); }
                    catch (Exception) { frames = null; }
                    if (frames != null && frames.frames != null && frames.frames.Count != 0)
                    {
                        var posters = new List <Photo>();
                        IEnumerable <string> links = frames.frames.Select(f => f.image).Shuffle().Take(Math.Min(5, frames.frames.Count));
                        foreach (var link in links)
                        {
                            if (Attachments.PosterObject(user, link, filmID, out Photo photo))
                            {
                                posters.Add(photo);
                            }
                        }
                        if (posters.Count != 0)
                        {
                            Posters = posters;
                            IsValid = true;
                        }
                        else
                        {
                            return;
                        }
                    }
                    else
                    {
                        return;
                    }

                    if (film.data.facts.Count != 0)
                    {
                        Facts = film.data.facts.Shuffle().Take(Math.Min(3, film.data.facts.Count)).ToList();
                    }

                    var soundtrack = new List <Audio>();
                    if (film.data.type == "FILM")
                    {
                        string fname, addition;
                        if (film.data.nameEn != null && film.data.nameEn != string.Empty)
                        {
                            fname    = film.data.nameEn;
                            addition = "ost";
                        }
                        else
                        {
                            fname    = film.data.nameRu;
                            addition = "саундтрек";
                        }
                        //addition = year;
                        Film.Methods.DownloadSoundtrack(fname, addition, soundtrack, 2);
                    }
                    else if (film.data.type == "TV_SHOW")
                    {
                        string fname, addition;
                        if (film.data.nameEn != null && film.data.nameEn != string.Empty)
                        {
                            fname    = film.data.nameEn;
                            addition = "ost";
                        }
                        else
                        {
                            fname    = film.data.nameRu;
                            addition = "саундтрек";
                        }
                        //addition = year;
                        TV.Methods.DownloadSoundtrack(fname, addition, soundtrack, 2);
                    }
                    id         = filmID;
                    Name       = name;
                    Year       = year;
                    SoundTrack = soundtrack;
                }
            }
            public void createPostersFacts(Film.FilmObject film)
            {
                IsTrailer = false;
                var name = film.data.nameRu ?? film.data.nameEn;
                var year = film.data.year;

                var client2  = new RestClient($"https://kinopoiskapiunofficial.tech/api/v2.1/films/{film.data.filmId}/frames");
                var request2 = new RestRequest(Method.GET);

                request2.AddHeader("X-API-KEY", Bot._kp_key);
                IRestResponse response2 = client2.Execute(request2);
                Frames        frames;

                try { frames = JsonConvert.DeserializeObject <Frames>(response2.Content); }
                catch (Exception) { frames = null; }
                if (frames != null && frames.frames != null && frames.frames.Count != 0)
                {
                    var posters = new List <string>();
                    IEnumerable <string> links = frames.frames.Select(f => f.image).Shuffle().Take(Math.Min(5, frames.frames.Count));
                    foreach (var link in links)
                    {
                        var id = Attachments.PosterObject(link, film.data.filmId.ToString());
                        if (id != null)
                        {
                            posters.Add(id);
                        }
                    }
                    if (posters.Count != 0)
                    {
                        PostersIds = posters;
                        IsValid    = true;
                    }
                    else
                    {
                        return;
                    }
                }
                else
                {
                    return;
                }

                if (film.data.facts.Count != 0)
                {
                    Facts = film.data.facts.Shuffle().Take(Math.Min(3, film.data.facts.Count)).ToList();
                }

                /*var soundtrack = new List<Audio>();
                 * if (film.data.type == "FILM")
                 * {
                 *  string fname, addition;
                 *  if (film.data.nameEn != null)
                 *  {
                 *      fname = film.data.nameEn;
                 *      //addition = "ost";
                 *  }
                 *  else
                 *  {
                 *      fname = film.data.nameRu;
                 *      //addition = "саундтрек";
                 *  }
                 *  addition = year;
                 *  Film.Methods.DownloadSoundtrack(fname, addition, soundtrack, 2);
                 * }
                 * else if (film.data.type == "TV_SHOW")
                 * {
                 *  string fname, addition;
                 *  if (film.data.nameEn != null)
                 *  {
                 *      fname = film.data.nameEn;
                 *      addition = "series";
                 *  }
                 *  else
                 *  {
                 *      fname = film.data.nameRu;
                 *      addition = "сериал";
                 *  }
                 *  TV.Methods.DownloadSoundtrack(fname, addition, soundtrack, 2);
                 * }*/
                id         = film.data.filmId.ToString();
                Name       = name;
                Year       = year;
                SoundTrack = null;
            }
示例#4
0
            /*public static MessageTemplate ActorMessage(string filmID)
             * {
             *  var proverka = Film.Methods.Actors(filmID);
             *  if (proverka != null)
             *      return Keyboards.ActorResultsTV(proverka.Take(Math.Min(5, proverka.Count)));
             *  else return null;
             * }*/


            public static string ActorDescriptionMessageTV(User user, string personId, out IEnumerable <MediaAttachment> attachments)
            {
                var ActInf = Film.Methods.ActorInfo(personId);

                attachments = new List <MediaAttachment> {
                    Attachments.PosterObject(user, ActInf.posterUrl, personId)
                };
                string ActorInfoObj = "";

                if (ActInf.hasAwards == 1)
                {
                    ActorInfoObj = "🏆 ";
                }
                if (ActInf.nameRu == null || ActInf.nameRu == string.Empty)
                {
                    ActorInfoObj += ActInf.nameEn + "\n";
                }
                else if (ActInf.nameEn == null || ActInf.nameEn == string.Empty)
                {
                    ActorInfoObj += ActInf.nameRu + "\n";
                }

                else if (ActInf.nameRu != null && ActInf.nameEn != null && ActInf.nameRu != string.Empty && ActInf.nameEn != string.Empty)
                {
                    ActorInfoObj += ActInf.nameRu + "/" + ActInf.nameEn + "\n\n";
                }

                if (ActInf.growth != null && ActInf.growth != "0")
                {
                    ActorInfoObj += "🕺Рост: " + ActInf.growth + "\n";
                }
                if (ActInf.birthday != null && ActInf.birthday != string.Empty)
                {
                    ActorInfoObj += "👶День рождения: " + Film.Methods.ChangeDateType(ActInf.birthday) + "\n";
                }
                if (ActInf.death != null && ActInf.death != string.Empty)
                {
                    ActorInfoObj += "💀Дата смерти: " + Film.Methods.ChangeDateType(ActInf.death) + "\n";
                }
                if (ActInf.age != 0)
                {
                    ActorInfoObj += "⏰Возраст: " + ActInf.age + "\n\n";
                }
                if (ActInf.facts != null && ActInf.facts.Count != 0)
                {
                    ActorInfoObj += "✨Интересные факты\n" + string.Join("\n", ActInf.facts.Take(Math.Min(3, ActInf.facts.Count)).Select(f => $"✔ {f}")) + "\n";
                }
                ActorInfoObj += "\n📽Фильмография\n";
                int i = 0;
                var l = new List <int>();

                foreach (var item in ActInf.films)
                {
                    if (i == 10)
                    {
                        break;
                    }

                    if (l.Contains(item.filmId))
                    {
                        continue;
                    }

                    if (item.nameRu == null)
                    {
                        ActorInfoObj += item.nameEn;
                    }
                    else
                    {
                        ActorInfoObj += item.nameRu;
                    }


                    if (item.rating != null)
                    {
                        var m = Regex.Match(item.rating, @"\b(\d)\.(\d)\b");
                        if (m.Success && m.Groups[1].Value != "0" && m.Groups[2].Value != "0")
                        {
                            ActorInfoObj += " ⭐" + item.rating;
                        }
                    }
                    ActorInfoObj += "\n";
                    i++;
                    l.Add(item.filmId);
                }


                return(ActorInfoObj);
            }