2,054,105 Pages

Replacement filing cabinet
Archive Index

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)


  • 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).

Portability Testing

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:element name="artist" type="xsd:string"/>
		<xsd:element name="album" type="xsd:string"/>
		<xsd:element name="year" type="xsd:int"/>
... 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[]"/>


<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="" 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 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


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?

This might be caused by the same fault that causes the Java problems. Before generating code from the WSDL file,
modify the WSDL file as described in LyricWiki_talk:SOAP#Java_.26.26_AXIS (adding namespaces for the array
types). If anyone does this, please tell us how it worked out.
Spacejens 11:08, 23 December 2008 (UTC)

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://" xsi:type="xsd:string">Busted</
artist><albums xmlns:xsi="" 
xsi:type="SOAP-ENC:Array" xmlns:SOAP-ENC="
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://
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 

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)


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)

It seems that the server sends and expects to recieve strings "double encoded" in utf-8, so it's necessary to encode strings with .encode('utf-8').decode('iso8859').encode('utf-8') before sending them and decode results with .decode('utf-8').encode('iso8859').decode('utf-8')-- 07:42, 6 May 2009 (UTC)

AppleScript Queries

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

tell application ""
  set soapResult to call soap {parameters:{artist:theArtist as string, ¬
            song:theSong as string}, method namespace uri:"urn: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=""
    <m:getSong xmlns:m="urn:LyricWiki">
      <artist xsi:type="xsd:string">A-Ha</artist>
      <song xsi:type="xsd:string">Take On Me</song>

above unsigned comments by User: @ 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 ""
		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)

Correcting characters on AppleScript

Hi all!

As already reported, AppleScripts may encounter problems showing some characters, this is due encoding problems.

Here is a workaround to convert the lyric to the correct encoding:

set defaultArtist to "Legião Urbana"
set defaultSong to "Índios"
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)

set theLyrics to (lyrics of songResult) as text

set x to do shell script "echo " & quoted form of theLyrics & " | iconv -t ISO-8859-1 -f UTF-8" ¬
-- This calls iconv, it's a default UNIX command line application that convert encodings(Build in on every mac)

display dialog x

on getSongResult(thisArtist, thisSong)
	tell application ""
		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

User:0x3333 Sun Mar 1 02:10:07 BRT 2009

Page listing artists with the most failed requests

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;

-Sean Colombo February or March 2007

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
-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?

I just checked to see if this entry could be archived, but the problem still remains.
Spacejens 09:31, 29 January 2009 (UTC)

Windows Communication Foundation

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


The discussion in LyricWiki_talk:SOAP/Archive#Yet_another_encoding_issue seems to indicate that WCF works after the encoding problems were fixed. However, I do not know enough of WCF to be capable to judge if this question should be archived yet or not. Can someone else please comment?
Spacejens 10:20, 30 January 2009 (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 ~~~~.
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.
-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[]"/>


<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)

Operation to check if an artist exists

Adding a method checkArtistExists(), similar to checkSongExists(), was originally suggested in LyricWiki_talk:SOAP/Archive#Search_Functions. I agree that this seems like a good idea.

Spacejens 18:20, 20 December 2008 (UTC)

Words beginning with accented characters

I've noticed a problem with song titles that have a word beginning with an accented character. For most songs, if you submit the title in the query string, the API automatically uppercases the first letter of each word. If one of those characters is an accented character, the uppercase conversion does not occur.

For example:

Artist: Francis Cabrel
Song name: Je l'aime à mourir
Look-up value: Je l'aime à mourir
Expected lookup result: Je L'aime À Mourir
Actual result: Je l'aime à mourir

Song name: Édition spéciale
Look-up title: Édition spéciale
Expected lookup result: Édition Spéciale
Actual result: Édition Spéciale

Look-up title: édition spéciale
Expected lookup result: Édition Spéciale
Actual result: édition spéciale

On another note, the "header" at the top of a lyric result API call has the individual words in the artist's name and song title separated by plus signs, so the links don't work. They should be underscores. Bytesmythe 00:11, 11 December 2008 (UTC)

Bad response data from getAlbum()

The web service's getAlbum() method doesn't work. No matter what parameters i pass in, i always get the same (wrong) data back. It's always this:

- results {Dimensions:[5]} object[]
[0] "Staind" object {string}
[1] null object
[2] "Chapter V" object {string}
[3] 2005 object {int}
+ [4] {Dimensions:[12]} object {string[]}

Why is that?

— The preceding unsigned comment was added by (talk).

lol, SOAP is (still) Staind...
	call soap {
		method name:"getAlbum", 
		method namespace uri:"urn:LyricWiki#getAlbumRequest", 
			artist:"Pink Floyd", 
			album:"Atom Heart Mother"
	-->	{
			album:"Chapter V", 
				"Run Away", 
				"Right Here", 
				"Paper Jesus", 
				"Schizophrenic Conversations", 
				"Cross To Bear", 
				"Everything Changes", 
				"Take This", 
				"King Of All Excuses", 

getAlbum() is still br¬ok¬en ∃cho⚡ierr∀ () 03:34, 7 January 2009 (UTC)

Special:Soapfailures messed up?

For some reason the red song links add spaces around the colon, i.e. they lead to "Artist : Song" rather than "Artist:Song". — 6x9 (Talk) 17:41, 15 February 2009 (UTC)

more artist in song names

This was answered before with regards to Lil Jon here [1]. The same problem also happens with PJ Harvey & John Parish, Neil Young, and Neil Young. Can this be resolved? thanks Night Owl 15:51, 11 May 2009 (UTC)

getSongs returns #REDIRECT [[ ]]

Hi I just tried this great SOAP service. I works perfect in most cases but when I call

getSong("a-ha", "You wanted more")

I get a valid response, but the lyrics in that response only contain

#REDIRECT [[A-ha:You Wanted More]]

Do I have to follow that redirect by making another request with the exact casing or should the service do that for me?

Greetings Bernd 23:56, 15 May 2009 (UTC)

I second this, I get the same result, but if I try to parse the result and call the same function again, I just get the same result. I.e. it seems like I can't get the lyrics for particular songs using the API???


Yes, there is something wrong with the way the API handles redirects. I can live with the fact that it doesn't send the correct HTTP redirect codes at the moment but as Daniel said, even if we try to follow a redirect manually in our code, we end up in an infinite loop.
Here's an example (I can reproduce this with both the SOAP and the REST API):
Artist: Kd Lang, Song: Constant Craving
#REDIRECT [[K.d. Lang:Constant Craving]]
Fine, so let's follow the redirect and call: But the response is exactly the same:
#REDIRECT [[K.d. Lang:Constant Craving]]
Looking at the entire SOAP response, it seems that even though we asked for K.d. Lang, this got turned into K.D. Lang somewhere along the way, which in turn redirects to K.d. Lang again. Thus the infinite loop:
   <ns1:getSongResponse xmlns:tns="urn:LyricWiki" xmlns:si="" xmlns:ns1="urn:LyricWiki">
   <return xsi:type="tns:LyricsResult">
     <artist xsi:type="xsd:string">K.D. Lang</artist>
     <song xsi:type="xsd:string">Constant Craving</song>
     <lyrics xsi:type="xsd:string">#REDIRECT [[K.d. Lang:Constant Craving]]</lyrics>
     <url xsi:type="xsd:string"></url>
A-ha (vs. A-Ha) seems to be the same error. Who can help? --Ole 23:24, 20 June 2009 (UTC)

here is the same

I stumbled across the same error :-(
pleeeeeease help --16:06, 11 July 2009 (UTC)

VB.NET 2008 Problem

Hi! Im an intermediate VB (&.NET) programmer and I've tried to use your WSDL file. It works great except that it just return the preview of the lyrics: "Paper bags and plastic hearts All our belongings in shopping carts It's goodbye But we got one more night Let's get drunk and ride around And make peace with this empty town We can make[...]" Artist: Boys Like Girls Song: The Great Escape

Here's my VB.NET code, explicitly and stricted: [code]

   Public Function GetSong(ByVal artist As String, ByVal songname As String) As String
       Return LyricsWikia.getSong(artist, songname).lyrics.ToString()
   End Function


Any ideas? //Zeelia 20:02, November 6, 2009 (UTC)

Hey Zeelia,
Unfortunately, that's just the way it works right now (we desperately need to update the documentation). The music publishers forced us to shut down the ability to provide full lyrics. The snippet is considered Fair Use though. You may want to check out the initial announcement of API changes from when it got Nerfed.
Sorry for the inconvenience,
-Sean Colombo 23:09, November 6, 2009 (UTC)
Hi Sean! Thanks for your response, I am currently working on a wrapper for your pages so for example if I use a WebClient to request the page, I will create a wrapper which returns the lyrics. I hope this doesn't create any problems for you, however the music publishers should contact me if they want me to shut it down.
PS: It would help if you put the lyrics inside a divider block hehe :P
Well, thanks for your great work with your API though!
//Zeelia 20:08, November 8, 2009 (UTC)

Problems and feedback

  1. SOAP does not handle artist redirects properly (capitalization issues)
    • Search: b.o.b - magic
    • B.o.b is a redirect to B.o.B, yet SOAP searches for B.o.b:Magic instead of B.o.B:Magic
  2. I cannot remove the request Pendulum - The Island - Pt II (Dusk)
    • Although I created redirects, it says the page couldn't be found; the displayed link from the array works perfectly
  3. I cannot remove the request B.o.B. - Magic (w/ Rivers Cuomo)
    • It says it was removed but it is still in the list
  4. Requests for no artist should be skipped at once, like Apple Inc. currently already is
  5. Admins should be allowed to remove non-fixed entries via an extra input field
    • It should be possible to remove entries like Cut Your Mortgage Interest Rates! Free Consult. Call: ...
  6. The capitalisation is sometimes a bit dumb, because it lowercases every letter except for the first ones
    • A request for a song with Part II fails because it's parsed Part Ii which is ugly and wrong and, contrary to Part II non-existant
  7. Could it be that every request number is accidentially multiplied by 10? I hardly believe every song was called exactly ###0 times
    Logging every request to the database was too much work on the database server, so right now the results are stored in memcached until any title hits a multiple of 10 at which point it is stored to the database. -Sean Colombo 03:59, August 27, 2010 (UTC)
  8. The removal success message should redirect to Special:Soapfailures after 3 seconds

Chris 02:56, August 27, 2010 (UTC)

Great list, Chris! I'll have to get on these :) -Sean Colombo 03:59, August 27, 2010 (UTC)
Also, something else (in addition to the capitalization problems above) appears to be wrong with the implied-redirects. -Sean Colombo 19:47, September 6, 2010 (UTC)

I noticed while testing the api that some songs I had that started with "The" was missed by the api since they were named without "The" on the website, so would it be possible to make it strip "The" and search again if no match was found?-- 23:18, January 9, 2014 (UTC) -saadany

Community content is available under Copyright unless otherwise noted.