public async Task<ObservableCollection<TvShow>> load() { if (! await api.hasInternet()) return tracker; Response resp = await (new Response("http://followshows.com/viewStyleTracker?viewStyle=expanded")).call(); if (resp.somethingWentWrong) { return tracker; } HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(resp.page); HtmlNode tbody = doc.GetElementbyId("tracker"); HtmlNode head = HTML.getChild(tbody); if (head == null) { return tracker; } foreach (HtmlNode tvshow in head.ChildNodes) { try { TvShow show = new TvShow(true); HtmlNode title = HTML.getChild(tvshow); show.Name = System.Net.WebUtility.HtmlDecode(title.InnerText); try { BitmapImage bimp = new BitmapImage() { UriSource = new Uri(HTML.getAttribute(title.ChildNodes, "src")) }; bimp.CreateOptions = BitmapCreateOptions.None; show.Image = bimp; } catch { } show.showUrl = HTML.getAttribute(title.ChildNodes, "href").Replace("/show/", ""); show.stillToWatch = HTML.getChild(tvshow.ChildNodes, "class", "towatch").InnerHtml; string perc = HTML.getChild(tvshow.ChildNodes, "role", "progressbar").InnerText.Replace("%", ""); show.percentageWatched = float.Parse(perc) / 100 * 150; tracker.Add(show); } catch (Exception e) { Memory.addToErrorQueue(this, e); } await Memory.writeAllErrorsToFile(); } return tracker; }
public async Task <List <Episode> > getSeason(TvShow show, int seasonNr) { List <Episode> season = new List <Episode>(); Response resp = await(new Response("http://followshows.com/api/show/" + show.showUrl + "/season/" + seasonNr, false)).call(); if (resp.somethingWentWrong) { return(season); } foreach (HtmlNode episode in HTML.getChild(resp.firstNode.ChildNodes, "class", "clearfix").ChildNodes) { Episode ep = new Episode(false, false); ep.ShowName = show.Name; HtmlNode name = HTML.getChild(episode.ChildNodes, "class", "episode-link"); if (name != null) { ep.Aired = true; ep.EpisodeName = name.InnerText; ep.Image = new BitmapImage(new Uri(HTML.getAttribute(HTML.getChild(episode.ChildNodes, "class", "poster").ChildNodes, "src").Replace("130x75", "360x207"))); string[] build = HTML.getChild(episode.ChildNodes, "class", "episode-label").InnerText.Split(new char[] { ' ' }); ep.ISeason = int.Parse(build[1]); ep.IEpisode = int.Parse(build[3].Split(new char[] { ',' })[0]); ep.EpisodePos = "S" + ep.ISeason + "E" + ep.IEpisode; ep.id = HTML.getAttribute(episode.ChildNodes, "episodeid"); if (!episode.InnerText.Contains("Mark as watched")) { ep.Seen = true; } } else { ep.Aired = false; ep.Image = new BitmapImage(new Uri("ms-appx:Assets/basicQueueItem.png")); string[] build = episode.InnerText.Split(new char[] { ',' }); ep.EpisodeName = build[0]; string[] seasonThing = build[1].Split(new char[] { ' ' }); ep.ISeason = int.Parse(seasonThing[1]); ep.IEpisode = int.Parse(seasonThing[3]); ep.EpisodePos = "S" + ep.ISeason + "E" + ep.IEpisode; } season.Add(ep); } return(season); }
public async Task <List <TvShow> > getTracker() { if (!hasInternet() && tracker != null) { return(tracker); } tracker = new List <TvShow>(); Response resp = await(new Response("http://followshows.com/viewStyleTracker?viewStyle=expanded")).call(); if (resp.somethingWentWrong) { return(tracker); } HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(resp.page); HtmlNode tbody = doc.GetElementbyId("tracker"); HtmlNode head = HTML.getChild(tbody); if (head == null) { return(tracker); } foreach (HtmlNode tvshow in head.ChildNodes) { try { TvShow show = new TvShow(true); HtmlNode title = HTML.getChild(tvshow); show.Name = System.Net.WebUtility.HtmlDecode(title.InnerText); show.Image = new BitmapImage() { UriSource = new Uri(HTML.getAttribute(title.ChildNodes, "src")) }; show.showUrl = HTML.getAttribute(title.ChildNodes, "href").Replace("/show/", ""); show.stillToWatch = HTML.getChild(tvshow.ChildNodes, "class", "towatch").InnerHtml; string perc = HTML.getChild(tvshow.ChildNodes, "role", "progressbar").InnerText.Replace("%", ""); show.percentageWatched = float.Parse(perc) / 100 * 150; tracker.Add(show); } catch (Exception) { } } return(tracker); }
public async Task <List <TvShow> > searchTvShow(string searchTerm) { List <TvShow> showList = new List <TvShow>(); List <TvShow> userList = new List <TvShow>(); if (searchTerm == null || searchTerm == "") { passed = userList; return(showList); } Response resp = await(new Response("http://followshows.com/ajax/header/search?term=" + searchTerm, null, false)).call(); if (resp.page == null) { return(showList); } List <SearchResult> response = JsonConvert.DeserializeObject <List <SearchResult> >(resp.page); foreach (SearchResult result in response) { if (result.type == "show") { TvShow show = new TvShow(result.followed); if (result.poster) { show.Image = new BitmapImage(new Uri(result.image.Replace("30x42", "357x500"))); } show.Name = result.value; show.showUrl = result.id; showList.Add(show); } else { TvShow show = new TvShow(false); if (result.poster) { show.Image = new BitmapImage(new Uri(result.image.Replace("30x42", "357x500"))); } show.Name = result.value; show.showUrl = result.id; userList.Add(show); } } passed = userList; return(showList); }
/// <summary> /// Populates the page with content passed during navigation. Any saved state is also /// provided when recreating a page from a prior session. /// </summary> /// <param name="sender"> /// The source of the event; typically <see cref="NavigationHelper"/> /// </param> /// <param name="e">Event data that provides both the navigation parameter passed to /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested and /// a dictionary of state preserved by this page during an earlier /// session. The state will be null the first time a page is visited.</param> private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e) { StatusBar statusBar = StatusBar.GetForCurrentView(); // Hide the status bar await statusBar.HideAsync(); ////Loading api = API.getAPI(); //As a precaution set a show as the passed object TvShow show = new TvShow(false); api.passed = show; while (queue == null) { await Task.Delay(1); } if (queue.ItemsSource != null) { return; } if (await api.hasInternet()) { LoadLists(); } else { //Get shows from storage ObservableCollection<Episode> queueList = await Memory.recoverQueue(); List<TvShow> trackerList = await Memory.recoverTracker(); List<Episode> calendarList = await Memory.recoverCalendar(); await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { if (queueList.Count > 0) { queue.ItemsSource = queueList; } if (trackerList.Count > 0) { tracker.ItemsSource = trackerList; } if (calendarList.Count > 0) { if (calendarList != null) { var result = from ep in calendarList group ep by ep.airdate into grp orderby grp.Key select grp; calendar.Source = result; } } }); //Wait for when we do have internet api.getNetwork().PropertyChanged += NetworkStatus_Changed; } Tile.setTile(0); }
/// <summary> /// Populates the page with content passed during navigation. Any saved state is also /// provided when recreating a page from a prior session. /// </summary> /// <param name="sender"> /// The source of the event; typically <see cref="NavigationHelper"/> /// </param> /// <param name="e">Event data that provides both the navigation parameter passed to /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested and /// a dictionary of state preserved by this page during an earlier /// session. The state will be null the first time a page is visited.</param> private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e) { //Loading cover.Height = Window.Current.Bounds.Height; //Create a fake show, which isn't visible to decrease uglyness //NTW.DataContext = new Episode(false, true) { redo = Windows.UI.Xaml.Visibility.Collapsed }; api = (API)e.NavigationParameter; Show = api.passed as TvShow; await Show.expand(); //if(Show.following) //{ // followColor.Fill = ((SolidColorBrush)App.Current.Resources["PhoneAccentBrush"]); //} //Create a new commandbar and add buttons bar = new CommandBar(); AppBarButton follow = new AppBarButton() { Icon = new SymbolIcon(Symbol.Favorite), Label = "Follow" }; follow.Click += Tapped_Favorite; AppBarButton unfollow = new AppBarButton() { Icon = new SymbolIcon(Symbol.UnFavorite), Label = "Unfollow" }; unfollow.Click += Tapped_Favorite; unfollow.Visibility = Windows.UI.Xaml.Visibility.Collapsed; AppBarButton seen = new AppBarButton() { Icon = new SymbolIcon(Symbol.Accept), Label = "Mark all as seen" }; seen.Click += markAsSeen_Click; seen.Visibility = Windows.UI.Xaml.Visibility.Collapsed; bar.PrimaryCommands.Add(seen); bar.PrimaryCommands.Add(follow); bar.PrimaryCommands.Add(unfollow); setFollowingAppButton(); bar.Visibility = Windows.UI.Xaml.Visibility.Collapsed; BottomAppBar = bar; Image.Source = new Windows.UI.Xaml.Media.Imaging.BitmapImage(new Uri(Show.Image.UriSource.ToString().Replace("80", "357").Replace("112", "500"))); this.DataContext = Show; // NTWtitle.Visibility = Windows.UI.Xaml.Visibility.Collapsed; // List<Episode> wl = await api.getWatchList(); // if(wl != null) // { // foreach(Episode ep in wl) // { // if(ep.SeriesName == Show.Name) // { // NTW.DataContext = ep; // NTWtitle.Visibility = Windows.UI.Xaml.Visibility.Visible; // break; // } // } // } if (Show.numberOfSeasons > 0) { season = new List<Episode>[Show.numberOfSeasons + 1]; //For every show create a new pivot with a gridview with the episode-itemtemplate; for (int i = Show.numberOfSeasons; i > 0; i--) { PivotItem item = new PivotItem(); item.Header = "Season " + i; List<Episode> episodelist = await api.getSeason(Show, i); season[i] = episodelist; GridView view = new GridView(); view.ItemTemplate = Resources["seasy"] as DataTemplate; view.ItemsSource = episodelist; item.Content = view; item.ApplyTemplate(); pivo.Items.Add(item); } } }
public async Task<List<TvShow>> searchTvShow(string searchTerm) { List<TvShow> showList = new List<TvShow>(); List<TvShow> userList = new List<TvShow>(); if (searchTerm == null || searchTerm == "") { passed = userList; return showList; } Response resp = await (new Response("http://followshows.com/ajax/header/search?term=" + searchTerm, null, false)).call(); if (resp.page == null) return showList; List<SearchResult> response = JsonConvert.DeserializeObject<List<SearchResult>>(resp.page); foreach (SearchResult result in response) { if (result.type == "show") { TvShow show = new TvShow(result.followed); if (result.poster) { show.Image = new BitmapImage(new Uri(result.image.Replace("30x42", "357x500"))); } show.Name = result.value; show.showUrl = result.id; showList.Add(show); } else { TvShow show = new TvShow(false); if (result.poster) { show.Image = new BitmapImage(new Uri(result.image.Replace("30x42", "357x500"))); } show.Name = result.value; show.showUrl = result.id; userList.Add(show); } } passed = userList; return showList; }
public async Task<List<Episode>> getSeason(TvShow show, int seasonNr) { List<Episode> season = new List<Episode>(); Response resp = await (new Response("http://followshows.com/api/show/" + show.showUrl + "/season/" + seasonNr, false)).call(); if (resp.somethingWentWrong) return season; foreach (HtmlNode episode in HTML.getChild(resp.firstNode.ChildNodes, "class", "clearfix").ChildNodes) { Episode ep = new Episode(false, false); ep.ShowName = show.Name; HtmlNode name = HTML.getChild(episode.ChildNodes, "class", "episode-link"); if (name != null) { ep.Aired = true; ep.EpisodeName = name.InnerText; ep.Image = new BitmapImage(new Uri(HTML.getAttribute(HTML.getChild(episode.ChildNodes, "class", "poster").ChildNodes, "src").Replace("130x75", "360x207"))); string[] build = HTML.getChild(episode.ChildNodes, "class", "episode-label").InnerText.Split(new char[] { ' ' }); ep.ISeason = int.Parse(build[1]); ep.IEpisode = int.Parse(build[3].Split(new char[] { ',' })[0]); ep.EpisodePos = "S" + ep.ISeason + "E" + ep.IEpisode; ep.id = HTML.getAttribute(episode.ChildNodes, "episodeid"); if (!episode.InnerText.Contains("Mark as watched")) { ep.Seen = true; } } else { ep.Aired = false; ep.Image = new BitmapImage(new Uri("ms-appx:Assets/basicQueueItem.png")); string[] build = episode.InnerText.Split(new char[] { ',' }); ep.EpisodeName = build[0]; string[] seasonThing = build[1].Split(new char[] { ' ' }); ep.ISeason = int.Parse(seasonThing[1]); ep.IEpisode = int.Parse(seasonThing[3]); ep.EpisodePos = "S" + ep.ISeason + "E" + ep.IEpisode; } season.Add(ep); } return season; }