summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <wyskas@gmail.com>2009-08-10 09:52:52 +0200
committerAnton Khirnov <wyskas@gmail.com>2009-08-10 15:33:40 +0200
commitd78ddf35321c1eae3724617bd05a5e11f1b9394f (patch)
tree0c093ce5a9e7093b4a4d81ba7bb4bef5e97524f8
parent57299a0b3d8b6eb6376d38a7499564b95a76721b (diff)
Lyrics: fix and reenable LyricWiki
also get rid of dependency on ZSI in process.
-rw-r--r--nephilim/plugins/LyricWiki_client.py578
-rw-r--r--nephilim/plugins/Lyrics.py47
2 files changed, 29 insertions, 596 deletions
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 <http://www.gnu.org/licenses/>.
#
-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 <br> tags to newlines
+ url = tree.find('.//url').text
+ page = re.sub('<br>|<br/>|<br />', '\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