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