public TVSeason PopulateSeasonFromJson(string seasonData)
        {
            TVSeason mySeason = new TVSeason();
            JObject seasonJObject = JObject.Parse(seasonData);


            mySeason.AirDate = "" + seasonJObject["air_date"];
            mySeason.TVDBID = "" + seasonJObject["id"];
            mySeason.Overview = "" + seasonJObject["overview"];
            mySeason.PosterPath = "" + seasonJObject["poster_path"];
            mySeason.SeasonNumber = (int)seasonJObject["season_number"];

            JArray myEpisodeArray = (JArray)seasonJObject.SelectToken("episodes");
            mySeason.EpisodeCount = myEpisodeArray.Count;

            mySeason.Episodes = new List<TVEpisode>();
            foreach (JToken episodeJToken in myEpisodeArray)
            {
                TVEpisode myEpisode = new TVEpisode
                {
                    EpisodeNumber = (int)episodeJToken["episode_number"],
                    SeasonNumber = mySeason.SeasonNumber,
                    Name = "" + episodeJToken["name"],
                    AirDate = "" + episodeJToken["air_date"],
                    StillPath = "" + episodeJToken["still_path"],
                    Overview = "" + episodeJToken["overview"]
                };
                mySeason.Episodes.Add(myEpisode);
            }

            return mySeason;
        }
 public override void OnCreate(Bundle savedInstanceState)
 {
     base.OnCreate(savedInstanceState);
     
     string episodeSerialized = Arguments.GetString("episodeSerialized");
     _episode = new TVEpisode();
     _episode = JsonConvert.DeserializeObject<TVEpisode>(episodeSerialized);
 }
 public override void OnCreate(Bundle savedInstanceState)
 {
     base.OnCreate(savedInstanceState);
     if (Arguments != null)
     {
         _myEpisode = new TVEpisode();
         _myEpisode = JsonConvert.DeserializeObject<TVEpisode>(Arguments.GetString("myEpisode"));
     }
 }
        public static NextEpisodeFragment NewInstance(TVEpisode episode)
        {
            NextEpisodeFragment frag = new NextEpisodeFragment();

            Bundle args = new Bundle();
            string serializeObject = JsonConvert.SerializeObject(episode);
            args.PutString("myEpisode", serializeObject);

            frag.Arguments = args;

            return frag;
        }
        public static DetailsShowEpisodeTabsPageFragment NewInstance(TVEpisode episode)
        {
            DetailsShowEpisodeTabsPageFragment frag = new DetailsShowEpisodeTabsPageFragment();

            string myEpisodeJson = JsonConvert.SerializeObject(episode);
            Bundle args = new Bundle();
            args.PutString("episodeSerialized", myEpisodeJson);

            frag.Arguments = args;

            return frag;
        }
        public override Android.Views.View OnCreateView(Android.Views.LayoutInflater inflater, Android.Views.ViewGroup container, Bundle savedInstanceState)
        {
            if (savedInstanceState != null)
            {
                _episode = new TVEpisode();
                _episode = JsonConvert.DeserializeObject<TVEpisode>(savedInstanceState.GetString("episodeSerialized"));

            }
            var root = inflater.Inflate(Resource.Layout.details_show_episode_tabs_page_fragment, container, false);
            var text = root.FindViewById<TextView>(Resource.Id.textView);
            var imageView = root.FindViewById<ImageView>(Resource.Id.myImageView);
            if (_episode != null)
            {
                text.Text = "With episode title " +
                            _episode.Name + "\n"+
                            " and episode number "+ _episode.EpisodeNumber+"\n"+
                            "Overview:" + _episode.Overview;

            Koush.UrlImageViewHelper.SetUrlDrawable(imageView,
                "http://image.tmdb.org/t/p/w500" + _episode.StillPath);
            }
           _ivIsEpisodeWatched = root.FindViewById<ImageView>(Resource.Id.myCheckImage);

            UpdateCheckMarks();

            _ivIsEpisodeWatched.Click += (sender, args) =>
            {
                ((ShowOverviewActivity)Activity).UpdateTitle("I clicked on season/episode "+_episode.SeasonNumber + "  " +_episode.EpisodeNumber);

                if (_episode.isEpisodeTrakked)
                {
                    _ivIsEpisodeWatched.SetImageResource(Resource.Drawable.btn_check_buttonless_off);
                    //var saveEpisode =
                    //    DeleteParseTVEpsidodeObject(_myShow.GetTVSeasonByNumber(_seasonNumber).Episodes[_positionInEpisodeList]);
                }
                else
                {
                    _ivIsEpisodeWatched.SetImageResource(Resource.Drawable.btn_check_buttonless_on);
                    ////var saveEpisode =
                    ////    SaveParseTVEpisodeObject(_myShow.GetTVSeasonByNumber(_seasonNumber).Episodes[_positionInEpisodeList]);
                }
            };
            return root;
        }
        private async Task PopulateSeasonsAndSetUpFragments()
        {
            if (!TMDBFileLoading.TMDBShowFileExists(Intent.GetStringExtra("TMDBID")))
            {
                string myURL = "https://api.themoviedb.org/3/tv/" + Intent.GetStringExtra("TMDBID") +
                               "?api_key=661b76973b90b91e0df214904015fd4d";
                var client = new HttpClient();
                var data = await client.GetStringAsync(myURL);
                JObject o = JObject.Parse(data);
                _myShow.Name = o["name"] + "";
                _myShow.Network = o["networks"][0]["name"] + "";
                _myShow.NumberOfSeasons = (int) o["number_of_seasons"];
                _myShow.TMDBID = o["id"] + "";
                //_myShow.FullJson = data;
                _myShow.PosterLink = o["poster_path"] + "";
                _myShow.Overview = o["overview"] + "";
                _myShow.Language = o["languages"][0] + "";
                //SupportActionBar._title = _myShow.Name;
                //await _myShow.PopulateSeasonJSONListFromWeb();
                //_myTextView.Text = _myShow.Name + " is on " + _myShow.Network;

                //SetUpListViewFragment();
                _myShow.Seasons = new List<TVSeason>();
                for (int i = 1; i <= _myShow.NumberOfSeasons; i++)
                {
                    TVSeason mySeason = new TVSeason();
                    string mySeasonURL = "https://api.themoviedb.org/3/tv/" + Intent.GetStringExtra("TMDBID") +
                                         "/season/" + i + "?api_key=661b76973b90b91e0df214904015fd4d";
                    var seasonClient = new HttpClient();
                    var seasonData = await seasonClient.GetStringAsync(mySeasonURL);
                    JObject seasonJObject = JObject.Parse(seasonData);


                    mySeason.AirDate = "" + seasonJObject["air_date"];
                    mySeason.TVDBID = "" + seasonJObject["id"];
                    mySeason.Overview = "" + seasonJObject["overview"];
                    mySeason.PosterPath = "" + seasonJObject["poster_path"];
                    mySeason.SeasonNumber = (int) seasonJObject["season_number"];

                    JArray myEpisodeArray = (JArray) seasonJObject.SelectToken("episodes");
                    mySeason.EpisodeCount = myEpisodeArray.Count;

                    mySeason.Episodes = new List<TVEpisode>();
                    foreach (JToken episodeJToken in myEpisodeArray)
                    {
                        TVEpisode myEpisode = new TVEpisode
                        {
                            EpisodeNumber = (int) episodeJToken["episode_number"],
                            SeasonNumber = i,
                            Name = "" + episodeJToken["name"],
                            AirDate = "" + episodeJToken["air_date"],
                            StillPath = "" + episodeJToken["still_path"],
                            Overview = "" + episodeJToken["overview"]
                        };
                        mySeason.Episodes.Add(myEpisode);
                    }
                    _myShow.Seasons.Add(mySeason);
                }

                string showToSave = JsonConvert.SerializeObject(_myShow);
                TMDBFileSaving.saveTMDBShowJSON(Intent.GetStringExtra("TMDBID"), showToSave);

            }
            else
            {
                Console.WriteLine("Show has been saved");
                string loadedShow =  TMDBFileLoading.loadTMDBShowJSONFromFile(Intent.GetStringExtra("TMDBID"));
                _myShow = JsonConvert.DeserializeObject<TVShow>(loadedShow);
            }

            

            //string serialized = JsonConvert.SerializeObject(_myShow);
            //Console.UpdateTrakkedShowList(serialized);
            //_myShow = new TVShow();
            //_myShow = JsonConvert.DeserializeObject<TVShow>(serialized);
            //Console.UpdateTrakkedShowList(JsonConvert.SerializeObject(_myShow));
            // Console.UpdateTrakkedShowList("Last Episode of First Season is titled " +
            //                  _myShow.SeasonList[0].TVEpisodes[_myShow.SeasonList[0].TVEpisodes.Count - 1].Name);
            SetUpTitle();

            SetUpBothFragments();

            GetUpdatedParseObject();

            //IEnumerable<TVEpisodeForParse> trakkedEpisodeList = await GetParseEpisodeObject();

            //UpdateShowEpisodesWithTrakkedEpisode(trakkedEpisodeList);
        }
        private async void PopulateSeasons()
        {
            string myURL = "https://api.themoviedb.org/3/tv/1396?api_key=661b76973b90b91e0df214904015fd4d";
            var client = new HttpClient();
            var data = await client.GetStringAsync(myURL);
            JObject o = JObject.Parse(data);
            _myShow.Name = o["name"] + "";
            _myShow.Network = o["networks"][0]["name"] + "";
            _myShow.NumberOfSeasons = (int)o["number_of_seasons"];
            _myShow.TMDBID = o["id"] + "";
            //_myShow.FullJson = data;
            _myShow.PosterLink = o["poster_path"] + "";
            _myShow.Overview = o["overview"] + "";
            _myShow.Language = o["languages"][0] + "";
           // SupportActionBar._title = _myShow.Name;
            //await _myShow.PopulateSeasonJSONListFromWeb();
            //_myTextView.Text = _myShow.Name + " is on " + _myShow.Network;

            //SetUpListViewFragmnet();
            _myShow.Seasons = new List<TVSeason>();
            for (int i = 1; i <= _myShow.NumberOfSeasons; i++)
            {
                TVSeason mySeason = new TVSeason();
                string mySeasonURL = "https://api.themoviedb.org/3/tv/1396/season/"+i+"?api_key=661b76973b90b91e0df214904015fd4d";
                var seasonClient = new HttpClient();
                var seasonData = await seasonClient.GetStringAsync(mySeasonURL);
                JObject seasonJObject = JObject.Parse(seasonData);


                mySeason.AirDate = "" + seasonJObject["air_date"];
                mySeason.TVDBID = "" + seasonJObject["id"];
                mySeason.Overview = "" + seasonJObject["overview"];
                mySeason.PosterPath = "" + seasonJObject["poster_path"];
                mySeason.SeasonNumber = (int)seasonJObject["season_number"];
                
                JArray myEpisodeArray = (JArray)seasonJObject.SelectToken("episodes");
                mySeason.EpisodeCount = myEpisodeArray.Count;

                mySeason.Episodes = new List<TVEpisode>();
                for (int j = 0; j < myEpisodeArray.Count; j++)
                {
                    JToken episodeJToken = myEpisodeArray[j];

                    TVEpisode myEpisode = new TVEpisode();
                    myEpisode.EpisodeNumber = (int)episodeJToken["episode_number"];
                    myEpisode.Name = "" + episodeJToken["name"];
                    mySeason.Episodes.Add(myEpisode);
                    
                }



                _myShow.Seasons.Add(mySeason);
            }
            string serialized = JsonConvert.SerializeObject(_myShow);
            Console.WriteLine(serialized);
            _myShow = new TVShow();
            _myShow = JsonConvert.DeserializeObject<TVShow>(serialized);
            Console.WriteLine(JsonConvert.SerializeObject(_myShow));
            // Console.UpdateTrakkedShowList("Last Episode of First Season is titled " +
            //                  _myShow.SeasonList[0].TVEpisodes[_myShow.SeasonList[0].TVEpisodes.Count - 1].Name);
        }
Пример #9
0
        public static async Task<TVShow> DownloadTVShowAndSave(string tmdbID)
        {
            var show = new TVShow();

            var myURL = "https://api.themoviedb.org/3/tv/" + tmdbID +
                        "?api_key=661b76973b90b91e0df214904015fd4d";
            var client = new HttpClient();
            var data = await client.GetStringAsync(myURL);
            var o = JObject.Parse(data);
            show.Name = o["name"] + "";
            show.Network = o["networks"][0]["name"] + "";
            show.NumberOfSeasons = (int) o["number_of_seasons"];
            var mySeasonArray = (JArray) o.SelectToken("seasons");
            var elementsInSeasons = mySeasonArray.Count;

            var hasSeasonZero = mySeasonArray.Count > show.NumberOfSeasons;

            show.TMDBID = o["id"] + "";
            show.PosterLink = o["poster_path"] + "";
            show.Overview = o["overview"] + "";
            show.Language = o["languages"][0] + "";
            show.Seasons = new List<TVSeason>();

            var endAtSeason = hasSeasonZero ? 0 : 1;

            for (var i = show.NumberOfSeasons; i >= endAtSeason; i--)
            {
                var mySeason = new TVSeason();
                var mySeasonURL = "https://api.themoviedb.org/3/tv/" + tmdbID +
                                  "/season/" + i + "?api_key=661b76973b90b91e0df214904015fd4d";
                var seasonClient = new HttpClient();
                try
                {
                    var seasonData = await seasonClient.GetStringAsync(mySeasonURL);
                    var seasonJObject = JObject.Parse(seasonData);

                    mySeason.AirDate = "" + seasonJObject["air_date"];
                    mySeason.TVDBID = "" + seasonJObject["id"];
                    mySeason.Overview = "" + seasonJObject["overview"];
                    mySeason.PosterPath = "" + seasonJObject["poster_path"];
                    mySeason.SeasonNumber = (int) seasonJObject["season_number"];

                    var myEpisodeArray = (JArray) seasonJObject.SelectToken("episodes");
                    mySeason.EpisodeCount = myEpisodeArray.Count;

                    mySeason.Episodes = new List<TVEpisode>();
                    foreach (var episodeJToken in myEpisodeArray)
                    {
                        var myEpisode = new TVEpisode
                        {
                            EpisodeNumber = (int) episodeJToken["episode_number"],
                            SeasonNumber = i,
                            Name = "" + episodeJToken["name"],
                            AirDate = "" + episodeJToken["air_date"],
                            StillPath = "" + episodeJToken["still_path"],
                            Overview = "" + episodeJToken["overview"]
                        };
                        mySeason.Episodes.Add(myEpisode);
                    }
                    show.Seasons.Add(mySeason);
                }
                catch (Exception ex)
                {
                    //Takes care of 404, need to confirm
                    Console.WriteLine("I caught this" + ex);
                }
            }

            var creditsURL = "https://api.themoviedb.org/3/tv/" + tmdbID +
                             "/credits?api_key=661b76973b90b91e0df214904015fd4d";
            var creditClient = new HttpClient();
            var creditData = await creditClient.GetStringAsync(creditsURL);
            var creditJObject = JObject.Parse(creditData);

            show.Actors = new List<Actor>();

            var myActorArray = (JArray) creditJObject.SelectToken("cast");
            foreach (var actorJToken in myActorArray)
            {
                var actor = new Actor
                {
                    characterName = "" + actorJToken["character"],
                    creditId = "" + actorJToken["credit_id"],
                    tmdbID = "" + actorJToken["id"],
                    name = "" + actorJToken["name"],
                    profilePath = "" + actorJToken["profile_path"],
                    order = (int) actorJToken["order"]
                };
                show.Actors.Add(actor);
            }

            string showToSave = JsonConvert.SerializeObject(show);
            TMDBFileSaving.saveTMDBShowJSON(show.TMDBID, showToSave);


            return show;
        }
        public void UpdateWatchedEpisode(TVEpisode episode)
        {

            _myShow.GetTVSeasonByNumber(episode.SeasonNumber)
                .GetTVEpisodeByNumber(episode.EpisodeNumber).isEpisodeTrakked = true;
            //TODO need to restucture this

            //_myShow.GetTVSeasonByNumber(episode.SeasonNumber)
              //  .GetTVEpisodeByNumber(episode.EpisodeNumber)
                //.isEpisodeTrakked = true;


            if (_stateMemory._isPortait && !_stateMemory._isAfterAnimation)
            {
                _showTabHolderFragment.UpdateWatchedEpisode(_myShow);
            }
            else
            {
                //TODO Validate is visible
                _nextUnwatchedEpisodeFragment.UpdateEpisode(_myShow.GetNextUnwatchedEpisode());
                //TODO Validate is visible
                _seasonListFragment.UpdateShow(_myShow);
            }
        }
 public void GetLatestEpisode()
 {
     _myEpisode = ((ShowOverviewActivity) Activity).RetreiveLatestShow().GetNextUnwatchedEpisode();
 }
 public void UpdateEpisode(TVEpisode episode)
 {
     _myEpisode = episode;
     SetUpTextView();
     SetUpImageView();
 }
 public void UpdateWatchedEpisode(TVEpisode episode)
 {
     _showsOverviewMajorFragment.UpdateWatchedEpisode(episode);
 }
 public void UpdateShow(TVEpisode episode)
 {
     _episode = episode;
     UpdateCheckMarks();
 }
 public DetailsShowEpisodeTabsPageFragment()
 {
     _episode = new TVEpisode();
 }