Как стать автором
Поиск
Написать публикацию
Обновить

Играем любимое радио в фоне с помощью собственного велосипеда на C#

Я очень не люблю, когда в браузере открыты новые вкладки, а тем более окна. Соответственно, окно онлайн-радио меня раздражало.



В общем, терпел я это, терпел, но в один прекрасный день с этим должно быть покончено. Открываю любимую Visual Studio, создаю проект — я решил писать просто консольное приложение, ибо все, что мне от нее надо — это стримминг музыки из определенного канала.
Подопытным каналом у нас будет radiocafe. Первое, что надо — это ссылка именно на аудиопоток. Где ж его взять?
Я поступил так: открыл инструменты разработчика и путем научного тыка нашел линк, который подозрительно напоминал мне именно линк радиопотока; вот он.

А дальше код


Но как заставить нашу программку играть нужный нам канал? Сначала добавим using WMPLib; в начало (еще стоит его добавить в references — он ведь не подключен). А дальше — дело техники:
 Console.BackgroundColor = ConsoleColor.DarkBlue; // это я так, побаловался
 Console.ForegroundColor = ConsoleColor.Green;
 WindowsMediaPlayer WMPs = new WMPLib.WindowsMediaPlayer(); //создаётся плеер 
 WMPs.settings.volume = 100; // громкость на всю
 WMPs.URL = "http://audio.rambler.ru/action/play.m3u?id=321&uid=PYb8BYJ/OFFGpwAAAdx4KgB"; // говорим нашему медиа плееру, что играть
 WMPs.controls.play(); //воспроизводим 
 Time(); // это метод таймера - решил немного порисовать в консоли

Запускаем — да, работает. Вначале я, ламер, вместо таймера поставил Tread.Sleep, и долго удивлялся, почему через n-ое время музыка останавливается…
Вот так вот, теперь можно это все добавлять в автозагрузку и не утомлять себя ручным запуском.

Весь проект выглядит так:
Радио
using WMPLib;
using System;
using System.Threading;
using System.Text;
    class Program
    {
        Random random = new Random();
        StringBuilder s = new StringBuilder();
        static void Main()
        {
            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.ForegroundColor = ConsoleColor.Green;
            WindowsMediaPlayer WMPs = new WMPLib.WindowsMediaPlayer(); //создаётся плеер 
            WMPs.settings.volume = 100;
            WMPs.URL = "http://audio.rambler.ru/action/play.m3u?id=321&uid=PYb8BYJ/OFFGpwAAAdx4KgB";
            WMPs.controls.play(); //воспроизводим 
            Time();
            Console.ReadKey();
        }
        static void Time()
        {

            Timer timer = new Timer(ConsolWriting, null, 0 ,800);
        }
        
        static void ConsolWriting(object data)
        {
            Program program = new Program();
                for (int i = 0; i < 80; i++)
                {
                    if (program.random.Next(1, 1000) % 2 == 0)
                    {
                        program.s.Append("=");
                    }
                    else
                    {
                        program.s.Append(" ");
                    }
                }
                Console.WriteLine(program.s);   
        }
    }

Собранное приложение
P. S да, я вначале думал сделать на Java, но после часа мучений с поиском инфы плюнул и пошел на теплый, ламповый C#.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.