コード例 #1
0
ファイル: SettingsForm.cs プロジェクト: icarlosd/Aerial-1
        /// <summary>
        /// Load display text from the Registry
        /// </summary>
        private void LoadSettings()
        {
            var settings = new RegSettings();

            chkDifferentMonitorMovies.Checked = settings.DifferentMoviesOnDual;
            chkUseTimeOfDay.Checked           = settings.UseTimeOfDay;
        }
コード例 #2
0
        private void ScreenSaverForm_Load(object sender, EventArgs e)
        {
            if (!previewMode && !windowMode) Cursor.Hide();

            LayoutPlayer();

            var nextVideoTimer = new System.Windows.Forms.Timer();
            nextVideoTimer.Tick += NextVideoTimer_Tick;
            nextVideoTimer.Interval = 1000;
            nextVideoTimer.Enabled = true;

            var cacheVideos = new RegSettings().CacheVideos;
            if (cacheVideos) {
                DirectoryInfo directory = Directory.CreateDirectory(cacheFolder);
            }

            if (ShowVideo)
            {
                Movies = new AerialContext().GetMovies();

#if DEBUG
                Movies = new List<Asset>
                {
                    new Asset {url = @"http://blog.luxisinteractive.com/wp-content/uploads/2015/08/depth.mp4" },
                    new Asset {url = @"http://blog.luxisinteractive.com/wp-content/uploads/2015/08/animation.mp4" },
                };

                //this.player.URL = @"http://blog.luxisinteractive.com/wp-content/uploads/2015/08/depth.mp4";
#endif

                SetNextVideo();

            }
        }
コード例 #3
0
ファイル: ScreenSaverForm.cs プロジェクト: saihv/Aerial
        private void SetNextVideo()
        {
            Trace.WriteLine("SetNextVideo()");
            var cacheEnabled = new RegSettings().CacheVideos;

            if (ShowVideo)
            {
                string url = Movies[currentVideoIndex].url;

                if (Caching.IsHit(url))
                {
                    player.URL = Caching.Get(url);
                }
                else
                {
                    player.URL = url;
                    if (cacheEnabled && shouldCache &&
                        !previewMode && !Caching.IsCaching(url))
                    {
                        Caching.StartDelayedCache(url);
                    }
                }
                currentVideoIndex++;
                if (currentVideoIndex >= Movies.Count)
                {
                    currentVideoIndex = 0;
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// Load display text from the Registry
        /// </summary>
        private void LoadSettings()
        {
            var settings = new RegSettings();

            chkDifferentMonitorMovies.Checked = settings.DifferentMoviesOnDual;
            chkUseTimeOfDay.Checked           = settings.UseTimeOfDay;
            chkMultiscreenDisabled.Checked    = settings.MultiscreenDisabled;
            chkCacheVideos.Checked            = settings.CacheVideos;

            if (settings.CacheLocation == null || settings.CacheLocation == "")
            {
                txtCacheFolderPath.Text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Aerial").ToString();
            }
            else
            {
                txtCacheFolderPath.Text = settings.CacheLocation;
            }

            if (String.IsNullOrEmpty(settings.JsonURL))
            {
                changeVideoSourceText.Text = AerialGlobalVars.appleVideosURI;
            }
            else
            {
                changeVideoSourceText.Text = settings.JsonURL;
            }

            changeCacheLocationButton.Enabled = settings.CacheVideos;

            ShowSpace();

            PopulateChosenVideoGroup();

            InitPlayer();
        }
コード例 #5
0
ファイル: SettingsForm.cs プロジェクト: folkert4/Aerial
        /// <summary>
        /// Load display text from the Registry
        /// </summary>
        private void LoadSettings()
        {
            var settings = new RegSettings();

            chkDifferentMonitorMovies.Checked = settings.DifferentMoviesOnDual;
            chkUseTimeOfDay.Checked           = settings.UseTimeOfDay;
            chkMultiscreenDisabled.Checked    = settings.MultiscreenDisabled;
            chkCacheVideos.Checked            = settings.CacheVideos;

            if (settings.CacheLocation == null || settings.CacheLocation == "")
            {
                txtCacheFolderPath.Text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Aerial").ToString();
            }
            else
            {
                txtCacheFolderPath.Text = settings.CacheLocation;
            }

            changeCacheLocationButton.Enabled = settings.CacheVideos;

            ShowSpace();

            // while developing
            tabs.TabPages.Remove(tabAbout);
            grpChosenVideos.Hide();
        }
コード例 #6
0
        public List <Asset> GetMovies()
        {
            var settings = new RegSettings();

            var       aerialUrl = "http://a1.phobos.apple.com/us/r1000/000/Features/atv/AutumnResources/videos/entries.json";
            WebClient webClient = new WebClient();
            string    ee        = webClient.DownloadString(aerialUrl);

            var urls = new JavaScriptSerializer().Deserialize <IdAsset[]>(ee);

            var time  = (DateTime.Now.Hour < 6 || DateTime.Now.Hour > 19) ? "night" : "day";
            var ran   = new Random();
            var links = urls.SelectMany(s => s.assets)
                        .OrderBy(t => ran.Next())
                        .OrderByDescending(t => settings.UseTimeOfDay && t.timeOfDay == time)
                        .ToList();

            if (settings.DifferentMoviesOnDual)
            {
                return(links);
            }
            if (cachedPlaylist == null)
            {
                cachedPlaylist = links;
            }

            return(cachedPlaylist);
        }
コード例 #7
0
ファイル: ScreenSaverForm.cs プロジェクト: stylpe/Aerial
        private void SetNextVideo(bool force)
        {
            Trace.WriteLine("SetNextVideo()");
            var cacheEnabled = new RegSettings().CacheVideos;

            if (showVideo)
            {
                //If movies is null, when we tried to parse the JSON doc with the movies it
                //failed or it was empty.
                if (Movies == null || Movies.Count == 0)
                {
                    showVideo = false;
                    MessageBox.Show("Error finding the video locations.  Please confirm that the video source " +
                                    "is a valid JSON document and can be reached.  Resart after fixing the video source");

                    return;
                }

                if (force || repeated >= Movies[currentVideoIndex].repeat)
                {
                    currentVideoIndex = selector.next(Movies.Count);
                    repeated          = 1;
                }
                else
                {
                    repeated++;
                }

                //MessageBox.Show($"{Movies[currentVideoIndex].url}\n{Movies[currentVideoIndex].repeat}\n{repeated}\n{force}");

                string url = Movies[currentVideoIndex].url;

                if (Caching.IsHit(url))
                {
                    Debug.WriteLine("Caching is hit");
                    player.Play(new Uri(Caching.Get(url)));
                }
                else
                {
                    Debug.WriteLine("Caching is not hit");
                    player.Play(url);

                    if (cacheEnabled && shouldCache &&
                        !previewMode && !Caching.IsCaching(url))
                    {
                        Caching.StartDelayedCache(url);
                    }
                }

                if (Movies[currentVideoIndex].shouldRepeatFrom && repeated != 1)
                {
                    //MessageBox.Show($"Current time: {player.Time}, setting to {Movies[currentVideoIndex].repeatFrom}");
                    player.Time = Movies[currentVideoIndex].repeatFrom;
                }

                //currentVideoIndex++;
                //if (currentVideoIndex >= Movies.Count)
                //    currentVideoIndex = 0;
            }
        }
コード例 #8
0
        private void SetNextVideo()
        {
            Trace.WriteLine("SetNextVideo()");
            var cacheVideos = new RegSettings().CacheVideos;

            if (ShowVideo)
            {
                string filename = Path.GetFileName(Movies[currentVideoIndex].url);

                if (File.Exists(Path.Combine(cacheFolder, filename)))
                {
                    player.URL = Path.Combine(cacheFolder, filename);
                }
                else
                {
                    player.URL = Movies[currentVideoIndex].url;
                    if (cacheVideos && !File.Exists(Path.Combine(tempFolder, filename)))
                    {
                        using (WebClient client = new WebClient())
                        {
                            client.DownloadFileCompleted += new AsyncCompletedEventHandler(OnDownloadFileComplete);
                            client.DownloadFileAsync(new System.Uri(Movies[currentVideoIndex].url), Path.Combine(tempFolder, filename), filename);
                        }
                    }
                }
                currentVideoIndex++;
                if (currentVideoIndex >= Movies.Count)
                {
                    currentVideoIndex = 0;
                }
            }
        }
コード例 #9
0
        /// <summary>
        /// Load display text from the Registry
        /// </summary>
        private void LoadSettings()
        {
            var settings = new RegSettings();

            chkDifferentMonitorMovies.Checked = settings.DifferentMoviesOnDual;
            chkUseTimeOfDay.Checked           = settings.UseTimeOfDay;
            chkMultiscreenDisabled.Checked    = settings.MultiscreenDisabled;
            chkCacheVideos.Checked            = settings.CacheVideos;

            if (settings.CacheLocation == null)
            {
                txtCacheFolderPath.Text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Aerial").ToString();
            }
            else
            {
                txtCacheFolderPath.Text = settings.CacheLocation;
            }

            if (settings.CacheVideos)
            {
                changeCacheLocationButton.Enabled = true;
            }
            else
            {
                changeCacheLocationButton.Enabled = false;
            }
        }
コード例 #10
0
ファイル: SettingsForm.cs プロジェクト: n1tt3n/Aerial
 /// <summary>
 /// Load display text from the Registry
 /// </summary>
 private void LoadSettings()
 {
     var settings = new RegSettings();
     chkDifferentMonitorMovies.Checked = settings.DifferentMoviesOnDual;
     chkUseTimeOfDay.Checked = settings.UseTimeOfDay;
     chkMultiscreenDisabled.Checked = settings.MultiscreenDisabled;
 }
コード例 #11
0
ファイル: SettingsForm.cs プロジェクト: gswest/Aerial
        /// <summary>
        /// Load display text from the Registry
        /// </summary>
        private void LoadSettings()
        {
            var settings = new RegSettings();

            chkDifferentMonitorMovies.Checked = settings.DifferentMoviesOnDual;
            chkUseTimeOfDay.Checked           = settings.UseTimeOfDay;
            chkMultiscreenDisabled.Checked    = settings.MultiscreenDisabled;
        }
コード例 #12
0
        /// <summary>
        /// Save text into the Registry.
        /// </summary>
        private void SaveSettings()
        {
            var settings = new RegSettings();
            settings.DifferentMoviesOnDual = chkDifferentMonitorMovies.Checked;
            settings.UseTimeOfDay = chkUseTimeOfDay.Checked;

            settings.SaveSettings();
        }
コード例 #13
0
        private void SetNextVideo()
        {
            Trace.WriteLine("SetNextVideo()");
            var cacheEnabled = new RegSettings().CacheVideos;

            if (showVideo)
            {
                //If movies is null, when we tried to parse the JSON doc with the movies it
                //failed or it was empty.
                if (Movies == null || Movies.Count == 0)
                {
                    showVideo = false;
                    MessageBox.Show("Error finding the video locations.  Please confirm that the video source " +
                                    "is a valid JSON document and can be reached.  Resart after fixing the video source");

                    return;
                }

                DetermineCurrentVideo();

                string url = Movies[currentVideoIndex].url;

                if (Caching.IsHit(url))
                {
                    player.URL = Caching.Get(url);
                }
                else
                {
                    player.URL = url;



                    if (cacheEnabled && shouldCache &&
                        !previewMode && !Caching.IsCaching(url))
                    {
                        Caching.StartDelayedCache(url);
                    }
                }

                // start video from X
                //the currentPosition property gets or sets the current position in the media item in seconds from the beginning.
                //player.Ctlcontrols.currentPosition = 60;

                //var diff = fakeNow - fileStart;
                var diff = new TimeSpan(Now().Hour, Now().Minute, Now().Second) - fileStartTime;

                player.Ctlcontrols.currentPosition = diff.TotalSeconds;


                //currentVideoIndex++;
                if ((currentVideoIndex + 1) >= Movies.Count)
                {
                    //TODO: use DateTime to determine next video?
                    //currentVideoIndex = 0;
                    DetermineCurrentVideo();
                }
            }
        }
コード例 #14
0
ファイル: SettingsForm.cs プロジェクト: icarlosd/Aerial-1
        /// <summary>
        /// Save text into the Registry.
        /// </summary>
        private void SaveSettings()
        {
            var settings = new RegSettings();

            settings.DifferentMoviesOnDual = chkDifferentMonitorMovies.Checked;
            settings.UseTimeOfDay          = chkUseTimeOfDay.Checked;

            settings.SaveSettings();
        }
コード例 #15
0
ファイル: SettingsForm.cs プロジェクト: jeerland/Aerial
 /// <summary>
 /// Load display text from the Registry
 /// </summary>
 private void LoadSettings()
 {
     var settings = new RegSettings();
     chkDifferentMonitorMovies.Checked = settings.DifferentMoviesOnDual;
     chkUseTimeOfDay.Checked = settings.UseTimeOfDay;
     chkMultiscreenDisabled.Checked = settings.MultiscreenDisabled;
     chkCacheVideos.Checked = settings.CacheVideos;
     chkSharedLocation.Checked = settings.SharedCache;
     tbSharedLocation.Text = settings.CacheDir;
 }
コード例 #16
0
ファイル: SettingsForm.cs プロジェクト: josejamilena/Aerial-1
        /// <summary>
        /// Save text into the Registry.
        /// </summary>
        private void SaveSettings()
        {
            var settings = new RegSettings();
            settings.DifferentMoviesOnDual = chkDifferentMonitorMovies.Checked;
            settings.UseTimeOfDay = chkUseTimeOfDay.Checked;
            settings.MultiscreenDisabled = chkMultiscreenDisabled.Checked;
            settings.CacheVideos = chkCacheVideos.Checked;

            settings.SaveSettings();
            
        }
コード例 #17
0
        /// <summary>
        /// Save text into the Registry.
        /// </summary>
        private void SaveSettings()
        {
            var settings = new RegSettings();

            settings.DifferentMoviesOnDual = chkDifferentMonitorMovies.Checked;
            settings.UseTimeOfDay          = chkUseTimeOfDay.Checked;
            settings.MultiscreenDisabled   = chkMultiscreenDisabled.Checked;
            settings.CacheVideos           = chkCacheVideos.Checked;

            settings.SaveSettings();
        }
コード例 #18
0
ファイル: SettingsForm.cs プロジェクト: jeerland/Aerial
        /// <summary>
        /// Load display text from the Registry
        /// </summary>
        private void LoadSettings()
        {
            var settings = new RegSettings();

            chkDifferentMonitorMovies.Checked = settings.DifferentMoviesOnDual;
            chkUseTimeOfDay.Checked           = settings.UseTimeOfDay;
            chkMultiscreenDisabled.Checked    = settings.MultiscreenDisabled;
            chkCacheVideos.Checked            = settings.CacheVideos;
            chkSharedLocation.Checked         = settings.SharedCache;
            tbSharedLocation.Text             = settings.CacheDir;
        }
コード例 #19
0
ファイル: AerialEntities.cs プロジェクト: jeerland/Aerial
        public List <Asset> GetMovies()
        {
            var settings = new RegSettings();

            var       aerialUrl = "http://a1.phobos.apple.com/us/r1000/000/Features/atv/AutumnResources/videos/entries.json";
            WebClient webClient = new WebClient();
            string    ee        = webClient.DownloadString(aerialUrl);

            var urls = new JavaScriptSerializer().Deserialize <IdAsset[]>(ee);
            // fetch local files
            var downloadedFiles = new HashSet <string>(urls.SelectMany(s => s.assets).Select(a => a.url.Split('/').Last().ToLower()));
            var localAssets     = new List <Asset>();

            foreach (var f in new DirectoryInfo(settings.CacheDir).EnumerateFiles())
            {
                var filename = Path.GetFileName(f.FullName).ToLower();
                if (!downloadedFiles.Contains(filename))
                {
                    localAssets.Add(new Asset()
                    {
                        accessibilityLabel = filename, filename = f.FullName, timeOfDay = "any", type = "video", id = filename
                    });
                }
            }
            if (localAssets.Count > 0)
            {
                var newUrls = urls.ToList();
                newUrls.Add(new IdAsset()
                {
                    id = "local", assets = localAssets.ToArray()
                });
                urls = newUrls.ToArray();
            }

            var time  = (DateTime.Now.Hour < 6 || DateTime.Now.Hour > 19) ? "night" : "day";
            var ran   = new Random();
            var links = urls.SelectMany(s => s.assets)
                        .OrderBy(t => ran.Next())
//                .Where(t => t.filename != null) // uncomment to use only local files
                        .OrderByDescending(t => settings.UseTimeOfDay && (t.timeOfDay == time || t.timeOfDay == "any"))
                        .ToList();

            if (settings.DifferentMoviesOnDual)
            {
                return(links);
            }
            if (cachedPlaylist == null)
            {
                cachedPlaylist = links;
            }

            return(cachedPlaylist);
        }
コード例 #20
0
        private void PopulateChosenVideoGroup()
        {
            var movies = AerialContext.GetAllMovies();

            movies.Sort();
            if (movies.Count == 0)
            {
                return;                    // error
            }
            AddHumanNumbers(movies);

            var selected = new RegSettings().ChosenMovies.Split(';').ToList();

            tvChosen.BuildTree(movies, selected);
        }
コード例 #21
0
ファイル: Program.cs プロジェクト: n1tt3n/Aerial
        /// <summary>
        /// Display the form on each of the computer's monitors.
        /// </summary>
        static void ShowScreenSaver()
        {
            int i = 0;
            var multiscreenDisabled = new RegSettings().MultiscreenDisabled;
            foreach (Screen screen in Screen.AllScreens)
            {
                ScreenSaverForm screensaver = new ScreenSaverForm(screen.Bounds);

                // disable video on multi-displays (3+) except the first
                if (Screen.AllScreens.Length > 2 && i != 0 && multiscreenDisabled)
                    screensaver.ShowVideo = false;

                i++;
                screensaver.Show();
            }
        }
コード例 #22
0
ファイル: SettingsForm.cs プロジェクト: folkert4/Aerial
        /// <summary>
        /// Save text into the Registry.
        /// </summary>
        private void SaveSettings()
        {
            var settings = new RegSettings();

            settings.DifferentMoviesOnDual = chkDifferentMonitorMovies.Checked;
            settings.UseTimeOfDay          = chkUseTimeOfDay.Checked;
            settings.MultiscreenDisabled   = chkMultiscreenDisabled.Checked;
            settings.CacheVideos           = chkCacheVideos.Checked;

            string oldCacheDirectory = settings.CacheLocation;

            settings.CacheLocation = txtCacheFolderPath.Text;

            settings.SaveSettings();

            Caching.UpdateCachePath(oldCacheDirectory, settings.CacheLocation);
        }
コード例 #23
0
        private void ScreenSaverForm_Load(object sender, EventArgs e)
        {
            if (!previewMode && !windowMode)
            {
                Cursor.Hide();
            }

            LayoutPlayer();

            var nextVideoTimer = new System.Windows.Forms.Timer();

            nextVideoTimer.Tick    += NextVideoTimer_Tick;
            nextVideoTimer.Interval = 1000;
            nextVideoTimer.Enabled  = true;

            var cacheVideos = new RegSettings().CacheVideos;

            if (cacheVideos)
            {
                DirectoryInfo cacheDirectory = Directory.CreateDirectory(cacheFolder);
                DirectoryInfo tempDirectory  = Directory.CreateDirectory(tempFolder);
            }

            if (ShowVideo)
            {
                Movies = new AerialContext().GetMovies();

#if DEBUG
                Movies = new List <Asset>
                {
                    new Asset {
                        url = @"http://blog.luxisinteractive.com/wp-content/uploads/2015/08/depth.mp4"
                    },
                    new Asset {
                        url = @"http://blog.luxisinteractive.com/wp-content/uploads/2015/08/animation.mp4"
                    },
                };

                //this.player.URL = @"http://blog.luxisinteractive.com/wp-content/uploads/2015/08/depth.mp4";
#endif

                SetNextVideo();
            }
        }
コード例 #24
0
ファイル: Program.cs プロジェクト: saihv/Aerial
        /// <summary>
        /// Display the form on each of the computer's monitors.
        /// </summary>
        static void ShowScreenSaver()
        {
            int i = 0;
            var multiscreenDisabled = new RegSettings().MultiscreenDisabled;

            foreach (Screen screen in Screen.AllScreens)
            {
                ScreenSaverForm screensaver = new ScreenSaverForm(screen.Bounds, i == 0);

                // disable video on multi-displays (3+) except the first
                if (Screen.AllScreens.Length > 2 && screen != Screen.PrimaryScreen && multiscreenDisabled)
                {
                    screensaver.ShowVideo = false;
                }

                i++;
                screensaver.Show();
            }
        }
コード例 #25
0
        /// <summary>
        /// Save text into the Registry.
        /// </summary>
        private void SaveSettings()
        {
            var settings = new RegSettings();

            settings.MultiMonitorMode = (RegSettings.MultiMonitorModeEnum)cbMultiScreenMode.SelectedValue;
            settings.UseTimeOfDay     = chkUseTimeOfDay.Checked;
            settings.CacheVideos      = chkCacheVideos.Checked;

            string oldCacheDirectory = settings.CacheLocation;

            settings.CacheLocation = txtCacheFolderPath.Text;
            settings.JsonURL       = changeVideoSourceText.Text;

            settings.ChosenMovies = tvChosen.ConcatChosenEntities();

            settings.SaveSettings();

            Caching.UpdateCachePath(oldCacheDirectory, settings.CacheLocation);
        }
コード例 #26
0
ファイル: AerialEntities.cs プロジェクト: jeerland/Aerial
        public List<Asset> GetMovies()
        {
            var settings = new RegSettings();

            var aerialUrl = "http://a1.phobos.apple.com/us/r1000/000/Features/atv/AutumnResources/videos/entries.json";
            WebClient webClient = new WebClient();
            string ee = webClient.DownloadString(aerialUrl);

            var urls = new JavaScriptSerializer().Deserialize<IdAsset[]>(ee);
            // fetch local files
            var downloadedFiles = new HashSet<string>(urls.SelectMany(s => s.assets).Select(a => a.url.Split('/').Last().ToLower()));
            var localAssets = new List<Asset>();
            foreach (var f in new DirectoryInfo(settings.CacheDir).EnumerateFiles())
            {
                var filename = Path.GetFileName(f.FullName).ToLower();
                if (!downloadedFiles.Contains(filename))
                {
                    localAssets.Add(new Asset() { accessibilityLabel = filename, filename = f.FullName, timeOfDay = "any", type = "video", id = filename });
                }
            }
            if (localAssets.Count > 0)
            {
                var newUrls = urls.ToList();
                newUrls.Add(new IdAsset() { id = "local", assets = localAssets.ToArray() });
                urls = newUrls.ToArray();
            }

            var time = (DateTime.Now.Hour < 6 || DateTime.Now.Hour > 19) ? "night" : "day";
            var ran = new Random();
            var links = urls.SelectMany(s => s.assets)
                .OrderBy(t => ran.Next())
            //                .Where(t => t.filename != null) // uncomment to use only local files
                .OrderByDescending(t => settings.UseTimeOfDay && (t.timeOfDay == time || t.timeOfDay == "any"))
                .ToList();

            if (settings.DifferentMoviesOnDual)
                return links;
            if (cachedPlaylist == null)
                cachedPlaylist = links;

            return cachedPlaylist;
        }
コード例 #27
0
ファイル: ScreenSaverForm.cs プロジェクト: Haxine/Aerial-1
        private void SetNextVideo()
        {
            Trace.WriteLine("SetNextVideo()");
            var cacheEnabled = new RegSettings().CacheVideos;

            if (showVideo)
            {
                //If movies is null, when we tried to parse the JSON doc with the movies it
                //failed or it was empty.
                if (Movies == null || Movies.Count == 0)
                {
                    showVideo = false;
                    MessageBox.Show("Error finding the video locations.  Please confirm that the video source " +
                                    "is a valid JSON document and can be reached.  Resart after fixing the video source");

                    return;
                }

                string url = Movies[currentVideoIndex].url;

                if (Caching.IsHit(url))
                {
                    player.URL = Caching.Get(url);
                }
                else
                {
                    player.URL = url;
                    if (cacheEnabled && shouldCache &&
                        !previewMode && !Caching.IsCaching(url))
                    {
                        Caching.StartDelayedCache(url);
                    }
                }
                currentVideoIndex++;
                if (currentVideoIndex >= Movies.Count)
                {
                    currentVideoIndex = 0;
                }
            }
        }
コード例 #28
0
        public List<Asset> GetMovies()
        {
            var settings = new RegSettings();
            
            var aerialUrl = "http://a1.phobos.apple.com/us/r1000/000/Features/atv/AutumnResources/videos/entries.json";
            WebClient webClient = new WebClient();
            string ee = webClient.DownloadString(aerialUrl);

            var urls = new JavaScriptSerializer().Deserialize<IdAsset[]>(ee);

            var time = (DateTime.Now.Hour < 6 || DateTime.Now.Hour > 19) ? "night" : "day";
            var ran = new Random();
            var links = urls.SelectMany(s => s.assets)
                .OrderBy(t => ran.Next())
                .OrderByDescending(t => settings.UseTimeOfDay && t.timeOfDay == time)
                .ToList();

            if (settings.DifferentMoviesOnDual)
                return links;
            if (cachedPlaylist == null)
                cachedPlaylist = links;

            return cachedPlaylist;
        }
コード例 #29
0
ファイル: ScreenSaverForm.cs プロジェクト: cDima/Aerial
        private void SetNextVideo()
        {
            Trace.WriteLine("SetNextVideo()");
            var cacheEnabled = new RegSettings().CacheVideos;
            if (ShowVideo)
            {
                string url = Movies[currentVideoIndex].url;

                if (Caching.IsHit(url))
                {
                    player.URL = Caching.Get(url);
                }
                else
                {
                    player.URL = url;
                    if (cacheEnabled && shouldCache &&
                        !previewMode &&  !Caching.IsCaching(url)) {
                        Caching.StartDelayedCache(url);
                    }
                }
                currentVideoIndex++;
                if (currentVideoIndex >= Movies.Count)
                    currentVideoIndex = 0;
            }
        }
コード例 #30
0
        private void SetNextVideo()
        {
            Trace.WriteLine("SetNextVideo()");
            var cacheVideos = new RegSettings().CacheVideos;
            if (ShowVideo)
            {
                string tempFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Temp");
                string filename = Path.GetFileName(Movies[currentVideoIndex].url);

                if (File.Exists(Path.Combine(cacheFolder, filename)))
                {
                    player.URL = Path.Combine(cacheFolder, filename);
                }
                else
                {
                    player.URL = Movies[currentVideoIndex].url;
                    if (cacheVideos) {
                        using (WebClient client = new WebClient())
                        {
							client.DownloadFileCompleted += new AsyncCompletedEventHandler(OnDownloadFileComplete);
                            client.DownloadFileAsync(new System.Uri(Movies[currentVideoIndex].url), Path.Combine(tempFolder, filename), filename);
                        }
                    }
                }
                currentVideoIndex++;
                if (currentVideoIndex >= Movies.Count)
                    currentVideoIndex = 0;
            }
        }
コード例 #31
0
 /// <summary>
 /// Load display text from the Registry
 /// </summary>
 private void LoadSettings()
 {
     var settings = new RegSettings();
     chkDifferentMonitorMovies.Checked = settings.DifferentMoviesOnDual;
     chkUseTimeOfDay.Checked = settings.UseTimeOfDay;
 }