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

Twitch kanal Online eller Offline


Niss3

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!

Länk till kommentar
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";

Länk till kommentar
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";
?>
Länk till kommentar
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. 

Länk till kommentar
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;
}
Länk till kommentar
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?

Länk till kommentar
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..

Länk till kommentar
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'));
Länk till kommentar
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;
}
Länk till kommentar
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

Länk till kommentar
Dela på andra webbplatser

 

Aktiverade extension=php_openssl.dll och allow_url_include=On.

 

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

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...