internal static string escapeMetaString(string p, QabuzeAlbum album, QabuzeSong song) { p = escapeAlbumString(@p, album); p = escapeSongString(@p, song); //remove illegal characters: p = Regex.Replace(@p, "/", "", RegexOptions.IgnoreCase); p = Regex.Replace(@p, ":", "", RegexOptions.IgnoreCase); p = Regex.Replace(@p, "'", "", RegexOptions.IgnoreCase); p = Regex.Replace(@p, "<", "", RegexOptions.IgnoreCase); p = Regex.Replace(@p, ">", "", RegexOptions.IgnoreCase); p = @p.Replace("*", ""); p = @p.Replace("|", ""); p = @p.Replace("?", ""); p = @p.Replace("[", ""); p = @p.Replace("]", ""); p = @p.Replace("\"", ""); if ((QabuzeAPI.Config.getInstance().outputFolder.Length + p.Length) >= 245) { p = p.Substring(0, (245 - QabuzeAPI.Config.getInstance().outputFolder.Length)) + ".flac"; } return(p); }
internal static string escapeSongString(string p, QabuzeSong song) { p = Regex.Replace(@p, "%ARTIST%", song.artist, RegexOptions.IgnoreCase); p = Regex.Replace(@p, "%GENRE%", song.genre, RegexOptions.IgnoreCase); p = Regex.Replace(@p, "%TITLE%", song.title, RegexOptions.IgnoreCase); p = Regex.Replace(@p, "%ALBUM%", song.album, RegexOptions.IgnoreCase); p = Regex.Replace(@p, "%TRACKNUMBER%", song.track_number.ToString(), RegexOptions.IgnoreCase); p = Regex.Replace(@p, "%DISKNUMBER%", song.media_number.ToString(), RegexOptions.IgnoreCase); p = Regex.Replace(@p, "%DURATION%", song.duration.ToString(), RegexOptions.IgnoreCase); p = Regex.Replace(@p, "%EXT%", "flac", RegexOptions.IgnoreCase); return(p); }
public static QabuzeSong querySong(string id) { List <KeyValuePair <string, string> > data = new List <KeyValuePair <string, string> >(); data.Add(new KeyValuePair <string, string>("track_id", id)); for (int credIndex = 0; credIndex < QabuzeAPI.Config.getInstance().accounts.Count; credIndex++) { QabuzeSong tmp = (QabuzeSong)QabuzeAPI.PerformRequest(QabuzeAPI.instance.BuildRequest("track/get", data, false, credIndex)); if (tmp != null) { return(tmp); } } return(null); }
public static Object PerformRequest(string url) { string response; try { response = (new WebClient()).DownloadString(url); } catch (WebException e) { HttpWebResponse _response = (System.Net.HttpWebResponse)e.Response; Console.WriteLine("URL \"" + url + "\" has come back with the following error: " + _response.StatusCode); return(null); } JObject obj = JObject.Parse(response); #region Album if (obj["tracks_count"] != null) { QabuzeAlbum objReturn; Console.WriteLine("Is Album"); objReturn = new QabuzeAlbum(); //QabuzeAlbum objReturn = new QabuzeAlbum(); objReturn.title = (string)obj["title"]; objReturn.id = (string)obj["id"]; objReturn.genre = (string)obj["genre"]["name"]; objReturn.artist = (string)obj["artist"]["name"]; objReturn.artistID = (int)obj["artist"]["id"]; objReturn.description = (string)obj["description"]; objReturn.coverURL = (string)obj["image"]["large"]; objReturn.label = (string)obj["label"]["name"]; objReturn.track_count = (int)obj["tracks_count"]; objReturn.duration = (int?)obj["duration"]; objReturn.release_timestamp = (int?)obj["released_at"]; int amt_tracks = (int)obj["tracks"]["total"]; for (int i = 0; i < amt_tracks; i++) { JObject track = (JObject)obj["tracks"]["items"][i]; try { Console.WriteLine("Adding Track #" + i + " with ID " + track["id"] + "..."); QabuzeSong song = new QabuzeSong( (string)track["id"], (string)track["title"], (string)track["performer"]["name"], (string)obj["id"], (int)track["duration"], (int)track["track_number"], (int)track["media_number"], (string)obj["title"], (string)obj["genre"]["name"] ); KeyValuePair <int, QabuzeSong> kvp = new KeyValuePair <int, QabuzeSong>(i, song); objReturn.songs.Add(kvp); } catch (Exception e) { Console.Error.WriteLine("Whoops. Track #" + i + " with ID " + track["id"] + " could not be added"); } } string start_date = "9999-12-31", end_date = "9999-12-31"; /* try * { * start_date = (string)obj["rights"]["stream"][0]["start_date"]; * * } * catch (Exception) * {*/ try { start_date = Utils.UnixTimeStampToDateTime((int)obj["streamable_at"]).ToString(); } catch (Exception) { } /* } * try * { * end_date = (string)obj["rights"]["stream"][0]["end_date"]; * * } * catch (Exception) { } */ DateTime d_start = DateTime.Parse(start_date).ToUniversalTime(); DateTime d_end = DateTime.Parse(end_date).ToUniversalTime(); DateTime d_curr = DateTime.UtcNow; bool c_start = d_start > d_curr; bool c_end = d_end > d_curr; if (c_start) { objReturn.availableForStreaming = false; } else { objReturn.availableForStreaming = true; } if (!c_end) { objReturn.availableForStreaming = false; } Console.WriteLine("May stream from " + start_date + " until " + end_date); objReturn.availableFrom = d_start; objReturn.availableUntil = d_end; return(objReturn); #endregion #region Album from Search } else if (obj["albums"] != null) { Console.WriteLine("Is Album Search"); List <QabuzeAlbum> objReturn = new List <QabuzeAlbum>(); //QabuzeAlbum objReturn = new QabuzeAlbum(); int limit = (int)obj["albums"]["limit"]; int offset = (int)obj["albums"]["offset"]; int total = (int)obj["albums"]["total"]; int upperLimit = ((offset + limit) > total) ? total : (offset + limit); for (int i = 0; i < upperLimit - offset; i++) { JObject jalbum = (JObject)obj["albums"]["items"][i]; QabuzeAlbum album = new QabuzeAlbum(); album.title = (string)jalbum["title"]; album.id = (string)jalbum["id"]; album.genre = (string)jalbum["genre"]["name"]; album.artist = (string)jalbum["artist"]["name"]; album.artistID = (int?)jalbum["artist"]["id"]; album.description = (string)jalbum["description"]; album.coverURL = (string)jalbum["image"]["large"]; album.label = (string)jalbum["label"]["name"]; album.track_count = (int)jalbum["tracks_count"]; objReturn.Add(album); } return(objReturn); #endregion #region Track } else if (obj["track_number"] != null) { Console.WriteLine("Is Track"); QabuzeSong objReturn = new QabuzeSong( (string)obj["id"], (string)obj["title"], (string)obj["performer"]["name"], (string)obj["album"]["id"], (int)obj["duration"], (int)obj["track_number"], (int)obj["media_number"], (string)obj["album"]["title"], (string)obj["album"]["genre"]["name"] ); return(objReturn); #endregion #region Artist } else if (obj["albums_as_primary_artist_count"] != null) { Console.WriteLine("Is Artist"); QabuzeArtist objReturn = new QabuzeArtist(); objReturn.albums_as_primary_artist_count = (int)obj["albums_as_primary_artist_count"]; objReturn.id = (int)obj["id"]; objReturn.name = (string)obj["name"]; objReturn.imageURL = (string)obj["image"]["mega"]; if (obj["biography"] != null) { objReturn.biography = (string)obj["biography"]["content"]; } return(objReturn); } #endregion // Console.WriteLine(response); return(null); }