public async Task <Films> GetFilms(RegionDef region, bool fullInfo = false, int cinema = int.MinValue, int film = int.MinValue) { StringBuilder sb = new StringBuilder(); sb.Append($"{BaseAPIUrl}{FilmsHandle}"); sb.Append($"?{QSKeyParam}={DevKey}&{QSTerritoryParam}={region}"); if (cinema != int.MinValue) { sb.Append($"&{QSCinemaParam}={cinema}"); } if (film != int.MinValue) { sb.Append($"&{QSFilmParam}={film}"); } sb.Append($"&{QSFullParam}={fullInfo}"); AsyncWebClient awc = new AsyncWebClient(); string data = await awc.GetStringAsync(sb.ToString()); Films f = JsonConvert.DeserializeObject <Films>(data); f.Cinema = cinema; return(f); }
public async Task <Dates> GetDates(RegionDef region, int cinema, int film) { string url = $"{BaseAPIUrl}{DatesHandle}?{QSKeyParam}={DevKey}&{QSCinemaParam}={cinema}&{QSFilmParam}={film}&{QSTerritoryParam}={region}"; AsyncWebClient awc = new AsyncWebClient(); string data = await awc.GetStringAsync(url); Dates d = JsonConvert.DeserializeObject <Dates>(data); return(d); }
private RegionDef GetRegionOverride(RegionDef originalRegion, RegionDef regionOverride) { var modified = false; var newList = new List <IElementDef>(); foreach (var element in originalRegion.Elements) { if (element is RegionDef) { var replacementRegion = regionOverride.Elements.OfType <RegionDef>().FirstOrDefault(r => r.Name == ((RegionDef)element).Name); if (replacementRegion == null) { newList.Add(element); } else { var newRegion = GetRegionOverride((RegionDef)element, replacementRegion); modified = true; newList.Add(newRegion); } } else if (element is MethodDef) { var replacementMethod = regionOverride.Elements.OfType <MethodDef>().FirstOrDefault(m => m.Name == ((MethodDef)element).Name); if (replacementMethod == null) { newList.Add(element); } else { var newMethod = MethodDef.Merge((MethodDef)element, replacementMethod); modified = true; newList.Add(newMethod); } } } if (modified) { return(new RegionDef(originalRegion, false, newList.ToReadOnlyList())); } return(originalRegion); }
public async Task <Performances> GetPerformances(RegionDef region, int cinema, int film, string date) { string url = $"{BaseAPIUrl}{PerformancesHandle}?{QSKeyParam}={DevKey}&{QSCinemaParam}={cinema}&{QSFilmParam}={film}&{QSDateParam}={date}&{QSTerritoryParam}={region}"; //webclient.DownloadStringAsync(new Uri(url, UriKind.Absolute)); AsyncWebClient awc = new AsyncWebClient(); string data = await awc.GetStringAsync(url); DateTime dt = DateTime.ParseExact(date, "yyyymmdd", CultureInfo.InvariantCulture); Performances p = JsonConvert.DeserializeObject <Performances>(data); p.Date = dt; return(p); }
private RegionDef GetRegionOverride(RegionDef originalRegion, RegionDef regionOverride) { var regionList = new List <RegionDef>(); var methodList = new List <MethodDef>(); var modified = false; //Traverse the region tree to find the method we want to override foreach (var region in originalRegion.Regions) { var replacementRegion = regionOverride.Regions.FirstOrDefault(r => r.Name == region.Name); if (replacementRegion == null) { regionList.Add(region); } var newRegion = GetRegionOverride(region, replacementRegion); modified = true; regionList.Add(newRegion); } foreach (var method in originalRegion.MethodDefs) { var replacementMethod = regionOverride.MethodDefs.FirstOrDefault(m => m.Name == method.Name); if (replacementMethod == null) { methodList.Add(method); } var newMethod = MethodDef.Merge(method, replacementMethod); modified = true; methodList.Add(newMethod); } if (modified) { return(new RegionDef(originalRegion, false, regionList.ToReadOnlyList(), methodList.ToReadOnlyList())); } return(originalRegion); }
private static int CompareRegions(RegionDef x, RegionDef y) { return String.Compare(x.name, y.name, StringComparison.InvariantCulture); }
private void LoadRegions() { newOre = new Ore(); string[] lines = EVE_Manufact.Properties.Resources.regions.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); List<RegionDef> sortList = new List<RegionDef>(); for (int x = 0; x < lines.Length; x++) { string[] parts = lines[x].Split(new char[] { '\t' }, StringSplitOptions.None); for (int i = 0; i < parts.Length; i++) { if (parts[i] == "") parts[i] = "0"; } if (!parts[0].Contains("//")) { RegionDef region = new RegionDef(); region.name = parts[1]; region.typeID = parts[0]; sortList.Add(region); } } sortList.Sort(CompareRegions); object[] copyList = sortList.Cast<object>().ToArray<object>(); comboRegions.Items.AddRange(copyList); }
private void Form1_Load(object sender, EventArgs e) { loading = true; bool upgrade = Properties.Settings.Default.DoUpgrade; if (upgrade) { Properties.Settings.Default.Upgrade(); Properties.Settings.Default.DoUpgrade = false; Properties.Settings.Default.Save(); } string oreData = Properties.Settings.Default.MainData; byte[] data = Convert.FromBase64String(oreData); if (data.Length > 0) { IFormatter format = new BinaryFormatter(); MemoryStream stream = new MemoryStream(data); allOres = (Ores)format.Deserialize(stream); } bool L = Properties.Settings.Default.Loaded; if (!L) { LoadOreList(); Properties.Settings.Default.Loaded = true; Properties.Settings.Default.Save(); } LoadRegions(); propertyGrid1.SelectedObject = allOres; this.trackRepro.Value = Properties.Settings.Default.repro; this.trackReproEff.Value = Properties.Settings.Default.reproEff; this.chkCompressed.Checked = Properties.Settings.Default.compressed; this.numBaseRepro.Value = Convert.ToDecimal(Properties.Settings.Default.baseRepro); this.numTax.Value = Convert.ToDecimal(Properties.Settings.Default.taxes); this.grpRepro.Text = "Reprocessing Level: " + Properties.Settings.Default.repro; this.grpReproEff.Text = "Reprocessing Efficiency Level: " + Properties.Settings.Default.reproEff; CalculateMinerals(); SetToolTips(); Point pos = Properties.Settings.Default.windowPos; Size size = Properties.Settings.Default.windowSize; RegionDef sel = new RegionDef(); sel.name = Properties.Settings.Default.region; sel.typeID = Properties.Settings.Default.regionID; comboRegions.SelectedItem = sel; if (!pos.IsEmpty && !size.IsEmpty) { this.Location = pos; this.Size = size; } if(Properties.Settings.Default.maximized) this.WindowState = FormWindowState.Maximized; loading = false; }
private void ProcessFilmInfo(Cineworld.Configuration config, Dictionary <int, FilmInfo> currentFilms, Dictionary <int, List <CinemaInfo> > filmCinemas, RegionDef region, bool searchTMDB = true) { CineworldService cws = new CineworldService(); Films films = null; Task <Films> tfilms = cws.GetFilms(region, true); tfilms.Wait(); if (!tfilms.IsCanceled && tfilms.Result != null) { films = tfilms.Result; } TMDBService tmdb = new TMDBService(); HashSet <int> newFilmIds = new HashSet <int>(); CineMobileService mobileService = new CineMobileService(); //foreach (var film in films.films) for (int i = 0; i < films.films.Count; i++) { //if (i > 0) // break; var film = films.films[i]; newFilmIds.Add(film.edi); //if (film.edi != 128529 && film.edi != 139438) // continue; Task <Cinemas> tcinemas = cws.GetCinemas(region, false, int.MinValue, film.edi); if (!currentFilms.ContainsKey(film.edi) || !currentFilms[film.edi].TMDBDataLoaded) { Movie movieData = null; Task <FilmImages> tmovieImages = null; FilmInfo filminfo = new FilmInfo() { EDI = film.edi, Classification = !String.IsNullOrWhiteSpace(film.classification) ? film.classification : "TBC", Title = film.ProcessedTitle, TMDBDataLoaded = false }; if (movieData == null) { Results res = null; try { DateTime ukRelease = film.GetReleaseDate(); Task <Results> tres = tmdb.GetSearchResults(film.CleanTitle, ukRelease); tres.Wait(); if (!tres.IsFaulted && tres.Result != null) { res = tres.Result; } if (res.SearchResults == null || res.SearchResults.Count == 0 && ukRelease != DateTime.MinValue) { Task <Results> tres2 = tmdb.GetSearchResults(film.CleanTitle, DateTime.MinValue); tres2.Wait(); if (!tres2.IsFaulted && tres2.Result != null) { res = tres2.Result; } } if (res.SearchResults != null && res.SearchResults.Count > 0) { Result movieSearchRes = res.SearchResults.First(); Task <Movie> tmovieData = tmdb.GetMovieDetails(movieSearchRes.Id); tmovieData.Wait(); tmovieImages = tmdb.GetFilmImages(movieSearchRes.Id); if (!tmovieData.IsFaulted && tmovieData.Result != null) { movieData = tmovieData.Result; } if (movieData.Trailers != null && movieData.Trailers.Youtube != null && movieData.Trailers.Youtube.Count > 0 && !String.IsNullOrEmpty(movieData.Trailers.Youtube[0].Source)) { if (movieData.Trailers.Youtube[0].Source.IndexOf('=') == -1) { string[] trailerparts = movieData.Trailers.Youtube[0].Source.Split('='); movieData.YouTubeTrailerID = trailerparts[trailerparts.Length - 1]; } else { movieData.YouTubeTrailerID = movieData.Trailers.Youtube[0].Source; } } else { Task <string> tyoutube = (new YouTubeService().GetVideoId(film.CleanTitle)); tyoutube.Wait(); if (!tyoutube.IsCanceled && tyoutube.Result != null) { movieData.YouTubeTrailerID = tyoutube.Result; } } if (ukRelease == DateTime.MinValue) { Country c = movieData.Releases.Countries.FirstOrDefault(country => String.Compare(country.Iso31661, region == RegionDef.GB ? "GB" : "IE", StringComparison.OrdinalIgnoreCase) == 0); if (c != null) { ukRelease = DateTime.ParseExact(c.ReleaseDate, "yyyy-MM-dd", CultureInfo.InvariantCulture); } else if (!String.IsNullOrEmpty(movieSearchRes.ReleaseDate)) { ukRelease = DateTime.ParseExact(movieSearchRes.ReleaseDate, "yyyy-MM-dd", CultureInfo.InvariantCulture); } } movieData.CineworldReleaseDate = ukRelease; } } catch { } } if (movieData != null) { filminfo.TMDBDataLoaded = true; filminfo.TmdbId = movieData.Id; filminfo.Overview = movieData.Overview; filminfo.Tagline = movieData.Tagline; filminfo.Runtime = movieData.Runtime; filminfo.Genres = new List <string>(); if (movieData.Genres != null) { foreach (var g in movieData.Genres) { filminfo.Genres.Add(g.Name); } } if (tmovieImages != null) { tmovieImages.Wait(); if (!tmovieImages.IsFaulted && tmovieImages.Result != null) { if (tmovieImages.Result.Backdrops != null) { foreach (var backdrop in tmovieImages.Result.Backdrops) { string url = string.Format("{0}{1}{2}", config.Images.BaseUrl, ConfigurationManager.AppSettings["mediumposterwidth"], backdrop.FilePath); filminfo.Backdrops.Add(new Uri(url)); } } if (tmovieImages.Result.Posters != null) { foreach (var poster in tmovieImages.Result.Posters) { string url = string.Format("{0}{1}{2}", config.Images.BaseUrl, ConfigurationManager.AppSettings["mediumposterwidth"], poster.FilePath); filminfo.Posters.Add(new Uri(url)); } } } } if (!String.IsNullOrEmpty(movieData.PosterPath)) { string poster = string.Format("{0}{1}{2}", config.Images.BaseUrl, ConfigurationManager.AppSettings["posterwidth"], movieData.PosterPath); string mediumposter = string.Format("{0}{1}{2}", config.Images.BaseUrl, ConfigurationManager.AppSettings["mediumposterwidth"], movieData.PosterPath); if (!MoviePosters.ContainsKey(filminfo.TmdbId)) { MoviePosters.Add(filminfo.TmdbId, mediumposter); } filminfo.PosterUrl = new Uri(poster); filminfo.MediumPosterUrl = new Uri(mediumposter); } else if (!String.IsNullOrEmpty(film.poster_url)) { filminfo.PosterUrl = new Uri(film.poster_url); } if (!String.IsNullOrEmpty(movieData.BackdropPath)) { string backdrop = string.Format("{0}{1}{2}", config.Images.BaseUrl, ConfigurationManager.AppSettings["backdropwidth"], movieData.BackdropPath); filminfo.BackdropUrl = new Uri(backdrop); } filminfo.YoutubeTrailer = movieData.YouTubeTrailerID; filminfo.Release = movieData.CineworldReleaseDate; if (movieData.Casts != null && movieData.Casts.Cast != null) { foreach (var cast in movieData.Casts.Cast) { filminfo.FilmCast.Add(new CastInfo() { ID = cast.Id, Name = cast.Name, Character = cast.Character, ProfilePath = (!String.IsNullOrEmpty(cast.ProfilePath) ? new Uri(string.Format("{0}{1}{2}", config.Images.BaseUrl, ConfigurationManager.AppSettings["posterwidth"], cast.ProfilePath)) : null) }); } } } else { if (!String.IsNullOrEmpty(film.poster_url)) { filminfo.PosterUrl = new Uri(film.poster_url); } } Task <List <FilmReview> > tReviews = mobileService.GetFilmReviews(filminfo); tReviews.Wait(); if (!tReviews.IsFaulted && tReviews.Result != null) { filminfo.Reviews = tReviews.Result; } currentFilms[filminfo.EDI] = filminfo; } tcinemas.Wait(); if (!tcinemas.IsFaulted && tcinemas.Result != null) { List <CinemaInfo> fCinemas = new List <CinemaInfo>(); foreach (var cinema in tcinemas.Result.cinemas) { fCinemas.Add(new CinemaInfo() { ID = cinema.id, Name = cinema.name }); } filmCinemas[film.edi] = fCinemas; } } HashSet <int> currentFilmIds = new HashSet <int>(currentFilms.Keys); currentFilmIds.ExceptWith(newFilmIds); foreach (var id in currentFilmIds) { currentFilms.Remove(id); } }
public async Task ProcessCinemaPerformances(RegionDef region, int cinemaID, List <FilmInfo> films) { CineworldService cws = new CineworldService(); List <FilmHeader> filmsForCinema = new List <FilmHeader>(); foreach (var film in films) { Task <Dates> td = cws.GetDates(region, cinemaID, film.EDI); td.Wait(); HashSet <DateTime> perfDates = new HashSet <DateTime>(); if (!td.IsFaulted && td.Result != null && td.Result.dates != null) { FilmHeader fh = new FilmHeader() { EDI = film.EDI }; filmsForCinema.Add(fh); fh.Performances = new List <PerformanceInfo>(); foreach (var date in td.Result.dates) { DateTime performanceDate = DateTime.ParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture); Task <Performances> tp = cws.GetPerformances(region, cinemaID, film.EDI, date); tp.Wait(); if (!tp.IsFaulted && tp.Result != null && tp.Result.performances != null) { foreach (var p in tp.Result.performances) { PerformanceInfo pi = new PerformanceInfo(); pi.PerformanceTS = performanceDate.Add(DateTime.ParseExact(p.time, "HH:mm", CultureInfo.InvariantCulture).TimeOfDay); pi.Available = p.available; pi.Type = p.Type; pi.BookUrl = new Uri(p.booking_url); fh.Performances.Add(pi); } } } } } //return; Microsoft.WindowsAzure.Storage.CloudStorageAccount storageAccount = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("CineStorageConStr")); Microsoft.WindowsAzure.Storage.Blob.CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); // Retrieve a reference to a container. Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer container = blobClient.GetContainerReference("data"); Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob cinemaFilmsBlob = container.GetBlockBlobReference(String.Format(FilmsPerCinemaFileName, cinemaID)); using (Stream s = cinemaFilmsBlob.OpenWrite()) { using (var gzipStream = new GZipStream(s, CompressionMode.Compress)) { using (StreamWriter sw = new StreamWriter(gzipStream)) { await sw.WriteAsync(JsonConvert.SerializeObject(filmsForCinema)); } } } }
private void ProcessCinemaInfo(Dictionary <int, CinemaInfo> currentCinemas, Dictionary <int, List <FilmInfo> > cinemaFilms, Dictionary <int, FilmInfo> Films, RegionDef region) { CineworldService cws = new CineworldService(); Cinemas cinemas = null; Task <Cinemas> tcinemas = cws.GetCinemas(region, true); tcinemas.Wait(); if (!tcinemas.IsFaulted && tcinemas.Result != null) { cinemas = tcinemas.Result; } CineMobileService mobileService = new CineMobileService(); //foreach (var cinema in cinemas.cinemas) for (int i = 0; i < cinemas.cinemas.Count; i++) { //if (i > 1) // break; var cinema = cinemas.cinemas[i]; //if (cinema.id != 91) // continue; Task <Films> tf = cws.GetFilms(region, false, cinema.id); Task <List <CinemaReview> > tReviews = mobileService.GetCinemaReviews(cinema.id); if (!currentCinemas.ContainsKey(cinema.id)) { CinemaInfo ci = new CinemaInfo() { Address = cinema.address, ID = cinema.id, Name = cinema.name, Postcode = cinema.postcode, Telephone = cinema.telephone }; if (this.LatitudeDictionary.ContainsKey(cinema.id) && this.LongitudeDictionary.ContainsKey(cinema.id)) { ci.Latitude = this.LatitudeDictionary[cinema.id]; ci.Longitute = this.LongitudeDictionary[cinema.id]; } else { Bing.MapsClient mapClient = new Bing.MapsClient("At7qhfJw20G5JptEm0fdIaMehzBAU6GT4jJRpznGY_rdPRa5NquCN5GP8bzzdG0d", "en-GB"); var tLocation = mapClient.LocationQuery( new Bing.Maps.Address() { AddressLine = cinema.address, PostalCode = cinema.postcode, CountryRegion = (region == RegionDef.GB ? "United Kingdom" : "Ireland") }); tLocation.Wait(); Bing.Maps.Location location = null; try { if (!tLocation.IsFaulted && tLocation.Result != null) { location = tLocation.Result.GetLocations().FirstOrDefault(); } } catch { } if (location != null && location.Point != null && location.Point.Coordinates.Length == 2) { ci.Latitude = location.Point.Coordinates[0]; ci.Longitute = location.Point.Coordinates[1]; } } tReviews.Wait(); if (!tReviews.IsFaulted && tReviews.Result != null) { ci.Reviews = tReviews.Result; } currentCinemas[cinema.id] = ci; } tf.Wait(); if (!tf.IsFaulted && tf.Result != null) { List <FilmInfo> cFilms = new List <FilmInfo>(); foreach (var film in tf.Result.films) { if (!Films.ContainsKey(film.edi)) { continue; } FilmInfo fi = new FilmInfo() { EDI = film.edi, Title = film.CleanTitle }; fi.ShowingToday = true; cFilms.Add(fi); } cinemaFilms[cinema.id] = cFilms; } } }