From: <sa...@us...> - 2009-01-14 15:39:13
|
Revision: 2508 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2508&view=rev Author: saamand Date: 2009-01-14 15:39:02 +0000 (Wed, 14 Jan 2009) Log Message: ----------- Modified Paths: -------------- trunk/plugins/MyLyrics/My Lyrics/MyLyrics.cs trunk/plugins/MyLyrics/change log.txt Added Paths: ----------- trunk/plugins/MyLyrics/LyricsEngine/LyricsSites/Actionext.cs trunk/plugins/MyLyrics/LyricsEngine/LyricsSites/LyrDB.cs trunk/plugins/MyLyrics/LyricsEngine/LyricsWebClient.cs trunk/plugins/MyLyrics/My Lyrics/change log.txt trunk/plugins/MyLyrics/Skin/Blue3wide/Media/ trunk/plugins/MyLyrics/Skin/Blue3wide/Media/hover_my lyrics.png trunk/plugins/MyLyrics/Skin/Xface/ trunk/plugins/MyLyrics/Skin/Xface/Media/ trunk/plugins/MyLyrics/Skin/Xface/Media/buttonNF_my lyrics.png trunk/plugins/MyLyrics/Skin/Xface/Media/button_my lyrics.png trunk/plugins/MyLyrics/Skin/Xface/Media/hover_my lyrics.png trunk/plugins/MyLyrics/Skin/Xface/myLyrics.xml Added: trunk/plugins/MyLyrics/LyricsEngine/LyricsSites/Actionext.cs =================================================================== --- trunk/plugins/MyLyrics/LyricsEngine/LyricsSites/Actionext.cs (rev 0) +++ trunk/plugins/MyLyrics/LyricsEngine/LyricsSites/Actionext.cs 2009-01-14 15:39:02 UTC (rev 2508) @@ -0,0 +1,155 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.IO; +using System.Diagnostics; +using System.Net; +using System.Threading; +using System.Timers; + +namespace LyricsEngine.LyricSites +{ + class Actionext + { + string lyric = ""; + bool complete; + System.Timers.Timer timer; + int timeLimit; + + public string Lyric + { + get { return lyric; } + } + + public Actionext(string artist, string title, ManualResetEvent m_EventStop_SiteSearches, int timeLimit) + { + this.timeLimit = timeLimit; + timer = new System.Timers.Timer(); + + if (LyricDiagnostics.TraceSource != null) LyricDiagnostics.TraceSource.TraceEvent(TraceEventType.Information, 0, LyricDiagnostics.ElapsedTimeString() + "Actionext(" + artist + ", " + title + ")"); + + artist = LyricUtil.RemoveFeatComment(artist); + artist = LyricUtil.TrimForParenthesis(artist); + artist = artist.Replace(" ", "_"); + title = LyricUtil.RemoveFeatComment(title); + title = LyricUtil.TrimForParenthesis(title); + title = title.Replace(" ", "_"); + string urlString = "http://www.actionext.com/names_" + artist[0] + "/" + artist + "_lyrics/" + title + ".html"; + urlString = urlString.ToLower(); + + LyricsWebClient client = new LyricsWebClient(); + + timer.Enabled = true; + timer.Interval = timeLimit; + timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); + timer.Start(); + + Uri uri = new Uri(urlString); + client.OpenReadCompleted += new System.Net.OpenReadCompletedEventHandler(callbackMethod); + client.OpenReadAsync(uri); + + while (complete == false) + { + if (m_EventStop_SiteSearches.WaitOne(1, true)) + { + complete = true; + } + else + { + System.Threading.Thread.Sleep(300); + } + } + } + + private void callbackMethod(object sender, OpenReadCompletedEventArgs e) + { + bool thisMayBeTheCorrectLyric = true; + StringBuilder lyricTemp = new StringBuilder(); + + LyricsWebClient client = (LyricsWebClient)sender; + Stream reply = null; + StreamReader sr = null; + + try + { + reply = (Stream)e.Result; + sr = new StreamReader(reply); + + string line = ""; + int noOfLinesCount = 0; + + while (line.IndexOf(@"<div class=""lyrics-text"">") == -1) + { + if (sr.EndOfStream || ++noOfLinesCount > 300) + { + thisMayBeTheCorrectLyric = false; + break; + } + else + { + line = sr.ReadLine(); + } + } + + if (thisMayBeTheCorrectLyric) + { + lyricTemp = new StringBuilder(); + line = sr.ReadLine(); + + while (line.IndexOf("</div>") == -1) + { + lyricTemp.Append(line); + if (sr.EndOfStream) + { + thisMayBeTheCorrectLyric = false; + break; + } + else + { + line = sr.ReadLine(); + } + } + + lyricTemp.Replace("<br>", Environment.NewLine); + lyricTemp.Replace(",<br />", Environment.NewLine); + lyricTemp.Replace("<br />", Environment.NewLine); + + lyric = lyricTemp.ToString().Trim(); + + if (lyric.Contains("but we do not have the lyrics")) + { + lyric = "Not found"; + } + } + } + catch + { + lyric = "Not found"; + } + finally + { + if (sr != null) + { + sr.Close(); + } + + if (reply != null) + { + reply.Close(); + } + complete = true; + } + } + + void timer_Elapsed(object sender, ElapsedEventArgs e) + { + timer.Stop(); + timer.Close(); + timer.Dispose(); + + lyric = "Not found"; + complete = true; + Thread.CurrentThread.Abort(); + } + } +} Added: trunk/plugins/MyLyrics/LyricsEngine/LyricsSites/LyrDB.cs =================================================================== --- trunk/plugins/MyLyrics/LyricsEngine/LyricsSites/LyrDB.cs (rev 0) +++ trunk/plugins/MyLyrics/LyricsEngine/LyricsSites/LyrDB.cs 2009-01-14 15:39:02 UTC (rev 2508) @@ -0,0 +1,187 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.IO; +using System.Diagnostics; +using System.Net; +using System.Threading; +using System.Timers; + +namespace LyricsEngine.LyricSites +{ + class LyrDB + { + string lyric = ""; + bool complete; + System.Timers.Timer timer; + int timeLimit; + private ManualResetEvent m_EventStop_SiteSearches; + + public string Lyric + { + get { return lyric; } + } + + public LyrDB(string artist, string title, ManualResetEvent eventStop_SiteSearches, int timeLimit) + { + this.timeLimit = timeLimit; + timer = new System.Timers.Timer(); + + m_EventStop_SiteSearches = eventStop_SiteSearches; + + if (LyricDiagnostics.TraceSource != null) LyricDiagnostics.TraceSource.TraceEvent(TraceEventType.Information, 0, LyricDiagnostics.ElapsedTimeString() + "LyrDB(" + artist + ", " + title + ")"); + + artist = LyricUtil.RemoveFeatComment(artist); + artist = LyricUtil.TrimForParenthesis(artist); + title = LyricUtil.RemoveFeatComment(title); + title = LyricUtil.TrimForParenthesis(title); + //string urlString = string.Format("http://www.lyrdb.com/lookup.php?q={0}|{1}&for=match", artist, title); + string urlString = string.Format("http://webservices.lyrdb.com/lookup.php?q={0}%7c{1}&for=match", artist, title); + + + LyricsWebClient client = new LyricsWebClient(); + + timer.Enabled = true; + timer.Interval = timeLimit; + timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); + timer.Start(); + + Uri uri = new Uri(urlString); + client.OpenReadCompleted += new System.Net.OpenReadCompletedEventHandler(CallbackMethodSearch); + client.OpenReadAsync(uri); + + while (complete == false) + { + if (m_EventStop_SiteSearches.WaitOne(1, true)) + { + complete = true; + } + else + { + System.Threading.Thread.Sleep(300); + } + } + } + + private void CallbackMethodSearch(object sender, OpenReadCompletedEventArgs e) + { + StringBuilder lyricTemp = new StringBuilder(); + + LyricsWebClient client = (LyricsWebClient)sender; + Stream reply = null; + StreamReader sr = null; + + string id = string.Empty; + + try + { + reply = (Stream)e.Result; + sr = new StreamReader(reply); + + string result = sr.ReadToEnd(); + + if (result.Equals("")) + { + lyric = "Not found"; + return; + } + + id = result.Substring(0, result.IndexOf(@"\")); + + string urlString = string.Format("http://www.lyrdb.com/getlyr.php?q={0}", id); + + LyricsWebClient client2 = new LyricsWebClient(); + + Uri uri = new Uri(urlString); + client2.OpenReadCompleted += new System.Net.OpenReadCompletedEventHandler(CallbackMethodGetLyric); + client2.OpenReadAsync(uri); + + while (complete == false) + { + if (m_EventStop_SiteSearches.WaitOne(1, true)) + { + complete = true; + } + else + { + System.Threading.Thread.Sleep(300); + } + } + } + catch + { + lyric = "Not found"; + } + finally + { + if (sr != null) + { + sr.Close(); + } + + if (reply != null) + { + reply.Close(); + } + } + } + + + private void CallbackMethodGetLyric(object sender, OpenReadCompletedEventArgs e) + { + StringBuilder lyricTemp = new StringBuilder(); + + LyricsWebClient client = (LyricsWebClient)sender; + Stream reply = null; + StreamReader sr = null; + + try + { + reply = (Stream)e.Result; + sr = new StreamReader(reply); + + lyric = sr.ReadToEnd().Trim(); + + //lyricTemp.Replace("<br>", Environment.NewLine); + //lyricTemp.Replace(",<br />", Environment.NewLine); + //lyricTemp.Replace("<br />", Environment.NewLine); + + //lyric = lyricTemp.ToString().Trim(); + + //if (lyric.Contains("but we do not have the lyrics")) + //{ + // lyric = "Not found"; + //} + } + catch + { + lyric = "Not found"; + } + finally + { + if (sr != null) + { + sr.Close(); + } + + if (reply != null) + { + reply.Close(); + } + complete = true; + } + } + + + void timer_Elapsed(object sender, ElapsedEventArgs e) + { + timer.Stop(); + timer.Close(); + timer.Dispose(); + + lyric = "Not found"; + complete = true; + Thread.CurrentThread.Abort(); + } + } +} Added: trunk/plugins/MyLyrics/LyricsEngine/LyricsWebClient.cs =================================================================== --- trunk/plugins/MyLyrics/LyricsEngine/LyricsWebClient.cs (rev 0) +++ trunk/plugins/MyLyrics/LyricsEngine/LyricsWebClient.cs 2009-01-14 15:39:02 UTC (rev 2508) @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Net; + +namespace LyricsEngine +{ + /// <summary> + /// Some sites need to send cookies and a valid User AGent, so we use this class to enable a cookie container. + /// </summary> + class LyricsWebClient : WebClient + { + private CookieContainer cookieContainer; + private string userAgent; + private int timeout; + + public CookieContainer CookieContainer + { + get { return cookieContainer; } + set { cookieContainer = value; } + } + + public string UserAgent + { + get { return userAgent; } + set { userAgent = value; } + } + + public int Timeout + { + get { return timeout; } + set { timeout = value; } + } + + public LyricsWebClient() + { + timeout = -1; + userAgent = @"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"; + cookieContainer = new CookieContainer(); + } + + protected override WebRequest GetWebRequest(Uri address) + { + WebRequest request = base.GetWebRequest(address); + + if (request.GetType() == typeof(HttpWebRequest)) + { + ((HttpWebRequest)request).CookieContainer = cookieContainer; + ((HttpWebRequest)request).UserAgent = userAgent; + ((HttpWebRequest)request).Timeout = timeout; + } + + return request; + } + + } +} \ No newline at end of file Modified: trunk/plugins/MyLyrics/My Lyrics/MyLyrics.cs =================================================================== --- trunk/plugins/MyLyrics/My Lyrics/MyLyrics.cs 2009-01-14 05:06:20 UTC (rev 2507) +++ trunk/plugins/MyLyrics/My Lyrics/MyLyrics.cs 2009-01-14 15:39:02 UTC (rev 2508) @@ -48,7 +48,7 @@ bool alreadyValidLRC = false; bool m_ValidLrcLyric = false; // A valid LRC-lyric always overwrites a normal lyric in both Lyrics db and music tag (if allowed) - bool m_OkToCallPreviousMenu = false; + //bool m_OkToCallPreviousMenu = false; private string CurrentThumbFileName = string.Empty; private MusicTag PreviousTrackTag = null; @@ -425,7 +425,7 @@ LoadSettings(); - m_OkToCallPreviousMenu = false; + //m_OkToCallPreviousMenu = false; LyricDiagnostics.OpenLog(MediaPortal.Configuration.Config.GetFile(MediaPortal.Configuration.Config.Dir.Log, logName)); LyricDiagnostics.TraceSource.TraceEvent(TraceEventType.Start, 0, LyricDiagnostics.ElapsedTimeString() + "MyLyrics opens."); @@ -443,7 +443,6 @@ protected override void OnPageDestroy(int new_windowId) { - StopThread(); resetAll(); @@ -461,10 +460,10 @@ LyricDiagnostics.TraceSource.TraceEvent(TraceEventType.Stop, 0, LyricDiagnostics.ElapsedTimeString() + "MyLyrics closes."); // Is MP closing? If not call ShowPreviousWindow() - if (m_OkToCallPreviousMenu == true) - { - GUIWindowManager.ShowPreviousWindow(); - } + //if (m_OkToCallPreviousMenu == true) + //{ + // GUIWindowManager.ShowPreviousWindow(); + //} } @@ -474,9 +473,10 @@ { case Action.ActionType.ACTION_PREVIOUS_MENU: { - m_OkToCallPreviousMenu = true; - GUIWindowManager.ShowPreviousWindow(); - return; + //m_OkToCallPreviousMenu = true; + //GUIWindowManager.ShowPreviousWindow(); + //return; + break; } case Action.ActionType.ACTION_KEY_PRESSED: { Added: trunk/plugins/MyLyrics/My Lyrics/change log.txt =================================================================== --- trunk/plugins/MyLyrics/My Lyrics/change log.txt (rev 0) +++ trunk/plugins/MyLyrics/My Lyrics/change log.txt 2009-01-14 15:39:02 UTC (rev 2508) @@ -0,0 +1,55 @@ +Release notes to MyLyrics 1.21 + +MyLyrics is a windows plugin for MediaPortal which enables the display of lyrics for the currently played music file inside MediaPortal. +The plugin is able show LRC and plain lyrics, and uses both musictags and online searches to find lyrics. + +Basic features: +* Dynamic search for the lyrics to currently playing music file. +* Browse your music database and select the songs for which you want to find lyrics. +* Batch search for lyrics matching songs in music database. +* Search single title and select amoung lyrics from various lyrics sites. +* Add/delete/edit lyrics and save changes in lyrics databases. +* Import/export lyrics to/from music tags. +* Include lyrics from the Internet, musictags, text- and lrc-files. +* Create a LRC from a basic lyric on the fly. + +Keys: +- W (or '#' button on remote): Toggle between basic and wide screen. +- E (or '*' button on remote): Toggle between lyric and editor screen. +- Enter (or 'OK' on remote): Tag line on LRC editor screen. + +Screens: +- Lyrics basic: shows lyric with coverart on the right (default lyrics screen). +- Lyrics wide: shows wider lyric area and no coverart. +- LRC basic: shows lrc file and coverart on the right (default lrc screen). +- LRC wide: shows wider lrc area and no coverart (the plugin autoselects this if the lrc contains one or more long lines). +- LRC editor: enables the creation of lrc lyric from a plain lyric. + +Compatible with MediaPortal 1.0.0.0 final. + +Installation: +Simple copy the content of the zip-file into your MP library (typical C:\Program Files\Team MediaPortal\MediaPortal). + +Noteworthy changes since version 1.10: +* Add: Support for the lyric site LyrDB. +* Add: On the Lyrics database tab you can choose to see only the LRCs of your lyrics database. +* Fix: Vertical black lines caused by use of "\r\n" in Label controls is eliminated by using "\n" instead. +* Fix: Show previous screen issue and back trace issues with MP fixed. +* Fix: Blue3 and Blue3wide skins optimized. + +Skin Support: +All supported skins (or at least the ones I'm aware of) are listed here: MyLyrics skin library + +For skinners: +Due to a change in the MP Gui engine in March 2008 all label controls need a <width> tag to be shown. +That means all controls of the type "label" must have the tag <width>x</width> where x is the width in pixels. +920 pixels is good value for most 16:9 skins. + +In short, the following controls must be updated with the tag <width>920</width>: +id: 200-212 +id: 300-312 +id: 400-412 +id: 500-512 +id: 600-612 + +The change is needed for the LRC and LRC editor modes to work. Added: trunk/plugins/MyLyrics/Skin/Blue3wide/Media/hover_my lyrics.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/MyLyrics/Skin/Blue3wide/Media/hover_my lyrics.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MyLyrics/Skin/Xface/Media/buttonNF_my lyrics.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/MyLyrics/Skin/Xface/Media/buttonNF_my lyrics.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MyLyrics/Skin/Xface/Media/button_my lyrics.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/MyLyrics/Skin/Xface/Media/button_my lyrics.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MyLyrics/Skin/Xface/Media/hover_my lyrics.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/MyLyrics/Skin/Xface/Media/hover_my lyrics.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MyLyrics/Skin/Xface/myLyrics.xml =================================================================== --- trunk/plugins/MyLyrics/Skin/Xface/myLyrics.xml (rev 0) +++ trunk/plugins/MyLyrics/Skin/Xface/myLyrics.xml 2009-01-14 15:39:02 UTC (rev 2508) @@ -0,0 +1,965 @@ +<window> + <id>90478</id> + <defaultcontrol>20</defaultcontrol> + <allowoverlay>no</allowoverlay> + <controls> + <control> + <type>image</type> + <description>background image</description> + <id>0</id> + <width>1366</width> + <height>768</height> + <texture>background.png</texture> + </control> + <control> + <type>label</type> + <description>Status</description> + <id>11</id> + <posX>110</posX> + <posY>100</posY> + <label>No media playing</label> + <font>font12</font> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>textbox</type> + <description>The Lyric area</description> + <id>20</id> + <posX>110</posX> + <posY>100</posY> + <width>760</width> + <height>520</height> + <onleft>2</onleft> + <onright>2</onright> + <onup>2</onup> + <ondown>2</ondown> + <image>icon-folder.png</image> + <label>-</label> + <seperator>----------------------------------------------------------------------------------------------</seperator> + <text>6</text> + <spinPosX>715</spinPosX> + <spinPosY>525</spinPosY> + </control> + <control> + <type>textbox</type> + <description>The Lyric area</description> + <id>21</id> + <posX>110</posX> + <posY>100</posY> + <width>1160</width> + <height>520</height> + <onleft>2</onleft> + <onright>2</onright> + <onup>2</onup> + <ondown>2</ondown> + <image>icon-folder.png</image> + <label>-</label> + <seperator>----------------------------------------------------------------------------------------------</seperator> + <text>6</text> + <spinPosX>715</spinPosX> + <spinPosY>525</spinPosY> + </control> + <control> + <id>0</id> + <type>image</type> + <posY>700</posY> + <height>89</height> + <width>1366</width> + <texture>Barback.png</texture> + <colorDiffuse>effffffff</colorDiffuse> + </control> + <control> + <id>0</id> + <type>image</type> + <posY>-20</posY> + <height>89</height> + <width>1366</width> + <texture>Barback.png</texture> + <colorDiffuse>effffffff</colorDiffuse> + </control> + <control> + <type>image</type> + <description>menu background image</description> + <id>0</id> + <posX>58</posX> + <posY>566</posY> + <width>1250</width> + <height>189</height> + <texture>-</texture> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + <control> + <type>image</type> + <description>background hover image</description> + <id>0</id> + <posX>120</posX> + <posY>590</posY> + <width>155</width> + <height>145</height> + <texture>hover_my music1.png</texture> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + <control> + <type>image</type> + <description>title image</description> + <id>0</id> + <posX>89</posX> + <posY>4</posY> + <width>220</width> + <height>55</height> + <texture>music_logo.png</texture> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + <control> + <description>Grid</description> + <type>image</type> + <id>0</id> + <posX>0</posX> + <posY>0</posY> + <width>1366</width> + <height>768</height> + <texture>grid.png</texture> + <visible>no</visible> + <animation effect="fade" time="250">WindowOpen</animation> + <animation effect="fade" time="500">WindowClose</animation> + </control> + <control> + <type>image</type> + <description>nowplaying background</description> + <id>0</id> + <posX>886</posX> + <posY>56</posY> + <width>400</width> + <height>484</height> + <texture>-</texture> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + <control> + <type>image</type> + <description>album art image</description> + <id>112</id> + <posX>908</posX> + <posY>100</posY> + <width>350</width> + <height>350</height> + <texture flipY="true" diffuse="Thumb_Mask.png">-</texture> + <centered>yes</centered> + <zoom>yes</zoom> + </control> + <control> + <type>fadelabel</type> + <description>track label</description> + <id>0</id> + <posX>382</posX> + <posY>592</posY> + <width>600</width> + <height>26</height> + <label>#Play.Current.Title</label> + <font>font16</font> + <textcolor>black</textcolor> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + <control> + <type>fadelabel</type> + <description>track label</description> + <id>0</id> + <posX>382</posX> + <posY>626</posY> + <width>600</width> + <height>26</height> + <label>#Play.Current.Artist</label> + <textcolor>ff969696</textcolor> + <font>font16</font> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + <control> + <type>fadelabel</type> + <description>track label</description> + <id>0</id> + <posX>382</posX> + <posY>662</posY> + <width>600</width> + <height>28</height> + <label>#Play.Current.Track</label> + <textcolor>ff969696</textcolor> + <font>font16</font> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + <control> + <type>fadelabel</type> + <description>album label</description> + <id>0</id> + <posX>911</posX> + <posY>450</posY> + <width>300</width> + <label>#Play.Current.Album</label> + <font>font13</font> + <align>left</align> + <!-- <textcolor>white</textcolor> --> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + <control> + <type>fadelabel</type> + <description>year label</description> + <id>0</id> + <posX>911</posX> + <posY>480</posY> + <width>150</width> + <label>#Play.Current.Year</label> + <font>font13</font> + <align>left</align> + <!-- <textcolor>white</textcolor> --> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + <control> + <type>image</type> + <id>117</id> + <posX>907</posX> + <posY>520</posY> + <width>350</width> + <texture flipY="true" diffuse="Thumb_Mask.png">osd_progress_background2.png</texture> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + <control> + <type>progress</type> + <description>track progress</description> + <id>118</id> + <posX>904</posX> + <posY>520</posY> + <width>360</width> + </control> + <control> + <type>label</type> + <description>track duration label</description> + <id>0</id> + <posX>1265</posX> + <posY>524</posY> + <label>#duration</label> + <font>font14</font> + <align>left</align> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>track progress label</description> + <id>0</id> + <posX>898</posX> + <posY>524</posY> + <label>#currentplaytime</label> + <font>font14</font> + <align>right</align> + <textcolor>80ffffff</textcolor> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + <control> + <type>label</type> + <description>up next label</description> + <id>20</id> + <posX>1026</posX> + <posY>589</posY> + <label>4541</label> + <font>font14</font> + <align>right</align> + <textcolor>90010101</textcolor> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + <control> + <type>fadelabel</type> + <description>next track label</description> + <id>121</id> + <posX>1050</posX> + <posY>589</posY> + <width>300</width> + <font>font14</font> + <label>#Play.Next.Title</label> + <textcolor>90010101</textcolor> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + <control> + <type>fadelabel</type> + <description>next artist label</description> + <id>123</id> + <posX>1050</posX> + <posY>616</posY> + <width>300</width> + <label>#Play.Next.Artist</label> + <textcolor>ff969696</textcolor> + <animation effect="fade" time="150">WindowOpen</animation> + </control> + + + <control> + <type>label</type> + <description>line 0</description> + <id>400</id> + <posX>112</posX> + <posY>120</posY> + <colordiffuse>80ffffff</colordiffuse> + <label>line 0</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + <disabledcolor>ffffffff</disabledcolor> + </control> + <control> + <type>label</type> + <description>line 0</description> + <id>500</id> + <posX>112</posX> + <posY>120</posY> + <label>line 0</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + <disabledcolor>ffffffff</disabledcolor> + </control> + <control> + <type>label</type> + <description>line 1</description> + <id>401</id> + <posX>112</posX> + <posY>152</posY> + <label>line 1</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 1</description> + <id>501</id> + <posX>112</posX> + <posY>152</posY> + <label>line 1</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 2</description> + <id>402</id> + <posX>112</posX> + <posY>184</posY> + <label>line 2</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 2</description> + <id>502</id> + <posX>112</posX> + <posY>184</posY> + <label>line 2</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 3</description> + <id>403</id> + <posX>112</posX> + <posY>216</posY> + <label>line 3</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 3</description> + <id>503</id> + <posX>112</posX> + <posY>216</posY> + <label>line 3</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 4</description> + <id>404</id> + <posX>112</posX> + <posY>248</posY> + <label>line 4</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 4</description> + <id>504</id> + <posX>112</posX> + <posY>248</posY> + <label>line 4</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 5</description> + <id>405</id> + <posX>112</posX> + <posY>280</posY> + <label>line 5</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 5</description> + <id>505</id> + <posX>112</posX> + <posY>280</posY> + <label>line 5</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 6</description> + <id>406</id> + <posX>112</posX> + <posY>312</posY> + <label>line 6</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 6</description> + <id>506</id> + <posX>112</posX> + <posY>312</posY> + <label>line 6</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 7</description> + <id>407</id> + <posX>112</posX> + <posY>344</posY> + <label>line 7</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 7</description> + <id>507</id> + <posX>112</posX> + <posY>344</posY> + <label>line 7</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 8</description> + <id>408</id> + <posX>112</posX> + <posY>376</posY> + <label>line 8</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 8</description> + <id>508</id> + <posX>112</posX> + <posY>376</posY> + <label>line 8</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 9</description> + <id>409</id> + <posX>112</posX> + <posY>408</posY> + <label>line 9</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 9</description> + <id>509</id> + <posX>112</posX> + <posY>408</posY> + <label>line 9</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 10</description> + <id>410</id> + <posX>112</posX> + <posY>440</posY> + <label>line 10</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 10</description> + <id>510</id> + <posX>112</posX> + <posY>440</posY> + <label>line 10</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 11</description> + <id>411</id> + <posX>112</posX> + <posY>472</posY> + <label>line 11</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 11</description> + <id>511</id> + <posX>112</posX> + <posY>472</posY> + <label>line 11</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 12</description> + <id>412</id> + <posX>112</posX> + <posY>504</posY> + <label>line 12</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 12</description> + <id>512</id> + <posX>112</posX> + <posY>504</posY> + <label>line 12</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + + + <control> + <type>label</type> + <description>line 0</description> + <id>200</id> + <posX>112</posX> + <posY>120</posY> + <colordiffuse>80ffffff</colordiffuse> + <label>line 0</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + <disabledcolor>ffffffff</disabledcolor> + </control> + <control> + <type>label</type> + <description>line 0</description> + <id>300</id> + <posX>112</posX> + <posY>120</posY> + <label>line 0</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + <disabledcolor>ffffffff</disabledcolor> + </control> + <control> + <type>label</type> + <description>line 1</description> + <id>201</id> + <posX>112</posX> + <posY>152</posY> + <label>line 1</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 1</description> + <id>301</id> + <posX>112</posX> + <posY>152</posY> + <label>line 1</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 2</description> + <id>202</id> + <posX>112</posX> + <posY>184</posY> + <label>line 2</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 2</description> + <id>302</id> + <posX>112</posX> + <posY>184</posY> + <label>line 2</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 3</description> + <id>203</id> + <posX>112</posX> + <posY>216</posY> + <label>line 3</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 3</description> + <id>303</id> + <posX>112</posX> + <posY>216</posY> + <label>line 3</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 4</description> + <id>204</id> + <posX>112</posX> + <posY>248</posY> + <label>line 4</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 4</description> + <id>304</id> + <posX>112</posX> + <posY>248</posY> + <label>line 4</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 5</description> + <id>205</id> + <posX>112</posX> + <posY>280</posY> + <label>line 5</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 5</description> + <id>305</id> + <posX>112</posX> + <posY>280</posY> + <label>line 5</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 6</description> + <id>206</id> + <posX>112</posX> + <posY>312</posY> + <label>line 6</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 6</description> + <id>306</id> + <posX>112</posX> + <posY>312</posY> + <label>line 6</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 7</description> + <id>207</id> + <posX>112</posX> + <posY>344</posY> + <label>line 7</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 7</description> + <id>307</id> + <posX>112</posX> + <posY>344</posY> + <label>line 7</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 8</description> + <id>208</id> + <posX>112</posX> + <posY>376</posY> + <label>line 8</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 8</description> + <id>308</id> + <posX>112</posX> + <posY>376</posY> + <label>line 8</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 9</description> + <id>209</id> + <posX>112</posX> + <posY>408</posY> + <label>line 9</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 9</description> + <id>309</id> + <posX>112</posX> + <posY>408</posY> + <label>line 9</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 10</description> + <id>210</id> + <posX>112</posX> + <posY>440</posY> + <label>line 10</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 10</description> + <id>310</id> + <posX>112</posX> + <posY>440</posY> + <label>line 10</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 11</description> + <id>211</id> + <posX>112</posX> + <posY>472</posY> + <label>line 11</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 11</description> + <id>311</id> + <posX>112</posX> + <posY>472</posY> + <label>line 11</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 12</description> + <id>212</id> + <posX>112</posX> + <posY>504</posY> + <label>line 12</label> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>line 12</description> + <id>312</id> + <posX>112</posX> + <posY>504</posY> + <label>line 12</label> + <width>1160</width> + <textcolor>ffffffff</textcolor> + </control> + + + <control> + <type>label</type> + <description>time 0</description> + <id>600</id> + <posX>16</posX> + <posY>124</posY> + <label>(xx:xx:xx)</label> + <font>font10</font> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>time 1</description> + <id>601</id> + <posX>16</posX> + <posY>156</posY> + <label>(xx:xx:xx)</label> + <font>font10</font> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>time 2</description> + <id>602</id> + <posX>16</posX> + <posY>188</posY> + <label>(xx:xx:xx)</label> + <font>font10</font> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>time 3</description> + <id>603</id> + <posX>16</posX> + <posY>220</posY> + <label>(xx:xx:xx)</label> + <font>font10</font> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>time 4</description> + <id>604</id> + <posX>16</posX> + <posY>252</posY> + <label>(xx:xx:xx)</label> + <font>font10</font> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>time 5</description> + <id>605</id> + <posX>16</posX> + <posY>284</posY> + <label>(xx:xx:xx)</label> + <font>font10</font> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>time 6</description> + <id>606</id> + <posX>16</posX> + <posY>316</posY> + <label>(xx:xx:xx)</label> + <font>font10</font> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>time 7</description> + <id>607</id> + <posX>16</posX> + <posY>348</posY> + <label>(xx:xx:xx)</label> + <font>font10</font> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>time 8</description> + <id>608</id> + <posX>16</posX> + <posY>380</posY> + <label>(xx:xx:xx)</label> + <font>font10</font> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>time 9</description> + <id>609</id> + <posX>16</posX> + <posY>412</posY> + <label>(xx:xx:xx)</label> + <font>font10</font> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>time 10</description> + <id>610</id> + <posX>16</posX> + <posY>444</posY> + <label>(xx:xx:xx)</label> + <font>font10</font> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>time 11</description> + <id>611</id> + <posX>16</posX> + <posY>476</posY> + <label>(xx:xx:xx)</label> + <font>font10</font> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + <control> + <type>label</type> + <description>time 12</description> + <id>612</id> + <posX>16</posX> + <posY>508</posY> + <label>(xx:xx:xx)</label> + <font>font10</font> + <width>1160</width> + <textcolor>80ffffff</textcolor> + </control> + </controls> +</window> Modified: trunk/plugins/MyLyrics/change log.txt =================================================================== --- trunk/plugins/MyLyrics/change log.txt 2009-01-14 05:06:20 UTC (rev 2507) +++ trunk/plugins/MyLyrics/change log.txt 2009-01-14 15:39:02 UTC (rev 2508) @@ -1,7 +1,55 @@ -Changes since MyLyrics 1.1 RC -- Add: A find & replace feature has been added (thanks to Jupek) -(- Fix: Browse-search and batch-search now also checks the music tag for a lyric before an online search takes place) -(- Fix: LRC's are never overwritten with a plain lyric in neither music tags nor the lyrics database) -- Fix: LRC and normal lyrics are always properly saved to music tag (if option set in configuration) -- Fix: Show previous window functionality works -- Fix: All options (also the one for the hit ratio slidebar) is properly saved +Release notes to MyLyrics 1.21 + +MyLyrics is a windows plugin for MediaPortal which enables the display of lyrics for the currently played music file inside MediaPortal. +The plugin is able show LRC and plain lyrics, and uses both musictags and online searches to find lyrics. + +Basic features: +* Dynamic search for the lyrics to currently playing music file. +* Browse your music database and select the songs for which you want to find lyrics. +* Batch search for lyrics matching songs in music database. +* Search single title and select amoung lyrics from various lyrics sites. +* Add/delete/edit lyrics and save changes in lyrics databases. +* Import/export lyrics to/from music tags. +* Include lyrics from the Internet, musictags, text- and lrc-files. +* Create a LRC from a basic lyric on the fly. + +Keys: +- W (or '#' button on remote): Toggle between basic and wide screen. +- E (or '*' button on remote): Toggle between lyric and editor screen. +- Enter (or 'OK' on remote): Tag line on LRC editor screen. + +Screens: +- Lyrics basic: shows lyric with coverart on the right (default lyrics screen). +- Lyrics wide: shows wider lyric area and no coverart. +- LRC basic: shows lrc file and coverart on the right (default lrc screen). +- LRC wide: shows wider lrc area and no coverart (the plugin autoselects this if the lrc contains one or more long lines). +- LRC editor: enables the creation of lrc lyric from a plain lyric. + +Compatible with MediaPortal 1.0.0.0 final. + +Installation: +Simple copy the content of the zip-file into your MP library (typical C:\Program Files\Team MediaPortal\MediaPortal). + +Noteworthy changes since version 1.10: +* Add: Support for the lyric site LyrDB. +* Add: On the Lyrics database tab you can choose to see only the LRCs of your lyrics database. +* Fix: Vertical black lines caused by use of "\r\n" in Label controls is eliminated by using "\n" instead. +* Fix: Show previous screen issue and back trace issues with MP fixed. +* Fix: Blue3 and Blue3wide skins optimized. + +Skin Support: +All supported skins (or at least the ones I'm aware of) are listed here: MyLyrics skin library + +For skinners: +Due to a change in the MP Gui engine in March 2008 all label controls need a <width> tag to be shown. +That means all controls of the type "label" must have the tag <width>x</width> where x is the width in pixels. +920 pixels is good value for most 16:9 skins. + +In short, the following controls must be updated with the tag <width>920</width>: +id: 200-212 +id: 300-312 +id: 400-412 +id: 500-512 +id: 600-612 + +The change is needed for the LRC and LRC editor modes to work. \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |