PHP での YouTube トランスクリプト: 安いシェアホスティングで cURL

見つけることができた最も安いシェアホストでテストしました: PHP 8.1、Composer なし、シェルアクセスなし、FTP経由でアップロードされたファイル、2009年のように。それは機能しています。PHPでYouTubeトランスクリプトを取得するには、20年間すべてのホストが出荷した正確に2つのもの―curl拡張機能とjson_decodeが必要なため。このポストの終わりまでに、YouTubeURLを取得してタイトルと文字起こしを印字するような単一ファイル、APIが返すことができるすべてのエラーの理に適った分岐があります。
そのシェアホスティング角度は、それがいかなる音よりも重要です。スクレイパーライブラリはYouTubeから直接字幕をフェッチし、シェアホスティングIPはYouTubeがブロックする最初の範囲の中にあります―数百の他のサイトと IP を共有しています。いくつかは悪く行動しています。全体の混乱はトランスクリプトスクレイパーがなぜブロックされるに記載されています。ホストされたAPIを呼び出すのはすべてを回避します: ホストはyoutube2text.orgにのみ話します。
スクリプト
<?php
$videoUrl = "https://www.youtube.com/watch?v=dQw4w9WgXcQ";
$endpoint = "https://youtube2text.org/api/transcribe?url=" . urlencode($videoUrl);
$ch = curl_init($endpoint);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["x-api-key: " . getenv("YT2TEXT_KEY")],
CURLOPT_TIMEOUT => 60,
]);
$raw = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
if ($raw === false) {
exit("Network error\n");
}
$data = json_decode($raw, true);
if ($data === null) {
exit("Response was not JSON (status $status)\n");
}
if ($status === 200) {
echo $data["result"]["title"], "\n";
echo $data["result"]["contentSize"], " characters\n";
echo substr($data["result"]["content"], 0, 500), "\n";
} else {
$err = $data["error"];
if ($err["code"] === "RATE_LIMIT_EXCEEDED") {
echo "Rate limited. Retry in ", $err["retryAfterSeconds"], " seconds.\n";
} elseif ($err["code"] === "TRANSCRIPT_UNAVAILABLE") {
echo "This video has no captions. Nothing to fetch.\n";
} else {
echo $err["code"], ": ", $err["message"], "\n";
}
}
ホストのコントロールパネルでYT2TEXT_KEYを設定するか、やむを得ない場合はハードコード―必ず行う場合はリポから外してファイルを保ちます。urlパラメータは任意のYouTube URL形式または裸の11文字ビデオIDを取り、出力をキャップするオプションmaxCharsパラメータ(デフォルトと最大150000)があります。
json_decode ガードはオプションではありません
その$data === nullチェックはシェアホスティングで特にそれを稼ぎます。ホストのプロキシがタイムアウトするか、mod_securityルールが発火すると、HTMLエラーページが得られます。JSONではなく―ガードがないと、スクリプトは3行後の配列アクセスでuselessメッセージで致命的です。形状に触れる前にデコードをチェックしてください。
アカウントなしでキーを取得
$demo = json_decode(
file_get_contents("https://youtube2text.org/api/demo-key"),
true
);
echo $demo["apiKey"]; // yt_...
正直な細字: デモキーはそれをリクエストした全員の間で共有され、月5ビデオあたりIPを許可します。シェアホスティングでそのIPはサーバー隣人と共有されても、デモキーを5分テストとして扱い、計画ではなく。
また知る価値: 文字起こしはYouTubeの字幕トラック、手動または自動生成から来ます。英語を優先し、最初に利用可能な言語―および字幕が無効なビデオがTRANSCRIPT_UNAVAILABLE、永久に返します。スキップするようループを構築します。
PHP民がこれを取るところ
PHP開発者から得た最も一般的なリクエストはWordPress形です: 文字起こしを引き出し、LLMに渡し、ドラフトを公開します。全体のパイプラインはYouTubeビデオをブログポストに変えるでカバーされ、YouTubeからショーノートを生成ポッドキャストバリアントでカバーされます。
デモキーが十分でなくなったら、youtube2text.org/app/keysでGoogleサインインしてください―カードも電話番号もなく、独自の無料5-videos-a-month キーと$5.99からの有料ティア。上のスクリプトはバイトバイト同一のままです。