FANDOM

2,054,106 Pages

(Drastic changes to the API relatively soon: Additional suggestions)
m (Operations to retrieve lists of songs in categories: Corrected link to category page)
Line 553: Line 553:
 
===Operations to retrieve lists of songs in categories===
 
===Operations to retrieve lists of songs in categories===
   
I suggest adding an operation to retrieve lists of songs in categories, such as [[Category:Songs_Needing_Language_Identification]]. An operation with a signature similar to this one would be nice:
+
I suggest adding an operation to retrieve lists of songs in categories, such as [[:Category:Songs_Needing_Language_Identification]]. An operation with a signature similar to this one would be nice:
 
<pre>
 
<pre>
 
<list of artist+song pairs> getSongCategory(<category name>, <startAtIndex>, <maxNumberOfReturnedSongs>)
 
<list of artist+song pairs> getSongCategory(<category name>, <startAtIndex>, <maxNumberOfReturnedSongs>)

Revision as of 11:51, December 10, 2008

Obsolete entries from this page are archived in LyricWiki_talk:SOAP/Archive.

SOAP Failures

The SOAP webservice logs the most common failed requests. This serves to

  1. Show the most desired songs that aren't on the site yet
  2. Help reveal ways in which the SOAP can be improved to automatically make a higher response-rate.

Check it out :) -Sean Colombo 18:31, 23 January 2007 (EST)

Tweaks

  • I had a minute to code whilst I was on the phone, so I debugged a weird issue and got some really ridiculously misspelled titles to resolve correctly now. That brought the sum on the SOAPfailures page from 6131 down to 5614! That's a pretty sizeable difference for such a small tweak. If you have a minute, go over and make that number drop some more :)
    -Sean Colombo 20:39, 4 March 2007 (EST)
  • Now artist names are parsed to remove everything after " feat." and " ft." so that the original artist's name is used. -Sean Colombo 03:05, 22 March 2007 (EDT)
  • Redirects that were redirecting to pages with special-characters (unicode) in their title were not working but are now fixed. -Sean Colombo 23:05, 4 May 2007 (EDT)
  • Songs with " - " in them, now work if the area after the " - " is the song name (also works if the " - " is actually in the song-name as before). Many songs had the form "TRACKNUM - Artist - Album - Song" or some variation, and now the SOAP accounts for that.
  • Certain "non-artists" are now automatically ignored. For example, if the artist is "Baby Einstein" (an all-instrumental product line of classical music), "Apple Inc." (the artist name for Apple's podcasts), or just "Soundtrack", the song is instantly skipped instead of using all of the database-checks normally used before a song is determined to be not-found.
  • Multiple-spaces in a row are now trimmed down to single spaces (NOT TESTED).
  • Fixed a problem where all numbers 4 or less were getting replaced by wrong words because of an error in using strtr (I had the replacements comma-delimited instead of associative).

Java && AXIS

hi, i tried to to use the wsdl with java and AXIS but i got Exceptions. The compiler means that the AlbumResult is referenced but not defined. Is it possible that the wsdl is wrong? Other wsdl like google had worked just fine with my setup.

Hmm, weird. Every SOAP client seems to have a different bug, and I'd like to figure out a way to hack the WSDL to work with all major SOAP clients (and AXIS is certainly major). So far it has been tested (and used quite a bit) in nuSOAP (PHP) and in .NET (v2 and v3). Can you paste the whole error you are getting? (btw... album result is defined, if you look at the WSDL it has
<xsd:complexType name="AlbumResult">
	<xsd:all>
		<xsd:element name="artist" type="xsd:string"/>
		<xsd:element name="album" type="xsd:string"/>
		<xsd:element name="year" type="xsd:int"/>
	</xsd:all>
</xsd:complexType>
... but we'll still try to figure out how to get it working in AXIS.
Thanks for any additional information you can give,
-Sean Colombo 09:03, 3 October 2006 (PDT)

I got the WS via JAX-RPC working by changing the lines

<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="AlbumResult[]"/>
<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="AlbumData[]"/>

to

<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="tns:AlbumResult[]"/>
<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="tns:AlbumData[]"/>

in the WSDL file. -Michael Rauscher 21:57, 30 December 2006 (CET)

Sweet... is that something you should just hack into the JAX-RPC version, or is that something you think I should try to cram in to the WSDL for all versions (I'm not sure how to do that using nuSOAP yet, but I'm sure I could get it done).
-Sean Colombo 20:20, 30 December 2006 (EST) (if I don't respond quickly, please nudge me on my talk page)

Since this is my first "approach to web services, xml schemas, ..." I can't tell you very much. As far as I understand things so far I think the WSDL file is wrong. There's a default namespace defined for the schema

<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:LyricWiki">

Now, there's no namespace given for the wsdl:arrayType attribute, therefore the default namespace will take in effect. E.g. the attribute value "AlbumResult[]" turns into "xmlns:AlbumResult[]" which isn't defined. Again, I might be totally wrong but it seems logical to me. In any case it seems to be good practice to avoid ambiguities by providing namespace explicitly, so I think you should place the namespaces in the WSDL file. -Michael Rauscher 84.151.49.50 03:26, 31 December 2006 (EST)

C++ and SOAP

Hi, looking good on this site and congrats on the new server! I am working on a small application in C++ to call this WSDL, but it tends to bottom out (note that Google, Amazon, and Babelfish work for me). There error is as follows once the Services are added and a build is attempted:

Error 9 error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c0001c2). AssemblyInfo.obj Error 10 error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c0001cc). AssemblyInfo.obj ...

That's saying that there's a mismatch in the WSDL and the way the C++ app is trying to read it. If you'd like any help developing the services, please let me know, I'd be glad to help :)

Thanks, James

Hi, I haven't used this or any other webservice through C++ before... do you have any idea what could be causing the errors above?
-Sean Colombo 20:12, 30 December 2006 (EST)

Using in VS2005

Hi,

The webservice is looking great. I am using C#/VS2005 and the webservice works fine within VS however when I build the app and try and call the service (using getSong) I get an error "Item has already been added. Key in dictionary: 'urn:LyricWiki/encodedTypes:ArrayofString' Key being added: 'urn:LyricWiki/encodedTypes:ArrayofString'

Any ideas?

Thanks, John


OK - I've got it to work by not generating the serialisation assembly (i.e. deleting the .XMLSerialization.dll file which can be generated by VS). Any ideas why this would cause a problem?

Server returning response in iso-8859-1

The server seems to be returning responses in ISO-8859-1 even if I request UTF-8. This seems to be causing some signs like "'" to be messed up, even though not all the time. I see the wiki is using UTF-8 encoding when talking to the browser and the characters are displayed correctly then. Any ideas? Remiss 04:15, 10 January 2007 (EST)

Uhm, ' works ok I think, but more special signs like ‘ and ’ are problematic. Remiss 04:25, 10 January 2007 (EST)
Yet another thought, if you still need a solution on the soap page failures not being removed when the pages are created you could check for it when you are updating the cached version of the soap page failures. Sorry if I'm not making much sense, but I've been up for 24 hours Remiss 04:43, 10 January 2007 (EST)
Hi, you said even if I request UTF-8... how is that done? I don't know how to change encodings in nuSOAP yet, but I might be able to figure that out, or at the very least throw a utf8_encode() around the results before I return them.
-Sean Colombo 23:31, 15 January 2007 (EST)
I was setting all kind of headers and specifying that the request was encoded in utf-8 as well. The correct header to set would be Accept-Charset [1] and put the encoding name for utf-8 there (can't remember what it is right now) when one wants UTF-8 -- Anyway, I believe the soap-script always should return result in UTF-8 or reencode them in the charset it is sending it back in as they (as far as I can figure out) is stored in an UTF-8 database. The correct header to set when sending back the reply is Content-Type

Know you're probably busy with pedlr, but any progress on this? Remiss 08:34, 21 February 2007 (EST)

I think it's fixed now but have limited abilities to test it. Let me know if it's still messed up
-Sean Colombo 14:35, 10 April 2007 (EDT)

Hi guys! Im also having trouble with encoding. Swedish charcters becomes messed up. I have tried converting from iso-8859-1 to UTF-8 with no success. If I lookup the song on lyricwiki.org the lyrics are all fine. It seems to be an issue on the actual webservice. Im coding in vb.net in VS 2005. My request (also containing swedish characters) works just fine. Heres my call:

       Dim lw As LyricWiki
       Dim lr As LyricsResult
       lw = New LyricWiki
       lr = lw.getSong("Staffan Hellstrand ", "Lilla Fågel Blå")
       Debug.Print(lr.lyrics)

Any ideas on this? --Pär 15:45, 7 October 2007 (EDT)

Hi,
What is the result of that call? Can you paste the XML result (if vb.net lets you see the whole thing)?
Thanks,
-Sean Colombo 18:42, 7 October 2007 (EDT)

Hi Sean, Sorry, my fault, that song did not look ok on the website either and needs to be fixed. The following code converts from ISO-8859-1 to UTF8 so that swedish characters work ok.

       Dim Lyrics As String
       Dim lw As LyricWiki = New LyricWiki
       Dim lr As LyricsResult = lw.getSong(Artist, Song)
       Dim iso8859 As Encoding = Encoding.GetEncoding("ISO-8859-1")
       Lyrics = Encoding.UTF8.GetString(iso8859.GetBytes(lr.lyrics))

Thanks, --Pär 16:53, 8 October 2007 (EDT)

I am still stuck with this problem. If I request songs in utf-8, I get ISO-8859-1 back. If I request this song: http://lyricwiki.org/%D0%A1%D0%BF%D0%BB%D0%B8%D0%BD:%D0%A4%D0%B5%D0%BB%D0%BB%D0%B8%D0%BD%D0%B8 in utf-8, I get in the response all ?????? instead of artist/title. So how do I request (using soap) the above song? and how (in what encoding) do I get the result back. In short: Why doesn't it just work with utf-8, and why don't I get utf-8 back?

I've been working on the encoding the last few days, and ran into some interesting problems. For some reason, I can't just take the data out of the database, encode it a certain way and serve it. It appears that I have to encode it differently based on how it was stored (this boggles my mind!). Interestingly, the API seems to handle your example really well as a REST request [2]. I see what you're talking about w/the SOAP version though. I'll look into that.
Thanks for the bug-report
-Sean Colombo (talk|contribs) 08:55, 12 June 2008 (EDT)
It is a soap request I do. And there it fails,

Request: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:LyricWiki"> <SOAP-ENV:Body> <tns:getSong xmlns:tns="urn:LyricWiki"> <artist xsi:type="xsd:string">Феллини</artist><song xsi:type="xsd:string">Сплин</song></tns:getSong></SOAP-ENV:Body></SOAP-ENV:Envelope> This is valid, utf-8 request (I hope wiki does not mangle it to much) request.response: <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:si="http://soapinterop.org/xsd" xmlns:tns="urn:LyricWiki"><SOAP-ENV:Body><ns1:getSongResponse xmlns:ns1="urn:LyricWiki"><return xsi:type="tns:LyricsResult"><artist xsi:type="xsd:string">?????</artist><song xsi:type="xsd:string">???????</song><lyrics xsi:type="xsd:string">Not found</lyrics><url xsi:type="xsd:string">http://lyricwiki.org</url></return></ns1:getSongResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>

It seems REST with xml also goes wrong: [3]

More proof that rest isn't liking this either, this is what I get from libxml: http://lyricwiki.org/api.php?artist=Queensrÿche&song=Take%20Hold%20Of%20The%20Flame&fmt=xml Entity: line 3: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xFF 0x63 0x68 0x65 <artist>Queensr�che</artist>

Please, if you say you output to UTF-8, output UTF-8.

It looks like every request made where the artist/title can be encoded using a ISO-8859-1 is not displayed in the result as utf-8. if the artist/title contains f.e. russian or japanese characters it works, but queensrÿche and a few others don't. I hope this helps tracking down the issue?

About those questionmarks...

FYI... the questionmarks on the SOAP failures are probably just foreign characters... but they might be actual question marks (if that turns out to be the case, I'll ignore them automatically)... still looking into it.
-Sean Colombo 18:39, 23 January 2007 (EST)

BTW, forgot to mention... turned out that they were not foreign characters. So now the "???" artists/titles have been ignored, so they don't show up in the SOAP failures anymore.
-Sean Colombo 22:01, 29 January 2007 (EST)
When using ruby, i get questionmarks instead of umlauds é's á's and other special chars
Using:
require 'soap/wsdlDriver'
driver = SOAP::WSDLDriverFactory.new("http://lyricwiki.org/server.php?wsdl").create_rpc_driver
driver.getSong("coldplay","talk")
What I've heard from multiple other testers (after spending a lot of time trying to "fix" our end of it) is that it turns out that Ruby (or maybe just the SOAP client?) just doesn't do UTF8 correctly yet, and it's apparently a known issue. Now that Rails is popular, I think people are working on it, but I haven't heard a planned date to release fixes or anything.
Sorry,
-Sean Colombo 10:35, 23 April 2007 (EDT)
Ruby and Rails can indeed use UTF8 quite well as I have a RoR project that uses it right now. So I suspect the problem lies in the SOAP client. (anon guy just passing through looking for API info)

SOAP Page Failures - (report as fixed) problem

One of the songs listed in the failure list is The All American Rejects - Can't Take It. When I try to report as fixed, it gives this (emphasis added): Sorry, but The All American Rejects:Can song still failed. It looks like it is getting cut off at the apostrophe. There is probably a problem with escaping the string for the database lookup. This is somewhat of a problem, because it may also represent a security problem, specifically SQL injection.

- teknomunk (talk,E) 18:43, 23 January 2007 (EST)

Thanks for the heads-up! I looked into it, and everything is still safe server-side from a mysql-injection... when I was making the link to report the song as fixed, I had forgotten to urlencode() the artist and song name, so only "The All American Rejects:Can" was being taken as the URL and the rest was just trash in the HTML tag. So the link works now, but oddly the song still isn't showing up as fixed :-/
Thanks again,
-Sean Colombo 09:23, 25 January 2007 (EST)
Could you please give me an explanation or a link to an explanation, what this "fixed" link for failed SOAP requests means and causes? What's the purpose? Thanks.
Ronson 12:07, 25 January 2007 (EST)
Oops, I should have put that on there before. There is now an explanation on Special:Soapfailures
-Sean Colombo 22:11, 29 January 2007 (EST)

Ampersands

There were a bunch of failed requests for Cassie:Me when the real song name is Cassie:Me & U. Has anyone else noticed issues with ampersands, or might this just be someone's mislabeled song in their player?
-Sean Colombo 13:56, 26 February 2007 (EST)

Additional notes-to-self

  1. The all-caps exception for artists isn't there for songs, so Foo Fighters:DOA doesn't work through the SOAP.
  2. Maybe there should be another page for seeing the artists with the most failed requests? Use this query:
    select request_artist,sum(numRequests) as requests from lw_soap_failures group by request_artist order by requests desc limit 50;
  3. Benny Benassi:Who's Your Daddy? doesn't work... probably because the Who's is parsing to Who'S. Revisit the rules for this.

SearchSongs only returnes Beethoven

When i try to search using the searchSongs() method, it returnes song: "'Moonlight Sonata', artist: 'Beethoven'" every time. Is it me doing something wrong, or is the problem in the service?

Hi, that function's not done yet. If you're making an app that really needs it, we could try to finish it for you. Let me know (preferably on my talk page
Thanks,
-Sean Colombo 11:59, 20 May 2007 (EDT)


Is this fixed now? I still find searchSongs() only returning: song: "'Moonlight Sonata', artist: 'Beethoven'" every time.


How do I search for a song if I don't know the artist name using the web service?

Search Functions

I'm working on a PHP app, just a personal project, to do album/artist/song searches and displaying them on a web site.

Are the functions mentioned under Current Progress the only functions currently complete? I noticed for example that the searchArtists function returns wrong values; I made a search for Nightwish and got Pink Floyd.

Technically, I could do a check if the artist exists or is valid by using the getArtist function, but that seems like a waste of resources, since if the artist exists, it would return a boat load of information. e.g. Nightwish or Metallica. It would be easier if a search function, like searchArtist could do the job for me and just return TRUE or FALSE values. Then another query could be used to get the actual data.

Is this the original purpose of the search functions or am I way off?

--Datamike 04:19, 5 June 2007 (EDT)

Yeah, the SOAP (interface / documentation) is a little behind :) There is a checkSongExists() so it would make sense also to have a checkArtistExists(). Also, the getSOTD() suggests creating a getAOTW() as well. Sounds like a project :) --Mischko <img src="/images/3/31/Talkicon.png" alt="Talk to me" /> <img src="/images/1/1e/EsperanzaIcon.png" alt="Esperanza Member" /> 13:39, 5 June 2007 (EDT) PS that's a hint :)

SOAP and Borland Delphi

Hi all.

Firstly, thanks for a gr8 site. I am developing a small app in Delphi 7 that gets the lyrics for my songs via SOAP. Most of the functions works correctly except for getArtist. When i am executing the function it gives me the following error.

"SOAP Response Packet: result element expected"

I was searching for the discography of Busted.

This is the full error report:

SOAP Response Packet: result element expected, received 
"<ns1:getArtistResponse xmlns:ns1="urn:LyricWiki"><artist xmlns:xsi="http://
www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">Busted</
artist><albums xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:type="SOAP-ENC:Array" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/
encoding/" SOAP-ENC:arrayType="tns:AlbumData[1]"><item 
xsi:type="tns:AlbumData"><album xsi:type="xsd:string">Busted</album><year 
xsi:type="xsd:int">2002</year><amazonLink xsi:type="xsd:string">http://
www.amazon.com/exec/obidos/redirect?link_code=ur2&tag=motiveforcell-
20&camp=1789&creative=9325&path=external-search%3Fsearch-
type=ss%26index=music%26keyword=Busted%20Busted</amazonLink><songs 
xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[13]"><item 
xsi:type="xsd:string">What I Go To School For</item><item 
xsi:type="xsd:string">Crash And Burn</item><item 
xsi:type="xsd:string">Britney</item><item xsi:type="xsd:string">Losing You</
item><item xsi:type="xsd:string">Year 3000</item><item 
xsi:type="xsd:string">Psycho Girl</item><item xsi:type="xsd:string">All The 
Way</item><item xsi:type="xsd:string">Sleeping With The Light On</
item><item xsi:type="xsd:string">Dawson's Geek</item><item 
xsi:type="xsd:string">When Day Turns Into Night</item><item 
xsi:type="xsd:string">Everything I Knew</item><item 
xsi:type="xsd:string">Without You</item><item xsi:type="xsd:string">Loser 
Kid</item></songs></item></albums></ns1:getArtistResponse>"

Any help regarding this error will be appreciated. Thanks. TheUnknown 06:30, 22 October 2007 (EDT)

Unsing webservice from python

Hi, how to use this webservice from python? I tried to search for some Czech songs (I added) from python using SOAPpy and ZSI (see description), but I have encoding and not found problem. Anyone use it with success?--PavelD 04:01, 26 October 2007 (EDT)

Update

Query for song name Jaromír Nohavica:Zatímco Se Koupeš via ZSI is resolved as Jaromír Nohavica:Zatímco Se Koupe? (some of the nonASCII chars are replaced by question marks) - now it is on Special:Soapfailures. It this because of error on phyton side (missing information about encoding or so) and have I report bug to the ZSI developers or your webservice don't resolve correct query and you are able to fix it? Thanks --PavelD 06:05, 26 October 2007 (EDT)

api.php

SOAP is still a bit incomplete, why standard MediaWiki http://lyricwiki.org/api.php does not work? exe 04:51, 23 November 2007 (EST)

At the time that we made our api.php file, MediaWiki did not have a normal api.php yet (and we didn't know they were planning on making one).
-Sean Colombo (talk|contribs) 09:03, 14 June 2008 (EDT)

getArtist for Britney Spears

When I try and return an array of albums from Britney Spears, it just returns 1 array with songs in it and no albums. It'll work with every other artist I've tried though.

$artist = 'Britney Spears';
$result = $client->call('getArtist', array('artist' => $artist ));
print_r($result);

Am I doing something wrong?

lyric Tags in Lyrics

Hi All,

I have noticed in some songs e.g. http://lyricwiki.org/Nine_Inch_Nails:Right_Where_It_Belongs

when you fetch the lyrics you will get tags like

<./lyric.>
= = V2 = =
<.lyrics.>

inside the lyrics string. Is there a way to parse this?

Much appreciate pointing me in the right direction.

Thanks in advance, McoreD

P.S: I put . in the middle otherwise even this post gets parsed.

Another url showing this: http://lyricwiki.org/api.php?artist=In%20Extremo&song=Davert-Tanz&fmt=xml

Vb.net and german language

I have big problems to parse this site correctly: http://lyricwiki.org/B%C3%B6hse_Onkelz:Dunkler_Ort

Public Function test()
Dim request As HttpWebRequest
Dim response As HttpWebResponse = Nothing
Dim readStream As StreamReader = Nothing
Dim htmlContent As String = ""
Dim url As String = "http://lyricwiki.org/api.php?artist=B%C3%B6hse_Onkelz&song=Dunkler_Ort&fmt=html"
Try
request = DirectCast(WebRequest.Create(url), HttpWebRequest)
request.Credentials = CredentialCache.DefaultCredentials
response = DirectCast(request.GetResponse(), HttpWebResponse)
Dim receiveStream As Stream = response.GetResponseStream()
readStream = New StreamReader(receiveStream, Encoding.UTF8)
htmlContent = readStream.ReadToEnd()
Catch
Finally
If Not response Is Nothing Then response.Close()
End Try
If Not response Is Nothing Then response.Close()
If Not readStream Is Nothing Then readStream.Close()
Dim ret As String = parseLyrics(htmlContent)
Return ret
End Function
Public Function parseLyrics(ByVal html As String)
Dim matches As RegularExpressions.MatchCollection
Dim re As RegularExpressions.Regex
Dim ret As String = ""
re = New RegularExpressions.Regex("'"`UNIQ544dbff51c2877fb-pre-00000009-QINU`"'", RegularExpressions.RegexOptions.Multiline)
matches = re.Matches(html)
If matches.Count > 0 Then
ret = matches(0).Value.Replace("'"`UNIQ544dbff51c2877fb-pre-0000000A-QINU`"'", "")
ret = ret.Replace(Chr(10), "
")
ret = ret.Replace(Chr(9), "
")
ret = ret.Replace(Chr(13), "
")
ret = System.Text.Encoding.GetEncoding("UTF-8").GetString(System.Text.Encoding.UTF8.GetBytes(ret))
Else
ret = "No lyrics found."
End If
Return ret
End Function

I don't know why, but all german special letters like 'ä,ö,ü,' and so on are wrong.

solved****
i changed to 
Dim url As String = "http://lyricwiki.org/api.php?artist=B%C3%B6hse_Onkelz&song=Dunkler_Ort&fmt=text"
and everything is ok

Please correct the Encoding-Handling

The Server got a big Problem: If you request a document and use "ISO 8859-1" as Encoding in the Request-Header, the server answers with a encoding of "ISO 8859-1" (both in HTTP-Header and XML-Document). The big problem is: The lyrics ARE acutaly encoded in UTF-8, so the whole XML-File is not valid at all because it claims to be ISO 8859-1 but is in fact UTF-8, at least the lyrics. Please fix this, because this might be the problem for the ruby, perl and other clients. Theomega 05:15, 25 April 2008 (EDT)

Hmm... interesting problem. The lyrics themselves are actually UTF-8 though and I don't think they can be accurately put into ISO 8859-1 all the time if they're stored in utf8 (or can they?). So is the correct solution just to utf8-decode the results and shoot them out, or is there a place to set which encodings are accepted. If ISO 8859-1 is fine with international characters then I guess I can just set the encoding of the response to match the request and it should just work. Do you happen to know?
-Sean Colombo (talk|contribs) 07:27, 25 April 2008 (EDT)
The following solution would imho be the best: Use UTF-8 everytime on response (for ALL responses, regardless of the request-encoding). So send UTF-8 and also declare the document as UTF-8. Imho this is the only solution which will guarantee that every character entered here is send out as a soap-response. --Theomega12:05, 1 May 2008 (EDT)

I try many hours finally found out it was server side's problem. The text format is good, but XML, HTML format is bad. Ex.text_correctXML_wrongHTML_wrong--Tomin 17:32, 9 May 2008 (EDT)

Thank you for the links, they are very helpful in testing. I'm kind of confused because any time I fix those songs, it is breaking other languages. It appears that different inputs will need to be handled differently. For instance, French, Mandarin? (is that the language you provided?), and Czech all appear to give completely different results.
For my own reference, here are a bunch of different links. Once they ALL work, then the system is probably working correctly:
-Sean Colombo (talk|contribs) 20:50, 8 June 2008 (EDT)
Yes, they are Mandarin. Thanks, Sean. I'm so happy it works now. But 'artist' and 'song' tag in XML are still question marks(????). example--Tomin 10:41, 10 June 2008 (EDT)
Just had another report about encoding issues... turns out the "Not Found" doesn't return UTF-8 header. Added to list of test-cases.
-Sean Colombo (talk|contribs) 14:34, 21 July 2008 (EDT)
Fixed. -Sean Colombo (talk|contribs) 23:20, 21 July 2008 (EDT)
Sweet! I'm declaring victory now :-D! Hopefully that isn't too premature, but of all of the test-cases above, they all work now (some results will be bad in the cache for the next 5 hours but that will fix itself). If anyone finds any problems with the encoding stuff, please let me know as soon as possible on my talk page so I can jump on it while this stuff is still fresh in my mind.
Thanks to everyone for the detailed bug reports and for your patience as I really dragged my feet trying to figure this one out.
-Sean Colombo (talk|contribs) 23:20, 21 July 2008 (EDT)

Yet another encoding issue

I'm using Orcas WCF in .NET 3.0 to create proxies and connect to your webservice.

I DO use UTF-8 encoding in request, but the response is always been returned in ISO 8859-1. The problem is: the WCF engine does not support ISO 8859-1 encoding for message exchange. Can you fix this, please?

This is the same issue as above, but nevertheless it should be fixed fast! Theomega 11:33, 8 May 2008 (EDT)
NOTE: Just to tie up the lose-ends - I'm pretty sure this part of the problem has been fixed. There are more encoding problems though. See this thread above for more info.
-Sean Colombo (talk|contribs) 14:42, 21 July 2008 (EDT)

Another encoding problem

It seems that the encoding problem happened again...
Below is a simple script to test the encoding problem related to Chinese Characters(and Japanese too)
the URL to this lyrics is http://lyricwiki.org/陶喆:小镇姑娘 ,you can compare the output of the script to the original lyrics.:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import urllib
from ZSI import ServiceProxy
artist = "陶喆"
title = "小镇姑娘"
wsdlFile = "http://lyricwiki.org/server.php?wsdl"
lyricServer = ServiceProxy.ServiceProxy(wsdlFile)
lyrics = lyricServer.getSong(artist=urllib.quote(artist), song=urllib.quote(title))['return']["lyrics"]
print lyrics

Yegle 07:44, 17 June 2008 (EDT)

Hello??Anybody there??Yegle 11:25, 21 June 2008 (EDT)
Sorry for not replying. If you ever don't hear from me, please leave a message on my talk page which will send me an email-alert.
I'm working on the encoding issues right now... it seems to be a total mess where I can't fix one set of languages without breaking another set. Gonna keep hammering away at it and hopefully it'll come together.
I'm going to keep track of the progress in this thread. Sorry for the delays.
-Sean Colombo (talk|contribs) 14:40, 21 July 2008 (EDT)

Windows Communication Foundation

Is it possible that the webservice is not compatible with WCF (Windows Communication Foundation)?

Thomas

Trouble

Just about every page this user created through SOAP has severe problems. (The most recent ones all have {{Song|A (A)|A}} in the song template, and several feature no lyrics at all.) I don't know if it's SOAP's fault or the user's or a combination of both; but it would be good if someone who Knows Stuff could look into it. -- 6x9 (Talk) 23:32, 14 November 2008 (UTC)

AppleScript Queries

There are no examples of making SOAP queries to LyricWiki from AppleScript. here's my attempt:

tell application "http://lyricwiki.org/server.php?wsdl"
  set soapResult to call soap {parameters:{artist:theArtist as string, ¬
            song:theSong as string}, method namespace uri:"urn:getSong", ¬
            SOAPAction:"urn:LyricWiki#getSong"}
  display dialog lyrics of soapResult
end tell

Sadly, this doesn't seem to work! Packet sniffing tells me that it's sending this:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/1999/XMLSchema"
       xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
       xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
       xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
       SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body>
    <m:getSong xmlns:m="urn:LyricWiki">
      <artist xsi:type="xsd:string">A-Ha</artist>
      <song xsi:type="xsd:string">Take On Me</song>
    </m:getSong>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

above unsigned comments by User:217.140.96.21 @ 04:41, 18 November 2008

see AppleScript Support For Remote Procedure calls

set defaultArtist to "Rush"
set defaultSong to "The Trees"
set thisArtist to text returned of (display dialog "Enter the Artist:" default answer defaultArtist)
set thisSong to text returned of (display dialog "Enter the Song" default answer defaultSong)
set the songResult to getSongResult(thisArtist, thisSong)

on getSongResult(thisArtist, thisSong)
	tell application "http://lyricwiki.org/server.php"
		return call soap {method name:"getSongResult", method namespace uri:"urn:LyricWiki#getSongResult", ¬
parameters:{artist:thisArtist as string, song:thisSong as string}, SOAPAction:"urn:LyricWiki#getSongResult"}
	end tell
end getSongResult

ES (Talk) 13:39, 18 November 2008 (UTC)

Drastic changes to the API relatively soon

The SOAP API page has a note (and an e-mail subscription box) stating that drastic changes to the API are considered. However, since that note appeared nothing has happened or has been discussed (at least that I am aware of). Am I looking in the wrong place? I have some ideas and would like to participate in that discussion, but I cannot find it.

Spacejens 12:10, 3 December 2008 (CET)

No I don't think you've missed any discussions. The person who recently put that mailing list box on the page and who you need to contact is Sean. That having been said Sean runs the site and as ever is very busy. So can I suggest that you subscribe to the mailing list and also leave a message on his talk page. I know you left a message on there previously, but just in case he missed it, it might be best to put any new posts at the bottom of his talk page. Thanks for your interest and help.  ♫Яєdxx Actions Words 19:31, 3 December 2008 (UTC) P.S. You can always sign your posts with ~~~~.
Hiya,
Yeah, relatively-soon probably means within the next couple of months at this point :-/ ugh. The main things I'm thinking of include making it more RESTful, having API clients register (like Twitter apps), handling error cases better (so when we're down for maintenance it doesn't just say "Not Found" for the lyrics, etc.)
If you have any other ideas, please feel free to leave them here. In fact, I don't see any reason not to just have this thread be the start of the conversation. Once we get a big enough conversation and list of tasks, we can branch it off into another page.
Thanks,
-Sean Colombo (talk|contribs) 21:26, 3 December 2008 (UTC)
PS: Your email is still one of the unread messages on my list, lol. I'll get to answering it as soon as I get a chance to sit down and attack that inbox (wow, that email convo started over a month ago... sorry!).
No worries, I was just wondering if I missed anything. As long as you still have my mail with ideas, they are still in the pipeline somewhere :-)
I subscribed to the e-mail list when that option first appeared.
Spacejens 10:02, 4 December 2008 (UTC)
I entered the suggestions from that e-mail below, so others can comment and discuss them here.
Spacejens 14:17, 8 December 2008 (UTC)

Make the WSDL file work for Java

One change (originally suggested in LyricWiki_talk:SOAP#Java_.26.26_AXIS) that needs to be made to make the WSDL file usable with Java/Axis/JAX-RPC is to make sure that namespaces are explicitly specified where needed. Specifically, this concerns the two arraytype declarations, AlbumResult and AlbumData. Change the lines:

<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="AlbumResult[]"/>
<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="AlbumData[]"/>

to

<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="tns:AlbumResult[]"/>
<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="tns:AlbumData[]"/>

Spacejens 12:28, 5 December 2008 (UTC)

Operations to retrieve and post song footer data

I suggest adding operations to retrieve and modify song footer data (e.g. language information). This addition would allow the creation of bots (and other tools) to perform certain data entry and modification tasks more quickly.

Spacejens 14:17, 8 December 2008 (UTC)

Operations to retrieve lists of songs in categories

I suggest adding an operation to retrieve lists of songs in categories, such as Category:Songs_Needing_Language_Identification. An operation with a signature similar to this one would be nice:

<list of artist+song pairs> getSongCategory(<category name>, <startAtIndex>, <maxNumberOfReturnedSongs>)

Such an operation would enable bots and tools to work with these categories. For example, a media player plugin could be created to only play songs with Spanish Lyrics, or a tool for semi-automated entry of missing language identification could be programmed.

Spacejens 14:17, 8 December 2008 (UTC)

Community content is available under Copyright unless otherwise noted.