Airtime имеет опцию, благодаря которой еженедельная программа вещания вашей станции и информация о передаче в эфире отображается на удаленных веб-сайтах. Эта функция включена в Airtime в связи с тем, что, как правило, у широкой публики нет доступа напрямую к вашему серверу Airtime. Если очень большое количество людей одновременно будет запрашивать данные с вашего сервера Airtime, сетевой трафик может перегрузить сервер, что может помешать вещанию. Подобная перегрузка сети, осуществляемая намеренно, известна как DDoS-атака.
Вместо этого ваш веб-сервер, предназначенный для общего доступа, может загружать сведения о расписании вещания из Airtime. Эта информация может затем отображаться на веб-сайте вашей станции или партнерских веб-сайтах системой управления контентом, такой как система Newscoop, созданная Sourcefabric Newscoop (http://newscoop.sourcefabric.org/). Она может отображаться при помощи виджетов Javascript и каскадных таблиц стилей в любом требующемся формате.
Есть два вида информации, которая может быть получена удаленно из Airtime; метаданные о текущей программе в эфире, а также о следующей передаче, или программа вещания на текущую неделю. Эти метаданные включают название программы, время выхода в эфир, описание и индивидуальный URL-адрес программы на вашем общедоступном веб-сайте. Таким образом, аудитория вашей станции может переходить по баннерам от информации о программе вещания к более подробной информации о конкретной программе, или скачивать запись предыдущей программы, которую вы выложили для общего доступа.
Если ваш сервер Airtime доступен на http://air1.example.com, информация о передаче в эфире может быть получена вашим веб-сервером с помощью следующего URL:
http://air1.example.com/api/live-info/?callback
Разделенные запятыми текстовые метаданные, возвращаемые на ваш веб-сервер, могут выглядеть примерно так:
({ "env":"development", "schedulerTime":"2011-05-09 15:01:18", "currentShow":[{"start_timestamp":"2011-05-09 16:00:00", "end_timestamp":"2011-05-09 17:00:00", "name":"Funk Show", "id":"8", "instance_id":"8", "record":"0", "url":"http:\/\/funk.example.com\/"}], "nextShow":[{"id":"9","starts":"2011-05-09 17:00:00", "ends":"2011-05-09 18:00:00", "show_id":"9", "record":"0", "rebroadcast":"0", "instance_id":null, "file_id":null, "soundcloud_id":null, "time_filled":null, "name":"Dance show", "url":"http:\/\/dance.example.com", "genre":"Dance", "description":"Techno, techno, techno, techno!", "color":"000000", "background_color":"ffea00", "start_timestamp":"2011-05-09 17:00:00", "end_timestamp":"2011-05-09 18:00:00"}], "timezone":"BST", "timezoneOffset":"3600" })
Информация о расписании вещания на текущую неделю может быть получена при помощи следующего URL:
http://air1.example.com/api/week-info/?callback
В этом случае метаданные будут получены в формате, отличном от приведенного выше примера, и могут приблизительно выглядеть, как показано ниже. Для краткости данный пример экспорта программы вещания включает только четыре передачи понедельника. Экспорт полной еженедельной программы вещания будет содержать гораздо больше текста.
({ "sunday":[], "monday":[ {"show_starts":"2011-05-09 14:25:00", "show_ends":"2011-05-09 14:35:00", "show_name":"Elvis Show", "url":"http:\/\/elvis.example.com\/"}, {"show_starts":"2011-05-09 14:50:00", "show_ends":"2011-05-09 14:55:00", "show_name":News", "url":"http:\/\/news.example.com\/"}, {"show_starts":"2011-05-09 16:00:00", "show_ends":"2011-05-09 17:00:00", "show_name":"Funk Show", "url":"http:\/\/funk.example.com\/"}, {"show_starts":"2011-05-09 17:00:00", "show_ends":"2011-05-09 18:00:00", "show_name":"Dance show", "url":"http:\/\/dance.example.com"} ], "tuesday":[], "wednesday":[], "thursday":[], "friday":[], "saturday":[] })
Если при попытке показать информацию о программе в вашем браузере вы увидели сообщение У вас нет прав доступа к данному ресурсу, войдите в административный интерфейс Airtime, выберите Configure в главном меню, затем Preferences. Разрешите (enable) Удаленным вебсайтам доступ к информации о программе вещания (Allow Remote Websites To Access "Schedule" Info, кликните Отправить, затем обновите окно браузера, открытое на странице экспорта программы вещания.
Если сервер Airtime защищен брандмауэром или, в случае, если вы хотите защитить сервер Airtime от слишком большого числа запросов о программе вещания, вы можете пожелать кэшировать данную информацию на общедоступном или промежуточном сервере. Затем вы можете создать правило для брандмауэра, согласно которому помимо любых удаленных пользователей веб-интерфейса Airtime связаться с сервером Airtime может только сервер для программы вещания.
Ваш системный администратор может настроить кэширование программы на стандартном веб-сервере с Apache и PHP, на котором установлена программа curl, следующим образом:
1. Создайте bash-скрипт на сервере с программой вещания (schedule.example.com), который будет запрашивать сервер Airtime (air1.example.com) и записывать метаданные в виде пары временных файлов:
sudo nano /usr/local/bin/airtime-schedule.sh
Содержимое этого файла должно быть таким, как этот скрипт, но air1.example.com заменено именем вашего сервера Airtime:
#!/bin/sh curl -s "http://air1.example.com/api/live-info/?callback=***" > /tmp/live-info curl -s "http://air1.example.com/api/week-info/?callback=***" > /tmp/week-info
2. Сделайте bash-скрипт исполняемым:
sudo chmod +x /usr/local/bin/airtime-schedule.sh
3. Создайте конфигурацию Apache VirtualHost для сервера с программой вещания:
sudo nano /etc/apache2/sites-available/schedule
содержащую следующий код, заменяя schedule.example.com именем вашего сервера с программой вещания:
<VirtualHost *:80> ServerName schedule.example.com DocumentRoot /var/www/schedule/ </VirtualHost>4. В папке DocumentRoot сервера с программой вещания создайте папки api/live-info/ и api/week-info/
sudo mkdir -p /var/www/schedule/api/live-info/ sudo mkdir -p /var/www/schedule/api/week-info/
5. Создайте файл index.php в папке api/live-info/:
sudo nano /var/www/schedule/api/live-info/index.php
содержащий следующий код:
<?php $filename = '/tmp/live-info'; // define here the path and name of uploaded live-info file header('Content-Type: text/javascript'); header("Expires: Thu, 01 Jan 1970 00:00:00 GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); $callback = empty($_GET['callback']) ? null : $_GET['callback']; $content = file_get_contents($filename); $content = str_replace('***', $callback, $content); echo $content; ?>
6. Создайте файл index.php в папке api/week-info/:
sudo nano /var/www/schedule/api/week-info/index.php
содержащий следующий код:
<?php $filename = '/tmp/week-info'; // define here the path and name of uploaded week-info file header('Content-Type: text/javascript'); header("Expires: Thu, 01 Jan 1970 00:00:00 GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); $callback = empty($_GET['callback']) ? null : $_GET['callback']; $content = file_get_contents($filename); $content = str_replace('***', $callback, $content); echo $content; ?>
7. Запустите новую конфигурацию и перезагрузите веб-сервер Apache:
sudo a2ensite schedule sudo /etc/init.d/apache2 reload
8. Создайте функцию запуск задач по расписанию для запуска bash-скрипта ежеминутно:
sudo nano /etc/cron.d/airtime-schedule
содержащую следующую строку:
* * * * * www-data /usr/local/bin/airtime-schedule.sh
Сервер программы вещания начнет обслуживать ту же информацию о вещании, что и сервер Airtime со временем сохранения кэша - одна минута. Вы можете настраивать время сохранения, изменяя функцию запуска задач, которая посылает запросы на сервер Airtime.
Образцы кодов HTML, Javascript и CSS для вашего общедоступного сайта приведены в папке widgets установочного архива Airtime. Если вы реализовали автоматизированную установку на Debian или Ubuntu, виджеты будут находиться в папке /usr/share/doc/airtime/examples/.
Чтобы виджеты работали на типичном веб-сервере, ссылки на коды Javascript и CSS должны быть вставлены в <head> HTML страницы, например:
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Airtime widgets</title> <script src="js/jquery-1.6.1.min.js" type="text/javascript"> </script> <script src="js/jquery-ui-1.8.10.custom.min.js" type="text/javascript"> </script> <script src="js/jquery.showinfo.js" type="text/javascript"> </script> <link href="css/airtime-widgets.css" rel="stylesheet" type="text/css" /> </head>
Полный пример дан в файле widgets/sample_page.html в установочном архиве Airitme. Или в папке /usr/share/doc/airtime/examples/ если вы установили Debian/Ubuntu пакет Airtime.
TКод в примере ниже предназначен для виджета airtimeLiveInfo, который отображает информацию о текущей передаче (пройденное время и время до окончания) и информацию о следующей передаче (время начала и время окончания). В этом примере текст метки для onAirNow переведен на французский для поддержки местного языка:
<script> $(document).ready(function() { $("#headerLiveHolder").airtimeLiveInfo({ sourceDomain: "http://schedule.example.com/", text: {onAirNow:"Sur Les Antennes", offline:"Offline", current:"Current", next:"Next"}, updatePeriod: 20 //seconds }); }); </script>
На общедоступном сайте этот виджет может выглядеть следующим образом:
Свойства CSS color: и text-transform:uppercase были использованы для создания тиля метки onAirNow. Полный пример CPP файла widgets/css/airtime-widgets.css находится в установочном архиве Airtime или в папке /usr/share/doc/airtime/examples/.
Следующий виджет airtimeShowSchedule среднего размера. Он показывает следующие программы этого дня.
<script> $(document).ready(function() { $("#onAirToday").airtimeShowSchedule({ sourceDomain: "http://schedule.example.com/", text: {onAirToday:"On air today"}, updatePeriod: 5 //seconds }); }); </script>
Данный выше код виджета можно оформить следующим образом:
И наконец, следующий код создает виджет больших размеров airtimeWeekSchedule,который позволяет пользователям изучить программу вещания недели. В данном примере все метки виджета переведены на французский:
<script> $(document).ready(function() { $("#scheduleTabs").airtimeWeekSchedule({ sourceDomain:"http://schedule.example.com/", dowText:{monday:"Lundi", tuesday:"Mardi", wednesday:"Mercredi", thursday:"Jeudi", friday:"Vendredi", saturday:"Samedi", sunday:"Dimanche"}, miscText:{time:"Temps", programName:"Nom du Programme", details:"Détails", readMore:"Lire La Suite"}, updatePeriod: 600 //seconds }); }); </script>
При помощи указанного выше кода и CSS первые шесть часов ежедневной программы вещания можно оформить следующим образом:
Значение sourceDomain в данном примере должно совпадать с тем адресом, по которому, согласно вашим планам, должна быть размещена информация о программе вещания. Если вы применили метод Кэширования информации о программе вещания, о котором мы подробно написали выше, то данным адресом будет адрес вашего сервера программы вещания, а не сервер Airtime.
There has been error in communication with Booktype server. Not sure right now where is the problem.
You should refresh this page.