Техзадание для галереи через Jabber: различия между версиями
Rain (обсуждение | вклад) (Новая страница: «Существует проект Jabber Disk от чехов, код старый (уже нашел), но работает и на нескольких серверах встречается. От них же есть и проект галереи - аналогичный бот, только из полученных файлов строится галерея, доступн...») |
Rain (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
Существует проект [[JW:Jabber Disk|Jabber Disk]] от чехов, код старый (уже нашел), но работает и на нескольких серверах встречается. От них же есть и проект [[JW:Галерея картинок через Jabber|галереи]] - аналогичный бот, только из полученных файлов строится галерея, доступная по адресу [http://album.jabbim.cz/ album.jabbim.cz]. Если для диска код в итоге нашел, то галерея - в единственном экземпляре и код где-то потерян, а может никогда и не публиковался. Хотя идея весьма хорошая; если диск с некоторыми оговорками для быстрого обмена файлами можно заменить обычным HTTP Fileupload и на сейчас он не особо актуален (хотя и удобен - особенно если доработать и сделать в том числе обработку файлов, переданных через HTTP Fileupload), то аналогов галереи через джаббер нет. Причем, реализовано оно все на базе того же кода, что и для диска - когда дискаверишь disk.jabbim.cz, то только у них доступно для добавления 3 бота в этом поддомене; у остальных только 2 или 1. | Существует проект [[JW:Jabber Disk|Jabber Disk]] от чехов, код старый (уже нашел), но работает и на нескольких серверах встречается. От них же есть и проект [[JW:Галерея картинок через Jabber|галереи]] - аналогичный бот, только из полученных файлов строится галерея, доступная по адресу [http://album.jabbim.cz/ album.jabbim.cz]. Если для диска код в итоге нашел, то галерея - в единственном экземпляре и код где-то потерян, а может никогда и не публиковался. Хотя идея весьма хорошая; если диск с некоторыми оговорками для быстрого обмена файлами можно заменить обычным HTTP Fileupload и на сейчас он не особо актуален (хотя и удобен - особенно если доработать и сделать в том числе обработку файлов, переданных через HTTP Fileupload), то аналогов галереи через джаббер нет. Причем, реализовано оно все на базе того же кода, что и для диска - когда дискаверишь disk.jabbim.cz, то только у них доступно для добавления 3 бота в этом поддомене; у остальных только 2 или 1. Собственно, то же следует и из справки для бота галереи: | ||
Для некоторых команд нужен путь, который может быть указан несколькими способами: | |||
- //пользователь@сервер%ветка/каталог/файл - Полный путь к файлу, этот синтаксис используется для доступа к общедоступным файлам других пользователей или файлам на других ветках. Если в пути отсутствует пользователь@сервер% или %ветка, используется текущий пользователь или ветка. Список доступных веток: Общедоступный, Частный, Альбом. | |||
Вот "ветки" - это и есть "рабочие каталоги" различных вариаций бота. С учетом того, что в галерее картинки отображаются с некоторой задержкой - галерея вообще может быть отдельной сущностью, которая просто периодически сканирует рабочий каталог бота album@ и выводит найденные картинки. | |||
---- | |||
Так или иначе, если создавать проект с нуля, то каким он видится: | Так или иначе, если создавать проект с нуля, то каким он видится: | ||
* Думаю, нет смысла реализовывать галерею с нуля, если есть, например, готовые развивающиеся проекты - | * Думаю, нет смысла реализовывать галерею с нуля, если есть, например, готовые развивающиеся проекты - тот же, Piwigo. Всего-то надо реализовать бота, который будет выгружать туда файлы. API там есть для всего. | ||
* Бот должен уметь работать как с HTTP Fileupload, так и с out-of-band bytestream. Т.е., по первому пункту - фактически, передача любой ссылки с изображением приводит к загрузке ботом этого изображения в галерею. Ну и более привычный вариант - OOB bytestream с возможностью указать в конфиге прокси (а надо ли это, если бот не передает файлы, а только принимает?). Для обоих случаев стоит сделать проверку получаемого файла - является ли он картинкой - с дальнейшей загрузкой. | * Бот должен уметь работать как с HTTP Fileupload, так и с out-of-band bytestream. Т.е., по первому пункту - фактически, передача любой ссылки с изображением приводит к загрузке ботом этого изображения в галерею. Ну и более привычный вариант - OOB bytestream с возможностью указать в конфиге прокси (а надо ли это, если бот не передает файлы, а только принимает?). Для обоих случаев стоит сделать проверку получаемого файла - является ли он картинкой - с дальнейшей загрузкой. | ||
* Взаимодействие с Piwigo (в зависимости от трудоемкости реализации): | * Взаимодействие с Piwigo (в зависимости от трудоемкости реализации): | ||
** Лайт-версия: бот не умеет рулить пользователями. Он выгружает контент только в указанную учетку и все. Никаких регистраций или чего-то такого. | ** Лайт-версия: бот не умеет рулить пользователями. Он выгружает контент только в указанную учетку и все. Никаких регистраций или чего-то такого. | ||
** Нормальная версия: боту даются права администратора в Piwigo. По команде с нового JID'а (т.е., когда пользователь добавлен, авторизован и скомандовал, например, REGISTER) заводится учетная запись пользователя с логином = JID. Пароль генерируется и возвращается пользователю. Эту же (либо, возможно, другую - пока не вижу причин не использовать ту же) команду можно использовать для сброса пароля. Т.е., по REGISTER проверяем наличие учетки, если нет - создаем и в любом случае (плохо ли это?) задаем новый пароль, который шлем пользователю. | ** Нормальная версия: боту даются права администратора в Piwigo. По команде с нового JID'а (т.е., когда пользователь добавлен, авторизован и скомандовал, например, REGISTER) заводится учетная запись пользователя с логином = JID. Пароль генерируется и возвращается пользователю. Эту же (либо, возможно, другую - пока не вижу причин не использовать ту же) команду можно использовать для сброса пароля. Т.е., по REGISTER проверяем наличие учетки, если нет - создаем и в любом случае (плохо ли это?) задаем новый пароль, который шлем пользователю. Соответственно, можно добавить UNREGISTER с подтверждением, которая будет удалять пользователя и его альбом. | ||
* Основные команды бота можно скопировать с чешского - управление | * Основные команды бота можно скопировать с чешского - управление галереей через команды. Список штатных: | ||
Доступные команды: get, cd, help, intro, hash, rm, du, mkdir, lang, pwd, ls, link, send, mv | |||
: В принципе, можно обрезать функциональность по пересылке файлов обратно - можно просто возвращать ссылку на полноразмерный файл в галерее, а дальше уже качать его любым удобным способом (через браузер). Можно убрать отправку файла кому-то (send) и/или заменить отправку ссылки. | |||
: В свою очередь, можно добавить управление тегами через бота. Что-нибудь в стиле | |||
tag #1 *природа *поездка *лес | |||
: + проработать вариант на случай, если там уже есть теги - т.е., или только добавлять новые - но это так себе вариант, хочется полноценно управлять - или сделать что-нибудь в стиле tag add #1 *кошка / tag del #1 *собака /tag del all #1 | |||
{{hider hiding | |||
|title=Просто мысли | |||
|content= | |||
Технически на своем сервере вполне можно организовать бота (скорее - костыль) для загрузки фото в Piwigo. Делаем контакт, ему соответствует какой-то каталог для HTTP Fileupload на сервере (какой-нибудь /var/lib/ejabberd/upload/user@server/). По факту появления там файлов inotify аплоадит их каким-то образом в галерею. Но на деле это такооой костыль... Со стороны клиента надо аплоадить все через этот аккаунт - нельзя просто добавить себе "бота" в ростер и все. Со стороны сервера - вот это вот все, что выше описано. | |||
}} |
Текущая версия на 22:06, 6 июня 2022
Существует проект Jabber Disk от чехов, код старый (уже нашел), но работает и на нескольких серверах встречается. От них же есть и проект галереи - аналогичный бот, только из полученных файлов строится галерея, доступная по адресу album.jabbim.cz. Если для диска код в итоге нашел, то галерея - в единственном экземпляре и код где-то потерян, а может никогда и не публиковался. Хотя идея весьма хорошая; если диск с некоторыми оговорками для быстрого обмена файлами можно заменить обычным HTTP Fileupload и на сейчас он не особо актуален (хотя и удобен - особенно если доработать и сделать в том числе обработку файлов, переданных через HTTP Fileupload), то аналогов галереи через джаббер нет. Причем, реализовано оно все на базе того же кода, что и для диска - когда дискаверишь disk.jabbim.cz, то только у них доступно для добавления 3 бота в этом поддомене; у остальных только 2 или 1. Собственно, то же следует и из справки для бота галереи:
Для некоторых команд нужен путь, который может быть указан несколькими способами: - //пользователь@сервер%ветка/каталог/файл - Полный путь к файлу, этот синтаксис используется для доступа к общедоступным файлам других пользователей или файлам на других ветках. Если в пути отсутствует пользователь@сервер% или %ветка, используется текущий пользователь или ветка. Список доступных веток: Общедоступный, Частный, Альбом.
Вот "ветки" - это и есть "рабочие каталоги" различных вариаций бота. С учетом того, что в галерее картинки отображаются с некоторой задержкой - галерея вообще может быть отдельной сущностью, которая просто периодически сканирует рабочий каталог бота album@ и выводит найденные картинки.
Так или иначе, если создавать проект с нуля, то каким он видится:
- Думаю, нет смысла реализовывать галерею с нуля, если есть, например, готовые развивающиеся проекты - тот же, Piwigo. Всего-то надо реализовать бота, который будет выгружать туда файлы. API там есть для всего.
- Бот должен уметь работать как с HTTP Fileupload, так и с out-of-band bytestream. Т.е., по первому пункту - фактически, передача любой ссылки с изображением приводит к загрузке ботом этого изображения в галерею. Ну и более привычный вариант - OOB bytestream с возможностью указать в конфиге прокси (а надо ли это, если бот не передает файлы, а только принимает?). Для обоих случаев стоит сделать проверку получаемого файла - является ли он картинкой - с дальнейшей загрузкой.
- Взаимодействие с Piwigo (в зависимости от трудоемкости реализации):
- Лайт-версия: бот не умеет рулить пользователями. Он выгружает контент только в указанную учетку и все. Никаких регистраций или чего-то такого.
- Нормальная версия: боту даются права администратора в Piwigo. По команде с нового JID'а (т.е., когда пользователь добавлен, авторизован и скомандовал, например, REGISTER) заводится учетная запись пользователя с логином = JID. Пароль генерируется и возвращается пользователю. Эту же (либо, возможно, другую - пока не вижу причин не использовать ту же) команду можно использовать для сброса пароля. Т.е., по REGISTER проверяем наличие учетки, если нет - создаем и в любом случае (плохо ли это?) задаем новый пароль, который шлем пользователю. Соответственно, можно добавить UNREGISTER с подтверждением, которая будет удалять пользователя и его альбом.
- Основные команды бота можно скопировать с чешского - управление галереей через команды. Список штатных:
Доступные команды: get, cd, help, intro, hash, rm, du, mkdir, lang, pwd, ls, link, send, mv
- В принципе, можно обрезать функциональность по пересылке файлов обратно - можно просто возвращать ссылку на полноразмерный файл в галерее, а дальше уже качать его любым удобным способом (через браузер). Можно убрать отправку файла кому-то (send) и/или заменить отправку ссылки.
- В свою очередь, можно добавить управление тегами через бота. Что-нибудь в стиле
tag #1 *природа *поездка *лес
- + проработать вариант на случай, если там уже есть теги - т.е., или только добавлять новые - но это так себе вариант, хочется полноценно управлять - или сделать что-нибудь в стиле tag add #1 *кошка / tag del #1 *собака /tag del all #1
Технически на своем сервере вполне можно организовать бота (скорее - костыль) для загрузки фото в Piwigo. Делаем контакт, ему соответствует какой-то каталог для HTTP Fileupload на сервере (какой-нибудь /var/lib/ejabberd/upload/user@server/). По факту появления там файлов inotify аплоадит их каким-то образом в галерею. Но на деле это такооой костыль... Со стороны клиента надо аплоадить все через этот аккаунт - нельзя просто добавить себе "бота" в ростер и все. Со стороны сервера - вот это вот все, что выше описано.