示例#1
0
        //Метод нахождения песни по словам в ней
        public IList <Track> FindSongByLyrics(string lyrics)
        {
            JSONFormatter formatter = new JSONFormatter();

            //Создаем список кортежей, в которых будет храниться только полезная информация: название трека, альбом и исполнитель
            IList <Track> songList = new List <Track>();

            //Формируем строку запроса
            string finalURL = rootURL + "track.search?format=jsonp&callback=callback&q_lyrics="
                              + WebUtility.UrlEncode(lyrics) + "&s_track_rating=desc&quorum_factor=1&apikey=" + musixmatchToken;

            //Создаём сам запрос с методом GET
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(finalURL);

            request.Method = "GET";

            string answer = string.Empty;

            try
            {
                //Отправляем запрос и считываем ответ сервиса
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                    using (Stream stream = response.GetResponseStream())
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            answer = reader.ReadToEnd();
                        }
            }
            catch (Exception e)
            {
                Console.WriteLine("При попытке соединения с API Musixmatch что-то пошло не так!");
                Console.WriteLine(e.Message);
                return(null);
            }


            List <Track> tracks = formatter.ParseTracks(answer, 7);

            if (tracks == null)
            {
                return(null);
            }

            //Добавляем в список кортеж о каждой найденой песне, если в списке объектов меньше 7
            foreach (Track track in tracks)
            {
                songList.Add(track);
            }

            return(songList);
        }
示例#2
0
        public void ListenChat()
        {
            JSONFormatter formatter = new JSONFormatter();

            //получение сдвига
            int    offset       = GetOffset();
            string offsetString = "?offset=" + GetOffset().ToString();
            string methodUrl    = baseUrl + telegramToken + "/getUpdates";

            //частота запросов
            int       requestFrequency = 1000;
            Stopwatch sw = new Stopwatch();

            sw.Start();

            string responseString;

            while (true)
            {
                if (sw.ElapsedMilliseconds % requestFrequency != 0)
                {
                    continue;
                }

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(methodUrl + offsetString);
                request.Method = "GET";
                //получение списка непрочитанных сообщений
                try
                {
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    Stream          stream   = response.GetResponseStream();
                    StreamReader    reader   = new StreamReader(stream);
                    responseString = reader.ReadToEnd();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Невозможно получить ответ от Телеграма");
                    Console.WriteLine(e.Message);
                    break;
                }

                int updateId = offset;

                //список всех непрочитанных сообщений в джейсоне
                List <TelegramMessage> currentMessages = formatter.ParseLastMessages(responseString);
                if (currentMessages == null)
                {
                    continue;
                }


                foreach (TelegramMessage message in currentMessages)
                {
                    updateId = message.UpdateId;
                    SendMessages(telegramUserInteraction.PrepareAnswer(message.Chat, message.SenderName, message.Text));
                }

                //обновление и сохранение оffсета
                offset = updateId + 1;
                SetOffset(offset);
                offsetString = "?offset=" + GetOffset().ToString();
            }
        }