Just nu i M3-nätverket
Gå till innehåll
Niss3

LÖST Twitch kanal Online eller Offline

Rekommendera Poster

Hej!

 

Jag försöker hitta ett PHP script som avgör om en twitch stream är offline eller online.

 

Hittade en som verkar göra något i den stilen, men jag kan inte få det att fungera. Vet inte hur gammal den är heller.

Har ni någon ide om hur jag kan göra får ni väldigt gärna hjälpa mig!

 

(källa: http://www.arenajunkies.com/topic/221310-lf-php-twitchtvown3dtv-api-help/ )


<?php
$channel = "amazhs"; // Jag skrev amazhs bara för att testa
$json_file = @file_get_contents("https://api.twitch.tv/kraken/streams/{$channel}", 0, null, null);
$json_array = json_decode($json_file, true);
if (isset($json_array[0]) && $json_array[0]['name'] == "live_user_{$channel}")
{
$channelTitle = $json_array[0]['channel']['title'];
$title = $json_array[0]['channel']['status'];
$game = $json_array[0]['meta_game'];
?>
<!-- live channel code here -->
on
<!-- end live channel code -->
<?php
}
else
{
?>
<!-- offline channel code here -->
off
<!-- end offline channel code -->
<?php
}
?>

//edit

 

Jag hittade ett till script, det verkar ganska bra? Jag förstår dock inte hur jag ska använda detta..

(källa: https://github.com/abartholomew/twitchphp/ )

<?php
/**
 * @package Twitch TV PHP Api
 * @author Aaron Bartholomew <aaronbartholomew.com>
 * @copyright Aaron Bartholomew 2013
 * @version 1.3
 **/


class Twitch {

	public function getApiUri($type) {
		$apiUrl = "https://api.twitch.tv/kraken";
		$apiCalls = array(
			"streams" => $apiUrl."/streams/",
			"search" => $apiUrl."/search/",
			"channel" => $apiUrl."/channels/",
			"user" => $apiUrl."/user/",
			"teams" => $apiUrl."/teams/",
		);
		return $apiCalls[$type];
	}

	public function getFeatured($game) {
		$s = file_get_contents($this->getApiUri("streams")."?game=".urlencode($game)."&limit=1&offset=0");
		$activeStreams = json_decode($s, true);
		$streams = $activeStreams["streams"];
		foreach($streams as $stream) {
			return $stream["channel"]["name"];
		}
	}
	public function getStreams($game, $page, $limit) {
		$offset = ($page-1)*$limit;
		$s = file_get_contents($this->getApiUri("streams")."?game=".urlencode($game)."&limit=$limit&offset=$offset");
		$activeStreams = json_decode($s, true);
		$streams = $activeStreams["streams"];
		$final = "";
		foreach($streams as $stream) {
			$imgsm = $stream["preview"]["small"];
			$imgmed = $stream["preview"]["medium"];
			$viewers = $stream["viewers"];
			$channel = $stream["channel"];
			$status = $channel["status"];
			$twitchName = $channel["name"];
			$twitchDisplay = $channel["display_name"];
			$twitchLink = $channel["url"];

			$final .= "<a class=\"stream-item\" href=\"/users/$twitchName\"><img src=\"$imgmed\"><span class=\"name\">$status</span><span class=\"viewers\">$viewers viewers</span></a>";
		}
		echo $final;
	}

	public function getChannel($channel) {
		$c = file_get_contents($this->getApiUri("channel").$channel);
		$channelData = json_decode($c, true);
		return $channelData;
	}
	public function getFollowers($channel) {
		$f = file_get_contents($this->getApiUri("channel").$channel."/follows");
		$followData = json_decode($f, true);
		return $followData["_total"];
	}
	public function getChannelStream($channel) {
		$s = file_get_contents($this->getApiUri("streams").$channel);
		$streamData = json_decode($s, true);
		return $streamData;
	}

}
?>

Här är lite flera jag tittat på men ej heller fått att fungera;
https://groups.google.com/forum/#!topic/twitch-api/F88-r6iSwZ0

 

Denna såg ganska lätt att förstå ut, men när jag använde den fick jag denna varning från min sida:

Warning: file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in on line 31

(källa: http://stackoverflow.com/questions/25698151/json-decode-twitch-api-php )

<?php
    $hue = file_get_contents('https://api.twitch.tv/kraken/streams/?channel=starladder1');

    $hue1 = json_decode($hue, TRUE);

     foreach ($hue1 as $data)
        {
         foreach ($data as $datas) {

        echo ($datas['channel']['display_name']."<br/>");

             }   
        }
    ?>

JSON för API verkar vara väldigt användbart. Jag önskar jag förstod hur det fungerade bättre!

Redigerad av Niss3

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
function is_twitch_channel_online($channel) {
	$data = json_decode(@file_get_contents("https://api.twitch.tv/kraken/streams/{$channel}"));
if($data == FALSE) return FALSE;
	return $data->stream == NULL ? FALSE : TRUE;
}

Ex.

if ( is_twitch_channel_online("djnvy") ) echo "Är online";

else echo "Är offline";

Redigerad av Phenomen

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
function is_twitch_channel_online($channel) {
	$data = json_decode(@file_get_contents("https://api.twitch.tv/kraken/streams/{$channel}"));
if($data == FALSE) return FALSE;
	return $data->stream == NULL ? FALSE : TRUE;
}

Ex.

if ( is_twitch_channel_online("djnvy") ) echo "Är online";

else echo "Är offline";

 

 

Tackar för att du hjälper mig Phenomen.

 

Dock får jag inte koden att ge mig "online".. oavsett vilka kanaler jag provat, varav alla varit online, får jag alltid tillbaka "Är offline".

 

Vad tror du kan vara fel?

<?php
function is_twitch_channel_online($channel) {
	$data = json_decode(@file_get_contents("https://api.twitch.tv/kraken/streams/{$channel}"));
if($data == FALSE) return FALSE;
	return $data->stream == NULL ? FALSE : TRUE;
}
if ( is_twitch_channel_online("forsenlol") ) echo "Är online";
else echo "Är offline";
?>

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

 

Tackar för att du hjälper mig Phenomen.

 

Dock får jag inte koden att ge mig "online".. oavsett vilka kanaler jag provat, varav alla varit online, får jag alltid tillbaka "Är offline".

 

Vad tror du kan vara fel?

<?php
function is_twitch_channel_online($channel) {
	$data = json_decode(@file_get_contents("https://api.twitch.tv/kraken/streams/{$channel}"));
if($data == FALSE) return FALSE;
	return $data->stream == NULL ? FALSE : TRUE;
}
if ( is_twitch_channel_online("forsenlol") ) echo "Är online";
else echo "Är offline";
?>

 

 

Klistrade denna kod hos mig. Jag får (Offline) på foresnlol och (Online) på djnvy. 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag har php v 5.5.9

 

Bättre kod

function is_twitch_channel_online($channel) {
	$data = json_decode(@file_get_contents("https://api.twitch.tv/kraken/streams/{$channel}"));
	if ($data == FALSE) {
		throw new \Exception("The channel does not exist");
	}
	return $data->stream != NULL;
}
Redigerad av Phenomen

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag kopierade koden rätt över och fick detta efter att jag kört:

if ( is_twitch_channel_online("Tidesoftime") ) echo "Är online";

else echo "Är offline";

 

Fatal error: Uncaught exception 'Exception' with message 'The channel does not exist' in index.php:35 Stack trace: #0 index.php(40): is_twitch_channel_online('Tidesoftime') #1 {main} thrown inindex.php on line 35

 

Line 35: throw new \Exception("The channel does not exist");

 

Jag vet inte vad det är som inte stämmer. Använder PHP 5.6.4  :(

 

-edit-

 

Jag provade definiera $channel = "gnumme"

(Tidesoftime och gnumme är hearthstone streamers som var online när jag testade)

 

Då fick jag detta felmeddelandet:

Parse error: syntax error, unexpected 'function' (T_FUNCTION) in index.php on line 34

 

Rad 34 är: function is_twitch_channel_online($channel) {

 

Är mitt PHP felkonfigurerat på något sätt?

Redigerad av Niss3

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

allow_url_fopen var på sedan innan.

 

Jag provade att återställa php.ini till orginalet development för att se om det hjälpte, men icke.

 

får fortfarande felmeddelanden när jag försöker:

Fatal error: Uncaught exception 'Exception' with message 'The channel does not exist' in index.php:35 Stack trace: #0 index.php(40): is_twitch_channel_online('TrumpSC') #1 {main} thrown in index.php on line 35

Line 35: throw new \Exception("The channel does not exist");

 

Provade den "gamla" koden utan throw new och den fungerar inte för mig heller, efter att jag återställde php.ini till development orginalet..

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

file_get_contents returnerar FALSE ...

 

felsök

 

vad händer om du tex kör.

var_dump(file_get_contents('https://api.twitch.tv/kraken/streams/djnvy'));
Redigerad av Phenomen

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Testa med cURL...

function is_twitch_channel_online_using_curl($channel) {
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, "https://api.twitch.tv/kraken/streams/{$channel}");
	curl_setopt($curl, CURLOPT_HEADER, FALSE);
	curl_setopt($curl, CURLOPT_NOBODY, FALSE);
	curl_setopt($curl, CURLOPT_REFERER, "");
	curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

	$data = json_decode(curl_exec($curl));
	$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);

	if ($code == 404) {
		throw new \Exception("The channel does not exist");
	}

	if (!isset($data->stream)) {
		return FALSE;
	}

	return $data->stream != NULL;
}

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Hej igen!

 

Tack för att du tar dig tid att hjälpa mig, mycket uppskattat!

 

Tyvärr får jag felmeddelanden när jag kör dessa:

 

 

file_get_contents returnerar FALSE ...

 

felsök

 

vad händer om du text kör.

var_dump(file_get_contents('https://api.twitch.tv/kraken/streams/djnvy'));

 

Warning: file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in C:\Niss3\4.php on line 10

Warning: file_get_contents(https://api.twitch.tv/kraken/streams/djnvy): failed to open stream: Invalid argument in  C:\Niss3\4.php on line 10
bool(false)

 

 

 

Testa med cURL...

function is_twitch_channel_online_using_curl($channel) {
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, "https://api.twitch.tv/kraken/streams/{$channel}");
	curl_setopt($curl, CURLOPT_HEADER, FALSE);
	curl_setopt($curl, CURLOPT_NOBODY, FALSE);
	curl_setopt($curl, CURLOPT_REFERER, "");
	curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

	$data = json_decode(curl_exec($curl));
	$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);

	if ($code == 404) {
		throw new \Exception("The channel does not exist");
	}

	if (!isset($data->stream)) {
		return FALSE;
	}

	return $data->stream != NULL;
}

Fatal error: Call to undefined function curl_init() in C:\Niss3\4.php on line 11

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

 

Aktiverade extension=php_openssl.dll och allow_url_include=On.

 

Nu fungerar det. Tack för all hjälp Phenomen!

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...