Beispiel #1
0
        public async Task<IEnumerable<VkVideo>> Search(string query, int count = 0, int offset = 0, bool hdOnly = false, VkAudioSortType sort = VkAudioSortType.DateAdded, bool adult = false)
        {
            if (_vkontakte.AccessToken == null || string.IsNullOrEmpty(_vkontakte.AccessToken.Token) || _vkontakte.AccessToken.HasExpired)
                throw new Exception("Access token is not valid.");

            if (count > 200)
                throw new ArgumentException("Maximum count is 200.");

            if (query == null)
                throw new ArgumentException("Query must not be null.");

            var parameters = new Dictionary<string, string>();

            parameters.Add("q", query);

            if (hdOnly)
                parameters.Add("hd", "1");

            parameters.Add("sort", ((int)sort).ToString(CultureInfo.InvariantCulture));

            if (adult)
                parameters.Add("adult", "1");

            if (count > 0)
                parameters.Add("count", count.ToString(CultureInfo.InvariantCulture));
            else
                parameters.Add("count", MAX_VIDEO_COUNT.ToString(CultureInfo.InvariantCulture));

            if (offset > 0)
                parameters.Add("offset", offset.ToString(CultureInfo.InvariantCulture));

            parameters.Add("access_token", _vkontakte.AccessToken.Token);

            var response = await new VkRequest(new Uri(VkConst.MethodBase + "video.search"), parameters).Execute();

            if (VkErrorProcessor.ProcessError(response))
                return null;

            if (response["response"].HasValues)
            {
                return from v in response["response"] select VkVideo.FromJson(v);
            }

            return null;
        }
        public async Task <IEnumerable <VkVideo> > Search(string query, int count = 0, int offset = 0, bool hdOnly = false, VkAudioSortType sort = VkAudioSortType.DateAdded, bool adult = false)
        {
            if (_vkontakte.AccessToken == null || string.IsNullOrEmpty(_vkontakte.AccessToken.Token) || _vkontakte.AccessToken.HasExpired)
            {
                throw new Exception("Access token is not valid.");
            }

            if (count > 200)
            {
                throw new ArgumentException("Maximum count is 200.");
            }

            if (query == null)
            {
                throw new ArgumentException("Query must not be null.");
            }

            var parameters = new Dictionary <string, string>();

            parameters.Add("q", query);

            if (hdOnly)
            {
                parameters.Add("hd", "1");
            }

            parameters.Add("sort", ((int)sort).ToString(CultureInfo.InvariantCulture));

            if (adult)
            {
                parameters.Add("adult", "1");
            }

            if (count > 0)
            {
                parameters.Add("count", count.ToString(CultureInfo.InvariantCulture));
            }
            else
            {
                parameters.Add("count", MAX_VIDEO_COUNT.ToString(CultureInfo.InvariantCulture));
            }

            if (offset > 0)
            {
                parameters.Add("offset", offset.ToString(CultureInfo.InvariantCulture));
            }

            parameters.Add("access_token", _vkontakte.AccessToken.Token);

            var response = await new VkRequest(new Uri(VkConst.MethodBase + "video.search"), parameters).Execute();

            if (VkErrorProcessor.ProcessError(response))
            {
                return(null);
            }

            if (response["response"].HasValues)
            {
                return(from v in response["response"] select VkVideo.FromJson(v));
            }

            return(null);
        }
Beispiel #3
0
        /// <summary>
        /// Search audios.
        /// See also <see cref="http://vk.com/dev/audio.search"/>
        /// </summary>
        /// <param name="query">Query</param>
        /// <param name="count">Count</param>
        /// <param name="offset">Offset</param>
        /// <param name="sort">Sort</param>
        /// <param name="withLyricsOnly">If true will show only audios with lyrics</param>
        /// <param name="autoFix">If true will fix incorrect queries</param>
        /// <param name="artistOnly">If true will search only by artist</param>
        /// <param name="ownOnly">If true will search only in audios of current user</param>
        /// <returns></returns>
        public async Task <VkItemsResponse <VkAudio> > Search(string query, int count = 0, int offset       = 0, VkAudioSortType sort = VkAudioSortType.DateAdded, bool withLyricsOnly = false, bool autoFix = true,
                                                              bool artistOnly         = false, bool ownOnly = false)
        {
            if (_vkontakte.AccessToken == null || string.IsNullOrEmpty(_vkontakte.AccessToken.Token) || _vkontakte.AccessToken.HasExpired)
            {
                throw new Exception("Access token is not valid.");
            }

            if (count > MAX_AUDIO_COUNT)
            {
                throw new ArgumentException("Maximum count is " + MAX_AUDIO_COUNT + ".");
            }

            if (query == null)
            {
                throw new ArgumentException("Query must not be null.");
            }

            var parameters = new Dictionary <string, string>();

            parameters.Add("q", query);

            if (autoFix)
            {
                parameters.Add("auto_complete", "1");
            }

            parameters.Add("sort", ((int)sort).ToString(CultureInfo.InvariantCulture));

            if (withLyricsOnly)
            {
                parameters.Add("lyrics", "1");
            }

            if (artistOnly)
            {
                parameters.Add("performer_only", "1");
            }

            if (ownOnly)
            {
                parameters.Add("search_own", "1");
            }

            if (count > 0)
            {
                parameters.Add("count", count.ToString(CultureInfo.InvariantCulture));
            }
            else
            {
                parameters.Add("count", MAX_AUDIO_COUNT.ToString(CultureInfo.InvariantCulture));
            }

            if (offset > 0)
            {
                parameters.Add("offset", offset.ToString(CultureInfo.InvariantCulture));
            }

            _vkontakte.SignMethod(parameters);

            var response = await new VkRequest(new Uri(VkConst.MethodBase + "audio.search"), parameters).Execute();

            if (VkErrorProcessor.ProcessError(response))
            {
                return(null);
            }

            if (response.SelectToken("response.items") != null)
            {
                return(new VkItemsResponse <VkAudio>((from a in response["response"]["items"] where a.HasValues && !string.IsNullOrEmpty(a["url"].Value <string>()) select VkAudio.FromJson(a)).ToList(),
                                                     response["response"]["count"].Value <int>()));
            }

            return(VkItemsResponse <VkAudio> .Empty);
        }
Beispiel #4
0
        public async Task <IEnumerable <VkAudio> > Search(string query, int count = 0, int offset = 0, VkAudioSortType sort = VkAudioSortType.DateAdded, bool withLyricsOnly = false, bool autoFix = true)
        {
            if (count > 200)
            {
                throw new ArgumentException("Maximum count is 200.");
            }
            if (query == null)
            {
                throw new ArgumentException("Query must not be null.");
            }
            Dictionary <string, string> dictionary = new Dictionary <string, string>();

            dictionary.Add("q", query);
            if (autoFix)
            {
                dictionary.Add("auto_complete", "1");
            }
            Dictionary <string, string> arg_98_0 = dictionary;
            string arg_98_1 = "sort";
            int    num      = (int)sort;

            arg_98_0.Add(arg_98_1, num.ToString(CultureInfo.InvariantCulture));
            if (withLyricsOnly)
            {
                dictionary.Add("lyrics", "1");
            }
            if (count > 0)
            {
                dictionary.Add("count", count.ToString(CultureInfo.InvariantCulture));
            }
            else
            {
                dictionary.Add("count", 200.ToString(CultureInfo.InvariantCulture));
            }
            if (offset > 0)
            {
                dictionary.Add("offset", offset.ToString(CultureInfo.InvariantCulture));
            }
            dictionary.Add("access_token", Vkontakte.Instance.AccessToken.Token);
            JObject jObject = await new VkRequest(new Uri("https://api.vk.com/method/audio.search"), dictionary, "GET").Execute();
            IEnumerable <VkAudio> result;

            if (VkErrorProcessor.ProcessError(jObject))
            {
                result = null;
            }
            else
            {
                if (jObject["response"].HasValues)
                {
                    result = Enumerable.Select <JToken, VkAudio>(Enumerable.Where <JToken>(jObject["response"], (JToken a) => a.HasValues && !string.IsNullOrEmpty(a["url"].Value <string>())), (JToken a) => VkAudio.FromJson(a));
                }
                else
                {
                    result = null;
                }
            }
            return(result);
        }
Beispiel #5
0
        /// <summary>
        /// Search audios.
        /// See also <see cref="http://vk.com/dev/audio.search"/>
        /// </summary>
        /// <param name="query">Query</param>
        /// <param name="count">Count</param>
        /// <param name="offset">Offset</param>
        /// <param name="sort">Sort</param>
        /// <param name="withLyricsOnly">If true will show only audios with lyrics</param>
        /// <param name="autoFix">If true will fix incorrect queries</param>
        /// <param name="artistOnly">If true will search only by artist</param>
        /// <param name="ownOnly">If true will search only in audios of current user</param>
        /// <returns></returns>
        public async Task<VkItemsResponse<VkAudio>> Search(string query, int count = 0, int offset = 0, VkAudioSortType sort = VkAudioSortType.DateAdded, bool withLyricsOnly = false, bool autoFix = true,
            bool artistOnly = false, bool ownOnly = false)
        {
            if (_vkontakte.AccessToken == null || string.IsNullOrEmpty(_vkontakte.AccessToken.Token) || _vkontakte.AccessToken.HasExpired)
                throw new Exception("Access token is not valid.");

            if (count > MAX_AUDIO_COUNT)
                throw new ArgumentException("Maximum count is " + MAX_AUDIO_COUNT + ".");

            if (query == null)
                throw new ArgumentException("Query must not be null.");

            var parameters = new Dictionary<string, string>();

            parameters.Add("q", query);

            if (autoFix)
                parameters.Add("auto_complete", "1");

            parameters.Add("sort", ((int)sort).ToString(CultureInfo.InvariantCulture));

            if (withLyricsOnly)
                parameters.Add("lyrics", "1");

            if (artistOnly)
                parameters.Add("performer_only", "1");

            if (ownOnly)
                parameters.Add("search_own", "1");

            if (count > 0)
                parameters.Add("count", count.ToString(CultureInfo.InvariantCulture));
            else
                parameters.Add("count", MAX_AUDIO_COUNT.ToString(CultureInfo.InvariantCulture));

            if (offset > 0)
                parameters.Add("offset", offset.ToString(CultureInfo.InvariantCulture));

            _vkontakte.SignMethod(parameters);

            var response = await new VkRequest(new Uri(VkConst.MethodBase + "audio.search"), parameters).Execute();

            if (VkErrorProcessor.ProcessError(response))
                return null;

            if (response.SelectToken("response.items") != null)
            {
                return new VkItemsResponse<VkAudio>((from a in response["response"]["items"] where a.HasValues && !string.IsNullOrEmpty(a["url"].Value<string>()) select VkAudio.FromJson(a)).ToList(),
                    response["response"]["count"].Value<int>());
            }

            return VkItemsResponse<VkAudio>.Empty;
        }
Beispiel #6
0
        /// <summary>
        /// Search audios.
        /// See also <see cref="http://vk.com/dev/audio.search"/>
        /// </summary>
        /// <param name="query">Query</param>
        /// <param name="count">Count</param>
        /// <param name="offset">Offset</param>
        /// <param name="sort">Sort</param>
        /// <param name="withLyricsOnly">If true will show only audios with lyrics</param>
        /// <param name="autoFix">If true will fix incorrect queries</param>
        /// <param name="artistOnly">If true will search only by artist</param>
        /// <param name="ownOnly">If true will search only in audios of current user</param>
        /// <returns></returns>
        public async Task <VkItemsResponse <VkAudio> > Search(string query, int count = 0, int offset       = 0, VkAudioSortType sort = VkAudioSortType.DateAdded, bool withLyricsOnly = false, bool autoFix = true,
                                                              bool artistOnly         = false, bool ownOnly = false)
        {
            if (count > MAX_AUDIO_COUNT)
            {
                throw new ArgumentException("Maximum count is " + MAX_AUDIO_COUNT);
            }

            if (query == null)
            {
                throw new ArgumentException("Query must not be null.");
            }

            var parameters = new Dictionary <string, string>();

            parameters["q"] = query;

            if (autoFix)
            {
                parameters["auto_complete"] = "1";
            }

            parameters["sort"] = ((int)sort).ToString(CultureInfo.InvariantCulture);

            if (withLyricsOnly)
            {
                parameters["lyrics"] = "1";
            }

            if (artistOnly)
            {
                parameters["performer_only"] = "1";
            }

            if (ownOnly)
            {
                parameters["search_own"] = "1";
            }

            if (count > 0)
            {
                parameters["count"] = count.ToString(CultureInfo.InvariantCulture);
            }
            else
            {
                parameters["count"] = MAX_AUDIO_COUNT.ToString(CultureInfo.InvariantCulture);
            }

            if (offset > 0)
            {
                parameters["offset"] = offset.ToString(CultureInfo.InvariantCulture);
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "audio.search", parameters);

            if (response.SelectToken("response.items") != null)
            {
                return(new VkItemsResponse <VkAudio>((from a in response["response"]["items"] where a.HasValues && !string.IsNullOrEmpty(a["url"].Value <string>()) select VkAudio.FromJson(a)).ToList(),
                                                     response["response"]["count"].Value <int>()));
            }

            return(VkItemsResponse <VkAudio> .Empty);
        }