From d78ddf35321c1eae3724617bd05a5e11f1b9394f Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Mon, 10 Aug 2009 09:52:52 +0200 Subject: [PATCH] Lyrics: fix and reenable LyricWiki also get rid of dependency on ZSI in process. --- nephilim/plugins/LyricWiki_client.py | 578 ----------------------------------- nephilim/plugins/Lyrics.py | 47 +-- 2 files changed, 29 insertions(+), 596 deletions(-) delete mode 100644 nephilim/plugins/LyricWiki_client.py diff --git a/nephilim/plugins/LyricWiki_client.py b/nephilim/plugins/LyricWiki_client.py deleted file mode 100644 index 76c24bb..0000000 --- a/nephilim/plugins/LyricWiki_client.py +++ /dev/null @@ -1,578 +0,0 @@ -################################################## -# file: LyricWiki_client.py -# -# client stubs generated by "ZSI.generate.wsdl2python.WriteServiceModule" -# /usr/bin/wsdl2py --complexType http://lyricwiki.org/server.php?wsdl -# -################################################## - -from LyricWiki_types import * -import urlparse, types -from ZSI.TCcompound import ComplexType, Struct -from ZSI import client -from ZSI.schema import GED, GTD -import ZSI -from ZSI.generate.pyclass import pyclass_type - -# Locator -class LyricWikiLocator: - LyricWikiPort_address = "http://lyricwiki.org/server.php" - def getLyricWikiPortAddress(self): - return LyricWikiLocator.LyricWikiPort_address - def getLyricWikiPort(self, url=None, **kw): - return LyricWikiBindingSOAP(url or LyricWikiLocator.LyricWikiPort_address, **kw) - -# Methods -class LyricWikiBindingSOAP: - def __init__(self, url, **kw): - kw.setdefault("readerclass", None) - kw.setdefault("writerclass", None) - # no resource properties - self.binding = client.Binding(url=url, **kw) - # no ws-addressing - - # op: checkSongExists - def checkSongExists(self, request, **kw): - if isinstance(request, checkSongExistsRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#checkSongExists", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=checkSongExistsResponse.typecode.ofwhat, pyclass=checkSongExistsResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - - # op: searchArtists - def searchArtists(self, request, **kw): - if isinstance(request, searchArtistsRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#searchArtists", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=searchArtistsResponse.typecode.ofwhat, pyclass=searchArtistsResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - - # op: searchAlbums - def searchAlbums(self, request, **kw): - if isinstance(request, searchAlbumsRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#searchAlbums", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=searchAlbumsResponse.typecode.ofwhat, pyclass=searchAlbumsResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - - # op: searchSongs - def searchSongs(self, request, **kw): - if isinstance(request, searchSongsRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#searchSongs", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=searchSongsResponse.typecode.ofwhat, pyclass=searchSongsResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - - # op: getSOTD - def getSOTD(self, request, **kw): - if isinstance(request, getSOTDRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#getSOTD", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=getSOTDResponse.typecode.ofwhat, pyclass=getSOTDResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - - # op: getSong - def getSong(self, request, **kw): - if isinstance(request, getSongRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#getSong", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=getSongResponse.typecode.ofwhat, pyclass=getSongResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - - # op: getSongResult - def getSongResult(self, request, **kw): - if isinstance(request, getSongResultRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#getSongResult", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=getSongResultResponse.typecode.ofwhat, pyclass=getSongResultResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - - # op: getArtist - def getArtist(self, request, **kw): - if isinstance(request, getArtistRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#getArtist", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=getArtistResponse.typecode.ofwhat, pyclass=getArtistResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - - # op: getAlbum - def getAlbum(self, request, **kw): - if isinstance(request, getAlbumRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#getAlbum", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=getAlbumResponse.typecode.ofwhat, pyclass=getAlbumResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - - # op: getHometown - def getHometown(self, request, **kw): - if isinstance(request, getHometownRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#getHometown", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=getHometownResponse.typecode.ofwhat, pyclass=getHometownResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - - # op: postArtist - def postArtist(self, request, **kw): - if isinstance(request, postArtistRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#postArtist", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=postArtistResponse.typecode.ofwhat, pyclass=postArtistResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - - # op: postAlbum - def postAlbum(self, request, **kw): - if isinstance(request, postAlbumRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#postAlbum", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=postAlbumResponse.typecode.ofwhat, pyclass=postAlbumResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - - # op: postSong - def postSong(self, request, **kw): - if isinstance(request, postSongRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#postSong", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=postSongResponse.typecode.ofwhat, pyclass=postSongResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - - # op: postSong_flags - def postSong_flags(self, request, **kw): - if isinstance(request, postSong_flagsRequest) is False: - raise TypeError, "%s incorrect request type" % (request.__class__) - # no input wsaction - self.binding.Send(None, None, request, soapaction="urn:LyricWiki#postSong_flags", encodingStyle="http://schemas.xmlsoap.org/soap/encoding/", **kw) - # no output wsaction - typecode = Struct(pname=None, ofwhat=postSong_flagsResponse.typecode.ofwhat, pyclass=postSong_flagsResponse.typecode.pyclass) - response = self.binding.Receive(typecode) - return response - -_checkSongExistsRequestTypecode = Struct(pname=("urn:LyricWiki","checkSongExists"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="song", aname="_song", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class checkSongExistsRequest: - typecode = _checkSongExistsRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - song -- part song - """ - self._artist = kw.get("artist") - self._song = kw.get("song") -checkSongExistsRequest.typecode.pyclass = checkSongExistsRequest - -_checkSongExistsResponseTypecode = Struct(pname=("urn:LyricWiki","checkSongExistsResponse"), ofwhat=[ZSI.TC.Boolean(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class checkSongExistsResponse: - typecode = _checkSongExistsResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - return -- part return - """ - self._return = kw.get("return") -checkSongExistsResponse.typecode.pyclass = checkSongExistsResponse - -_searchArtistsRequestTypecode = Struct(pname=("urn:LyricWiki","searchArtists"), ofwhat=[ZSI.TC.String(pname="searchString", aname="_searchString", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class searchArtistsRequest: - typecode = _searchArtistsRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - searchString -- part searchString - """ - self._searchString = kw.get("searchString") -searchArtistsRequest.typecode.pyclass = searchArtistsRequest - -_searchArtistsResponseTypecode = Struct(pname=("urn:LyricWiki","searchArtistsResponse"), ofwhat=[ns0.ArrayOfstring_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class searchArtistsResponse: - typecode = _searchArtistsResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - return -- part return - """ - self._return = kw.get("return") -searchArtistsResponse.typecode.pyclass = searchArtistsResponse - -_searchAlbumsRequestTypecode = Struct(pname=("urn:LyricWiki","searchAlbums"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="album", aname="_album", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="year", aname="_year", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class searchAlbumsRequest: - typecode = _searchAlbumsRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - album -- part album - year -- part year - """ - self._artist = kw.get("artist") - self._album = kw.get("album") - self._year = kw.get("year") -searchAlbumsRequest.typecode.pyclass = searchAlbumsRequest - -_searchAlbumsResponseTypecode = Struct(pname=("urn:LyricWiki","searchAlbumsResponse"), ofwhat=[ns0.AlbumResultArray_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class searchAlbumsResponse: - typecode = _searchAlbumsResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - return -- part return - """ - self._return = kw.get("return") -searchAlbumsResponse.typecode.pyclass = searchAlbumsResponse - -_searchSongsRequestTypecode = Struct(pname=("urn:LyricWiki","searchSongs"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="song", aname="_song", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class searchSongsRequest: - typecode = _searchSongsRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - song -- part song - """ - self._artist = kw.get("artist") - self._song = kw.get("song") -searchSongsRequest.typecode.pyclass = searchSongsRequest - -_searchSongsResponseTypecode = Struct(pname=("urn:LyricWiki","searchSongsResponse"), ofwhat=[ns0.SongResult_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class searchSongsResponse: - typecode = _searchSongsResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - return -- part return - """ - self._return = kw.get("return") -searchSongsResponse.typecode.pyclass = searchSongsResponse - -_getSOTDRequestTypecode = Struct(pname=("urn:LyricWiki","getSOTD"), ofwhat=[], pyclass=None, encoded="urn:LyricWiki") -class getSOTDRequest: - typecode = _getSOTDRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - """ -getSOTDRequest.typecode.pyclass = getSOTDRequest - -_getSOTDResponseTypecode = Struct(pname=("urn:LyricWiki","getSOTDResponse"), ofwhat=[ns0.SOTDResult_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class getSOTDResponse: - typecode = _getSOTDResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - return -- part return - """ - self._return = kw.get("return") -getSOTDResponse.typecode.pyclass = getSOTDResponse - -_getSongRequestTypecode = Struct(pname=("urn:LyricWiki","getSong"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="song", aname="_song", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class getSongRequest: - typecode = _getSongRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - song -- part song - """ - self._artist = kw.get("artist") - self._song = kw.get("song") -getSongRequest.typecode.pyclass = getSongRequest - -_getSongResponseTypecode = Struct(pname=("urn:LyricWiki","getSongResponse"), ofwhat=[ns0.LyricsResult_Def(pname="return", aname="_return", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class getSongResponse: - typecode = _getSongResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - return -- part return - """ - self._return = kw.get("return") -getSongResponse.typecode.pyclass = getSongResponse - -_getSongResultRequestTypecode = Struct(pname=("urn:LyricWiki","getSongResult"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="song", aname="_song", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class getSongResultRequest: - typecode = _getSongResultRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - song -- part song - """ - self._artist = kw.get("artist") - self._song = kw.get("song") -getSongResultRequest.typecode.pyclass = getSongResultRequest - -_getSongResultResponseTypecode = Struct(pname=("urn:LyricWiki","getSongResultResponse"), ofwhat=[ns0.LyricsResult_Def(pname="songResult", aname="_songResult", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class getSongResultResponse: - typecode = _getSongResultResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - songResult -- part songResult - """ - self._songResult = kw.get("songResult") -getSongResultResponse.typecode.pyclass = getSongResultResponse - -_getArtistRequestTypecode = Struct(pname=("urn:LyricWiki","getArtist"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class getArtistRequest: - typecode = _getArtistRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - """ - self._artist = kw.get("artist") -getArtistRequest.typecode.pyclass = getArtistRequest - -_getArtistResponseTypecode = Struct(pname=("urn:LyricWiki","getArtistResponse"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.AlbumDataArray_Def(pname="albums", aname="_albums", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class getArtistResponse: - typecode = _getArtistResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - albums -- part albums - """ - self._artist = kw.get("artist") - self._albums = kw.get("albums") -getArtistResponse.typecode.pyclass = getArtistResponse - -_getAlbumRequestTypecode = Struct(pname=("urn:LyricWiki","getAlbum"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="album", aname="_album", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="year", aname="_year", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class getAlbumRequest: - typecode = _getAlbumRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - album -- part album - year -- part year - """ - self._artist = kw.get("artist") - self._album = kw.get("album") - self._year = kw.get("year") -getAlbumRequest.typecode.pyclass = getAlbumRequest - -_getAlbumResponseTypecode = Struct(pname=("urn:LyricWiki","getAlbumResponse"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="album", aname="_album", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="year", aname="_year", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="amazonLink", aname="_amazonLink", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.ArrayOfstring_Def(pname="songs", aname="_songs", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class getAlbumResponse: - typecode = _getAlbumResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - album -- part album - year -- part year - amazonLink -- part amazonLink - songs -- part songs - """ - self._artist = kw.get("artist") - self._album = kw.get("album") - self._year = kw.get("year") - self._amazonLink = kw.get("amazonLink") - self._songs = kw.get("songs") -getAlbumResponse.typecode.pyclass = getAlbumResponse - -_getHometownRequestTypecode = Struct(pname=("urn:LyricWiki","getHometown"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class getHometownRequest: - typecode = _getHometownRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - """ - self._artist = kw.get("artist") -getHometownRequest.typecode.pyclass = getHometownRequest - -_getHometownResponseTypecode = Struct(pname=("urn:LyricWiki","getHometownResponse"), ofwhat=[ZSI.TC.String(pname="country", aname="_country", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="state", aname="_state", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="hometown", aname="_hometown", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class getHometownResponse: - typecode = _getHometownResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - country -- part country - state -- part state - hometown -- part hometown - """ - self._country = kw.get("country") - self._state = kw.get("state") - self._hometown = kw.get("hometown") -getHometownResponse.typecode.pyclass = getHometownResponse - -_postArtistRequestTypecode = Struct(pname=("urn:LyricWiki","postArtist"), ofwhat=[ZSI.TC.Boolean(pname="overwriteIfExists", aname="_overwriteIfExists", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.AlbumDataArray_Def(pname="albums", aname="_albums", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class postArtistRequest: - typecode = _postArtistRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - overwriteIfExists -- part overwriteIfExists - artist -- part artist - albums -- part albums - """ - self._overwriteIfExists = kw.get("overwriteIfExists") - self._artist = kw.get("artist") - self._albums = kw.get("albums") -postArtistRequest.typecode.pyclass = postArtistRequest - -_postArtistResponseTypecode = Struct(pname=("urn:LyricWiki","postArtistResponse"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.Boolean(pname="dataUsed", aname="_dataUsed", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="message", aname="_message", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class postArtistResponse: - typecode = _postArtistResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - dataUsed -- part dataUsed - message -- part message - """ - self._artist = kw.get("artist") - self._dataUsed = kw.get("dataUsed") - self._message = kw.get("message") -postArtistResponse.typecode.pyclass = postArtistResponse - -_postAlbumRequestTypecode = Struct(pname=("urn:LyricWiki","postAlbum"), ofwhat=[ZSI.TC.Boolean(pname="overwriteIfExists", aname="_overwriteIfExists", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="album", aname="_album", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="year", aname="_year", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="asin", aname="_asin", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.ArrayOfstring_Def(pname="songs", aname="_songs", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class postAlbumRequest: - typecode = _postAlbumRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - overwriteIfExists -- part overwriteIfExists - artist -- part artist - album -- part album - year -- part year - asin -- part asin - songs -- part songs - """ - self._overwriteIfExists = kw.get("overwriteIfExists") - self._artist = kw.get("artist") - self._album = kw.get("album") - self._year = kw.get("year") - self._asin = kw.get("asin") - self._songs = kw.get("songs") -postAlbumRequest.typecode.pyclass = postAlbumRequest - -_postAlbumResponseTypecode = Struct(pname=("urn:LyricWiki","postAlbumResponse"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="album", aname="_album", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TCnumbers.Iint(pname="year", aname="_year", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.Boolean(pname="dataUsed", aname="_dataUsed", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="message", aname="_message", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class postAlbumResponse: - typecode = _postAlbumResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - album -- part album - year -- part year - dataUsed -- part dataUsed - message -- part message - """ - self._artist = kw.get("artist") - self._album = kw.get("album") - self._year = kw.get("year") - self._dataUsed = kw.get("dataUsed") - self._message = kw.get("message") -postAlbumResponse.typecode.pyclass = postAlbumResponse - -_postSongRequestTypecode = Struct(pname=("urn:LyricWiki","postSong"), ofwhat=[ZSI.TC.Boolean(pname="overwriteIfExists", aname="_overwriteIfExists", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="song", aname="_song", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="lyrics", aname="_lyrics", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.AlbumResultArray_Def(pname="onAlbums", aname="_onAlbums", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class postSongRequest: - typecode = _postSongRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - overwriteIfExists -- part overwriteIfExists - artist -- part artist - song -- part song - lyrics -- part lyrics - onAlbums -- part onAlbums - """ - self._overwriteIfExists = kw.get("overwriteIfExists") - self._artist = kw.get("artist") - self._song = kw.get("song") - self._lyrics = kw.get("lyrics") - self._onAlbums = kw.get("onAlbums") -postSongRequest.typecode.pyclass = postSongRequest - -_postSongResponseTypecode = Struct(pname=("urn:LyricWiki","postSongResponse"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="song", aname="_song", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.Boolean(pname="dataUsed", aname="_dataUsed", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="message", aname="_message", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class postSongResponse: - typecode = _postSongResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - song -- part song - dataUsed -- part dataUsed - message -- part message - """ - self._artist = kw.get("artist") - self._song = kw.get("song") - self._dataUsed = kw.get("dataUsed") - self._message = kw.get("message") -postSongResponse.typecode.pyclass = postSongResponse - -_postSong_flagsRequestTypecode = Struct(pname=("urn:LyricWiki","postSong_flags"), ofwhat=[ZSI.TC.Boolean(pname="overwriteIfExists", aname="_overwriteIfExists", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="song", aname="_song", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="lyrics", aname="_lyrics", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ns0.AlbumResultArray_Def(pname="onAlbums", aname="_onAlbums", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="flags", aname="_flags", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class postSong_flagsRequest: - typecode = _postSong_flagsRequestTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - overwriteIfExists -- part overwriteIfExists - artist -- part artist - song -- part song - lyrics -- part lyrics - onAlbums -- part onAlbums - flags -- part flags - """ - self._overwriteIfExists = kw.get("overwriteIfExists") - self._artist = kw.get("artist") - self._song = kw.get("song") - self._lyrics = kw.get("lyrics") - self._onAlbums = kw.get("onAlbums") - self._flags = kw.get("flags") -postSong_flagsRequest.typecode.pyclass = postSong_flagsRequest - -_postSong_flagsResponseTypecode = Struct(pname=("urn:LyricWiki","postSong_flagsResponse"), ofwhat=[ZSI.TC.String(pname="artist", aname="_artist", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="song", aname="_song", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.Boolean(pname="dataUsed", aname="_dataUsed", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True), ZSI.TC.String(pname="message", aname="_message", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="urn:LyricWiki") -class postSong_flagsResponse: - typecode = _postSong_flagsResponseTypecode - __metaclass__ = pyclass_type - def __init__(self, **kw): - """Keyword parameters: - artist -- part artist - song -- part song - dataUsed -- part dataUsed - message -- part message - """ - self._artist = kw.get("artist") - self._song = kw.get("song") - self._dataUsed = kw.get("dataUsed") - self._message = kw.get("message") -postSong_flagsResponse.typecode.pyclass = postSong_flagsResponse diff --git a/nephilim/plugins/Lyrics.py b/nephilim/plugins/Lyrics.py index 819735c..b99aef2 100644 --- a/nephilim/plugins/Lyrics.py +++ b/nephilim/plugins/Lyrics.py @@ -15,8 +15,8 @@ # along with Nephilim. If not, see . # -from PyQt4 import QtGui,QtCore -from PyQt4.QtCore import QVariant +from PyQt4 import QtGui, QtCore +from PyQt4.QtCore import QVariant import socket @@ -24,11 +24,13 @@ from ..plugin import Plugin from .. import misc _available_sites = [] -#try: -# import LyricWiki_client -# _available_sites.append('lyricwiki') -#except ImportError: -# print 'Lyrics: error importing LyricWiki. Make sure that ZSI is installed.' +try: + import re + import urllib + from lxml import etree + _available_sites.append('lyricwiki') +except ImportError: + print 'Lyrics: error importing LyricWiki. Make sure that lxml is installed.' class wgLyrics(QtGui.QWidget): txtView = None # text-object @@ -50,7 +52,7 @@ class wgLyrics(QtGui.QWidget): self.connect(self.p, QtCore.SIGNAL('new_lyrics_fetched'), self.set_lyrics) - def set_lyrics(self, song, lyrics): + def set_lyrics(self, song, lyrics, flags = 0): if not song: return self.txtView.clear() @@ -66,7 +68,7 @@ class wgLyrics(QtGui.QWidget): if lyrics: self.logger.info('Setting new lyrics.') - self.txtView.insertPlainText(lyrics) + self.txtView.insertPlainText(lyrics.decode('utf-8')) else: self.logger.info('Lyrics not found.') self.txtView.insertPlainText('Lyrics not found.') @@ -76,6 +78,7 @@ class Lyrics(Plugin): sites = [] lyrics_dir = None lyrics_path = None + DEFAULTS = {'sites' : ['lyricwiki'], 'lyricdir' : '$musicdir/$songdir', 'lyricname' : '.lyrics_nephilim_$artist_$album_$title', 'store' : True} @@ -116,7 +119,7 @@ class Lyrics(Plugin): try: self.logger.info('Trying to read lyrics from file %s.'%self.lyrics_path) file = open(self.lyrics_path, 'r') - lyrics = file.read().decode('utf-8') + lyrics = file.read() file.close() if lyrics: return self.emit(QtCore.SIGNAL('new_lyrics_fetched'), song, lyrics) @@ -136,7 +139,7 @@ class Lyrics(Plugin): if lyrics: try: file = open(self.lyrics_path, 'w') - file.write(lyrics.encode('utf-8')) + file.write(lyrics) file.close() except IOError, e: self.logger.error('Error saving lyrics: %s'%e) @@ -145,18 +148,26 @@ class Lyrics(Plugin): self.emit(QtCore.SIGNAL('new_lyrics_fetched'), song, None) def fetch_lyricwiki(self, song): - soap = LyricWiki_client.LyricWikiBindingSOAP("http://lyricwiki.org/server.php") - req = LyricWiki_client.getSongRequest() - req.Artist = song.artist().encode('utf-8').decode('iso8859').encode('utf-8') - req.Song = song.title().encode('utf-8').decode('iso8859').encode('utf-8') + url = 'http://lyricwiki.org/api.php?%s' %urllib.urlencode({'func':'getSong', + 'artist':song.artist(), 'song':song.title(), 'fmt':'xml'}) try: - result = soap.getSong(req).Return.Lyrics.decode('utf-8').encode('iso8859').decode('utf-8') + # get url for lyrics + tree = etree.HTML(urllib.urlopen(url).read()) + if tree.find('.//lyrics').text == 'Not found': + return None + #get page with lyrics and change
tags to newlines + url = tree.find('.//url').text + page = re.sub('
|
|
', '\n', urllib.urlopen(url).read()) + html = etree.HTML(page) + lyrics = '' + for elem in html.iterfind('.//div'): + if elem.get('class') == 'lyricbox': + lyrics += etree.tostring(elem, method = 'text', encoding = 'utf-8') + return lyrics except socket.error, e: self.logger.error('Error downloading lyrics from LyricWiki: %s.'%e) return None - return result if result != 'Not found' else None - class SettingsWidgetLyrics(Plugin.SettingsWidget): lyricdir = None lyricname = None -- 2.11.4.GIT