Cómo obtener la url de streaming de la emisora de radio en línea
Se me ha pedido que realice una aplicación no oficial en línea para una determinada estación de radio.
Tengo experiencia con streaming en android para ciertos mp3 o cualquier corriente.
Pero no sé la stream url
para proporcionar en mediaPlayer.setDataSource(url)
.
¿Hay alguna manera de obtener la url de flujo de la página streaming ofiicial para ex. Esta emisora de radio ?
- CSS: ronda /: enfoque vs evento de clic en dispositivos móviles (móviles)
- Cómo vincular tanto Mousedown y Touchstart, pero no responder a ambos? Android, JQuery
- Desplazamiento automático hacia la vista de la entrada de enfoque
- Uso de window.print () o alternativa en dispositivos Android
- ¿Cómo detectar automáticamente la necesidad de iScroll?
- Cómo obtener número de serie desde Android Mobile Browser utilizando Java Scripting que será de la fuente de la aplicación web que se ejecuta en el navegador móvil
- Un simple ejemplo androide de Córdova incluyendo Sqlite leer / escribir y buscar
- HTML Mobile: obliga al teclado virtual a ocultar
- Pasar una matriz de valores de la actividad de Android a JavaScript en un WebView
- Trabajo en segundo plano utilizando el servidor de análisis y Heroku Scheduler
- Ocultación de teclados suaves en dispositivos móviles cuando se utilizan divs contenteditable
- ¿Es posible construir una aplicación Android con PhoneGap estrictamente dentro de Visual Studio?
- Lectura de archivos utilizando Cordova File Plugin
No es tan difícil,
Si echa un vistazo a la fuente de la página, verá que utiliza para transmitir el audio a través de shoutcast.
Esta es la URL del flujo
Que devuelve un JSON así:
{ "Streams": [ { "StreamId": 3244651, "Reliability": 92, "Bandwidth": 64, "HasPlaylist": false, "MediaType": "MP3", "Url": "http://mp3hdfm32.hala.jo:8132", "Type": "Live" } ] }
Creo que es la url que necesita: http://mp3hdfm32.hala.jo:8132
Esta es la estación WebSite
La respuesta de Shahar fue realmente útil, pero me pareció bastante tedioso hacer esto todo por mí mismo, así que hice un pequeño programa Python:
import re import urllib2 import string url1 = raw_input("Please enter a URL from Tunein Radio: "); open_file = urllib2.urlopen(url1); raw_file = open_file.read(); API_key = re.findall(r"StreamUrl\":\"(.*?),",raw_file); #print API_key; #print "The API key is: " + API_key[0]; use_key = urllib2.urlopen(str(API_key[0])); key_content = use_key.read(); raw_stream_url = re.findall(r"Url\": \"(.*?)\"",key_content); bandwidth = re.findall(r"Bandwidth\":(.*?),", key_content); reliability = re.findall(r"lity\":(.*?),", key_content); isPlaylist = re.findall(r"HasPlaylist\":(.*?),",key_content); codec = re.findall(r"MediaType\": \"(.*?)\",", key_content); tipe = re.findall(r"Type\": \"(.*?)\"", key_content); total = 0 for element in raw_stream_url: total = total + 1 i = 0 print "I found " + str(total) + " streams."; for element in raw_stream_url: print "Stream #" + str(i + 1); print "Stream stats:"; print "Bandwidth: " + str(bandwidth[i]) + " kilobytes per second." print "Reliability: " + str(reliability[i]) + "%" print "HasPlaylist: " + str(isPlaylist[i]) + "." print "Stream codec: " + str(codec[i]) + "." print "This audio stream is " + tipe[i].lower() + "." print "Pure streaming URL: " + str(raw_stream_url[i]) + "."; i = i + 1 raw_input("Press enter to close TMUS.")
Es básicamente la solución de Shahar automatizada.
Editado respuesta de ZygD para python 3.x .:
import re import urllib.request import string url1 = input("Please enter a URL from Tunein Radio: "); request = urllib.request.Request(url1); response = urllib.request.urlopen(request); raw_file = response.read().decode('utf-8'); API_key = re.findall(r"StreamUrl\":\"(.*?),\"",raw_file); #print API_key; #print "The API key is: " + API_key[0]; request2 = urllib.request.Request(str(API_key[0])); response2 = urllib.request.urlopen(request2); key_content = response2.read().decode('utf-8'); raw_stream_url = re.findall(r"Url\": \"(.*?)\"",key_content); bandwidth = re.findall(r"Bandwidth\":(.*?),", key_content); reliability = re.findall(r"lity\":(.*?),", key_content); isPlaylist = re.findall(r"HasPlaylist\":(.*?),",key_content); codec = re.findall(r"MediaType\": \"(.*?)\",", key_content); tipe = re.findall(r"Type\": \"(.*?)\"", key_content); total = 0 for element in raw_stream_url: total = total + 1 i = 0 print ("I found " + str(total) + " streams."); for element in raw_stream_url: print ("Stream #" + str(i + 1)); print ("Stream stats:"); print ("Bandwidth: " + str(bandwidth[i]) + " kilobytes per second."); print ("Reliability: " + str(reliability[i]) + "%"); print ("HasPlaylist: " + str(isPlaylist[i])); print ("Stream codec: " + str(codec[i])); print ("This audio stream is " + tipe[i].lower()); print ("Pure streaming URL: " + str(raw_stream_url[i])); i = i + 1 input("Press enter to close")
Cuando vas a una url de stream, te ofrecen un archivo. Alimentar este archivo a un parser para extraer el contenido fuera de él. El archivo es (generalmente) de texto sin formato y contiene la url para jugar.
- Cómo pasar el objeto serializado gson a Intent en android?
- Cómo mostrar la descripción de descripción de herramientas en Android Studio?