{"id":309,"date":"2017-01-21T13:13:25","date_gmt":"2017-01-21T15:13:25","guid":{"rendered":"http:\/\/pedrobertoleti.com.br\/?p=309"},"modified":"2017-09-02T06:11:36","modified_gmt":"2017-09-02T09:11:36","slug":"como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux","status":"publish","type":"post","link":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/","title":{"rendered":"Como fazer seu pr\u00f3prio receptor de r\u00e1dio on-line no Linux"},"content":{"rendered":"<p style=\"text-align: justify;\">As r\u00e1dios on-line n\u00e3o s\u00e3o nenhuma novidade, por\u00e9m s\u00e3o recursos muito interessantes (sobretudo \u00e0queles que sempre est\u00e3o querendo conhecer novos estilos musicais e culturas diferentes). Para os padr\u00f5es de conectividade atuais, \u00e9 perfeitamente poss\u00edvel ouvir uma r\u00e1dio on-line com uma conex\u00e3o de Internet comum. Este post ensinar\u00e1 voc\u00ea a construir seu pr\u00f3prio player de r\u00e1dio on-line no Linux!<\/p>\n<h2 style=\"text-align: justify;\">Pr\u00e9-requisitos<\/h2>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Para reproduzir o projeto proposto, os seguintes pr\u00e9-requisitos s\u00e3o necessarios:<\/p>\n<ul>\n<li style=\"text-align: justify;\">Possuir algum dispositivo com acesso \u00e0 Internet, sa\u00edda de som e com alguma distribui\u00e7\u00e3o Linux instalada (ou at\u00e9 mesmo uma m\u00e1quina virtual Linux). Este projeto foi testado com sucesso em distribui\u00e7\u00f5es derivadas da Debian.<\/li>\n<li style=\"text-align: justify;\">Conhecimentos b\u00e1sicos de Python<\/li>\n<li style=\"text-align: justify;\">Conhecimentos b\u00e1sicos de Linux<\/li>\n<li style=\"text-align: justify;\">Conhecimentos b\u00e1sicos de algum editor de texto em modo terminal do Linux (exemplo: VI e Nano)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Estrat\u00e9gia do projeto<\/h2>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Este projeto \u00e9, na verdade, um controlador de um player consagrado do Linux. O player em quest\u00e3o chama-se <a href=\"http:\/\/www.mplayerhq.hu\/design7\/news.html\">mplayer<\/a>. Trata-se de um player muito leve e vers\u00e1til para o Linux. Ou seja, o projeto se comunica com o player e este (rodando em &#8220;background&#8221;) obedece aos comandos desejados. Para isto ser poss\u00edvel, o mplayer opera em modo slave.<\/p>\n<p style=\"text-align: justify;\">Os comandos s\u00e3o trafegados\u00a0utilizando um recurso chamado\u00a0<strong>named pipes<\/strong>. Isto permite que\u00a0processos distintos\u00a0no Linux se comuniquem \/ enviem mensagens uns aos outros, ficando a cargo do sistema operacional (neste caso, o kernel do Linux) gerenciar a transfer\u00eancias destas mensagens. No caso espec\u00edfico deste projeto, as mensagens trafegadas entre o receptor e o mplayer s\u00e3o os comandos que o mplayer aceita em modo slave, e s\u00e3o escritas e lidas em arquivos FIFO salvos no diret\u00f3rio \/tmp.<\/p>\n<p style=\"text-align: justify;\">\u00a0[stextbox id=&#8221;info&#8221; caption=&#8221;Dica:&#8221; color=&#8221;000000&#8243; bcolor=&#8221;FBFF77&#8243; bgcolor=&#8221;FBFF77&#8243; bgcolorto=&#8221;FBFF77&#8243;]Sempre que for fazer este tipo de comunica\u00e7\u00e3o entre processos,\u00a0 o arquivo FIFO \u00e9 mapeado em RAM, independente de onde voc\u00ea cri\u00e1-lo (ou seja, ele n\u00e3o pertence de verdade ao filesystem \/ n\u00e3o \u00e9 um arquivo de fato). Essa caracter\u00edstica \u00e9 default do Linux, e oferece desta forma muito mais velocidade de escrita e leitura.<br \/>\nAl\u00e9m disso, em se tratando\u00a0de Linux embarcado, isto \u00e9 essencial para evitar m\u00faltiplas escritas em mem\u00f3ria Flash (o que \u00e9 &#8220;mortal&#8221; para este tipo de sistema, uma vez que pode levar \u00e0 falha completa da Flash em pouco tempo devido ao limite de escritas que toda mem\u00f3ria Flash possui).[\/stextbox]<\/p>\n<p style=\"text-align: justify;\">Para uma refer\u00eancia completa dos comandos do mplayer em modo slave, clique <a href=\"http:\/\/www.mplayerhq.hu\/DOCS\/tech\/slave.txt\">aqui<\/a>.<\/p>\n<h2><\/h2>\n<h2>Preparando o terreno<\/h2>\n<p>&nbsp;<\/p>\n<p>Antes de fazer o projeto\u00a0propriamente dito, s\u00e3o necess\u00e1rias algumas etapas pr\u00e9vias:<\/p>\n<h3>&#8211; Instala\u00e7\u00e3o do mplayer<\/h3>\n<p>Para instalar o mplayer, basta utilizar o comando abaixo:<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:sh decode:true\">sudo apt-get install mplayer2<\/pre>\n<p>&nbsp;<\/p>\n<h3>&#8211; Escolha das r\u00e1dios<\/h3>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Uma das formas do mplayer tocar uma r\u00e1dio on-line \u00e9 atrav\u00e9s do link de sua playlist (arquivo .pls). Portanto, ao escolher suas r\u00e1dios a serem ouvidas, procure pela playlist em formato .pls. Abaixo h\u00e1 alguns exemplos:<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>http:\/\/yp.shoutcast.com\/sbin\/<strong>tunein-station.pls<\/strong>?id=1057392<\/li>\n<li>http:\/\/panel3.serverhostingcenter.com:2199\/tunein\/<strong>radiobackstage1.pls<\/strong><\/li>\n<li>http:\/\/yp.shoutcast.com\/sbin\/<strong>tunein-station.pls<\/strong>?id=1425714<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Dica: um \u00f3timo lugar para buscar r\u00e1dios on-line \u00e9 o <a href=\"http:\/\/www.shoutcast.com\">Shoutcast<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2>Testando o mplayer junto com suas esta\u00e7\u00f5es de r\u00e1dio online<\/h2>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Antes de partir para o projeto em si, \u00e9 prudente verificar se o mplayer toca corretamente sua r\u00e1dio on-line. Este teste \u00e9 necess\u00e1rio pois pode ser que a r\u00e1dio esteja temporariamente fora do ar (melhor saber isso antes de quebrar a cabe\u00e7a com um problema que n\u00e3o est\u00e1 &#8220;do seu lado&#8221;, concorda?).<\/p>\n<p style=\"text-align: justify;\">A forma de fazer isso, considerando um exemplo de r\u00e1dio on-line,\u00a0pode ser vista abaixo:<\/p>\n<pre class=\"lang:sh decode:true \">mplayer -playlist http:\/\/panel3.serverhostingcenter.com:2199\/tunein\/radiobackstage1.pls<\/pre>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Feito isso, o mplayer inicializar\u00e1 e tocar\u00e1 a r\u00e1dio on-line. Para sair do mplayer, basta pressionar a tecla &#8216;q&#8217; (ou interromper a aplica\u00e7\u00e3o pressionado Ctrl + C).<\/p>\n<p>&nbsp;<\/p>\n<h2>Talk is cheap. Show me the code!<\/h2>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Chegou a hora do c\u00f3digo! O projeto foi desenvolvido em Python. O c\u00f3digo-fonte do projeto do receptor de r\u00e1dio online pode ser visto abaixo.<br \/>\nSe preferir, acesse o c\u00f3digo-fonte no meu GitHub clicando <a href=\"https:\/\/github.com\/phfbertoleti\/ReceptorRadioOnlineLinux\">aqui<\/a>.<\/p>\n<pre class=\"lang:python decode:true\">import os\r\nimport sys\r\nimport subprocess\r\nimport shlex\r\n\r\n#Variaveis globais\r\nCaminhoArquivoControle=\"\/tmp\/ControleRadio\"\r\nComandoMPlayer = \"mplayer -input file=\/tmp\/ControleRadio -slave -playlist \"\r\n\r\n#Variaveis das playlists\r\nPlaylists=[]        #Array que contem todas as playlists\r\nNumeroPlaylists = 0 #quantidade de playlists\r\nNomesRadios=[]      #Nomes das radios \/ playlists\r\nPlaylistEscolhida=0 #Indice da playlist escolhida\r\n\r\nNomeRadio1=\"Radio ShoutCast\"\r\nNomeRadio2=\"Radio Backstage (www.radiobackstage.com)\"\r\n\r\n#Funcao: inicia lista de playlists\r\n#Parametros: nenhum\r\n#Retorno: nenhum\r\ndef IniciaListaPlaylists():\r\n\tglobal Playlists\r\n\tglobal NomesRadios\r\n\tglobal NumeroPlaylists\r\n\r\n\t#playlist 1\r\n\tPlaylists.append(\"http:\/\/yp.shoutcast.com\/sbin\/tunein-station.pls?id=1057392\")\r\n\tNomesRadios.append(\"Radio Shoutcast\")\r\n\r\n\t#playlist 2\r\n\tPlaylists.append(\"http:\/\/panel3.serverhostingcenter.com:2199\/tunein\/radiobackstage1.pls\")\r\n\tNomesRadios.append(\"Radio Backstage\")\r\n\r\n\t#playlist 3\r\n\tPlaylists.append(\"http:\/\/yp.shoutcast.com\/sbin\/tunein-station.pls?id=1425714\")\r\n\tNomesRadios.append(\"Techno\")\r\n\r\n\tNumeroPlaylists=3\r\n\treturn\r\n\r\n#Funcao: Toca a plsylist escolhida\r\n#Parametros: nenhum\r\n#Retorno: nenhum\r\ndef TocaPlaylist(PEscolhida):\r\n\tglobal Playlists\r\n\tglobal ComandoMPlayer\r\n\r\n\tos.system(\"pkill -f mplayer\")\r\n\tComandoPlaylist = ComandoMPlayer + Playlists[PEscolhida]\r\n\t\r\n\t#inicia processo e direciona o stdout para \/dev\/null\r\n\tFNULL = open(os.devnull,'w')\r\n\targs = shlex.split(ComandoPlaylist)\r\n\tInterfaceMPlayer = subprocess.Popen(args, shell=False, stdin=subprocess.PIPE, stdout=FNULL, stderr=subprocess.STDOUT)\r\n\r\n\t#ajusta volume em 50%\r\n\tos.system('echo \"volume 50\" &gt;'+CaminhoArquivoControle)\r\n\r\n\treturn\r\n\r\n\r\n#Funcao: cria arquivo de controle do player (MPlayer)\r\n#Parametros: nenhum\r\n#Retorno: nenhum\r\ndef CriaArquivoControle():\r\n\t#se arquivo ja existe, nada e feito.\r\n\tif (os.path.exists(CaminhoArquivoControle)):\r\n\t\treturn\r\n\r\n\ttry:\r\n\t\tos.mkfifo(CaminhoArquivoControle)\r\n\texcept:\r\n\t\tprint \"Falha ao criar arquivo de controle. Por favor, verifique o caminho de criacao do mesmo.\"\r\n\t\texit(1)\r\n\r\n#Funcao: escreve na tela o menu de opcoes\r\n#Parametros: nenhum\r\n#Retorno:  opcao escolhida\r\ndef MostraMenuDeOpcoes():\r\n\tglobal NomesRadios\r\n\tglobal PlaylitsEscolhida\r\n\r\n\tprint \"-----------------------\"\r\n\tprint \"    Menu de opcoes     \"\r\n\tprint \"-----------------------\"\r\n\tprint \"Estacao: \"+NomesRadios[PlaylistEscolhida]\r\n\tprint \" \"\r\n\tprint \"&lt;p&gt; Play\/pause\"\r\n\tprint \"&lt;s&gt; Sair\"\r\n\tprint \"&lt;+&gt; Sobe volume\"\r\n\tprint \"&lt;-&gt; Desce volume\"\r\n\tprint \"&lt;d&gt; Proxima estacao\"\r\n\tprint \"&lt;a&gt; Estacao anterior\"\r\n\tprint \" \"\r\n\topcao = raw_input(\"Opcao&gt; \")\r\n\r\n\treturn opcao\r\n\r\n\r\n#------------------\r\n#Programa principal\r\n#------------------\r\n\r\n#Inicializa lista de playlists\r\nIniciaListaPlaylists()\r\n\r\n#Cria arquivo de controle e inicia processo MPlayer\r\nCriaArquivoControle()\r\n\r\n#Toca playlist 1\r\nTocaPlaylist(PlaylistEscolhida)\r\n\r\nwhile True:\r\n\ttry:\r\n\t\tos.system(\"clear\")\r\n\t\tTecla = MostraMenuDeOpcoes()\r\n\r\n\t\tif (Tecla == \"p\"):\r\n\t\t\tprint \"[ACAO] Play\/Pause\"\r\n\t\t\tos.system('echo \"pause\" &gt; '+CaminhoArquivoControle)\r\n\r\n\t\tif (Tecla == \"s\"):\r\n\t\t\tprint \"[ACAO] Sair\"\r\n\t\t\tos.system('echo \"quit 0\" &gt; '+CaminhoArquivoControle)\r\n\t\t\tos.system(\"pkill -f mplayer\")\r\n\t\t\texit(1)\r\n\r\n\t\tif (Tecla == \"+\"):\r\n\t\t\tprint \"[ACAO] Sobe volume\"\r\n\t\t\tos.system('echo \"volume +10\" &gt; '+CaminhoArquivoControle)\r\n\r\n\t\tif (Tecla == \"-\"):\r\n\t\t\tprint \"[ACAO] Desce volume\"\r\n\t\t\tos.system('echo \"volume -10\" &gt; '+CaminhoArquivoControle)\r\n\r\n\t\tif (Tecla == \"d\"):\r\n\t\t\tprint \"[ACAO] Proxima estacao\"\r\n\t\t\tPlaylistEscolhida = PlaylistEscolhida + 1\r\n\t\t\tif (PlaylistEscolhida == NumeroPlaylists):\r\n\t\t\t\tPlaylistEscolhida = 0\r\n\t\t\tTocaPlaylist(PlaylistEscolhida)\r\n\r\n\t\tif (Tecla == \"a\"):\r\n\t\t\tprint \"[ACAO] Estacao anterior\"\r\n\t\t\tPlaylistEscolhida = PlaylistEscolhida - 1\r\n\t\t\tif (PlaylistEscolhida &lt; 0):\r\n\t\t\t\tPlaylistEscolhida = NumeroPlaylists-1\r\n\t\t\tTocaPlaylist(PlaylistEscolhida)\r\n\r\n\r\n\texcept (KeyboardInterrupt):\r\n\t\tprint \"Aplicacao sendo encerrada.\"\r\n\t\texit(1)\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Para executar o projeto, basta salvar seu script com qualquer nome e execut\u00e1-lo com o seguinte comando:<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:sh decode:true\">python NOMEDOSEUSCRIPT.py<\/pre>\n<p>&nbsp;<\/p>\n<h2>Resultado<\/h2>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Veja abaixo as fotos e v\u00eddeo do resultado do projeto:<\/p>\n<p style=\"text-align: justify;\">Fotos:<br \/>\n[slideshow_deploy id=&#8217;337&#8242;]<\/p>\n<p style=\"text-align: justify;\">V\u00eddeo:<br \/>\n<figure class=\"wp-block-embed wp-block-embed-youtube is-type-video is-provider-youtube epyt-figure\"><div class=\"wp-block-embed__wrapper\"><iframe  id=\"_ytid_93687\"  width=\"1290\" height=\"726\"  data-origwidth=\"1290\" data-origheight=\"726\" src=\"https:\/\/www.youtube.com\/embed\/lO_ngRe68uU?enablejsapi=1&autoplay=0&cc_load_policy=0&cc_lang_pref=&iv_load_policy=1&loop=0&rel=1&fs=1&playsinline=0&autohide=2&theme=dark&color=red&controls=1&disablekb=0&\" class=\"__youtube_prefs__  no-lazyload\" title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/div><\/figure><\/p>\n<h2 style=\"text-align: justify;\">Trabalhos futuros \/pr\u00f3ximos passos<\/h2>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Este projeto \u00e9 algo experimental. O objetivo deste \u00e9, al\u00e9m de fazer com que voc\u00ea desenvolvedor crie algo divertido (afinal, quem n\u00e3o gosta de ouvir m\u00fasica, n\u00e3o \u00e9 mesmo?), a familiariza\u00e7\u00e3o com comunica\u00e7\u00e3o entre processos no Linux.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Se for seu desejo melhorar este projeto, segue abaixo alguns pontos aos quais sugiro melhorias:<\/p>\n<ul>\n<li style=\"text-align: justify;\">Substitui\u00e7\u00e3o do pkill -f (comando que mata processos com nomes familiares ao qual lhe \u00e9 passado como par\u00e2metro) por um kill no PID do processo exato do mplayer. Isto garante que outros processos com nomes semelhantes a mplayer n\u00e3o sejam interrompidos por acidente.<\/li>\n<li style=\"text-align: justify;\">Substitui\u00e7\u00e3o da escrita em FIFO atrav\u00e9s de os.system() por escritas n\u00e3o-blocantes diretamente no arquivo FIFO.<\/li>\n<li style=\"text-align: justify;\">Acrescentar uma interface gr\u00e1fica<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: justify;\">Agradecimentos<\/h2>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Segue aqui um agradecimento especial ao Cleiton Bueno e Felipe Lavratti por toda a ajuda e paci\u00eancia em me ajudar neste projeto. Muito obrigado mesmo!<\/p>\n<p style=\"text-align: justify;\">Gostou do artigo? Tem d\u00favidas? Tem cr\u00edticas? Comente abaixo!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As r\u00e1dios on-line n\u00e3o s\u00e3o nenhuma novidade, por\u00e9m s\u00e3o recursos muito interessantes (sobretudo \u00e0queles que sempre est\u00e3o querendo conhecer novos estilos musicais e culturas diferentes). Para os padr\u00f5es de conectividade atuais, \u00e9 perfeitamente poss\u00edvel ouvir uma r\u00e1dio on-line com uma conex\u00e3o de Internet comum. Este post ensinar\u00e1 voc\u00ea a construir seu pr\u00f3prio player de r\u00e1dio&#8230;<\/p>\n","protected":false},"author":1,"featured_media":312,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9,6,11,13,5],"tags":[],"class_list":["post-309","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-iot","category-nivel-intermediario","category-publicacoes","category-artigos-nacionais"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Como fazer seu pr\u00f3prio receptor de r\u00e1dio on-line no Linux -<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como fazer seu pr\u00f3prio receptor de r\u00e1dio on-line no Linux -\" \/>\n<meta property=\"og:description\" content=\"As r\u00e1dios on-line n\u00e3o s\u00e3o nenhuma novidade, por\u00e9m s\u00e3o recursos muito interessantes (sobretudo \u00e0queles que sempre est\u00e3o querendo conhecer novos estilos musicais e culturas diferentes). Para os padr\u00f5es de conectividade atuais, \u00e9 perfeitamente poss\u00edvel ouvir uma r\u00e1dio on-line com uma conex\u00e3o de Internet comum. Este post ensinar\u00e1 voc\u00ea a construir seu pr\u00f3prio player de r\u00e1dio...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/pbertoleti\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-21T15:13:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-09-02T09:11:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pedrobertoleti.com.br\/wp-content\/uploads\/2017\/01\/NetworkBlue.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"580\" \/>\n\t<meta property=\"og:image:height\" content=\"346\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Pedro Bertoleti\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@pedro_bertoleti\" \/>\n<meta name=\"twitter:site\" content=\"@pedro_bertoleti\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Pedro Bertoleti\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/2017\\\/01\\\/21\\\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/2017\\\/01\\\/21\\\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\\\/\"},\"author\":{\"name\":\"Pedro Bertoleti\",\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/#\\\/schema\\\/person\\\/fe1c150103c09ca0a2b9bb200bef33de\"},\"headline\":\"Como fazer seu pr\u00f3prio receptor de r\u00e1dio on-line no Linux\",\"datePublished\":\"2017-01-21T15:13:25+00:00\",\"dateModified\":\"2017-09-02T09:11:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/2017\\\/01\\\/21\\\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\\\/\"},\"wordCount\":942,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/2017\\\/01\\\/21\\\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/wp-content\\\/uploads\\\/2017\\\/01\\\/NetworkBlue.jpg\",\"articleSection\":[\"Blog\",\"IoT\",\"N\u00edvel intermedi\u00e1rio\",\"Publica\u00e7\u00f5es\",\"publica\u00e7\u00f5es nacionais\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/2017\\\/01\\\/21\\\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/2017\\\/01\\\/21\\\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\\\/\",\"url\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/2017\\\/01\\\/21\\\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\\\/\",\"name\":\"Como fazer seu pr\u00f3prio receptor de r\u00e1dio on-line no Linux -\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/2017\\\/01\\\/21\\\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/2017\\\/01\\\/21\\\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/wp-content\\\/uploads\\\/2017\\\/01\\\/NetworkBlue.jpg\",\"datePublished\":\"2017-01-21T15:13:25+00:00\",\"dateModified\":\"2017-09-02T09:11:36+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/#\\\/schema\\\/person\\\/fe1c150103c09ca0a2b9bb200bef33de\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/2017\\\/01\\\/21\\\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/2017\\\/01\\\/21\\\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/2017\\\/01\\\/21\\\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\\\/#primaryimage\",\"url\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/wp-content\\\/uploads\\\/2017\\\/01\\\/NetworkBlue.jpg\",\"contentUrl\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/wp-content\\\/uploads\\\/2017\\\/01\\\/NetworkBlue.jpg\",\"width\":580,\"height\":346,\"caption\":\"Publica\u00e7\u00f5es internacionais em sites e revistas de renome mundial.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/2017\\\/01\\\/21\\\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Como fazer seu pr\u00f3prio receptor de r\u00e1dio on-line no Linux\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/#website\",\"url\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/\",\"name\":\"\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/pedrobertoleti.com.br\\\/#\\\/schema\\\/person\\\/fe1c150103c09ca0a2b9bb200bef33de\",\"name\":\"Pedro Bertoleti\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/76ea2e908fec70b0d55b4eefd5ab24788f573fbe00bcb7b7d6e37da8f1e18dd3?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/76ea2e908fec70b0d55b4eefd5ab24788f573fbe00bcb7b7d6e37da8f1e18dd3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/76ea2e908fec70b0d55b4eefd5ab24788f573fbe00bcb7b7d6e37da8f1e18dd3?s=96&d=mm&r=g\",\"caption\":\"Pedro Bertoleti\"},\"description\":\"Informa\u00e7\u00f5es completas em: http:\\\/\\\/pedrobertoleti.com.br\\\/index.php\\\/sobre\\\/\",\"sameAs\":[\"http:\\\/\\\/www.pedrobertoleti.com.br\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Como fazer seu pr\u00f3prio receptor de r\u00e1dio on-line no Linux -","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/","og_locale":"pt_BR","og_type":"article","og_title":"Como fazer seu pr\u00f3prio receptor de r\u00e1dio on-line no Linux -","og_description":"As r\u00e1dios on-line n\u00e3o s\u00e3o nenhuma novidade, por\u00e9m s\u00e3o recursos muito interessantes (sobretudo \u00e0queles que sempre est\u00e3o querendo conhecer novos estilos musicais e culturas diferentes). Para os padr\u00f5es de conectividade atuais, \u00e9 perfeitamente poss\u00edvel ouvir uma r\u00e1dio on-line com uma conex\u00e3o de Internet comum. Este post ensinar\u00e1 voc\u00ea a construir seu pr\u00f3prio player de r\u00e1dio...","og_url":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/","article_publisher":"https:\/\/www.facebook.com\/pbertoleti","article_published_time":"2017-01-21T15:13:25+00:00","article_modified_time":"2017-09-02T09:11:36+00:00","og_image":[{"width":580,"height":346,"url":"https:\/\/pedrobertoleti.com.br\/wp-content\/uploads\/2017\/01\/NetworkBlue.jpg","type":"image\/jpeg"}],"author":"Pedro Bertoleti","twitter_card":"summary_large_image","twitter_creator":"@pedro_bertoleti","twitter_site":"@pedro_bertoleti","twitter_misc":{"Escrito por":"Pedro Bertoleti","Est. tempo de leitura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/#article","isPartOf":{"@id":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/"},"author":{"name":"Pedro Bertoleti","@id":"https:\/\/pedrobertoleti.com.br\/#\/schema\/person\/fe1c150103c09ca0a2b9bb200bef33de"},"headline":"Como fazer seu pr\u00f3prio receptor de r\u00e1dio on-line no Linux","datePublished":"2017-01-21T15:13:25+00:00","dateModified":"2017-09-02T09:11:36+00:00","mainEntityOfPage":{"@id":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/"},"wordCount":942,"commentCount":0,"image":{"@id":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/#primaryimage"},"thumbnailUrl":"https:\/\/pedrobertoleti.com.br\/wp-content\/uploads\/2017\/01\/NetworkBlue.jpg","articleSection":["Blog","IoT","N\u00edvel intermedi\u00e1rio","Publica\u00e7\u00f5es","publica\u00e7\u00f5es nacionais"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/","url":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/","name":"Como fazer seu pr\u00f3prio receptor de r\u00e1dio on-line no Linux -","isPartOf":{"@id":"https:\/\/pedrobertoleti.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/#primaryimage"},"image":{"@id":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/#primaryimage"},"thumbnailUrl":"https:\/\/pedrobertoleti.com.br\/wp-content\/uploads\/2017\/01\/NetworkBlue.jpg","datePublished":"2017-01-21T15:13:25+00:00","dateModified":"2017-09-02T09:11:36+00:00","author":{"@id":"https:\/\/pedrobertoleti.com.br\/#\/schema\/person\/fe1c150103c09ca0a2b9bb200bef33de"},"breadcrumb":{"@id":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/#primaryimage","url":"https:\/\/pedrobertoleti.com.br\/wp-content\/uploads\/2017\/01\/NetworkBlue.jpg","contentUrl":"https:\/\/pedrobertoleti.com.br\/wp-content\/uploads\/2017\/01\/NetworkBlue.jpg","width":580,"height":346,"caption":"Publica\u00e7\u00f5es internacionais em sites e revistas de renome mundial."},{"@type":"BreadcrumbList","@id":"https:\/\/pedrobertoleti.com.br\/index.php\/2017\/01\/21\/como-fazer-seu-proprio-receptor-de-radio-on-line-no-linux\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/pedrobertoleti.com.br\/"},{"@type":"ListItem","position":2,"name":"Como fazer seu pr\u00f3prio receptor de r\u00e1dio on-line no Linux"}]},{"@type":"WebSite","@id":"https:\/\/pedrobertoleti.com.br\/#website","url":"https:\/\/pedrobertoleti.com.br\/","name":"","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pedrobertoleti.com.br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/pedrobertoleti.com.br\/#\/schema\/person\/fe1c150103c09ca0a2b9bb200bef33de","name":"Pedro Bertoleti","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/76ea2e908fec70b0d55b4eefd5ab24788f573fbe00bcb7b7d6e37da8f1e18dd3?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/76ea2e908fec70b0d55b4eefd5ab24788f573fbe00bcb7b7d6e37da8f1e18dd3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/76ea2e908fec70b0d55b4eefd5ab24788f573fbe00bcb7b7d6e37da8f1e18dd3?s=96&d=mm&r=g","caption":"Pedro Bertoleti"},"description":"Informa\u00e7\u00f5es completas em: http:\/\/pedrobertoleti.com.br\/index.php\/sobre\/","sameAs":["http:\/\/www.pedrobertoleti.com.br"]}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/pedrobertoleti.com.br\/wp-content\/uploads\/2017\/01\/NetworkBlue.jpg","_links":{"self":[{"href":"https:\/\/pedrobertoleti.com.br\/index.php\/wp-json\/wp\/v2\/posts\/309","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pedrobertoleti.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pedrobertoleti.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pedrobertoleti.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pedrobertoleti.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=309"}],"version-history":[{"count":38,"href":"https:\/\/pedrobertoleti.com.br\/index.php\/wp-json\/wp\/v2\/posts\/309\/revisions"}],"predecessor-version":[{"id":518,"href":"https:\/\/pedrobertoleti.com.br\/index.php\/wp-json\/wp\/v2\/posts\/309\/revisions\/518"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pedrobertoleti.com.br\/index.php\/wp-json\/wp\/v2\/media\/312"}],"wp:attachment":[{"href":"https:\/\/pedrobertoleti.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pedrobertoleti.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pedrobertoleti.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}