public static AlsongLyric Parse(XmlNode xmlNode) { AlsongLyric lyric = null; if (xmlNode.Name == "ST_SEARCHLYRIC_LIST") { lyric = new AlsongLyric { LyricID = xmlNode["lyricID"].InnerText, Title = xmlNode["title"].InnerText, Artist = xmlNode["artist"].InnerText, Album = xmlNode["album"].InnerText, }; } else if (xmlNode.Name == "GetLyric7Result") { lyric = new AlsongLyric { LyricID = xmlNode["strInfoID"].InnerText, Title = xmlNode["strTitle"].InnerText, Artist = xmlNode["strArtist"].InnerText, Album = xmlNode["strAlbum"].InnerText, Lyric = ParseLyric(xmlNode["strLyric"].InnerText), }; } return(string.IsNullOrWhiteSpace(lyric?.Title) ? null : lyric); }
public static AlsongLyric[] SearchByFile(string filePath) { try { if (string.IsNullOrWhiteSpace(filePath) || !File.Exists(filePath)) { return(null); } var ext = Path.GetExtension(filePath); if (ext != ".mp3" && ext != ".ogg" && ext != ".wma" && ext != ".flac") { return(null); } var checkSum = GetChecksum(filePath); if (checkSum == null) { return(null); } var data = Encoding.UTF8.GetBytes($@"<?xml version=""1.0"" encoding=""UTF-8""?> <SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://www.w3.org/2003/05/soap-envelope"" xmlns:SOAP-ENC=""http://www.w3.org/2003/05/soap-encoding"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:ns2=""ALSongWebServer/Service1Soap"" xmlns:ns1=""ALSongWebServer"" xmlns:ns3=""ALSongWebServer/Service1Soap12""> <SOAP-ENV:Body> <ns1:GetLyric7> <ns1:encData>{EncData}</ns1:encData> <ns1:stQuery> <ns1:strChecksum>{checkSum}</ns1:strChecksum> <ns1:strVersion>3.46</ns1:strVersion> <ns1:strMACAddress></ns1:strMACAddress> <ns1:strIPAddress></ns1:strIPAddress> </ns1:stQuery> </ns1:GetLyric7> </SOAP-ENV:Body> </SOAP-ENV:Envelope>"); var lyric = AlsongLyric.Parse(CallSoap("GetLyric7", data).SelectSingleNode("//*[local-name()='GetLyric7Result']")); return(lyric == null ? null : new AlsongLyric[] { lyric }); } catch { return(null); } }
public static AlsongLyric[] SearchByText(string artist, string title, int page) { try { var data = Encoding.UTF8.GetBytes($@"<?xml version=""1.0"" encoding=""UTF-8""?> <SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://www.w3.org/2003/05/soap-envelope"" xmlns:SOAP-ENC=""http://www.w3.org/2003/05/soap-encoding"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:ns2=""ALSongWebServer/Service1Soap"" xmlns:ns1=""ALSongWebServer"" xmlns:ns3=""ALSongWebServer/Service1Soap12""> <SOAP-ENV:Body> <ns1:GetResembleLyricList2> <ns1:encData>{EncData}</ns1:encData> <ns1:title>{new XText(title).ToString()}</ns1:title> <ns1:artist>{new XText(artist).ToString()}</ns1:artist> <ns1:pageNo>{page}</ns1:pageNo> </ns1:GetResembleLyricList2> </SOAP-ENV:Body> </SOAP-ENV:Envelope>"); return(CallSoap("GetResembleLyricList2", data).SelectNodes("//*[local-name()='ST_SEARCHLYRIC_LIST']")?.Cast <XmlNode>().Select(e => AlsongLyric.Parse(e)).Where(e => e != null).ToArray()); } catch { return(null); } }