private void browser2_BeforeNavigate2(object sender, AxSHDocVw.DWebBrowserEvents2_BeforeNavigate2Event e) { string url = (string)e.uRL; Debug.WriteLine("browser2_BeforeNavigate2: " + url); try { if (url.StartsWith("javascript:")) { string[] scripts = url.Split(';'); foreach (string script in scripts) { if (script.LastIndexOf("PandoraStarted") > 0) { //loaded = true; //loginTime = DateTime.Now; if (pandora == null) { pandora = new Pandora(browser); browserTimer.Start(); } } else if (script.LastIndexOf("SongPlayed") > 0) { Debug.WriteLine("Play"); const string SONG_NAME_MARK = "songName:unescape"; const string ARTIST_NAME_MARK = "artistName:unescape"; const string SONG_URL_MARK = "songURL:unescape"; const string ART_URL_MARK = "artURL:unescape"; const string END_MARK = "}"; int songMark = script.IndexOf(SONG_NAME_MARK) + SONG_NAME_MARK.Length; int songMarkLength = script.LastIndexOf(ARTIST_NAME_MARK) - songMark; int artistMark = script.IndexOf(ARTIST_NAME_MARK) + ARTIST_NAME_MARK.Length; int artistMarkLength = script.LastIndexOf(SONG_URL_MARK) - artistMark; int songUrlMark = script.IndexOf(SONG_URL_MARK) + SONG_URL_MARK.Length; int songUrlMarkLength = script.LastIndexOf(ART_URL_MARK) - songUrlMark; int artUrlMark = script.IndexOf(ART_URL_MARK) + ART_URL_MARK.Length; int artUrlMarkLength = script.LastIndexOf(END_MARK) - artUrlMark; string songNamePart = script.Substring(songMark, songMarkLength); string artistNamePart = script.Substring(artistMark, artistMarkLength); string songUrlPart = script.Substring(songUrlMark, songUrlMarkLength); string artUrlPart = script.Substring(artUrlMark, artUrlMarkLength); string songName = songNamePart.Substring(songNamePart.IndexOf("'") + 1, songNamePart.LastIndexOf("'") - songNamePart.IndexOf("'") - 1); string artistName = artistNamePart.Substring(artistNamePart.IndexOf("'") + 1, artistNamePart.LastIndexOf("'") - artistNamePart.IndexOf("'") - 1); string songUrl = songUrlPart.Substring(songNamePart.IndexOf("'") + 1, songUrlPart.LastIndexOf("'") - songUrlPart.IndexOf("'") - 1); string artUrl = artUrlPart.Substring(artUrlPart.IndexOf("'") + 1, artUrlPart.LastIndexOf("'") - artUrlPart.IndexOf("'") - 1); songName = HttpUtility.UrlDecode(songName.Replace("%25%32%37", "%27").Replace("%22", "\"")).Replace("%22", "\""); artistName = HttpUtility.UrlDecode(artistName.Replace("%25%32%37", "%27").Replace("%22", "\"")).Replace("%22", "\""); songUrl = HttpUtility.UrlDecode(songUrl); artUrl = HttpUtility.UrlDecode(artUrl); refreshMessenger = !paused; refreshXfire = !paused; refreshSkype = !paused; refreshG15 = !paused; OnPlayStart(); ++continuesPlayCounter; memoryTimer.Interval = MEMORYTIMER_DELAY; memoryTimer.Start(); if (taskbarNotifier != null && taskbarNotifier.Visible) { taskbarNotifier.Hide(); } if (!paused) { playedLength += (int)(DateTime.Now - playedStartTime).TotalSeconds; SubmitSongToLastFM(song.Artist, song.Name, playedLength); playedLength = 0; } playedStartTime = DateTime.Now; paused = false; song = new Song(string.Empty, songName, artistName, songUrl, artUrl); Debug.WriteLine(song.Name + " ~by~ " + song.Artist); submittedToLastFm = false; menuLastFmSubmit.Enabled = true; RefreshPlayer(true); } else if (script.LastIndexOf("SongPaused") > 0) { Debug.WriteLine("Pause"); playedLength += (int)(DateTime.Now - playedStartTime).TotalSeconds; this.menuPlayerPlayPause.Text = "Play"; paused = true; refreshMessenger = false; refreshXfire = false; refreshSkype = false; refreshG15 = false; RefreshPlayer(false); memoryTimer.Interval = MEMORYTIMER_PAUSE; memoryTimer.Start(); } else if (script.LastIndexOf("StationPlayed") > 0) { const string STATION_NAME_MARK = "stationName:unescape"; const string STATION_ID_MARK = "stationId:unescape"; const string IS_SHARED_MARK = "isShared:"; int stationNameMark = script.IndexOf(STATION_NAME_MARK) + STATION_NAME_MARK.Length; int stationNameMarkLength = script.LastIndexOf(STATION_ID_MARK) - stationNameMark; int stationIdMark = script.IndexOf(STATION_ID_MARK) + STATION_ID_MARK.Length; int stationIdMarkLength = script.LastIndexOf(IS_SHARED_MARK) - stationIdMark; string stationNamePart = script.Substring(stationNameMark, stationNameMarkLength); string stationIdPart = script.Substring(stationIdMark, stationIdMarkLength); string stationName = stationNamePart.Substring(stationNamePart.IndexOf("'") + 1, stationNamePart.LastIndexOf("'") - stationNamePart.IndexOf("'") - 1); string stationIdText = stationIdPart.Substring(stationIdPart.IndexOf("'") + 1, stationIdPart.LastIndexOf("'") - stationIdPart.IndexOf("'") - 1); stationName = HttpUtility.UrlDecode(stationName.Replace("%25%32%37", "%27")); if (currentStationCode != stationIdText) { Station currentStation = null; foreach (Station station in stations) { if (station.Code.Equals(stationIdText)) { currentStation = station; break; } } if (currentStation != null) { foreach (MenuItem menuItem in menuPlayerStations.MenuItems) { if (menuItem.Text.Equals(currentStation.Name)) { title = "Playing ... " + currentStation.Name; ShowMessage(title); menuItem.Checked = true; } else { menuItem.Checked = false; } } } currentStationCode = stationIdText; } } } } } catch (Exception ex) { Debug.WriteLine(ex.Message); Debug.WriteLine(ex.StackTrace); } }
private void browser_BeforeNavigate2(object sender, AxSHDocVw.DWebBrowserEvents2_BeforeNavigate2Event e) { try { string urlText = HttpUtility.UrlDecode(e.uRL as string); Debug.WriteLine("browser_BeforeNavigate2: " + urlText); if (urlText.StartsWith("res://ieframe.dll/navcancl.htm")) { textMessageCode = 1; textMessageTimer.Start(); e.cancel = true; return; } try { if (!loaded && browserTimer != null) { Debug.WriteLine("Radio: timer"); browserTimer.Interval = 10000; browserTimer.Start(); } } catch (Exception ex) { Debug.WriteLine(ex.Message); Debug.WriteLine(ex.StackTrace); } if (PandoraTuner.IsTunerUrl(urlText)) { PandoraTuner tuner = new PandoraTuner(urlText); if (tuner.ContainsCreateStation || tuner.ContainsDeleteStation || tuner.ContainsLogin || tuner.ContainsOpen || tuner.ContainsPause || tuner.ContainsSharedStation || tuner.ContainsSkip || tuner.ContainsStation) { continuesPlayCounter = 0; } if ((loginTime - DateTime.Now).TotalHours == 6) { loginTime = DateTime.Now; Manager.Login(listenerID); } if (tuner.ContainsRegistration) { ResizeFromContent(radioSize); } if (tuner.ContainsLogin) { loaded = true; loginTime = DateTime.Now; if (pandora == null) { pandora = new Pandora(browser); } panelBrowser.BringToFront(); } if (tuner.ContainsPlay) { /*OnPlayStart(); ++continuesPlayCounter; memoryTimer.Interval = MEMORYTIMER_DELAY; memoryTimer.Start(); if (taskbarNotifier != null && taskbarNotifier.Visible) { taskbarNotifier.Hide(); } if (!paused) { playedLength += (int)(DateTime.Now - playedStartTime).TotalSeconds; SubmitSongToLastFM(song.Artist, song.Name, playedLength); playedLength = 0; } playedStartTime = DateTime.Now;*/ } else if (tuner.ContainsPause) { /*playedLength += (int)(DateTime.Now - playedStartTime).TotalSeconds; this.menuPlayerPlayPause.Text = "Play"; paused = true; refreshMessenger = false; refreshXfire = false; refreshSkype = false; RefreshPlayer(false); memoryTimer.Interval = MEMORYTIMER_PAUSE; memoryTimer.Start();*/ } if (tuner.ContainsLogout) { RestartPlayer(); } if (tuner.ContainsUser) { authToken = tuner.AuthToken; listenerID = tuner.ListenerID; Manager.Login(listenerID); LoadStations(); ResizeFromContent(new Size(radioSize.Width, radioSize.Height - 200)); } if (tuner.ContainsCreateStation) { LoadStations(); } if (!tuner.ContainsDeleteStation && deleteStation) { if (tuner.ContainsStation) { LoadStations(); } deleteStation = false; } if (tuner.ContainsDeleteStation) { deleteStation = true; } if (!tuner.ContainsSharedStation && sharedStation) { if (tuner.ContainsStation) { LoadStations(); } sharedStation = false; } if (tuner.ContainsSharedStation) { sharedStation = true; } if (tuner.ContainsAds) { if (isPayingUser != tuner.IsPayingUser) { isPayingUser = tuner.IsPayingUser; configuration.PayingUser = tuner.IsPayingUser; configuration.Save(); } } if (tuner.ContainsOpen) { lastBookmark = DateTime.Now; } if (tuner.ContainsSkip) { Debug.WriteLine("Skip"); } if (configuration.PartyMode && continuesPlayCounter > 30) { Debug.WriteLine("Party !!!!!!!!!!!!!!!!!"); pandora.NextTrack(); continuesPlayCounter = 0; } } } catch (Exception ex) { Debug.WriteLine(ex.Message); Debug.WriteLine(ex.StackTrace); } }