Autor Zpráva
Yuff.3
Profil
Ahojte,
našiel som konečne spôsob ako dostať na web zo steamu rôzne veci. Netuším však ako na to, keďže je to pomerne zložité.
Funguje to na základe steam API (kód, ktorý vygeneruje steam). Našiel som taktiež tento spôsob: http://forums.steampowered.com/forums/showpost.php?p=30479179&postcount=12, ale nefunguje poriadne raz vypíše online raz je v hre XX aj keď v tej hre nie je a pod.
Preto som začal uvažovať nad spôsobom cez Steam API. Vygeneroval som si teda Steam API Key (kľúč) no a prešiel som na túto stránku: http://steamcommunity.com/dev kde som zvolil: https://developer.valvesoftware.com/wiki/Steam_Web_API#GetPlayerSummaries_.28v0001.29 keď som prešiel na toto: https://developer.valvesoftware.com/wiki/Steam_Web_API#GetPlayerSummaries_.28v0002.29 dostal som z toho modrého linku tam, po zadaní správnych paremetrov - API key a steam ID moje steam údaje v takomto tvare:
{
    "response": {
        "players": [
            {
                "steamid": "76561198024213103",
                "communityvisibilitystate": 3,
                "profilestate": 1,
                "personaname": "Yuff.3",
                "lastlogoff": 1407669525,
                "commentpermission": 1,
                "profileurl": "http://steamcommunity.com/id/4funYuff3/",
                "avatar": "http://media.steampowered.com/steamcommunity/public/images/avatars/09/093c800c157fed92f97dbae5b849f902d1fdda7e.jpg",
                "avatarmedium": "http://media.steampowered.com/steamcommunity/public/images/avatars/09/093c800c157fed92f97dbae5b849f902d1fdda7e_medium.jpg",
                "avatarfull": "http://media.steampowered.com/steamcommunity/public/images/avatars/09/093c800c157fed92f97dbae5b849f902d1fdda7e_full.jpg",
                "personastate": 1,
                "realname": "Michal Záhorec",
                "primaryclanid": "103582791431188261",
                "timecreated": 1272038343,
                "personastateflags": 0,
                "loccountrycode": "SK",
                "locstatecode": "06",
                "loccityid": 43917
            }
        ]
        
    }
}

Netuším ako ich z toho vytiahnuť, resp. uložiť niekam toto čo mi vygenerovalo tak, aby som s tým mohol ďalej pracovať.
Predpokladám, že by bolo lepšie spraviť si vlastnú api na svojom webe nejak takto: https://github.com/andrewmcwatters/steamweb-php-api - k tomuto odkazu ani neviem ako som sa dostal, ale myslím, že cez nejaký odkaz na oficiálnej steam podpore, čiže malo by sa mu dať veriť.. (či?) :D

No ako mám teda začať aby som mohol údaje vytiahnuté pomocou steam API použiť na svojom webe??

A taktiež by sa mi dosť hodilo spraviť niečo takéto: http://steamidconverter.com/4funyuff3 pretože to generuje SteamId64 - čiže zadám tam napr. steam ID alebo moje steam meno či url link na profil no a vygeneruje mi to ID64, ktoré je potrebné pre získanie údajov z profilu steamu. (Do toho spomínaného modrého linku je potrebné zadať steam ID v tvare SteamID64)

Verím, že sa tu nájde niekto kto s tým má skúsenosti a ak aj nie, tak aspoň niekto kto sa rád učí novým veciam a aspoň sa pokúsi mi s tým trochu pomôcť. :)

Vopred veľmi pekne ďakujem.
Dominik Gavril
Profil
Všetko máš popisané tu https://developer.valvesoftware.com/wiki/Steam_Web_API#GetPlayerSummaries_.28v0001.29 v Public data ... Nerozumiem čo tam nevieš skús to viac popísať ....
Yuff.3
Profil
Dominik Gavril:
:D Genius :D Veď viem, že je to tam popísané, ale ak si si nevšimol ja píšem po slovensky - z toho vyplýva - som Slovák, čiže anglicky neviem - resp. ovládam nejaké tie základy..

Nerozumiem čo tam nevieš skús to viac popísať ....
Popíšem to asi takto: Čo mám robiť? :D
Radek9
Profil
Yuff.3:
:D Genius :D
Tímhle přístupem spíš každého aspoň trochu ochotného člověka odradíš. Odvykni si používat zbytečné množství smajlíků a ironické poznámky.

ja píšem po slovensky - z toho vyplýva - som Slovák, čiže anglicky neviem
Víš, co je zvláštní? Já taky nejsem Angličan, ale anglicky umím. Co tím chtěl básník říct? Tím, že neumíš anglicky, si ve světě programování dost podkopáváš nohy a celkem bych si i troufl říct, že bez angličtiny nemáš šanci programování pořádně pochopit. Natož se potom ještě někde uplatnit.

Čo mám robiť?
Ta data, která jsi poslal, jsou ve formátu JSON. Zační používat Google a hledej, co potřebuješ k jeho rozparsování.

A taktiež by sa mi dosť hodilo spraviť niečo takéto: http://steamidconverter.com/4funyuff3
Mně by se toho hodilo. :-) Čekáš, že ti to někdo napíše? Tento přístup tak nějak cítím z jakéhokoli tvého příspěvku. Pro tyto věci tu máme sekci Práce a zakázky. Napiš, co chceš, nabídni odměnu a pravděpodobně se najde někdo, kdo ti to napíše.
Moderátor Chamurappi: Dovolím si podotknout, že Yuff.3jeden inzerát založil před dvanácti hodinami a další může založit až za měsíc. Krom toho dlouhodobě nedoporučuji posílat tazatele do Prací a zakázek… protože je to k ničemu. Napsat „chceš po nás moc“ jde i jinak.
Yuff.3
Profil
Radek9:
„Čo mám robiť?“
Ta data, která jsi poslal, jsou ve formátu JSON. Zační používat Google a hledej, co potřebuješ k jeho rozparsování.
Dúfal som, že práve toto by mi bol ochotný niekto vysvetliť..
Alebo aspoň poslať potrebné a hlavne zrozumiteľné články/návody..

Ďakujem :)

(
„A taktiež by sa mi dosť hodilo spraviť niečo takéto: http://steamidconverter.com/4funyuff3“
Mně by se toho hodilo. :-)

Odvykni si používat zbytečné množství smajlíků a ironické poznámky.
)
Joker
Profil
Yuff.3:
Jestli to správně chápu, problém je akorát přečíst ten výstupní formát?
PHP má funkce na práci s JSON: php.net/manual/en/ref.json.php

Krom toho to Steam API by mělo umět vracet data i v XML, pokud by to bylo vhodnější.
Fisir
Profil
Reaguji na Yuff.3:
Neee, další infekce tečkovým průjmem…

práve toto by mi bol ochotný niekto vysvetliť
json_decode()

anglicky neviem
To by chtělo napravit. Jinak nemáš v oblasti informačních technologií téměř žádnou šanci. Prozatím můžeš zkusit překladač.
Yuff.3
Profil
Fisir:
asi nerozumiem načo zase narážaš? Predpokladám, že zase nejaký pokus o urážku? :D
Yuff.3:
ovládam nejaké tie základy..

Venujme sa prosím téme.
->
no to som už pozeral, ale nejak som asi nepobral všetko .. proste povecme, že mám json (link) - ktorý obsahuje kód, ktorý som dal do prvého príspevku - no a tento kód - potrebujem jednotlivé parametre z neho dostať do PHP premenných..

Joker:
Krom toho to Steam API by mělo umět vracet data i v XML, pokud by to bylo vhodnější.
Mám možnosť aj XML, namiesto JSON - ako si si mohol všimnúť v niektorom z linku v prvom príspevku. A nemám tušenie čo by bolo vhodnejšie, to mi povec ty, určite máš viac skúseností s tým to ako ja :) -> už som písal - potrebujem jednotlivé údaje dostať do premenných v php..

Ďakujem a ešte raz pekne prosím, držme sa témy.. :)
Virtus
Profil
Zdravím,
Odpovídám na základě [#1] Yuff.3 a tohohle:
Yuff.3:
potrebujem jednotlivé údaje dostať do premenných v php..
<?php
$jsonString = '{
    "response": {
        "players": [
            {
                "steamid": "76561198024213103",
                "communityvisibilitystate": 3,
                "profilestate": 1,
                "personaname": "Yuff.3",
                "lastlogoff": 1407669525,
                "commentpermission": 1,
                "profileurl": "http://steamcommunity.com/id/4funYuff3/",
                "avatar": "http://media.steampowered.com/steamcommunity/public/images/avatars/09/093c800c157fed92f97dbae5b849f902d1fdda7e.jpg",
                "avatarmedium": "http://media.steampowered.com/steamcommunity/public/images/avatars/09/093c800c157fed92f97dbae5b849f902d1fdda7e_medium.jpg",
                "avatarfull": "http://media.steampowered.com/steamcommunity/public/images/avatars/09/093c800c157fed92f97dbae5b849f902d1fdda7e_full.jpg",
                "personastate": 1,
                "realname": "Michal Záhorec",
                "primaryclanid": "103582791431188261",
                "timecreated": 1272038343,
                "personastateflags": 0,
                "loccountrycode": "SK",
                "locstatecode": "06",
                "loccityid": 43917
            }
        ]
        
    }
}';
$data = json_decode($jsonString);
//pokud bude response obsahovat vždy pouze informace o jednom hráči, tak můžeš použít tohle:
$player = $data->response->players[0];
echo $player->personaname; //vypíše: Yuff.3

//pokud by response obsahoval informace o více hráčích:
foreach($data->response->players as $player){
  echo $player->personaname; // vypíše jména všech hráčů
}

//nebo pokud bys chtěl ratši přistupovat k hodnotám přes pole:
$data = json_decode($jsonString, true);
$player = $data['response']['players'][0];
echo $player['personaname']; //vypíše: Yuff.3

foreach($data['response']['players'] as $player){
  echo $player['personaname']; //vypíše jména všech hráčů
}
Yuff.3
Profil
Virtus:
Asi ťa milujem :D


A snáď k tejto téme posledná vec.
Ten JSON, mám zapísaný v linku -> takto: $jsonString = file_get_contents( "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXX&steamids=YYYYYYYYYYYYYYYYYYYYYY" );
Pekne to funguje vypíše to moje meno v pohode.. :)
Ale to XXXXXXXXXX a YYYYYYYYYYYYY by som chcel dať cez premennú.. Skúšal som zápis: $jsonString = file_get_contents( "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key='".premenna."'&steamids='".premenna2."'" );,
ale nejde mi to :( Nevypíše nič. Predpokladám zlá syntax - aj keď to by mi vypísalo. V tomto prípade naozaj netuším ako to má vyzerať.. :(
Je to nutnosť mať cez premennú - minimálne tie YYYYYY pretože to sa bude meniť vzhľadom na užívateľa..
Moc krát veľmi pekne ďakujem :)
Virtus
Profil
No pokud si do kodu napsal opravdu tohle:
<?php
$jsonString = file_get_contents( "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key='".premenna."'&steamids='".premenna2."'" );, 
tak si nepoužil proměnné, ale konstanty a vzhledem k tomu, že ti to nevypsalo žádnou chybu, tak máš pravděpodobně vypnutý výpis PHP Notice:, protože jestli je pravda, že jsi ty hodnoty uložil do proměnné, tak by ti tohle mělo vypsat chyby:
PHP Notice:  Use of undefined constant promenna - assumed 'promenna' in soubor.php on line xx
PHP Notice:  Use of undefined constant promenna2 - assumed 'promenna2' in soubor.php on line xx
takže z těch konstant udělej proměnné:
<?php
$jsonString = file_get_contents( "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key='".$premenna."'&steamids='".$premenna2."'" );, 
Yuff.3
Profil
Virtus:
Aha pardon, moja chyba - nie mám to tak ako píšeš ty. ten $ tam mám všade - napriek tomu to nič nevypíše - čiže niekde je chyba a netuším kde. :(
Medvídek
Profil
Yuff.3:
Ještě odstraň ty jednoduché uvozovky.

$jsonString = file_get_contents( "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=".$premenna."&steamids=".$premenna2 );, 
Virtus
Profil
aha, moje chyba, že jsem si toho nevšim hned, nepatří tam ty uvozovky:
<?php
//špatně:
$jsonString = file_get_contents( "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key='".$premenna."'&steamids='".$premenna2."'" );

//dobře:
$jsonString = file_get_contents( "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=".$premenna."&steamids=".$premenna2 );
m mm, Medvídek byl rychlejší :)
Moderátor Alphard: To se stává docela často, když radí více lidí. Obvykle rady nemažeme, byť jsou duplicitní.
Yuff.3
Profil
Medvídek, Virtus:
:D :D Všetko je TOP :) Moc ďakujem :)
Keby som mohol nejako pomôcť.. stačí napísať. :)


Aha, vlastne ešte jedna vec :D

Yuff.3:
A taktiež by sa mi dosť hodilo spraviť niečo takéto: http://steamidconverter.com/4funyuff3 pretože to generuje SteamId64 - čiže zadám tam napr. steam ID alebo moje steam meno či url link na profil no a vygeneruje mi to ID64, ktoré je potrebné pre získanie údajov z profilu steamu. (Do toho spomínaného modrého linku je potrebné zadať steam ID v tvare SteamID64)

Ak je to vôbec možné zrealizovať.. ?
Yuff.3
Profil
Prosím,
ešte sa naskytla jedna vec :D
Virtus určite bude vedieť. :) Nejaké pokusy som mal aj ja, ale asi robím niekde chybu :D

Konkrétne v prvom príspevku v tom kóde:
{
    "response": {
        "players": [
            {
čo ak mám druhý kód, ale obsahuje 2 záležitosti v druhom cykle, konkrétne takto:
{
    "response": {
        "total_count": 1,
        "games": [
            {
kde games = hry a count je počet ktorý má zobraziť/zobrazuje - dá sa zmeniť, keď ho vypisuje už samotná aplikácia/resp. json ??

Moc moc ďakujem :)
Kubo2
Profil
Skús si naštudovať zápis formátu JSON a pohľadať, aké dátové štruktúry jazyka PHP prislúchajú jednotlivým entitám formátu JSON tj. ako bude bude po rozparsovaní funkciou <?php json_decode() ?> v premennej uložený napríklad zápis { "kľúč": "hodnota" } atď. (Niekde ťa tu už aj na to odkazovali.)
Našiel som ešte jeden pekný jednoduchý článok o JSONe na zdrojáku.
Yuff.3
Profil
Kubo2:
Už som študoval a študujem znova, ale asi je to na mňa moc zložité :(
Nikde som nič podobné nenašiel. Rozoberajú len možnosť ako som popísal ja v prvom príspevku nie tú čo potrebujem teraz..
Virtus
Profil
Yuff.3:
čo ak mám druhý kód
<?php
// $jsonString =  zmiňovaný druhý kód
$data = json_decode($jsonString, true);
var_dump($data); //velice užitečná funkce, zapamatuj si jí
echo $data['response']['total_count']; //vypíše 1
var_dump($data['response']['games']); //vypíše obsah 'games' co vrátil json
//var_dump() slouží jenom pro ladění/debug/zkoumání, okamžitě mazat když už není potřeba

//pro lepší čitelnost v prohlížeči, pokud nemáš nějakou extension která by výpis funkce var_dump upravovala
echo '<pre>';
var_dump($data);
echo '</pre>';

kde games = hry a count je počet ktorý má zobraziť/zobrazuje - dá sa zmeniť, keď ho vypisuje už samotná aplikácia/resp. json ??
nechápu.
Yuff.3
Profil
Virtus:
$jsonString2 = file_get_contents( "http://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v0001/?key=".$key."&steamids=".$steamID64."&format=json");
    $data2 = json_decode($jsonString2, true);
    
    var_dump($data2); //velice užitečná funkce, zapamatuj si jí
echo $data2['response']['total_count']; //vypíše 1
var_dump($data2['response']['games']); //vypíše obsah 'games' co vrátil json
//var_dump() slouží jenom pro ladění/debug/zkoumání, okamžitě mazat když už není potřeba
 
//pro lepší čitelnost v prohlížeči, pokud nemáš nějakou extension která by výpis funkce var_dump upravovala
echo '<pre>';
var_dump($data2);
echo '</pre>';
Vypíše mi NULL
NULL
--->> fakt nerozumiem kde môže byť chyba :( ..

No a Hento som myslel tak, že to count - mi udáva ten json nie? .. v json je count a pri nom je hodnota: "1" - keby som chcel aby bola hodnota 2 ? viem t v php ovplyvniť alebo dá sa nejako docieliť, aby bola táto hodnota 2 ??

Ďakujem :)
Dominik Gavril
Profil
čo keby si napísal čo presne potrebuješ ? .... A už by sme ti spravili nejaké riešenie ....
Virtus
Profil
Pokud ti to vypsalo NULL, znamená to že $jsonString2 = file_get_contents( "http://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v0001/?key=".$key."&steamids=".$steamID64."&format=json"); ti pravděpodobně nevrátil json data, takže pokud si to ještě nevyřešil tak sem dej výpis z tohohle:
$jsonString2 = file_get_contents( "http://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v0001/?key=".$key."&steamids=".$steamID64."&format=json");
var_dump($jsonString2);
$data2 = json_decode($jsonString2, true);
echo json_last_error();

A co se týče té hodnoty v count, jelikož je vrácená přes API, tak jedině tím, že ti API vrátí hodnotu 2 a větší, jinak to nemá smysl, a nemusíš ten parametr vůbec používat a rovnou si doplnit tu '2' kam potřebuješ, to jak docílit toho aby API vrátila 2 nevím, neznám to API, a manuál studovat nebudu, nato jaksi nemám čas.
Yuff.3
Profil
Všetko funguje OK,
vďaka moc všetkým :)
Hlavne Virtus - si šéf :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: