HomeBlogTranscribePlansAPI Keys

PHP의 YouTube 스크립트: 저렴한 공유 호스팅에서 cURL

공유 호스팅의 PHP 스크립트가 cURL을 통해 YouTube 스크립트를 가져오기

나는 찾을 수 있는 가장 저렴한 공유 호스트에서 이것을 테스트했습니다: PHP 8.1, Composer 없음, 셸 액세스 없음, FTP를 통해 업로드된 파일(2009년처럼). 작동합니다. PHP에서 YouTube 스크립트를 가져오는 것은 20년 동안 모든 호스트가 배송한 정확히 2개 사항이 필요하기 때문입니다. curl 확장 및 json_decode. 이 게시물이 끝나면 YouTube URL을 가져와 제목과 스크립트를 인쇄하고 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 규칙이 발동하면 JSON이 아닌 HTML 오류 페이지를 받습니다. 가드 없이 스크립트는 3줄 후 배열 액세스에서 쓸모없는 메시지로 치명적입니다. 형태를 만지기 전에 디코드를 확인하세요.

계정 없이 키 얻기

$demo = json_decode(
    file_get_contents("https://youtube2text.org/api/demo-key"),
    true
);
echo $demo["apiKey"]; // yt_...

정직한 미세한 인쇄: 데모 키는 요청하는 모든 사람 간에 공유되며 IP당 월 5개 비디오를 허용합니다. 공유 호스팅에서 해당 IP는 서버 이웃과도 공유되므로 데모 키를 5분 테스트로 취급하고 계획으로 취급하지 마십시오.

또한 알아두면 좋습니다: 스크립트는 YouTube의 캡션 트랙에서 나옵니다. 수동 또는 자동 생성. 영어가 선호되고, 그렇지 않으면 첫 번째 사용 가능한 언어입니다. 캡션이 비활성화된 비디오는 TRANSCRIPT_UNAVAILABLE을 영구적으로 반환합니다. 루프를 구축하여 그것들을 건너뛰세요.

PHP 개발자가 이것을 가져가는 곳

PHP 개발자로부터 받는 가장 일반적인 요청은 WordPress 형태입니다: 스크립트를 가져오고, LLM에 전달하고, 초안을 발행합니다. 전체 파이프라인은 YouTube 비디오를 블로그 게시물로 변환에서 다루어지고, 팟캐스트 변형은 YouTube에서 쇼 노트 생성에서 다루어집니다.

데모 키가 충분하지 않을 때 youtube2text.org/app/keys에서 Google으로 로그인하세요. 카드 없음, 전화 번호 없음, 자신의 무료 5개 비디오 월 키, $5.99부터의 유료 계층. 위의 스크립트는 바이트 대 바이트로 동일하게 유지됩니다.