// // LyrDbInterface.m // LyricsHistogram // // Created by Varun Mehta on 5/3/10. // #import "LyrDbInterface.h" @implementation LyrDbInterface + (NSString *)lyricsForSong:(NSString *)song byArtist:(NSString *)artist { NSString *parameter = [NSString stringWithFormat:@"%@%@%@", artist, @"|", song]; NSString *cleanParameter = (NSString *)CFURLCreateStringByAddingPercentEscapes( NULL, (CFStringRef)parameter, (CFStringRef)@"", (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8 ); NSString *dirtySearchUrl = [NSString stringWithFormat:@"http://webservices.lyrdb.com/lookup.php?q=%@&for=match&agent=agent", cleanParameter]; //NSLog(@"%@", dirtySearchUrl); //NSString *escapedQueryUrl = [dirtySearchUrl stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; NSString *escapedQueryUrl = dirtySearchUrl; //NSLog(@"%@", escapedQueryUrl); NSURLRequest *queryRequest = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:escapedQueryUrl]]; NSData *queryResultsData = [NSURLConnection sendSynchronousRequest:queryRequest returningResponse:nil error:nil]; [queryRequest release]; //NSLog(@"%d", [queryResultsData length]); NSString *queryResultString = [[NSString alloc] initWithData:queryResultsData encoding:NSASCIIStringEncoding]; //NSLog(@"%@", queryResultString); NSArray *splitResultLines = [queryResultString componentsSeparatedByString:@"\n"]; [queryResultString release]; if ([splitResultLines count] <= 1) return @""; NSString *lastString = [splitResultLines objectAtIndex:([splitResultLines count]-1)]; NSString *lastSongId = [[lastString componentsSeparatedByString:@"\\"] objectAtIndex:0]; //NSLog(@"%@", lastSongId); NSString *lyricUrl = [NSString stringWithFormat:@"http://webservices.lyrdb.com/getlyr.php?q=%@", lastSongId]; //NSLog(@"%@", lyricUrl); NSURLRequest *lyricRequest = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:lyricUrl]]; NSData *lyricData = [NSURLConnection sendSynchronousRequest:lyricRequest returningResponse:nil error:nil]; [lyricRequest release]; NSString *lyricString = [[NSString alloc] initWithData:lyricData encoding:NSASCIIStringEncoding]; NSLog(@"%@", lyricString); [lyricString autorelease]; return lyricString; } @end