YouTube API – Видео загрузчик

Сегодня я хотел бы поговорить о видео. Возможно, у некоторых из вас есть собственный сайт с видео, или вы хотите создать такой сайт, но в любом случае я думаю, что эта информация окажется для вас полезной. Как вы знаете, видео обычно означает, что нужно иметь много места на вашем хостинге. И это правда, если вы храните свои файлы на хостинге. Но для того, чтобы избежать всех этих трудностей, вы можете попробовать работать с отдельным видео хостингом, в качестве примера YouTube (или Vimeo). В данном уроке я расскажу вам, как создать прекрасный YouTube загрузчик для вашего сайта.

Сложность

Мы будем использовать YouTube API v2.0 - на основе загрузки в браузере. Для начала мы должны подготовить наши ключи доступа с помощью OAuth. При загрузке видео, пользователь может увидеть информацию о видео (название, категория, описание и ключевые слова). Далее мы отправляем эту информацию, Youtube вернет нам обратную ссылку и ссылку на загрузку. Как только мы получим ее - мы можем начать загрузку выбранного видео файла.

Шаг 1. PHP

Теперь, создадим пустой файл index.php со следующим содержанием:

index.php

<?php
if (version_compare(phpversion(), '5.3.0', '>=') == 1)
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
else
error_reporting(E_ALL & ~E_NOTICE); // http://code.google.com/apis/youtube/dashboard/gwt/index.html
$sDevKey = 'Your Youtube Developer Key'; $sWebPageUrl = 'http://www.script-tutorials.com/demos/283/index.php';
$sAuthUrl = urlencode($sWebPageUrl . '?action=auth');
$sOAuthUrl = "https://www.google.com/accounts/AuthSubRequest?next={$sAuthUrl}&scope=http%3A%2F%2Fgdata.youtube.com&session=0&secure=0"; // переменные
$sToken = $sUploadUrl = $sUploadToken = $sNextUrl = $sVideoId = '';
$iUploadStatus = 0; // действия
$sAction = $_REQUEST['action'];
switch ($sAction) {
case 'auth': // шаг 1 - получение ключа доступа и подготовка информации для отправки
$sToken = $_GET['token'];
break;
case 'prepare': // шаг 2 - отправка информации видео, получение ссылок $sTitle = strip_tags($_POST['title']);
$sDesc = strip_tags($_POST['description']);
$sCategory = strip_tags($_POST['category']);
$sKeywords = strip_tags($_POST['keywords']);
$sToken = strip_tags($_POST['token']); // подготовка видео для youtube
$sData = <<<EOF
<?xml version="1.0"?>
<entry xmlns="http://www.w3.org/2005/Atom"
xmlns:media="http://search.yahoo.com/mrss/"
xmlns:yt="http://gdata.youtube.com/schemas/2007">
<media:group>
<media:title type="plain">{$sTitle}</media:title>
<media:description type="plain">{$sDesc}</media:description>
<media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">{$sCategory}</media:category>
<media:keywords>{$sKeywords}</media:keywords>
</media:group>
</entry>
EOF; $sUplTokenUrl = "http://gdata.youtube.com/action/GetUploadToken";
$aHeaders = array("POST /action/GetUploadToken HTTP/1.1",
"Host: gdata.youtube.com",
"Authorization: AuthSub token=" . $sToken,
"X-GData-Key: key=" . $sDevKey,
"Content-Length: " . strlen($sData),
"Content-Type: application/atom+xml; charset=UTF-8"
);
$sUserAgent = $_SERVER['HTTP_USER_AGENT']; // отправка запроса youtube
$oCurl = curl_init();
curl_setopt($oCurl, CURLOPT_URL, $sUplTokenUrl);
curl_setopt($oCurl, CURLOPT_HTTPHEADER, $aHeaders);
curl_setopt($oCurl, CURLOPT_HEADER, true);
curl_setopt($oCurl, CURLOPT_TIMEOUT, 30);
curl_setopt($oCurl, CURLOPT_USERAGENT, $sUserAgent);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($oCurl, CURLOPT_POSTFIELDS, $sData);
curl_setopt($oCurl, CURLOPT_POST, true);
$sXmlRes = curl_exec($oCurl);
curl_close($oCurl); $sXmlSrc = substr($sXmlRes, strpos($sXmlRes, '<?xml'));
if ($sXmlSrc != '') {
$oXml = simplexml_load_string($sXmlSrc);
$sUploadUrl = $oXml->url;
$sUploadToken = $oXml->token; $sNextUrl = urlencode($sWebPageUrl . '?action=finish');
}
break; case 'finish': // шаг 3 - видео размещено на youtube, просмотр результатов
$iUploadStatus = (int)$_GET['status'];
$sVideoId = $_GET['id'];
break;
} ?>
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="utf-8" />
<title>YouTube API - OAuth and Upload Example | Script Tutorials</title>
<link href="/css/main.css" rel="stylesheet" type="text/css" />
</head>
<body>
<header>
<h2>YouTube API - OAuth and Upload Example</h2>
<a href="http://www.script-tutorials.com/youtube-api-oauth-and-upload-example/" class="stuts">Back to original tutorial on <span>Script Tutorials</span></a>
</header>
<img src="/ytb.png" class="ytb" alt="youtube" /> <?php if (! $sToken && $sAction != 'finish'): ?>
<center>
<h1>Step 1. OAuth</h1>
<h2>Please click <a href="/<?= $sOAuthUrl ?>">this link</a> in order to authorize your account at youtube</h2>
</center>
<?php endif ?> <?php if ($sToken && !$sUploadToken): ?>
<center>
<h1>Step 2. Video info</h1>
<h2>Now we should send video info to youtube in order to obtain proper upload token and url</h2>
</center>
<form method="post" action="index.php">
<input type="hidden" name="token" value="<?php echo($sToken) ?>" />
<input type="hidden" name="action" value="prepare" />
<label for="title">Title:</label>
<input type="text" name="title" value="Sample title of your video" />
<label for="description">Description:</label>
<input type="text" name="description" value="Sample description of your video" />
<label for="category">Category:</label>
<select name="category">
<option value="Autos">Autos &amp; Vehicles</option>
<option value="Comedy">Comedy</option>
<option value="Education">Education</option>
<option value="Entertainment">Entertainment</option>
<option value="Film">Film &amp; Animation</option>
<option value="Games">Gaming</option>
<option value="Howto">Howto &amp; Style</option>
<option value="Music">Music</option>
<option value="News">News &amp; Politics</option>
<option value="Nonprofit">Nonprofits &amp; Activism</option>
<option value="People">People &amp; Blogs</option>
<option value="Pets">Pets &amp; Animals</option>
<option value="Tech">Science &amp; Technology</option>
<option value="Sports">Sports</option>
<option value="Travel">Travel &amp; Events</option>
</select>
<label for="keywords">Keywords:</label>
<input type="text" name="keywords" value="Keywords" />
<input type="submit" name="submit" value="Continue" />
</form>
<?php endif ?> <?php if ($sUploadUrl && $sUploadToken && $sNextUrl): ?>
<center>
<h1>Step 3. Upload file</h1>
<h2>Now we should select video file and start upload</h2>
</center>
<form method="post" enctype="multipart/form-data" action="<?php echo $sUploadUrl . '?nexturl=' . $sNextUrl ?>">
<input type="hidden" name="token" value="<?php echo($sUploadToken) ?>" />
<label for="file">Select file to upload:</label>
<input type="file" name="file" size="41" />
<input type="submit" name="submit" value="Start upload" />
</form>
<?php endif ?> <?php if ($iUploadStatus == 200 && $sVideoId): ?>
<center>
<h1>Step 4. Final</h1>
<h2>Your video has just uploaded to youtube and available <a href="http://www.youtube.com/watch?v=<?php echo($sVideoId) ?>" target="_blank">here</a></h2>
</center>
<?php elseif ($iUploadStatus): ?>
<center>
<h1>Step 4. Final</h1>
<h2>Upload is failed. Error #<?php echo($iUploadStatus) ?></h2>
</center>
<?php endif ?> <?php if ($sToken || $sVideoId): ?>
<br />
<center><h2>(<a href="/<?php echo $sWebPageUrl ?>">Click here to start over</a>)</h2></center>
<?php endif ?> </body>
</html>

Обратите внимание, в самом начале, вы должны создать свое собственное приложение для того, чтобы получить ключ разработчика. После того как получите свой ключ разработчика, впишите его в эту строку $sDevKey = ‘Your Youtube Developer Key’;

Весь процесс делится на три логических шага: получить маркер доступа, передача видеоинформации и полуение ссылки на загрузку. Вот и все.

Шаг 2. CSS

css/main.css

.ytb {
    display: block;
    margin: 40px auto;
}
form {
    background-color: #ddd;
    display: block;
    margin: 20px auto;
    padding: 15px;
    width: 400px;
}
label {
    display: block;
    margin-bottom: 5px;
}
input, select {
    border-style: groove;
    font-size: 16px;
    height: 25px;
    margin-bottom: 10px;
    width: 400px;

    -moz-border-radius: 5px;
    -ms-border-radius: 5px;
    -o-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;

    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    -o-box-sizing: border-box;
    box-sizing: border-box;
}

input[type=submit], input[type=file]{
    cursor: pointer;
    font-weight: bold;
    height: 35px;
    padding: 5px;
}

Перевод статьи YouTube API – OAuth and Upload Example

Тэги: APIformyoutubeзагрузчик

Вход

Уважаемый пользователь! Мы обнаружили, что вы используете AdBlock и вынуждены скрыть часть материалов на нашем сайте. Siteacademy существует и развивается за счет доходов от рекламы. Просим внести наш сайт в список исключений или отключить Блокировщик рекламы на нашем сайте.