Файлы, картинки, мультимедиа RSS и скриншоты
10.11.2009Хочу порассуждать вслух об управлении загруженными файлами в блоголёте. Сейчас это можно делать, но вот существующий интерфейс является бедным. А хочется примерно следующего.
Отделять бинарные файлы и мультимедийные, для которых необходимо иметь скриншот (в том числе для аудио и видео). Иметь встроенные средства проигрывания/просмотра для мультимедиа (для картинок галерея, и более понятная, чем сейчас с плагином). Для мультимедиа еще желателен отдельный рсс - получается еще третий рсс, кроме постов и комментов.
Для мультимедиа более чем желательно иметь сводку о файле, например для картинок размеры, для видео разрешение, для звука битрейт. Все это желательно получать на стороне сервера без участия пользователя.
Необходимо связать файлы и посты, чтобы можно было в обе стороны делать необходимые выборки: для поста получить список файлов, для файла получить список постов. В версии с бд это будет отдельная таблица. Для анонсов постов ставить давать скриншоты, или по другому - в анонсе поста получать скриншоты, и желательно аяксовые скриншоты, по кликам на которые загружалась бы целая картинка, но это под вопросом.
С бинарниками тоже не все просто - если например дистрибутив блоголёта, то нужна версия дистрибутива, вне зависимости от имени файла, дата релиза, которая может не совпадать с датой файла на диске.
Для всех файлов желательна статистика скачиваний, и на ее основе рейтинг популярности. В админке в редакторе поста желательно иметь списочек файлов, по кликам на которые вставлялся бы линк в редактор.
Как же уместить столь разнородные данные и как ими управлять? На каждый вид мультимедиа файла делать свой класс? Обойтись Одним универсальным, в котором поместить абсолютно все возможные свойства для одного файла? Типа битрейт у zip и размер кадра для звука? С другой стороны типов файлов не так уж и много: аудио, видео, картинки. Всего 3 штуки, что не столь фатально.
Сделать базовый, как сейчас, класс, а от него сделать потомков для этих 3 типов. Скорее всего так и сделаю. В базовом классе указать тип файла, для управления которым должен будет создаваться/вызываться соответствующий класс. Тогда получится не потомки, а отдельные классы с общим интерфейсом доступа из базового класса, который осуществляет файловые операции, а вот статистика и со скриншотами отдается на откуп этим 3 классам.
Одна из проблем, такая, что в каждой узкой области (звук, видео,, картинки) я не являюсь специалистом, чтобы квалифицировано разбираться в форматах. С другой стороны это плюс, так как не смогу сделать наворотов, которые нужны узким специалистам и затруднят понимание рядового пользователя, коим я себя считаю.
Со скриншотами не все просто - на стороне сервера необходимо иметь соответствующие для этого библиотеки, которые не являются включенными по умолчанию в ядро php. Необходим внешний сервис для конвертации.
Пожалуй начну описывать классы для управления мультимедиа, без подробной реализации - оставлю на последующие обновления. Разве что еще раз посмотрю в сторону скриншотов. Может быть даже создание скриншотов на стороне браузера на жаве. Вполне возможно, что существуют решения по конвертации на флеше - достаточно будет иметь код этого флеша, чтобы он в браузере сделал все необходимые расчеты, то тогда будет и сервер цел и с файлами ок.
Комментарии (11) на запись “Файлы, картинки, мультимедиа RSS и скриншоты”
Оставить комментарий
>> скриншот (в том числе для аудио
сомневаюсь что это возможно :)
>> С бинарниками тоже не все просто
Возможно стоит сделать поле для ввода описания файла.
Видел скрипт для скриншотов на php, который их делал когда к файлу [foto.jpg] обращались по ссылке с разрешением [foto.200x250.jpg], автоматически создавался файл с указанными размерами.
Не помешает и форма загрузки файла на аяксе, на странице создания поста. Что-то вроде этого:
http://www.vanderkleijn.net/public/downloads/plugins/bdplugins/BD_uploadR.zip
Тогда два наверное - для картинок и подкастов
снапшот картинок встрою уже завтра - начал сегодня разбираться, ничего сложного, выясняется там больше ручной математики, в том смысле нужны будут настройки для задания размеров снапшота, например 150*150 и необходимости вручную подсчитать новый размер исходя из существующего, а это уже не та задача, которой следует озабочиваться. Есть стандартное расширение php которое поддерживает все стандартные типы графики, и можно делать с картинками все что угодно, в том числе и компресировать одной функцией.
С аудио еще проще - не знаю как в php, но wav и mp3 это простые форматы, для обработки которых ничего не нужно мудренного, примерно как zip в php несколькими строками. Можно обойтись безо всяких расширений, но надо будет поискать.
Для файлов и так уже есть несколько полей - оригинальное название (может быть даже на русском, после загрузки происходит транслитерация уже сейчас), заголовок, описание. Я думал про дополнительные свойства для сортировки и выборки, например версия это явно число, но это совсем не принципиально.
Про рсс - можно будет для каждого отдельного поста сделать второй рсс, помимо существующего рсс комментов. Как я помню мултимедийный рсс одинаков для всех типов медиа файлов - звук, видио, картинки. Про подкаст я только слышал - еще даже не смотрел ни одной доки, что там к чему.
Чтобы разделить мультимедийные рсс, мможно будет использовать аналогию с постами - один общий рсс, потом разделы (рубрики/категории) файлов, где отдельно будут рсс аудио, картинок и видео.
Про аякс я уже думал - накопилось несколько мест куда его можно прикрутить, например нынишний плагин админскихссылок убрать вовсе, а вместо него виджет админа, если не авторизовался - показать форму, авторизовался, то убрать форму и показывать ссылки, для всех посетителей только одна жавоская ссылка "администрировать", по которой и будет происходить подзагрузка, тогда можно будет редактировать пост прямо на странице поста, чтобы сразу оценить внесенные изменения. Например текст поста заменяется его редактором, после сохранения редактор убирается. Тоже касается и модерирования комментов - одобрять, удалять, редактировать, отвечать. А отвечать обычным юзверям тоже можно через аякс - последовательно, без общей перезагрузки страницы, показывать форму потдверждения....
со своей колокольни не вижу смысла в новом rss
для картинок нужно будет задавать не два размера, а максимальный размер (второй пусть автоматом подгоняется)
версия файла в общем случае - это отнюдь не обязательно число (v. 0.1.35b)
jquery? Пока что не ощутил в нем потребности, может чего я пропустил, но весь аякс сводится к самому банальному download страницы, ну а дальше - либо ее парсинг и подготовка контента для вывода, либо сразу вывод целиком полученного контента. Для всех виджетов пока достаточно операции виз двух строк - скачать и вывести. Прикручивать при этом монстров нет необходмости. В этом случае аякс является неким аналогом фреймов, но фреймы давно считаются неким злом/моветоном, но суть то не сильно отличается. Я не против jquery, но вот специально его изучать не возникало потребности
По картинкам и мультимедиа: если картинка просто в посте, особенно просто иллюстрация без ссылки на оригинал - то для нее категории и теги не выводятся. Если со ссылкой на оригинал - есть разные варианты. Сначала вывод просто в лайтбокс - ничего не надо. А можно сделать лайтбокс с выводом категорий и тегов. Третий способ - без лайтбокса, а открывать картинку в отдельной странице, а на ней можно вставлять и категории, и теги, и виджеты с выводом других картинок по категориям, тегам, времени. Почти фликр получится.
За подсказку про рсс автора - спасибо, надо будет записать, чтобы не забыть. Картинки я думал будут сразу вставлены в пост, возможно с галерейными эфектами, в анонсе превью, также надо будет добавить шаблон для списка картинок.
Что касается производительности, то версия еще не гтова и к тестам не приступал, но как правило после ликвидации граматических ошибок в исходниках все работает за редким исключением. Ожидается, благодаря нововведениям, что файловая версия будет работать быстрее, насколько быстрее - не знаю, скажу так - примерно минус 10 файлов при генерации страницы, это где то около 0.003, но как всегда зависит еще и от кеша файловой системы. Обратил внимание, что если к странице давно не было обращений, то первичная генерация с отключеным кешом самого блоголёта может различаться на порядок.