Доброго времени суток, капибары и капибарыни! Случилось тут со мной, что я намутил свой телеграм бот для скачивания книг со своего сервера. Библиотека должна быть в формате inpx (например копия флибусты, скаченная с любого удобного трекера). Если вы читали (и о Ктулху!) сделали по моим постам свой сервак, то знаете, что свой сервер - это круто! Бот я задумал совсем давно, когда столкнулся в принципе с такими ботами. И мне в голову пришла мысль, а почему бы и да? (тут хочу уточнить, я не программист и программировать я не умею). С этим вопросом я обратился в интернет
Примерно так оно и было
Первым делом я обратился к нейросетям, они меня конечно поняли, но со своей, извращенной логикой. И как я им не объяснял, что мне нужно, нормальную реализацию моей задумки мне получить так и не удалось. Затык был в парсинге книг из inpx и в принципе в нормальном поиске и скачивании книг (по сути во всем), но какой-никакой костяк они мне дали. Решив, что так жить нельзя, а в одном месте все так же свербит, я пошел на Авито в поиске настоящего программиста, которого я там и нашел. Объяснив задачу и несколько раз объяснив что такое inpx (я раньше думал, что после получения задачи, программист сам способен выяснить технические детали с чем ему нужно работать), он сделал мне полностью рабочего бота, который парсил inpx и даже выдавал результаты поиска и позволял скачивать найденное!
Но у этого бота было множество минусов! Во-первых, все данные он держал в ОЗУ (оперативной памяти), т.е при каждом перезапуске бота, он заново парсил весь inpx. Во-вторых были проблемы с отображением результатов (уже и не вспомню какие), плюс, он был чувствителен к регистру. В третьих, все переменные он держал внутри тела бота, что на мой взгляд было очень неудобно, искать среди всего кода куда и с чем ему работать. Но, так как у меня уже был рабочий бот, с исходниками можно было обратиться к нейросетям. Мой выбор пал на Grok, от Илона нашего Маска!
Нейросети очень сильно помогли мне с этим. Так, я научил бота создавать бд в SQL, куда сохранялись все спарсенные книги, чтобы не выполнять каждый раз парсинг при запуске бота. Переработал сам парсер, изначально он был на Python, но пришлось переписать его на GO и переложил всю работу с парсингом и вставкой книг в SQL на него (парсинг ускорился в несколько раз, с 7-8 минут на версии Python до 48-50 секунд на версии GO после компиляции) Сейчас бот нечувствителен к регистру, все перменные для работы находятся в .env файле, но у него есть ряд ограничений. Он ищет книги только на русском языке, в форматах fb2 и epub. Все остальные языки и форматы игнорируются. В рабочем режиме, после парсинга, бот потребляет не более 70 мегабайт ОЗУ, что делает возможным его запуск на микрокомпьютерах вроде Orange pi. Для запуска бота, вам потребуется сама библиотека, Python, SQL с пользователем, который может создавать и изменять бд в ней. Все переменные указываются в файле .env Сами исходники и версия с парсером на Go лежат тут https://disk.yandex.ru/d/EF36zcqYdp_01A
Совсем забыл! Токен для бота нужно получить в @BotFather и указать его в .env файле! Пример файла лежит в папке с ботом! Просто замените или укажите в нем свои значения. Файл должен лежать в одной папке с ботом. Путь к inpx не абсолютный, обычно этот файл лежит с zip книг. В env указываете только адрес папки с zip, бот сам обнаружит inpx и начнет парсинг
6950 книг. В основном фантастика, приключения. Разделено на два архива из-за ограничения на размер файла в хранилище. С администрацией вомбата вопрос решен. Разрешили опубликовать. Все книги в fb2. Я читаю в AlReader. Если какие-то ссылки не работают, то пишите в комментариях. Перезалью
С этого поста начинается наш путь в удивительный мир Linux!
В этом посте не будет дурацких взмахов волшебной палочки и глупых заклинаний!
Для начала давайте определимся с железками на которых мы будет разворачивать наш мультимедиа- сервер. Обычно это старенький комп, который валяется где-то в квартире/кладовке/etc.
Очень нужно, чтобы процессор поддерживал архитектуру amd64, оперативной памяти минимум 4 ГБ хотя, это глупое уточнение на мой взгляд, т.к. в основной массе современных ПК стоит именно такой процессор, ну и не менее оперативной памяти!
И так, мы начинаем КВН установку и настройку нашего сервера!
Я все операции буду выполнять на виртуальной машине, т.к мне лень включать подопытный комп)
Что мы делаем первым делом? А первым делом, мы открываем браузер на своем основном компе и идем по вот этой ссылке -https://ubuntu.com/download/server
Там есть большая зеленая кнопка с надписью на буржуйском - скачать Ubuntu server 22.04.4 LTS, собственно ее жмакаем и ждем пока 2 ГБ счастья и извращений не загрузятся на наш ПК.
Нажимаем на зеленую кнопку
Что нам нужно сделать далее? А далее мы пойдем тернистым и простым путем. Тернистый - это записать данный образ на флешку не менее 4 ГБ с помощью специальных утилит, таких как Rufus - https://rufus.ie/ru/, Balenaetcher -https://etcher.balena.io/, либо UltraIso - https://www.ultraiso.com/download.html (последняя программа является проприетарной, что означает, что ей нужна денежка за работу). Лично я пользуюсь Rufusом, просто потому что нравится.
Далее эту флешку мы вставляем в подопытный комп и следуя инструкции в вашем BIOS или UEFI загружаемся с этой флешки.
Ну а простой путь - это развернуть все это дело на виртуалке (как развернуть виртуалку я думаю объяснять не нужно, а если нужно - напишите об этом в комментах).
Все действия в устанавливаемой системе производятся с помощью клавиш TAB, пробел, стрелочек и естессно ВВОД (он же ENTER)
Вот мы все записали на флешку или подготовили виртуалку для работы, далее мы загрузились с нашего установочного носителя и видим белые надписи на буржуйском. Жмакаем надпись Try or Install Ubuntu Server
Первая загрузка с установочного носителя
После нажатия кнопки установки, на экране побегут разные буковки и циферки, пугаться этого не нужно!
Далее появится окошко выбора языка, можно оставить английский, я же предпочитаю чтобы система разговаривала со мной на русском, поэтому я и выбираю его.
Выбор языка
Далее система спросит нас о раскладке клавиатуры, я оставил русскую
Выбор раскладки
Затем будет спрошено какими клавишами менять раскладку с английского на русский и наоборот, я оставляю по-умолчанию Alt+Shift
Клавиши смены раскладки
Далее нас встречает окошко выбора типа системы, таких как полная установка и мимимишная минимальная. Нам нужна полная)
клавишей tab или стрелочками выбираем кнопку Готово и жмем Ввод
Выбор типа системы
С этими этапами мы легко справились, теперь же нас встречает первый серьезный противник - настройка сети!
Для виртуалки я использовал автоматическую настройку сети, т.е оставил все как предложила система.
Автоматическая настройка сети
Но мы же хотим чтобы наш сервер висел постоянно на каком-то одном адресе, шоб не выяснять это каждый раз. Конечно, можно все это сделать и в настройках роутера, но мы же не за этим здесь собрались? Поэтому выбираем наш сетевой интерфейс (у меня это enp0s3) клавишами tab или стрелочками, далее жмем ВВОД и там выбираем Edit IPv4
Выбро ручной настройки
Теперь нам нужно выяснить какие адреса выдает нам роутер. Это могут быть по типу 192.168.1... или 192.168.0... Например 192.68.1.123 или 192.168.0.123. Узнать это можно в настройках Wndows - сеть и интернет - ваше содинение
Узнать ip
Как выяснили - идем заполнять настройки дальше. В первую строчку мы пишем начальный диапазон нашего роутера, это может быть 192.168.1.0 или 192.168.0.0 к этим циферкам мы добавляем вот такую надпись /24 - что означает маску подсети. В строке Адрес пишем нужный нам ip. Например 192.168.1.127. Шлюз - это адрес вашего роутера. Name servers и домен оставляем пустыми. Ниже на скрине все видно:
Жмем сохранить и готово. Далее оно запросит адрес прокси-сервера, это поле мы тоже оставляем пустым и жмем Готово
Прокси-сервер нам не нужен
В следующем окне будет проводится проверка доступа к сети и обновлений. Если все успешно, будет примерно как на скрине
Проверка прошла успешно
Теперь нас ждет разметка диска. Я подразумеваю, что у вас на диске ничего нет или это не страшно потерять. Разметку диска мы тоже делаем на автомате, т.к. мы же учимся, верно? Забивать голову сложной разметкой не будем.
На этом этапе нам нужно снять галочку с надписи Set up this disk as an LVM group и нажать Готово
Снять галочку с Set up this disk as an LVM group
Теперь оно покажет, что оно сделает с нашим диском и если нас все устраивает - жмем Готово
Проверяем разметку и жмем Готово
Далее подтверждаем еще раз
Программа спросит, точно ли вы в своем уме. Лучше подтвердить это
Теперь приступаем к созданию пользователя. Заполняем все поля в соответствии с запросами и вашим желанием. Название сервера делайте понятным для вас, потому что именно так вы его будете видет в локальной сети. Жмем готово
Создаем пользователя
В следующем окошке тоже жмем продолжить, Ubuntu Pro нам не надо.
Дальше ставим галочку для установки Openssh serverа) оно нам надо будет для удаленного подключения.
Установливаем openssh server
В следующем окошке выбираем docker, он тоже может нам понадобиться.
Docker, я выбираю тебя!
Все, пошла установка системы. Вы великолепны!
Идет установка системы
После установки оно попросит перезагрузиться. Не забудьте вытащить установочный носитель из компа (если вы сдуру все это на реальном железе делали)
Установка завершена. Перезагружаемся.
И вот система впервые загрузилась! Ура! Есть у Ubuntu мелкая деталь при загрузке, что меня бесит, это как она перекрывает предложение ввода логина\пароля. Но нам это не помешает.
вводим логин
Затем пароль. Имейте ввиду, что пароль не будет отбражаться при вводе в консоль. Не пугайтесь. Вводим пароль и жмем ВВОД
Пароль не отображается
Все! Вы вошли в только что установленную систему! Поздравляю!
Вы в системе!
На этом пока все, т.к ограничение на количество изображений стоит в 25 шт. В следующем посте мы обновим нашу систему и приступим к установке торрент клиента и медиасервера.
Чтобы выключить систему нужно ввести sudo poweroff и ввести пароль если оно попросит! Всем пока и до встречи!
P.S. Я не настоящий сварщик! Все что я тут рассказываю или буду рассказывать - основано на личном опыте использования домашнего сервера. Если вы считаете что я делаю что-то не правильно, можете написать об этом в комментариях.
Здравствуйте дорогие капибары! Простите меня пожалуйста, за столь долгое отсутствие поста!
Сегодня мы установим на наш маленький, но очень гордый мультимедиа-сервер еще один торрент-клиент - qbittorent-nox. Это такая же программа для скачивания торрентов ка и Transmission, но со своими приколами и плюшками.
Итак, приступим! Снова подключаемся по ssh к нашему серверу и для начала нам нужно обновить систему, для этого выполняем команду sudo apt update && sudo apt upgrade -y. Затем нам нужно добавить репозиторий данной программы sudo add-apt-repository ppa:qbittorrent-team/qbittorrent-stable, подтверждаем, что мы в своем уме и ждем выполнения команды.
Добавляем репозиторий
Можно снова обновить список репозиториев - sudo apt update. Мы великолепны! Теперь погнали дальше. Теперь установим саму программу sudo apt install qbittorrent-nox, так же подтверждаем и ждем когда установится
Устанавливаем qbittoren-nox
Оно установилось и наш следующий шаг - это добавить пользователя для торрент-клиента. sudo adduser --system --group --no-create-home qbittor. Эта команда создает нового пользователя qbittor, не создавая для него отдельной папки в домашней директории, потому что она нам совсем не нужна. Теперь добавим нового пользователя в группу нашего основного пользователя sudo adduser your-username qbittorr (замените your-username на имя своего пользователя). И снова мы великолепны!
Осталось совсем чуть-чуть! Теперь создадим юнит для нашей программы sudo nano /etc/systemd/system/qbittorrent-nox.service Напоминаю, что порт можно указать абсолютно любой на ваш вкус.
И как всегда мы великолепны! Сохраняем наш юнит ctrl+x затем y. Осталось запустить наш торрент-сервер! sudo systemctl daemon-reload && sudo systemctl start qbittorrent-nox. Если не выдало ошибок - идем по адрес вашего сервера:7054 и видим такую картину
Веб-морда qbittorent-nox
Логинимся - логин admin, пароль adminadmin. И если все хорошо, то выполняем в консоли sudo systemctl enable qbittorrent-nox, чтобы программа запускалась автоматически при перезапуске системы. И как обычно, мы великолепны!
Осталось дело за малым, меняем пользователя торрента на своего, указываем папку загрузки и наводим небольшой марафет!
Для начала сменим пользователя, для этого идем Сервис-Настройки-Веб-интерфейс. В разделе Аутентификация меняем пользователя и пароль на предпочтительный (ни в коем случае не используем учетные данные нашего сервера! Придумайте что-нибудь новое)
Меняем пользователя для нашего торрент-сервера
Теперь укажем основную папку для загрузки Сервис-Настройки-Загрузки. У меня это /home/user/downloads. Вы же указываете свой путь на сервере
Указываем папку для загрузки
Ну и моя любимая фишка в Qbittorent - это категории. Помните, мы создавали папки для фильмов, сериалов и прочее? Мы можем указать qbittorent эти папки как категории. Для этого в веб-морде, в левой стороне есть надпись (вы не поверите!) категории! Жмем ПКМ (правая кнопка мыши) по этой надписи и видим Добавить категорию
Добавляем категорию
Например категория Фильмы. У меня это /home/user/Films (Напоминаю, что Unix системы чувствительны к регистру)
Добавляем категорию
Теперь, при добавлении торрента мы можем указать просто категорию, а конечная папка укажется сама! Например так
Это скрин с моего основного сервера
На этом сегодня все, мои дорогие капибары! Надеюсь я вам чем-то да помог! Ваши замечания, исправления и пожелания - в комменты!
P.S. Напоминаю всем системным администраторам, программерам и
прочим специалистам - я не настоящий сварщик, если вы считаете, что
выбор ОС, способ настройки или еще какие факторы - неправильными -
напишите свой пост с указанием моих ошибок и вашей версией, как это все
нужно делать. Я не истина в последней инстанции. Всего хорошего!
И снова здравствуйте, дорогие Капибары! Сегодня мы продолжим настройку нашего маленького, но очень гордого медиа-сервера! Вчера мы остановились после всей установки системы и выключили ее, сегодня нам нужно снова все включить и начать работу)
Сегодня я предлагаю продолжить работу с нашим сервером по ssh, конечно, некоторые товарищи в комментариях мне сказали, что лучше ставить GUI и работать по RDP, но на мой взгляд GUI на сервере излишен. Так что скачиваем mRemoteNG - https://mremoteng.org/download, устанавливаем ее и создаем новое подключение - протокол ssh version 2, вводим ip нашего сервера, который мы настроили в прошлый раз, порт указываем 22 и вводим пользователя и пароль, который мы тоже создали в прошлый раз.
Создаем новое подключение
И если у нас все правильно получилось, мы увидим такую картину
Если все правильно было сделано на предыдущих шагах, мы подключимся к своему серверу
Ура! Вы великолепны! Теперь давайте обновим нашу свежеустановленную систему. Для этого нужно набрать команду sudo apt update нажать ВВОД и ввести пароль.
Напоминаю, пароль не будет отображатьсяP.S. команды которые я даю в этом посте можно копировать и вставлять в терминал с помощью правой кнопки мыши. Это немного ускорит работу с сервером
Обновляем список репозиториев
Если оно скажет, что найдены обновления в таком-то количестве, то нам нужно ввести команду sudo apt upgrade -y. В этот раз пароль запрашиваться не будет, т.к мы его ввели на предыдущем шаге. У меня нет обновлений. потому что пока я подготавливал скриншоты для поста, случилась грусть-беда и все что я успел наснимать - пришлось удалить. Но сути это не меняет)
Устанавливаем обновления
После того, как мы обновились - наступило время для установки нужного нам ПО. Но для начала давайте подготовим папки, в которых будут храниться наши фильмы, сериалы и прочие ништяки. Для начала я создам папочку за пределами домашней директории нашего пользователя (я это делаю для своего удобства, потому что emby отказался работать с домашней директорией, да и просто привычка ничего не пихать в /home окромя конфигов)
Пишем такую команду sudo mkdir /cloud (вместо /cloud можете дать любое имя. Я предпочитаю использовать английские названия каталогов для уменьшения проблем.) Эта команда создает каталог cloud за пределами директории /home. Далее нам нужно указать владельцем этой папки нашего пользователя, для этого вводим sudo chown -R user:user /cloud (вместо user пишем своего пользователя) и теперь осталось выставить права на запись в эту папку, для этого вводим sudo chmod -R 755 /cloud. Затем мы можем создать в папке cloud нужные нам папки, такие как films, serials ну и прочее что нам в голову взбредет. Я создал там папочку downloads. Хочу уточнить, что теперь, чтобы создавать папку в каталоге /cloud нам не нужно добавлять sudo к команде. Достаточно просто ввести mkdir /cloud/downloads
Создание каталога и установка прав
Мы создали нужные папки и мы снова великолепны! Теперь установим Transmission-daemon. Это торрент-качалка. Для этого вводим команду sudo apt install transmission-daemon
Установка transmission-daemon
И снова побежали буковки, нам нужно лишь дождаться окончания установки. После этого пишем sudo service transmission-daemon stop для остановки transmission, т.к. все настройки выполняются пока он остановлен. Далее мы копируем стандартные настройки в папку пользователя sudo cp -R /etc/transmission-daemon /home/user_name/.config/ (вместо user_name написать своего пользователя) sudo chown -R user_name /home/user_name/.config/transmission-daemon
Копируем настройки transmission
Затем вводим sudo nano /etc/default/transmission-daemon и в строке CONFIG_DIR прописываем путь до папки с файлами настройки. Для сохранения изменений - ctrl+x затем Y для подтверждения.
Изменяем путь до настроек. Для сохранения изменений - ctrl+x затем Y для подтверждения.
Теперь научим transmission работать от имени нашего пользователя, для этого нам нужно ввести sudo nano /etc/systemd/system/multi-user.target.wants/transmission-daemon.service ив значении User= пишем имя нашего пользователя. Снова сохраняем и выходим.
Учим transmission запускаться от имени нашего пользователя
Теперь нужно перезагрузить наши юниты. Для этого вводим sudo systemctl daemon-reload
Теперь научим transmission качать наши торренты в определенную папку, разрешать вход по логину и паролю и указать с каких адресов можно к нему подключаться. Для этого вводим nano /home/user_name/.config/transmission-daemon/settings.json (вместо user_name написать своего пользователя)
"download-dir": "/cloud/downloads", - меняем на свою папку. У меня это /cloud/downloads, "rpc-password": "{4d9e2d73e22b3d53fb1de394d5be2255f103ca96S/LhCaA7", - все что между " " стираем и пишем свой пароль для торрент. "rpc-username": - " " - придумываем имя пользователя для торрент. "rpc-whitelist": "127.0.0.*,192.168.1.*,192.168.0.*", -список разрешенных адресов для подключения, можно оставить как в примере. После всех озменений сохраняемся и выходим.
Устанавливаем свои правила для transmission
Теперь можно ввести sudo systemctl start transmission-daemon.service и если все правильно, нам не выдаст ошибок. Если все хорошо, то идем http://адрес нашего сервера:9091 и видим веб-морду нашего transmission, которая просит логин и пароль
Веб морда transmission. вводим логин\пароль который мы указали в settings.json
Веб морда transmission
Теперь возвращаемся в консоль и вводим команду sudo systemctl enable transmission-daemon.service, чтобы наш transmission сам запускался при старте системы. И снова мы великолепны!
Теперь давайте установим Emby-server, мы же для этого здесь собрались? Заранее отвечу почему не Plex - просто мне не нравится его способ подключения к серверу (ваши учетные данные лежат на серверах Plex), я обязательно расскажу как его установить, но сегодня мы ставим emby.
Теперь устанавливаем скачанный пакет sudo dpkg -i emby-server-deb_4.8.3.0_amd64.deb ,ждем пока установится. После вводим sudo systemctl status emby-server и видим зеленую надпись active (running). И снова мы великолепны! Теперь снова возвращаемся к браузеру и идем http://адрес нашего сервера:8096/web/index.html. Там видим такую картину. Выбираем язык, страну
Если все правильно сделано, нас встретить веб-морда emby
Добавляем папочки для нашей медиатеки, которые мы создали в предыдущих шагах.
Добавляем библиотеки
Выбрали папки, выбрали дополнительные настройки и нажали ок.
При добавлении библиотек, пожалуйста выберите на каком языке Emby должен будет подбирать метаданные, искать обложки и описания к фильмам и мультимедиа. По-умолчанию это английский. Как только вы настроили все ваши папочки с мультимедиа, возвращаемся в консоль и набираем sudo systemctl enable emby-server.service
Ура! Вы великолепны! В принципе на сегодня все, если в случае Transmission все понятно, то с Emby я предлагаю вам поковыряться в настройках и определить что для вас лучше.
Ну и снимок для примера
Так выглядит emby
Всем пока и до новых встреч! В следующий раз мы научимся ставить Plex и еще что нибудь. Я предлагаю как альтернативу Transmission установить Qbittorrent. Так же начнем потихоньку настраивать Samba и прочие плюшки для нашего удобства)
Разрабатывал я его на основе 56 страничного приказа о диспансеризации. Кому интересно можете почитать.
Целью было сделать удобный сервис для пациентов и врачей. Расскажу подробнее про функционал.
Формирование списка обследований
Вот так он выглядит
После ввода данных (пола, года рождения, проходил ли ранее диспансеризацию) присылается индивидуальный перечень обследований на текущий год.
Когда 1 этап полностью заполнен, на основе его результатов формируется 2 этап обследований.
Оценка результатов
Как видно из картинки выше я добавил несколько различных флагов(кружочков слева). Зелёный - норма. Желтый не норма или фактор риска. Красный выраженное отклонение или фактор риска. Последний я вычислял эмпирически.
Для оценки таких обследований как ЭКГ, ФГ и т.п. я хотел подключить нейросеть, но отказался от этого по различным причинам. Потенциально можно внедрить.
Добавил различные калькуляторы
Расчёт ИМТ, относительного и абсолютного сердечно-сосудистого риска. Плюсом для абсолютного ССР может появиться предупреждение, если в анкете отмечены ситуации при которых он не рассчитывается.
Запись к врачу
В разделе "где пройти" добавил возможность найти своё место прикрепления и записаться к врачу через госуслуги прямо из телеграм бота.
Раздел подготовка
Некоторые обследования требуют специальной подготовки. Здесь рассказывается, что для этого нужно, если они есть у вас в этом году.
Освобождение от работы
Бот рассчитывает на сколько дней можно освободиться от работы. По закону на прохождение диспансеризации положено для пенсионеров и предпенсионеров 2 рабочих дня, для остальных 1 день.
Также бот отправляет бланки документов, которые нужны работодателю, чтобы оформить освобождение.
Причины потери здоровья
Данные берутся с сайта ВОЗ по такому показателю как DALY и выводятся индивидуально в зависимости от пола и возраста.
Если в топе присутствуют депрессивные расстройства можно пройти скрининговый тест на депрессию.
Профили
Здесь можно добавлять профили например для своих родственников, которые не могут пользоваться телеграмом или пациентов.
Наблюдение
Эта функция добавлена для связи между врачом и пациентом. При нажатии на кнопку "Добавить под наблюдение" появляется специальная ссылка. Отправив её пациенту врач получает доступ к его профилю и истории осмотров, после того как пациент даст на это согласие. Пользователь в любой момент может ограничить доступ.
История, оповещения
Историю осмотров можно будет смотреть по годам прохождения.
Бот отправит уведомление, что нужно пройти диспансеризацию в день, который укажет пользователь.
P.S. В будущем хотелось бы сделать модуль по системам(сердечно-сосудистая, онконастороженность и т.п.), чтобы врачу было легче понимать взаимосвязь отдельных элементов и в какую сторону диагностики дальше двигаться.
Для каждого случая не нормы можно внедрить дальнейший алгоритм действий или что-то вроде системы поддержки принятия решений.
Почему мы пиратим? Нет, это не бедность, не жадность, и ни в коем случае не принцип свободного контента. Всё дело в удобстве, ведь рутрекер с интерфейсом начала нулевых и EiskaltDC++ с монструозным GUI'ем из 90'х всё равно в миллион раз удобнее и понятнее чем нетфликс, кинопоиск и прочие прочие. Тут тебе и множество озвучек на выбор, и разные кодеки и проч и проч. Такое кинцо/музыку/сериалы лёгкой рукой можно закинуть в директорию которая нюхается Plex media server и смотреть где угодно где есть интернет прямо как кинопоиск, но с большим выбором. И что самое главное - в отличии от кинопоиска фильм никогда не будет удалён прямо во время просмотра потому что у оного кончились права на показ фильма (и да, у меня такое было и с кинцом, и с книгами и с музыкой, и это нереально бесит)!
Но это всё про музыку и фильмы, тут все знают про plex/emby/jellyfin. Ну а как быть с аудиокнигами и электронными книгами? Конечно можно так же как и с фильмами просто закинуть на флешку, взять с собой туда куда хочется и смотреть "оффлайн". Но это неудобно. Я пробовал слушать аудиокниги через plex, увы и ах он под это совершенно не заточен. Но когда я уже почти отчаялся и планировал полностью уйти в оффлайн я случайно наткнулся на гитхабе на замечательный проект audiobookshelf.
Это аналог plex но заточенный на электронные книги и аудиокниги. Справедливости ради этот проект пример того как криво получается софт если бекенд делают фронтендеры, но за неимением лучшего буду юзать его.
Коротко о том как его себе поставить. Добавляем репозиторий, ставим пакет, запускаем. Всё описано в доке. Если мы хотим выставить его в интернет и/или дать доступ другим людям то хорошей идеей будет поставить перед ним nginx с сертификатом и кешированием. Как это сделать тоже есть простая дока из двух действий. У меня всё немного сложнее, у меня audiobookshelf крутится в lxc контейнере, имеет ro доступ к файлам лежащим на другом сервере, но в целом от доки я не отступал, только добавил пару дополнительных шагов.
Что мы получаем:
главный экран
Главный экран выглядит довольно просто и идеологически копирует plex (верхняя строчка "продолжить просмотр" ниже "недавно добавленные"), с лева можно выбрать просмотри всего списка книг, либо по авторам, по сериям или актёрам озвучки (перейти в нужную категорию можно так же из странички с книгой). Если же вы добавили отдельную библиотеку с электронными книгами и перейдёте в неё то интерфейс будет выглядеть ровно так же.
страница книги
На странице книги можно увидеть (и перейти) автора, серию из которой эта книга и актёра озвучки, сервис отлично запоминает где ты остановился и предлагает продолжить с этого места даже если сменилось устройство. Всё как в plex (только не так красиво).
создание пользователей
К сожалению в отличии от plex нет единой базы пользователей, так что если вы пользуетесь несколькими серверами audiobookshelf (например свой и вооон того парня), то прийдётся запомнить (ага, как буд-то кто-то сейчас запоминает а не созраняет в keepassxc) несколько учётных записей. Зато в отличии от plex несколько учёток могут иметь админские права (правда мне это не пригодилось) которые смогут управлять контентом прямо через браузер (но не через мобильное приложение, об этом позже).
Так же слушать контент с audiobookshelf можно через rss вообще не имея учётной записи, правда для этого необходимо чтобы кто-то имеющий такую учётку создал вам rss поток например на серию книг.
Кроме очевидного функционала audiobookshelf так же умеет править теги в mp3 файлах (а там обычно всякий мусор) и собирать из пачки mp3 файлов один удобный m4b (правда лучше сначала убедиться что 1файл=1глава, и если это не так то поправить через редактор глав прямо тут же)
метаданные книги
Конечно же все метаданные можно менять, по умолчанию такие вещи как Автор и Серия книг берутся из структуры файловой системы /путь/до/библиотеки/автор/серия/книга/файл, и из метаданных файла, но так же могут браться из .opf файлов.
поиск метаданных
Конечно же присутствует возможность найти метаданные у одного из нескольких провайдеров и добавить их в локальную базу данных (к слову в качестве БД используется sqlite).
Пару слов о мобильном приложении:
главный экран
Главная страничка (как и странички книги, автора, серии) ничем особо не отличается от web версии (да это по сути она и есть упакованная в apk). Однако функционал немного отличается, например с мобильного приложения я не могу изменить метаданные, поправить расположение глав, зато могу кэшировать книгу если например знаю что отправляюсь в место с плохим или полностью отсутствующим интернетом.
настройки
Ну и присутствует пара специфичных для мобильного приложения опций.
Не судите строго, я никогда не писал статей ни на хабр ни на пикабу, да и эта статья появилась больше для теста капибары чем для того чтобы поделиться статьёй.
P.S.: я знаю что я неграмотный и возможно допустил в тексте кучу ошибок, простите. P.P.S.: я бы поделился доступом в свой audiobookshelf со всеми желающими, но я что-то не очень уверен в том что это не нарушение чего нибудь.
-- Если вместо понятных букв названия файлов не читабельны
Это значит у вас в системе не подходящая кодовая страница. Два варианта решения этой проблемы:
- 1. Измените кодовую страницу. Это не сложно и гугль вам в помощь)
- 2. Сделайте названия файлов и папок транслитом. Для этого есть бесплатная программа ReNamer. Скачать ее можно на офсайте ---> ссылка. Распакуйте программу и запустите. Выделите в корневой папке все подпапки и перетяните их в окно ReNamer. Добавьте правило правило Translit и нажмите кнопку Переименовать.
- Если вы добавляете или удаляете книги в своей библиотеке и хотите иметь их список на подобии моих, то удобней воспользоваться bat файлами. Создайте текстовый файл, скопируйте в него нужное и сохраните с расширением .bat. Теперь поместите его в нужную папку и запустите. Рядом появится текстовый файл в котором и будет нужная вам информация.
Если вы когда-либо мечтали создать своего телеграм-бота, но вас пугали технические сложности и необходимость программирования или рисования блок-схем, то у меня для вас отличные новости. Представляю вам Бот в блокноте — конструктор телеграм-ботов, который я разработал специально для тех, кто далёк от мира IT, но хочет легко и быстро создать своего бота. В отличие от традиционных конструкторов с блок-схемами, я предлагаю более гибкий и удобный способ работы. Блок-схемы могут быть сложными и запутанными, особенно когда проект становится большим.
Диалог бота созданный в блокноте
В этой статье я расскажу, как возникла идея создать Бот в блокноте, какие возможности и преимущества он предлагает, а также как вы можете начать использовать его уже сегодня. Если вы хотите создать своего телеграм-бота, но не знаете, с чего начать, или ищете способ упростить этот процесс, — эта статья для вас. В дальнейшем я планирую публиковать статьи с конкретными реализациями для разных областей, с примерами и советами, так что подписывайтесь, чтобы не пропустить.
Идея
Год назад, работая над телеграм-ботом для клиента, я задался вопросом: "Можно ли упростить процесс сборки типовых диалогов в боте и записи результата?" Часто при работе над проектами я использую блокнот для набора текста и Excel для сортировки и визуализации. Опираясь на этот опыт, я решил, что списки — это вполне удобный вариант.
Немного истории
В 2017 году, увидев бота в Telegram, я проникся идеей чат-ботов. Казалось, что это возрождение старой технологии станет успешным и облегчит множество рутинных операций. Так родился прототип CMS с рабочим названием "Core4". Основная идея заключалась в том, чтобы собрать все интерфейсы ботов к одному ядру, независимо от источника сообщения. Ядро должно было принимать, понимать и обрабатывать сообщения, давая ответ в понятной мессенджерам форме.
Результатом стал MVP, работающий с ныне запрещенным Фейсбуком, ушедшим Slack, Skype, Telegram, Viber, ВКонтакте, Яндекс.Алисой и даже WeChat. Все функции бота были разделены на плагины с единым интерфейсом обмена данными, что позволило упростить разработку и код. Однако блокировка Telegram в РФ и рост рабочей нагрузки заставили отложить идею в долгий ящик.
Начало
Я написал плагин для Core4, который обрабатывает текстовые каркасы и выводит квизы в боте. Начал с простого опроса:
Третья планета от Солнца?
> Земля
> Венера
> ЛунаВам понравился тест?
> Да
> нет
Как вас зовут?
Оцените сложность теста в баллах от 1 до 10?
Развитие
Задача не сложная, но хотелось большего: ветвлений, проверок. Конструктор стал понимать типы вопросов и ожидаемых ответов:
— «B» - ожидается ответ кнопкой — «P:» — ожидание телефона через кнопку «Поделиться телефоном», — «G:» — ожидание геопозиции через кнопку «Поделиться геопозицией», — «#:» — ожидание отправки контакта или ручного ввода телефона +7(495)123-45-67, + и не менее 8 цифр, допустимы скобки и разделители — «T:» — ожидание текстового ввода, — «D:» — ожидание целого или десятичного числа, — «E:» — ожидание ввода электронной почты — «U:» — ожидание URL-адреса — «Y:» — ожидание ввода даты DD-MM-YYYY или даты времени DD-MM-YYYY HH:II — «H:» — ожидание ввода времени (часы и минуты) HH:MM — «F:» — ожидание отправки файла, — «X:» — любой тип ответа (но не кнопка)
Добавил возможность задавать оценку кнопочного ответа (Верно/Нет) и начислять баллы за ответ. Для ветвления придумал простой вариант: «Если ответили так, задать вопрос». Планирую добавить сегментацию пользователей на основе ответов (она уже есть в конструкторе, пользователи сегментируются, но в каркасе пока не реализована) .
После доработок каркас опроса стал выглядеть так:
Третья планета от Солнца?
> Земля||Y10
> Венера||N
> Луна||N
Вам понравился тест?
> Да||Y50
> нет||N
> X: Расскажу в сообщении|Опишите впечатление текстом, видео или голосовым
T: Как вас зовут?
D: Оцените сложность теста в баллах от 1 до 10?
Уровень ветвлений стал практически неограниченным, но появились сложности в обработке алгоритма. Решение этих вопросов заняло много времени, но в итоге всё получилось.
Допиливаем напильником и шлифуем
Параллельно был написан веб-интерфейс для пост-обработки каркаса. В конструкторах ботов обычно используются блок-схемы связанные друг с другом стрелками, каждый блок описывает действие, каждому ответу назначается переменная, но в блокноте такое не описать, поэтому я выбрал дерево. Дерево не позволяет делать сложные связи, но для опросов оно логически подходит гораздо лучше, вся схема опроса видна и понятна, возможности дерева позволяют легко переносить вопросы с уровня на уровень и менять их местами, в блочной схеме всё выходит гораздо сложнее.
Вид диалога в конструкторе
Не текстом единым
К вопросам нужно добавлять картинки и мультимедиа, без этого красивый квиз не сделать. От идеи добавлять картинки в каркасе пришлось отказаться, т.к. любую реализацию будет не возможно объяснить не подготовленному пользователю. Перенес ее в веб-конструктор и квизы заиграли новыми красками.
Редактирование ответа и вопроса, если выбран этот ответ
В настройках есть возможность запретить повторный запуск диалога, например, если это был тест на оценку знаний, при прохождении квиза замеряется время затраченное на прохождение, это позволит оценить скорость и уверенность отвечающего. В планах — ограничение времени прохождения.
Настройки квиза
В веб-интерфейсе можно сегментировать пользователя по ответам, что даст возможность рассылать информацию по пересечению сегментов. Сегментация уже работает, а рассылки пока в разработке
Полноценная работа
В веб-интерфейсе есть пункт «Клавиатуры бота», где можно создать стандартные клавиатуры для навигации с подключением к ним квизов, в них же можно задать сообщения при выводе клавиатуры. Используя эту возможность можно создавать сложные переходы и вариации. Конструктор на данном этапе предназначен для работы с квизами, но в планах создание привычных блок-схем с более удобными возможностями.
Создаем клавиатуру и назначаем действие кнопок, в планах визуализировать все на блок-схемах
Общаемся с пользователями
Отлично! Квиз работает, вопросы задаются, типы контролируются, кнопку другого ответа бот не примет, полный контроль! И как хранить результаты? В базе данных, но каждый квиз разный по содержанию и объему, поэтому храним в JSON. Отслеживать результаты в админке приятно, но не интересно. Вот бы была возможность сразу ответить пользователю. Например, мы создали квиз-диалог по вопросам поддержки продукта, пользователь выбрал свой продукт, ответил на некоторые вопросы, мы получили заявку и… как ему ответить? Как задать уточняющие вопросы не покидая телеграм? Создадим закрытый форум в телеграм, добавим туда бота, дадим ему права на чтение сообщений и у нас появляется возможность общения с пользователем, причем общаться может не один наш сотрудник, а все кто состоит в закрытой группе (пользователь ее не видит, он общается с ботом)
Так техподдержка или менеджеры видят заявки, отсюда они могут отвечать сразу в бота
Сохраняем и анализируем
Общение через бота важный и нужный формат, но хочется иметь общую картину, сортировать и фильтровать результаты. Таблицы Гугл то, что нужно, но мы не создаем переменные и как тогда записывать результаты… Обойдемся без переменных! Немного магии и все работает с таблицами, при первом прохождении генерируется лист с максимальным количеством колонок (все варианты ответов), каждый отдельный квиз это отдельный лист и ничто не мешает создавать нам несколько квизов, всё будет ясно и понятно. Если пользователь дал правильный ответ, подсветим эту ячейку зеленым, а количество баллов за ответ покажем в примечании, это даст возможность оценивать результаты не отвлекаясь на описание квиза, не нужно помнить правильные ответы и сразу видно, где ошибка в ответах.
Интеграция с Гугл Таблицами позволяет создать аналогичный Гугл Формам сервис, но без настроек и выхода из Телеграм.
Интеграция с Гугл.Таблицами. Мне нравится! А вам?
Передаем диалог в CRM
В работе я использую российский сервис YouGile https://ru.yougile.com/, в свое время я делал бота для публикации задач из Телеграм на доску, он общедоступный и бесплатный, называется «YouGile unofficial bot». Переслали ему сообщение, он опубликовал его на доске и при необходимости отправил дубль на ваш Email — удобно! А квизы могут быть задачами? Могут! Делаю интеграцию результатов квиза с YouGile и получается — простая и легкая CRM! Можно дать ссылку на квиз и его результаты сразу будут переданы менеджерам, после обработки они перенесут их в нужные колонки, добро пожаловать в Agile-style
Обрабатываем заявки в стиле Аджайл
Для тех кто не хочет ничего подключать
Просто укажите в настройках квиза свою почту или ID аккаунта в телеграм (должен быть подписан на бота), и получайте копии диалогов в почту или мессенджер. Ответить оттуда сложно, но не все задачи требуют ответа. Простая, полезная и удобная функция.
В таком виде результат приходит на email и в Телеграм
Для самых продвинутых
Мало возможностей? Укажите в настройках адрес своего сервера, на котором вы хотите самостоятельно обрабатывать результаты квизов и сразу после завершения диалога бот отправит вам все результаты в виде HTML и JSON, приготовьте их по своему или отправьте в другой сервис. Полезно!
Где использовать?
— Создание квизов и опросов — Техническая поддержка клиентов — Дерево решений (вопросы приводят к выбору единственного результата) — Сбор лидов в CRM — Оценка качества услуг, в том числе использование для тайных покупателей с обработкой отчетов — Тесты на знание предмета — Чекапы — Сбор анкет-заявок в HR и создание предварительных тестов — Онбординг сотрудников — Регистрация участников на мероприятия с возможностью обсуждения деталей и проведения по CRM — Бронирование через квиз — Составление портрета гостя — Сбор показаний приборов учета — Учет рабочего времени и отчеты о проделанной работе — Сбор заявок на подбор — Сбор вопросов перед/на мероприятии — Заполнение анкет на франшизу и т.п. — Оформление брифов и ТЗ с обсуждением и проводкой в CRM — Заявки на подбор помещений — Заявки на расчет стоимости кейтереинга — Бриф на расчет стоимости материалов
Ложка дёгтя
Проект находится в стадии финального тестирования, иногда вылезают баги, но в общем всё работает. Больше всего раздражает задержка на обработку результатов при прохождении квиза в боте. Это из-за того, что продукт молодой. Несколько секунд, но не приятно, но терпимо, это задержка из-за ответов внешних сервисов, без подключения интеграций она вообще не заметна. А в ближайшее время я переделаю обработчик и всё будет летать =)
После пополнения счета иногда выбивает из аккаунта и нужно входить повторно, это магическая ошибка, ищу причину. Ну и конечно, есть баги о которых я не знаю, но вы мне обязательно сообщите =)
Большие планы
Часть запланированного уже частично реализована, часть ещё только на бумаге.
В планах: — Редактор бота в виде блок-схем, в не совсем привычном виде, но будет удобно
— Использование переменных для записи ответов с последующим подключением калькулятора (реализовано на 50%) — Рассылки по сегментированным группам пользователей с персонификацией — Работа бота в группах и каналах, проверка подписки, модерация, публикация оформленных сообщений — Поддержка досок объявлений в форумах (публикация только через бота) — Сбор статистики бота (статистика уже собирается, но пока не выводится) — Подключение плагинов Core4, даст возможность использовать готовые модули для типовых решений (уже работает, вывод квиза и общение в боте это часть из плагинов системы) — Реферальная программа для пассивного заработка (70%) — и многое-многое другое
Как попробовать
Рабочая версия доступна на сайте https://botpad.ru/landing/ На ней можно отредактировать или создать квиз.
Доброго всем времени! Господа капибары, простите за столь наглую просьбу, но мыслей к кому обратиться у меня уже нет. Попросил я эту новую нейросеть Deepseek написать бота для парсинга и скачивания книг из локальной inpx библиотеки. Он мне его написал, но есть проблема, бот не выдает файл для скачивания, т.е. он находит книгу, выдает название\имя файла, но при нажатии "скачать", он просто копирует строку. Я понимаю что просьба очень наглая, но может кто нибудь проверить код и дополнить\исправить функционал?
Я люблю современную уличную живопись - граффити, муралы,
стрит-арт и прочее. Это можно называть как угодно. Мне нравятся рисунки,
которые украшают городское пространство. Например - вот это мне
показалось интересным.
Гуляя по Казани в сквере возле театра Экият, увидела как
преобразили техническое помещение. Правда, я не поняла что это - книжный
шкаф или библиотека?
Но это не важно. Важно то, что так это здание выглядит гораздо привлекательнее.
Одна из моих любимых книг исторический роман Валентина Иванова "Русь Изначальная".
Именно такую книгу взял в библиотеке в 90-х , к сожалению не сохранилась.( каюсь обратно не сдал)
Книга повествует о жизни славянских племён, их объединения и начала становления Русского государства на фоне распада Византийской империи.
Несмотря на то что это исторический роман, где изложенны подлинные исторические факты, в нем очень много художественного вымысла. Поэтому книга будет интересна как подросткам так и взрослым людям.
Я прочитал впервые первый том будучи как раз подростком, впечатления о суровой жизни славян на реке Рось(Россичи) были просто волшебными.
Второй том я прочитал будучи уже взрослым, вспомнив книгу, нашел её уже в интернете. И скажу сразу впечатления были даже еще сильнее. Плюс ко всей той богатырской сказке прибавилось понимание течения истории, событий.
С тех пор я часто перечитывал эту книгу и каждый раз находил что то новое, сразу не замеченное, в событиях, судьбах героев, исторических фактах...
Есть ещё одноименный фильм - его смотреть не рекомендую, с книгой не сравнится, а впечатление испортит.
Открытия о способностях чат-ботов к обману и манипуляциям.
Новое исследование показывает , как искусственный интеллект может обманывать другие системы ИИ, заставляя их нарушать встроенные ограничения и предоставлять опасную информацию. Исследователи обнаружили, что целевые чат-боты нарушают правила, предлагая советы по синтезу метамфетамина, изготовлению бомб и отмыванию денег.
Современные чат-боты могут принимать различные личности, включая вымышленные персонажи. Исследование использовало эту возможность, попросив чат-бота выступить в роли научного ассистента. Затем исследователи задали ассистенту разработать запросы, способные "взломать" другие чат-боты.
Такие методы атаки оказались эффективными против GPT-4 (42,5% успеха), Claude 2 от Anthropic (61%) и Vicuna (35,9%) – открытого чат-бота.
Соавтор исследования Соруш Пур, основатель компании по безопасности ИИ Harmony Intelligence, подчеркивает необходимость осознания обществом рисков, связанных с этими моделями. Цель исследования - продемонстрировать проблемы текущего поколения больших языковых моделей (LLM).
С момента появления чат-ботов, работающих на базе LLM, злоумышленники научились "взламывать" программы, заставляя их предлагать преступные советы. Разработчики моделей ИИ постоянно стараются исправлять уязвимости, что приводит к "игре в кошки-мышки".
Однако использование ИИ для разработки стратегий, убеждающих другие ИИ игнорировать защитные механизмы, может ускорить процесс в 25 раз. Успех атак на различных чат-ботах указывает на уязвимость, присущую дизайну чат-ботов на базе ИИ в целом.
OpenAI отказалась комментировать результаты исследования, а Anthropic и Vicuna не ответили на момент публикации.
Рушеб Шах, еще один соавтор исследования, отмечает, что в настоящее время атаки показывают способность моделей говорить то, что разработчики LLM не хотят. Но по мере усиления моделей потенциал опасности этих атак может возрасти.
Майк Кателл, этический эксперт из Алан Тьюринг Института в Англии, не участвовавший в исследовании, отмечает, что разработчики чат-ботов на базе LLM прилагают усилия для их безопасности. Но конкуренция может победить, и некоторые разработчики могут устать от борьбы и просто позволят ИИ делать то, что он делает.
Некоторое время назад я разработал бесплатного Телеграм-бота для отправки задач в YouGile, российский аналог ушедшего из РФ Trello. Сегодня этот бот получил неожиданное расширение функционала. Изначально бот был создан для удобной постановки задач через Телеграм, но после общения с одним из пользователей, возникла идея расширить его возможности. Пользователь пожелал, чтобы бот мог одновременно отправлять задачи как в YouGile, так и в Trello.
Изначально я предложил использовать API YouGile и указать адрес колонки в Trello для дублирования задач. Однако, возникла проблема: Trello не принимал задачи, отправленные через email. Как выяснилось, пользователь настроил интеграцию с YouGile через email и указал почту Trello для двойной интеграции, на что бот не был рассчитан. Внесение небольших изменений в алгоритм позволило решить эту задачу. Теперь бот отправляет задачи на оба адреса, обеспечивая пользователя необходимым функционалом.
Сейчас я работаю над проектом «Бот в блокноте». Это конструктор, позволяющий без специальных знаний создавать сложные диалоги для Телеграм-ботов, включая подсчет баллов и отслеживание правильных ответов. В проекте предусмотрена возможность отправки результатов в различные сторонние сервисы, такие как Google Таблицы, группы в Телеграм, и, конечно же, в YouGile. Теперь, с пониманием почтовой интеграции, я вижу возможность отправки данных также и в Trello, а возможно, и в другие сервисы, поддерживающие прием задач через email.
Эта статья получилась небольшой, но может быть полезной для тех, кто использует одновременно YouGile и Trello.
Представляю Вашему вниманию отрывок из своей книги – романа "Лабиринт":
– Ты... как тут? – выдавил из себя Марк.
– Я не знаю... Я уже готовился ко сну, но вдруг мне стало как-то мучительно сжимать грудь. Я распахнул окно и вдохнул свежего воздуха. А потом внезапно сорвался с места, выбежал из квартиры и помчался сюда.
Выслушав меня, он сказал, что с ним произошло то же самое! Он также почувствовал ком в груди, а потом выбежал из дома и... ноги привели его к парку.
Мы ещё не успели прийти в себя после первой странности, как нам уже была явлена новая...
Произведение написано в жанрах романтическое фэнтези, ужасы, детектив, приключения.
Саман — это композитный материал, состоящий из земли, воды, соломы, глины и песка, который укладывается при строительстве зданий вручную, пока он пластичен. Здесь нет форм, как при работе с утрамбованной землёй, нет кирпичей, как при строительстве из необожжённого кирпича, нет добавок или химикатов и нет необходимости в использовании машинного оборудования.
Это древний, опробованный временем, материал. Жизнеспособность самана полностью доказана всему миру веками, а может и тысячелетиями. Однако, несмотря на это, большинство книг о строительстве и архитектуре даже не упоминают общеизвестную, почти универсальную строительную методику строительства саманных домов. Цель данной книги - заполнить этот пробел.
На прошлой неделе Apple TV+ объявила о масштабной сделке с Брендоном Сандерсоном. Вместо выбора между кино и сериалами стриминговый сервис возьмется сразу за оба формата – экранизирует "Рождённый туманом" как полнометражную картину, а "Архив Буресвета" превратит в телесериал.
Сандерсон записал видео на своем YouTube-канале, где подробно рассказал о деталях сделки и том, как она повлияет на его литературную работу. Писатель успокоил поклонников – роман Mistborn Ghostbloods выйдет в 2028 году согласно графику, как и следующая часть "Архива".
Писатель признал, что адаптации "повлияют на график написания книг, но не настолько, чтобы волноваться". Он добавил, что уже заложил необходимое время в рабочее расписание.
Что касается телесериала и фильма, то Сандерсон заявил, что провел годы в поисках подходящего партнера для экранизации. В мае этого года писатель представил проект "всем крупным стримерам и студиям Голливуда, и получил массу отличных предложений". За права боролись все, но Apple TV+ одержала победу благодаря продуктивным встречам.
Решающим фактором стал творческий контроль. По условиям соглашения Сандерсон напишет сценарий, выступит продюсером, консультантом и утвердит актерский состав. Как отмечает Hollywood Reporter, это дает ему значительно больше полномочий, чем, например, у Джорджа Мартина. Писатель также станет сошоураннером сериала – сейчас идет поиск напарника для этой роли.
Сандерсон подчеркнул, что его привлек подход Apple к производству контента, включая "тщательно продуманный релиз конкретных проектов". До выхода фильма и сериала пройдет немало времени, но автор уверен в успехе предприятия и призвал фанатов приготовиться: "Следите за процессом написания сценария, слушайте мои жалобы о том, как сложно сжать книгу на 200 000 слов в двухчасовой фильм. Это займет у нас следующие полгода".
Комментарии