Никитенко Максим (Sets88)

Личная страница

VlcTVStation

Описание

Давайте представим что вы крошечная компания в маленьком городе или даже деревне, а вам всего-то нужно треанслировать собственный мини-телеканал в собственной кабельной сети.

Вы начнете искать программное обеспечение для этих целей, все что вам нужно это транслировать несколько передач, новости и рекламу, и тут вы обнаруживаете, что такое программное обеспечение стоит огромных денег, и всем плевать что у вас всего 5 зрителей, у меня есть решение для вас.

Это приложение не транслирует видео в сеть, все что оно делает это играет выбранное вами содержимое в нужное для вас время на экране монитора, потом же вы можете преобразовать это в обычный аналоговый сигнал либо воспользоваться программами по захвату рабочего стола.

В этом приложении есть планировщик заданий, который вы можете удаленно администрировать через web интерфейс

Screenshot

Вы можете добавить любое содержимое какое захотите и указать когда оно будет проиграно:

Screenshot

В данном примере, приложение будет проигрывать файл "/tmp/2.avi" каждое 12-е число каждого месяца в 15:50 2 раза подряд.

Вы даже можете сделать снимок экрана с компьютера с VlcTVStation, чтобы видеть что происходит, вот например мой снимок:

Screenshot

Установка и первый запуск

В Ubuntu вы можете просто скопировать код в терминал и выполнить:

sudo apt-get -y install git python-flask python-apscheduler vlc
git clone https://github.com/Sets88/vlctvstation.git
cd vlctvstation/vlctvstation
python vlctvstation.py

Настройка

Файл настройки загружается при старте приложения, вначале приложение попытается найти файл настройки в:

"~/.vlctvstation.cfg"

Если этого сделать не удалось оно откроет "default.cfg" в текущей директории

В нем мы видим обычный форматированный json, не думаю что у кого-нибудь возникнт проблемы с ним, но давайте взглянем поближе:

{
    "fullscreen": false, 
    "dbfile": "/tmp/dbfile", 
    "users": {
        "admin": "admin"
    }, 
    "permissions": {
        "add_jobs": [
            "admin"
        ], 
        "delete_jobs": [
            "admin" 
        ], 
        "run_jobs": [
            "admin"
        ], 
        "run_custom_jobs": [
            "admin"
        ], 
        "edit_jobs": [
            "admin"
        ], 
        "get_token": [
            "admin"
        ]
    }, 
    "language": "en", 
    "secret": "asfaesgdfsrtyweaslryuiryd", 
    "host": "0.0.0.0", 
    "port": "5000"
}

fullscreen - Скорее всего вам нужно будет установить True, для полноэкранного режима

dbfile - Расположение файла с базой данных где будут храниться задачи

users - Это простой словарь вида: "login": "password", вы так-же можете поставить запятую и добавить еще одного пользователя, вот так:

"admin": "megasicretpass",
"user": "supersecretpass"

permissions - Используйте запятую чтобы добавить привилегий пользователям, вот так:

"add_jobs": [
    "admin", "user"
],

language - Установка языка например, "ru" для русского языка или "en" для английского

secret - Измените его прежде всего! Это используется для генерации ключа и как соль в паролях

host - IP или домен на котором будет доступен web интерфейс

post - Порт на котором будет доступен web интерфейс

API

Есть способ получить информацию о текущем задании используя API

Для того чтобы воспользоваться API вы должны сначала сгенерировать ключ:

Screenshot

Введите IP компьтера с которого будет получать информацию и нажмите "Получить"

Затем скопируйте ключ, который получили и соберите url:

http://{ IP of VlcTVStation }/api/{ Token you've got }/status/

Проверим:

$ curl http://192.168.1.1:5000/api/0d17ee207e645270325cf43da8f101d461fd9f35/status/
{"state": 3, "jobname": "Reklama", "uri": "/home/alexandra/video/Video.avi", "jobid": "905283"}

Теперь видим: state - 3 (Проигрывается), имя текущего задания, имя файла или url из поля Video, и ID задания (Никогда не используйте его, он может измениться).

Полученную информацию можете использовать как угодно, я например использовал ее, для того чтобы показывать/убирать баннер поверх видео на некоторых заданиях.

заGitHubить

Яндекс.Метрика