Foros del Web » Programando para Internet » PHP »

Steam Market: Lenguaje de respuesta (JSON)

Estas en el tema de Steam Market: Lenguaje de respuesta (JSON) en el foro de PHP en Foros del Web. Hola a todos! Resulta que estoy programando una sección de una web, en la que se consulta y obtiene información sobre los precios de venta ...
  #1 (permalink)  
Antiguo 06/03/2015, 03:46
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 8 meses
Puntos: 8
Steam Market: Lenguaje de respuesta (JSON)

Hola a todos!

Resulta que estoy programando una sección de una web, en la que se consulta y obtiene información sobre los precios de venta en el mercado de las armas de CSGO.

Ejemplo:
Para mostrar los precios de por ejemplo la "AWP Golpe Relámpago" consulto la siguiente URL:
http://steamcommunity.com/market/sea...ghtning+Strike

Concretamente, la llamada que me devuelve el JSON es esta: http://steamcommunity.com/market/sea...ghtning+Strike que es igual que la anterior pero añadiendo /render/ y sustituyendo "query=" por "q="

Si ustedes tienen el navegador en Español, las anteriores URLs les mostrarán los precios en español y el nombre de la AWP en español.

Pues bien, el problema es que cuando realizo estas llamadas desde el servidor web, me devuelve los resultados en ingles!!!!
Pueden fijarse en la siguiente captura de pantalla:

Si ven los precios estan en $ USD y el nombre del arma en ingles tambien... y la URL de llamada es la que les puse mas arriba, donde estan establecidos los parametors currency (moneda) = 3 (Euros), l=espanish, etc...

¿Saben que puedo hacer para obtener los precios en Euros?
Tambien si conocen alguna otra URL de llamada que me sirva aun estoy a tiempo de reprogramar el script...

Por ejemplo, existe otra llamada: http://steamcommunity.com/market/pri...ctory%20New%29 que si que me devuelve los precios en Euros, sin embargo, esta llamada solo sirve para obtener precios de un determinado ITEM, por ejemplo, de la "AWP Golpe Relampago (Recien fabricado)" por lo que para las armas no me sirve... aunque si que me vale para otras cosas como los contenedores: http://steamcommunity.com/market/pri...0Weapon%20Case
Sin embargo... necesito una solucion, ya que no puedo mostrar los precios de los contenedores en Euros y las armas en Dolares... Esto queda bastante mal en 2 monedas...


Agradezco cualquier ayuda.

Un saludo.
__________________
Follow me on twitter @franbedia
  #2 (permalink)  
Antiguo 06/03/2015, 09:35
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 8 meses
Puntos: 379
Respuesta: Steam Market: Lenguaje de respuesta (JSON)

Investiga por Accept-Language HTTP header en google
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 09/03/2015, 03:15
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 8 meses
Puntos: 8
Respuesta: Steam Market: Lenguaje de respuesta (JSON)

Cita:
Iniciado por hhs Ver Mensaje
Investiga por Accept-Language HTTP header en google
Gracias por la respuesta.

Os dejo a continuación el codigo que tenia.. pueden probarlo tal cual esta en localhost o en un servidor:

Código PHP:
<?php
$url 
"http://steamcommunity.com/market/search/render/?l=espanish&start=0&count=20&currency=3&category_730_Weapon%5B%5D=tag_weapon_awp&appid=730&query=Man-o%27-war";
$json_objectfile_get_contents($url);
$json_decoded json_decode($json_object);


//precios
preg_match_all('/<span style="color:white">(.*)<\/span>/',$json_decoded->results_html$sor);

foreach(
$sor[1] as $k => $v)
{
    echo 
$v."<br/>";
}

?>
La respuesta que me arroja es:

Cita:
$29.34 USD
$33.62 USD
$111.90 USD
$80.00 USD
Como ven, los precios me los devuelve en $ dolares, cuando si abrimos la URL (http://steamcommunity.com/market/sea...y=Man-o%27-war) se muestran en español.

Investigue sobre lo que me comento hhs de Accept-Language HTTP header y añadi las siguientes lineas a mi codigo:

Código PHP:
<html lang="es">
<head>

<meta http-equiv="Content-Language" content="es"/>

</head>
<body>
<?php

$locale 
Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo 
$locale."<br/>";

$options = array(
  
'http'=>array(
    
'method'=>"GET",
    
'header'=>"Accept-language: es\r\n" 
              
"Cookie: foo=bar\r\n")
);

$context stream_context_create($options);

$url "http://steamcommunity.com/market/search/render/?l=espanish&start=0&count=20&currency=3&category_730_Weapon%5B%5D=tag_weapon_awp&appid=730&query=Man-o%27-war";
$json_objectfile_get_contents($url,false,$context);
$json_decoded json_decode($json_object);


//precios
preg_match_all('/<span style="color:white">(.*)<\/span>/',$json_decoded->results_html$sor);

foreach(
$sor[1] as $k => $v)
{
    echo 
$v."<br/>";
}

?>
</body>
</html>
Sin embargo, el resultado es que me sigue devolviendo resultados en $ Dolares.

Cita:
es_ES
$29.34 USD
$33.62 USD
$111.90 USD
$80.00 USD
¿Estoy haciendo algo mal?
¿Me falta algo?

Muchas gracias por su ayuda. Cualquier comentario o idea son bien recibidos!! Yo ya estoy desesperado con este tema y tengo la cabeza cerrada ya. Me ofusco cuando no entiendo las cosas ni encuentro una explicación a ellas...

Un saludo.
__________________
Follow me on twitter @franbedia
  #4 (permalink)  
Antiguo 09/03/2015, 03:45
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 8 meses
Puntos: 8
Respuesta: Steam Market: Lenguaje de respuesta (JSON)

Acabo de cambiar el idioma de mi navegador a ingles, y si accedo a la URL que comentaba antes (http://steamcommunity.com/market/sea...y=Man-o%27-war) la cual me mostraba texto en español.... ahora me muestra texto en inlges!! Por lo que deduzco que tiene que ver con el idioma del navegador, ok. ¿pero si realizo la llamada desde el servidor? ¿usando file_get_contents y json_decode? ¿como puedo establecer aqui el idioma?

EDITO:
Simplemente informar de que he modificado el fichero de configuracion de apache, concretamente la linea:
Cita:
LanguagePriority en cs de fr es it ja ko nl pl pt-br ro sv tr
y he dejado primero el "es"
Cita:
LanguagePriority es en cs de fr it ja ko nl pl pt-br ro sv tr
Tras el cambio anterior... los precios siguen en ingles :__(

EDITO2:
Estaba pasando mal el parametro l=espanish
El correcto es l=spanish
Ahora, independientemente del idioma del navegador, los textos me los devuelve en español, sin embargo, la moneda sigue siendo Dolare$

Actualmente:

Con el navegador en Ingles:
- Textos en español.
- Moneda en $ Dolares

Con el navegador en Español:
- Textos en español.
- Moneda en Euros.

He leido en la documentacion, que &currency=3 es para Euros.

¿Como puedo dejar la moneda en Euros?
__________________
Follow me on twitter @franbedia

Última edición por fbedia; 09/03/2015 a las 05:01
  #5 (permalink)  
Antiguo 09/03/2015, 07:37
 
Fecha de Ingreso: septiembre-2008
Mensajes: 43
Antigüedad: 15 años, 6 meses
Puntos: 4
Respuesta: Steam Market: Lenguaje de respuesta (JSON)

Esto te podría servir: http://stackoverflow.com/questions/2...and-xml-format

Última edición por santi-; 09/03/2015 a las 07:48

Etiquetas: lenguaje, market, respuesta, steam
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:18.