Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }