The branch, eden has been updated
       via  73b5b277575827e2bf63794c2961953c440851ec (commit)
      from  7cc50b509659dc695c0af098ef04f9ab9d609e4f (commit)

- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=73b5b277575827e2bf63794c2961953c440851ec

commit 73b5b277575827e2bf63794c2961953c440851ec
Author: taxigps <[email protected]>
Date:   Sun Nov 18 11:26:06 2012 +0800

    [script.lrclyrics] -v1.4.5

diff --git a/script.lrclyrics/addon.xml b/script.lrclyrics/addon.xml
index 950f7d2..ecc79ba 100644
--- a/script.lrclyrics/addon.xml
+++ b/script.lrclyrics/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="script.lrclyrics"
        name="LRC Lyrics"
-       version="1.4.4"
+       version="1.4.5"
        provider-name="Taxigps">
   <requires>
     <import addon="xbmc.python" version="1.0"/>
diff --git a/script.lrclyrics/changelog.txt b/script.lrclyrics/changelog.txt
index b7677bb..1e4f4f8 100644
--- a/script.lrclyrics/changelog.txt
+++ b/script.lrclyrics/changelog.txt
@@ -1,4 +1,8 @@
-[B]1.4.4 (2012.04.10)[/B]
+[B]1.4.5 (2012.11.18)[/B]
+added: embed lyrics support for Lyrics3/Lyrics3V2/SYLT/TXXX(Lyrics) 
+added: use chardet to detect lyrics encoding 
+
+[B]1.4.4 (2012.04.10)[/B]
 fixed: encoding error when login as non english user name under windows
 
 [B]1.4.3 (2012.01.25)[/B]
diff --git a/script.lrclyrics/resources/language/Chinese (Simple)/strings.xml 
b/script.lrclyrics/resources/language/Chinese (Simple)/strings.xml
index f3d788d..901bea0 100644
--- a/script.lrclyrics/resources/language/Chinese (Simple)/strings.xml  
+++ b/script.lrclyrics/resources/language/Chinese (Simple)/strings.xml  
@@ -4,6 +4,7 @@
     <string id="0">XBMC歌词</string>
     <string id="30000">文件</string>
     <string id="30001">歌词未找到!</string>
+    <string id="30002">内嵌</string>
 
     <!-- Settings labels -->
     <string id="30100">刮削器</string>
diff --git a/script.lrclyrics/resources/language/English/strings.xml 
b/script.lrclyrics/resources/language/English/strings.xml
index 24e9144..2611fca 100644
--- a/script.lrclyrics/resources/language/English/strings.xml
+++ b/script.lrclyrics/resources/language/English/strings.xml
@@ -4,6 +4,7 @@
     <string id="0">XBMC Lyrics</string>
     <string id="30000">File</string>
     <string id="30001">No lyrics found!</string>
+    <string id="30002">Embed</string>
 
     <!-- Settings labels -->
     <string id="30100">Scraper</string>
diff --git a/script.lrclyrics/resources/lib/gui.py 
b/script.lrclyrics/resources/lib/gui.py
index 12a02dc..43a03f8 100644
--- a/script.lrclyrics/resources/lib/gui.py
+++ b/script.lrclyrics/resources/lib/gui.py
@@ -6,6 +6,7 @@ import xbmc
 import xbmcgui
 from threading import Timer
 from utilities import *
+from embedlrc import *
 
 __scriptname__ = sys.modules[ "__main__" ].__scriptname__
 __version__    = sys.modules[ "__main__" ].__version__
@@ -84,58 +85,52 @@ class GUI( xbmcgui.WindowXMLDialog ):
         self.getControl( 200 ).setLabel( "" )
         self.menu_items = []
 
-        lyrics = self.get_lyrics_from_file2()
-        if ( lyrics == "" ):
-            lyrics = self.get_lyrics_from_file( artist, song )
-        if ( lyrics != "" ):
+        lyrics =  
getEmbedLyrics(xbmc.Player().getPlayingFile().decode("utf-8"))
+        if ( lyrics ):
             self.show_lyrics( lyrics )
             self.getControl( 200 ).setEnabled( False )
-            self.getControl( 200 ).setLabel( __language__( 30000 ) )
+            self.getControl( 200 ).setLabel( __language__( 30002 ) )
         else:
-            self.getControl( 200 ).setEnabled( True )
-            self.getControl( 200 ).setLabel( self.scraper_title )
-            lyrics = self.LyricsScraper.get_lyrics( artist, song )
+            lyrics = self.get_lyrics_from_file2()
+            if ( lyrics == "" ):
+                lyrics = self.get_lyrics_from_file( artist, song )
+            if ( lyrics != "" ):
+                self.show_lyrics( lyrics )
+                self.getControl( 200 ).setEnabled( False )
+                self.getControl( 200 ).setLabel( __language__( 30000 ) )
+            else:
+                self.getControl( 200 ).setEnabled( True )
+                self.getControl( 200 ).setLabel( self.scraper_title )
+                lyrics = self.LyricsScraper.get_lyrics( artist, song )
 
-            if ( isinstance( lyrics, basestring ) ):
-                self.show_lyrics( lyrics, True )
-            elif ( isinstance( lyrics, list ) and lyrics ):
-                self.show_choices( lyrics )
+                if ( isinstance( lyrics, basestring ) ):
+                    self.show_lyrics( lyrics, True )
+                elif ( isinstance( lyrics, list ) and lyrics ):
+                    self.show_choices( lyrics )
 
     def get_lyrics_from_list( self, item ):
         lyrics = self.LyricsScraper.get_lyrics_from_list( self.menu_items[ 
item ] )
         self.show_lyrics( lyrics, True )
 
     def get_lyrics_from_file( self, artist, song ):
-        try:
-            xbmc.sleep( 60 )
-            if ( self.settings[ "artist_folder" ] ):
-                self.song_path = unicode( os.path.join( self.settings[ 
"lyrics_path" ], artist.replace( "\\", "_" ).replace( "/", "_" ), song.replace( 
"\\", "_" ).replace( "/", "_" ) + ".lrc" ), "utf-8" )
-            else:
-                self.song_path = unicode( os.path.join( self.settings[ 
"lyrics_path" ], artist.replace( "\\", "_" ).replace( "/", "_" ) + " - " + 
song.replace( "\\", "_" ).replace( "/", "_" ) + ".lrc" ), "utf-8" )
-            lyrics_file = open( self.song_path, "r" )
-            lyrics = lyrics_file.read()
-            lyrics_file.close()
-            return lyrics
-        except IOError:
-            return ""
+        xbmc.sleep( 60 )
+        if ( self.settings[ "artist_folder" ] ):
+            self.song_path = unicode( os.path.join( self.settings[ 
"lyrics_path" ], artist.replace( "\\", "_" ).replace( "/", "_" ), song.replace( 
"\\", "_" ).replace( "/", "_" ) + ".lrc" ), "utf-8" )
+        else:
+            self.song_path = unicode( os.path.join( self.settings[ 
"lyrics_path" ], artist.replace( "\\", "_" ).replace( "/", "_" ) + " - " + 
song.replace( "\\", "_" ).replace( "/", "_" ) + ".lrc" ), "utf-8" )
+        return get_textfile( self.song_path )
 
     def get_lyrics_from_file2( self ):
-        try:
-            xbmc.sleep( 60 )
-            path = xbmc.Player().getPlayingFile()
-            dirname = os.path.dirname(path)
-            basename = os.path.basename(path)
-            filename = basename.rsplit( ".", 1 )[ 0 ]
-            if ( self.settings[ "subfolder" ] ):
-                self.song_path = unicode( os.path.join( dirname, 
self.settings[ "subfolder_name" ], filename + ".lrc" ), "utf-8" )
-            else:
-                self.song_path = unicode( os.path.join( dirname, filename + 
".lrc" ), "utf-8" )
-            lyrics_file = open( self.song_path, "r" )
-            lyrics = lyrics_file.read()
-            lyrics_file.close()
-            return lyrics
-        except IOError:
-            return ""
+        xbmc.sleep( 60 )
+        path = xbmc.Player().getPlayingFile()
+        dirname = os.path.dirname(path)
+        basename = os.path.basename(path)
+        filename = basename.rsplit( ".", 1 )[ 0 ]
+        if ( self.settings[ "subfolder" ] ):
+            self.song_path = unicode( os.path.join( dirname, self.settings[ 
"subfolder_name" ], filename + ".lrc" ), "utf-8" )
+        else:
+            self.song_path = unicode( os.path.join( dirname, filename + ".lrc" 
), "utf-8" )
+        return get_textfile( self.song_path )
 
     def save_lyrics_to_file( self, lyrics ):
         try:
diff --git a/script.lrclyrics/resources/lib/utilities.py 
b/script.lrclyrics/resources/lib/utilities.py
index 2dbe1c4..cf237c8 100644
--- a/script.lrclyrics/resources/lib/utilities.py
+++ b/script.lrclyrics/resources/lib/utilities.py
@@ -1,8 +1,8 @@
 import sys
 import os
 import re
-import xbmc
-import xbmcgui
+import chardet
+import xbmc, xbmcgui
 
 DEBUG_MODE = 4
 
@@ -100,3 +100,19 @@ def get_settings():
     settings[ "subfolder" ] = __settings__.getSetting( "subfolder" ) == "true"
     settings[ "subfolder_name" ] = __settings__.getSetting( "subfolder_name" )
     return settings
+
+def get_textfile(filepath):
+    try:
+        file = open( filepath, "rb" )
+        data = file.read()
+        file.close()
+        # Detect text encoding
+        enc = chardet.detect(data)
+        if (enc['encoding'] == 'utf-8'):
+            return data
+        else:
+            return unicode( data, enc['encoding'] ).encode( "utf-8")
+    except UnicodeDecodeError:
+        return data
+    except IOError:
+        return ""
diff --git a/script.lrclyrics/resources/settings.xml 
b/script.lrclyrics/resources/settings.xml
index 63ffb50..5cc3ff7 100644
--- a/script.lrclyrics/resources/settings.xml
+++ b/script.lrclyrics/resources/settings.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <settings>   
-    <setting id="scraper" type="labelenum" label="30100" default="ttplayer" 
values="ttplayer|lyrdb|embedded" />
+    <setting id="scraper" type="labelenum" label="30100" default="ttplayer" 
values="ttplayer|lyrdb" />
     <setting type="sep" />
     <setting id="save_lyrics" type="bool" label="30101" default="true"/>
     <setting id="lyrics_path" type="folder" source="files" label="30102" 
default="" />

-----------------------------------------------------------------------

Summary of changes:
 script.lrclyrics/addon.xml                         |    2 +-
 script.lrclyrics/changelog.txt                     |    6 +-
 .../language/Chinese (Simple)/strings.xml          |    1 +
 .../resources/language/English/strings.xml         |    1 +
 .../resources}/lib/chardet/__init__.py             |    0
 .../resources}/lib/chardet/big5freq.py             |    0
 .../resources}/lib/chardet/big5prober.py           |    0
 .../resources}/lib/chardet/chardistribution.py     |    0
 .../resources}/lib/chardet/charsetgroupprober.py   |    0
 .../resources}/lib/chardet/charsetprober.py        |    0
 .../resources}/lib/chardet/codingstatemachine.py   |    0
 .../resources}/lib/chardet/constants.py            |    0
 .../resources}/lib/chardet/escprober.py            |    0
 .../resources}/lib/chardet/escsm.py                |    0
 .../resources}/lib/chardet/eucjpprober.py          |    0
 .../resources}/lib/chardet/euckrfreq.py            |    0
 .../resources}/lib/chardet/euckrprober.py          |    0
 .../resources}/lib/chardet/euctwfreq.py            |    0
 .../resources}/lib/chardet/euctwprober.py          |    0
 .../resources}/lib/chardet/gb2312freq.py           |    0
 .../resources}/lib/chardet/gb2312prober.py         |    0
 .../resources}/lib/chardet/hebrewprober.py         |    0
 .../resources}/lib/chardet/jisfreq.py              |    0
 .../resources}/lib/chardet/jpcntx.py               |    0
 .../resources}/lib/chardet/langbulgarianmodel.py   |    0
 .../resources}/lib/chardet/langcyrillicmodel.py    |    0
 .../resources}/lib/chardet/langgreekmodel.py       |    0
 .../resources}/lib/chardet/langhebrewmodel.py      |    0
 .../resources}/lib/chardet/langhungarianmodel.py   |    0
 .../resources}/lib/chardet/langthaimodel.py        |    0
 .../resources}/lib/chardet/latin1prober.py         |    0
 .../resources}/lib/chardet/mbcharsetprober.py      |    0
 .../resources}/lib/chardet/mbcsgroupprober.py      |    0
 .../resources}/lib/chardet/mbcssm.py               |    0
 .../resources}/lib/chardet/sbcharsetprober.py      |    0
 .../resources}/lib/chardet/sbcsgroupprober.py      |    0
 .../resources}/lib/chardet/sjisprober.py           |    0
 .../resources}/lib/chardet/universaldetector.py    |    0
 .../resources}/lib/chardet/utf8prober.py           |    0
 script.lrclyrics/resources/lib/embedlrc.py         |  112 ++++
 script.lrclyrics/resources/lib/gui.py              |   75 ++--
 .../resources/lib/scrapers/embedded/__init__.py    |    1 -
 .../lib/scrapers/embedded/lyricsScraper.py         |   65 --
 script.lrclyrics/resources/lib/tagger/__init__.py  |   49 ++
 script.lrclyrics/resources/lib/tagger/constants.py |  277 +++++++++
 script.lrclyrics/resources/lib/tagger/debug.py     |   16 +
 script.lrclyrics/resources/lib/tagger/encoding.py  |   26 +
 .../resources/lib/tagger/exceptions.py             |   36 ++
 script.lrclyrics/resources/lib/tagger/id3v1.py     |  207 +++++++
 script.lrclyrics/resources/lib/tagger/id3v2.py     |  467 +++++++++++++++
 .../resources/lib/tagger/id3v2frame.py             |  617 ++++++++++++++++++++
 script.lrclyrics/resources/lib/tagger/utility.py   |  116 ++++
 script.lrclyrics/resources/lib/utilities.py        |   20 +-
 script.lrclyrics/resources/settings.xml            |    2 +-
 54 files changed, 1985 insertions(+), 111 deletions(-)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/__init__.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/big5freq.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/big5prober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/chardistribution.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/charsetgroupprober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/charsetprober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/codingstatemachine.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/constants.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/escprober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/escsm.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/eucjpprober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/euckrfreq.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/euckrprober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/euctwfreq.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/euctwprober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/gb2312freq.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/gb2312prober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/hebrewprober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/jisfreq.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/jpcntx.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/langbulgarianmodel.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/langcyrillicmodel.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/langgreekmodel.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/langhebrewmodel.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/langhungarianmodel.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/langthaimodel.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/latin1prober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/mbcharsetprober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/mbcsgroupprober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/mbcssm.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/sbcharsetprober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/sbcsgroupprober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/sjisprober.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/universaldetector.py (100%)
 copy {script.module.chardet => 
script.lrclyrics/resources}/lib/chardet/utf8prober.py (100%)
 create mode 100644 script.lrclyrics/resources/lib/embedlrc.py
 delete mode 100644 script.lrclyrics/resources/lib/scrapers/embedded/__init__.py
 delete mode 100644 
script.lrclyrics/resources/lib/scrapers/embedded/lyricsScraper.py
 create mode 100644 script.lrclyrics/resources/lib/tagger/__init__.py
 create mode 100644 script.lrclyrics/resources/lib/tagger/constants.py
 create mode 100644 script.lrclyrics/resources/lib/tagger/debug.py
 create mode 100644 script.lrclyrics/resources/lib/tagger/encoding.py
 create mode 100644 script.lrclyrics/resources/lib/tagger/exceptions.py
 create mode 100644 script.lrclyrics/resources/lib/tagger/id3v1.py
 create mode 100644 script.lrclyrics/resources/lib/tagger/id3v2.py
 create mode 100644 script.lrclyrics/resources/lib/tagger/id3v2frame.py
 create mode 100644 script.lrclyrics/resources/lib/tagger/utility.py


hooks/post-receive
-- 
Scripts

------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to