Pull to refresh

Сервис для любителей халявы, или как создать сервис для создания и хранения m3u-плейлистов

Предисловие


Всем привет. На днях я решил полистать Яндекс.Дзен и увидел, что крупный технологический гигант устраивал конкурс для разработчиков. По условию конкурса, разрабы должны были создать приложение на JavaScript. Мы с другом, решили принять участие в конкурсе. И начали думать, что можно создать, чтобы было оригинально и интересно в то же время. И тогда у нас родилась идея создать сервис для хранения m3u файлов. Мы разделили обязанности (Он за само приложение, а я за серверную часть). Для такого простого проекта, я создал простой сервер на PHP+MySQL. Спустя многое время я реализовал сервер, и даже сумел сделать Frontend часть. Но, друг "открестился" от нашего дела. Я остался один, точнее говоря я и мой код. И я забил на этот код, и не лазил в него долгое время.


Возвращение к разработке


Спустя долгое время я вернулся к коду, и решил его исправлять. и начал с переработки главной страницы. Я эмигририровал с ужасаного MDL на Bulma.


image


Дальше, я переделал генерацию цифрового кода, теперь он (генератор), выглядит так


$numbers= '123456789';
$code = substr(str_shuffle($numbers), 0, 12);

Дальше, я перешёл к самому сложному для меня, как начинающему программисту, реализация API. Я решил, зачем мне REST API, если можно написать, простой API, пусть и с костылями, за то работающий. Спустя много "if" и "else" я реализовал API, по GET запросам разработчик мог получить статус плейлиста (есть ли он, или нет), получить сам плейлист. Я подключил ORM-библиотеку RedBeanPHP для легкого управление плейлистами, и обмена информацией с базой данных. Благодаря её я и реализовал проверку наличия плейлиста.


Разграничение платформ


Дальше, я задался вопросом, что делать если приложение, для моего проекта будет написано для TV-устройств, я подумал, если API может передать наличие файла на сервере, то тогда можно и передавать ошибки, либо информацию о технических работах в формате плейлиста. Спустя долгое время, я сделал так, чтобы все это теперь стало передаваться по отдельному запросу. Давайте ближе к примеру, пусть код "12341" — несуществующего плейлиста, то тогда API для TV-устройства, покажет сообщение:


image


А API для других устройств, выведет сообщение в формате JSON:


{ "mess" : "Ошибка получения данных", "codemess" : "Code_not_exist" }

Для меня было интересно реализовать этот проект, теперь каждый пользователь может создать свое приложение на базе моего сервиса. Интересно, то что в проекте не использовалось не одного JavaScript, все было написано на php, кроме Bulma. Даже была реализована поддержка встраивания рекламы, но она сейчас отключена.


Тестировал я на VLC Media Player, а также ForkPlayer. И все работало. Сервис скоро будет выпущен, и будет работать в штатном режиме, а сейчас он доступен только на локальной машине.


Спасибо за чтение !

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.