Kategorien
PHP

Mit PHP YouTube Abonnenten Anzahl auslesen

Vielleicht brauchst du bei deinem aktuellen Projekt die Anzahl der Abonnenten eines YouTube-Kanals und du programmierst mit PHP. Dann habe ich dir hier ein kleines Code-Snippets, welches dir den subscribers count auslesen kann – und das ohne einen API-Auth!

PHP-Code

<?php

$channelId = 'UCTlY7vW0rAKtyIJHS1brq2g'; // Deine Channel-ID; das darfst du bearbeiten

// ---------------------------

$wsFull = file_get_contents('https://www.youtube.com/channel/' . $channelId); // Lese Webseite in Variable "wsFull" ein

if (strlen($wsFull) > 1000) { // Sicherheitsabfrage, ob Daten gekommen sind
	
	preg_match('/subscribed yt-uix-tooltip" title="(.+)" tabindex/', $wsFull, $res); // Regex auf Quellcode
	
	if (count ($res) > 1 ) { // Sicherheitsabfrage, ob es mind. 2 Elemente im Array gibt
		echo $res[1]; // Ausgabe der Anzahl der Abonnenten
	} else {
		echo 'err2'; // Hat den Counter nicht gefunden
	}
	
} else {
	echo 'err1'; // Konnte Seite nicht lesen
}

?>

Wenn alles funktioniert, dann wird dir direkt die Anzahl der Abonnenten ausgegeben – mehr nicht! Perfekt für eine weitere Verarbeitung 🙂

Falls etwas nicht korrekt funktioniert, dann wird dir entsprechend eine Fehlermeldung – bspw. „err1“ oder „err2“ ausgeben, sodass du schauen kannst, an welcher Stelle es im Quellcode hakt.

Eine Funktion muss her

Mit dem obigen Snippet kannst du nun die Anzahl der Abonnenten auslesen… Aber was bekommen wir den noch für Informationen von der YouTube-Seite?

Folgendes habe ich noch gefunden: Profilbild und Kanal-Name.

Der Vorteil bei der folgenden Funktion ist, dass dein Script nur einen Abruf von YouTube machen muss. Das beschleunigt die ganze Ausgabe – wortwörtlich – um das Dreifache.

<?php
function getYTChanInfo ($channelId) {
	$wsFull = file_get_contents('https://www.youtube.com/channel/' . $channelId);
	$return = array();
	if (strlen($wsFull) > 1000) {
		// Subscriber Count:
		preg_match('/subscribed yt-uix-tooltip" title="(.+)" tabindex/', $wsFull, $res01);
		if (count ($res01) > 1 ) {
			$return['subcount'] = $res01[1];
		} else {
			$return['subcount'] = 'error1';
		}
		// Channel Profile Picture:
		preg_match('/class="appbar-nav-avatar" src="(.+)" title/', $wsFull, $res02);
		if (count ($res02) > 1 ) {
			$return['profilepic'] = $res02[1];
		} else {
			$return['profilepic'] = 'error2';
		}
		// Channel Name:
		preg_match('/branded-page-header-title-link yt-uix-sessionlink" title="(.+)" data/', $wsFull, $res03);
		if (count ($res03) > 1 ) {
			$return['channelname'] = $res03[1];
		} else {
			$return['channelname'] = 'error3';
		}
	} else {
		$return['subcount'] = 'error0';
		$return['profilepic'] = 'error0';
		$return['channelname'] = 'error0';
	}
	return $return;
}
?>

Du kannst jetzt auf die einzelnen Elemente des Rückgabe-Array über die Namen zugreifen. Es folgt ein kleines Beispiel:

<?php
$ytCampingTech = getYTChanInfo('UCTlY7vW0rAKtyIJHS1brq2g');
?>
<p>
	<img src="<?php echo $ytCampingTech['profilepic'];?>" alt="<?php echo $ytCampingTech['channelname'];?>-Logo">
</p>
<h2><?php echo $ytCampingTech['channelname'];?></h2>
<p>
	Abonennten: <?php echo $ytCampingTech['subcount'];?>
</p>

Wenn du jetzt mehrere Kanäle abfragen willst, dann kannst du dir auch ganz entspannt eine Schleife drumherum bauen 🙂

Say thanks

BTW… Du kannst mir ja mal ein Abo auf meinem Hobby-Kanal „CampingTech“ da lassen – natprlich nur, wenn dich Camping interessiert 😉

CampingTech auf YouTube (ext. Link öffnet sich in einem neuen Fenster)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.