{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Блог Антона Иокова: заметки с тегом инструкция",
    "_rss_description": "antoniokov.com",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/blog.antoniokov.com\/tags\/instrukciya\/",
    "feed_url": "https:\/\/blog.antoniokov.com\/tags\/instrukciya\/json\/",
    "icon": "https:\/\/blog.antoniokov.com\/pictures\/userpic\/userpic@2x.jpg?1528736949",
    "authors": [
        {
            "name": "Антон Иоков",
            "url": "https:\/\/blog.antoniokov.com\/",
            "avatar": "https:\/\/blog.antoniokov.com\/pictures\/userpic\/userpic@2x.jpg?1528736949"
        }
    ],
    "items": [
        {
            "id": "27",
            "url": "https:\/\/blog.antoniokov.com\/all\/telegram-save-media-by-sender\/",
            "title": "Как сохранить фоточки из группы в Телеграме по авторам",
            "content_html": "<p>Ситуация: вы съездили с друзьями в горы и теперь у вас есть чатик в Телеграме с тремя сотнями фотографий и видео.<\/p>\n<p>Как бы их теперь разом выгрузить — да так, чтобы ещё и не профукать авторство? А то потом будете делать пост в Инстаграм, выберете снимок из галереи, где всё вперемешку, а потом от вас откажется подруга из-за нарушения авторских прав. Хотелось бы такого избежать.<\/p>\n<p>Вот бы все фотографии скачались на компьютер и чтобы у каждого автора была своя папочка:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.antoniokov.com\/pictures\/artemis-ii-files@2x.webp\" width=\"745\" height=\"578\" alt=\"\" \/>\n<\/div>\n<p>Мне пришлось повозиться, чтобы к этому прийти. Чтобы вам не пришлось, держите инструкцию — через минут 10 всё будет готово.<\/p>\n<h2>Выгружаем медиафайлы<\/h2>\n<p>Для начала нам понадобится <a href=\"https:\/\/desktop.telegram.org\">декстопная версия Телеграма<\/a>. <b> Важно:<\/b> если у вас MacOS, то нужна версия <b>не<\/b> из App Store, а именно с сайта. В аппсторовской версии нет экспорта 🤷‍♂️.<\/p>\n<p>Дальше заходим в чатик и выбираем `Export chat history` в контекстном меню:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.antoniokov.com\/pictures\/export-chat-history@2x.webp\" width=\"1090\" height=\"777\" alt=\"\" \/>\n<\/div>\n<p>Выбираем фото, видео и файлы; ставим щедрый лимит на размер; сохраняем в JSON:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.antoniokov.com\/pictures\/export-settings@2x.webp\" width=\"1014\" height=\"779\" alt=\"\" \/>\n<\/div>\n<p>На выходе получаем такую структуру:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.antoniokov.com\/pictures\/exported-files@2x.webp\" width=\"745\" height=\"461\" alt=\"\" \/>\n<\/div>\n<h2>Группируем по авторам<\/h2>\n<p>Чтобы расфасовать фоточки по папочкам для каждого автора, нам понадобится <a href=\"https:\/\/github.com\/antoniokov\/telegram-save-media-by-sender\">простенький Python скрипт<\/a>, который я набросал для себя. Сохраните <a href=\"https:\/\/raw.githubusercontent.com\/antoniokov\/telegram-save-media-by-sender\/refs\/heads\/main\/save_media_by_sender.py\">его<\/a> к себе в папку с выгруженными медиафайлами.<\/p>\n<p><i>Скрипт, разумеется, работает строго на вашем компьютере и никуда не отправляет никаких данных. Вы можете сами пробежаться по нему, а можете отдать вашему AI-агенту на проверку, чтобы точно быть уверенными.<\/i><\/p>\n<p>Чтобы запустить скрипт на маке, откройте папочку в терминале:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.antoniokov.com\/pictures\/open-in-terminal@2x.webp\" width=\"1265\" height=\"788\" alt=\"\" \/>\n<\/div>\n<p>И выполните<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">python3 save_media_by_sender.py<\/code><\/pre><p><i>Если у вас ещё нет Python, то предварительно <a href=\"https:\/\/www.python.org\/downloads\/macos\">установите его<\/a>, он ещё вам когда-нибудь пригодится.<\/i><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.antoniokov.com\/pictures\/terminal-command@2x.webp\" width=\"1007\" height=\"170\" alt=\"\" \/>\n<\/div>\n<p>Всё, успех, больше шагов нет.<\/p>\n<p>Если вы хотите сохранять сразу в другое место или использовать префиксы в именах файлов вместо папочек, то скрипт такое тоже умеет — загляните в его <a href=\"https:\/\/github.com\/antoniokov\/telegram-save-media-by-sender\">репозиторий на Гитхабе<\/a>. Там же можно поставить звёздочку, если вам он пригодился.<\/p>\n",
            "summary": "Выгружаем фото и видео из группы в Телеграме на компьютер, раскладывая файлы по папкам для каждого автора. Без регистрации, СМС и даже AI.",
            "date_published": "2026-09-27T18:56:24+02:00",
            "date_modified": "2026-09-28T09:46:24+02:00",
            "tags": [
                "telegram",
                "инструкция"
            ],
            "image": "https:\/\/blog.antoniokov.com\/pictures\/artemis-ii-files@2x.webp",
            "_date_published_rfc2822": "Sun, 27 Sep 2026 18:56:24 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "27",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/blog.antoniokov.com\/pictures\/artemis-ii-files@2x.webp",
                    "https:\/\/blog.antoniokov.com\/pictures\/export-chat-history@2x.webp",
                    "https:\/\/blog.antoniokov.com\/pictures\/export-settings@2x.webp",
                    "https:\/\/blog.antoniokov.com\/pictures\/exported-files@2x.webp",
                    "https:\/\/blog.antoniokov.com\/pictures\/open-in-terminal@2x.webp",
                    "https:\/\/blog.antoniokov.com\/pictures\/terminal-command@2x.webp"
                ]
            }
        },
        {
            "id": "4",
            "url": "https:\/\/blog.antoniokov.com\/all\/blogengine-on-digitalocean\/",
            "title": "Как завести Эгею на DigitalOcean",
            "content_html": "<p><a href=\"http:\/\/blogengine.ru\/\">Эгея<\/a> — простой и чистый движок для блога, а <a href=\"https:\/\/m.do.co\/c\/7913a0e0b44c\">DigitalOcean<\/a> — надёжный и масштабируемый хостинг за $5 в месяц. Если вы отчаялись найти минималистичную тему для Вордпресса и больше не хотите видеть случайную рекламу под своими статьями, то связка Эгея+DigitalOcean — ровно то, что вам нужно.<\/p>\n<p>К сожалению, с парой Эгея+DigitalOcean не прокатит вариант «купил хостинг, кликнул кнопку — пишешь статью», как с тем же Вордпрессом. На настройку у меня ушло пару часов, и один раз я даже убивал сервер и начинал всё заново. Чтобы сэкономить мне и вам время в будущем, я законспектировал процесс.<\/p>\n<p>Кое-где мы будем использовать командную строку и редактировать конфиги, но обещаю — никакого хардкора.<\/p>\n<h2>Покупаем домен<\/h2>\n<p>Домен можно купить где угодно, но мне нравится простота <a href=\"https:\/\/www.hover.com\/\">Ховера<\/a>, который не пытается продать тебе, в лучших традициях лоукостов, двадцать дополнительных услуг и не требует денег за приватность WHOIS.<\/p>\n<p>Мой домен стоил $12.99 в год, я подписался на три. В подкасте <a href=\"https:\/\/www.relay.fm\/cortex\/\">Cortex<\/a> регулярно появляются промокоды на 10% на первый год. На момент написания статьи работает код DISHWASHER.<\/p>\n<p>Всё, что необходимо сделать на Ховере — это поменять nameservers на оушеновские:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.antoniokov.com\/pictures\/Hover_small.PNG\" width=\"826\" height=\"75\" alt=\"\" \/>\n<\/div>\n<h2>Создаём дроплет на DigitalOcean<\/h2>\n<p>Для наших целей подойдёт такая комбинация:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.antoniokov.com\/pictures\/DO.png\" width=\"730\" height=\"222\" alt=\"\" \/>\n<\/div>\n<p>Чтобы каждый раз при подключении к серверу не вводить пароль и чтобы повысить безопасность, сгенерируем связку SSH-ключей и добавим публичный ключ при создании дроплета. Я для этого использую <a href=\"http:\/\/mobaxterm.mobatek.net\/\">MobaXterm<\/a>, Tools → MobaKeyGen.<\/p>\n<p>MobaXterm ещё понадобится нам для подключения к серверу и передачи файлов.<\/p>\n<p>После создания дроплет выдаёт свой публичный IP. Теперь мы можем подключиться к нему через SSH:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.antoniokov.com\/pictures\/MobaXterm_small.PNG\" width=\"638\" height=\"500\" alt=\"\" \/>\n<\/div>\n<h2>Настраиваем сервер<\/h2>\n<p>Для того, чтобы Эгея заработала, ей нужны Apache, MySQL и PHP. У DigitalOcean есть <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04\">понятная инструкция<\/a> — пройдите её.<\/p>\n<p>Но это не всё: Эгее нужна ещё пара модулей:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo apt-get install php-mbstring php7.0-gd<\/code><\/pre><p>Создадим для движка свежую базу:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">mysql -u root -p\nCREATE DATABASE e2;<\/code><\/pre><p>Думаете, Эгея готова к установке? Как бы не так — <a href=\"https:\/\/www.digitalocean.com\/community\/questions\/htaccess-doesn-t-work-on-ubuntu-droplet\">нужно сперва разрешить .htaccess<\/a>.<\/p>\n<p>Установка не начнётся, пока вы не дадите Апачу права на запись в директорию сайта:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo chgrp -R www-data \/var\/www\nsudo chmod -R g+w \/var\/www\nsudo find \/var\/www -type d -exec chmod 2775 {} \\;\nsudo find \/var\/www -type f -exec chmod ug+rw {} \\;<\/code><\/pre><p>Чтобы в адресной строке были чистые ссылки без ?go=:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo a2enmod rewrite<\/code><\/pre><h2>Устанавливаем Эгею<\/h2>\n<p>Скачиваем архив с последней версией с <a href=\"http:\/\/blogengine.ru\/download\/\">официального сайта<\/a>.<\/p>\n<p>Заходим на сервер по SSH и загружаем дистрибутив в любую папку — например, домашнюю \/home\/<i>anton<\/i>:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.antoniokov.com\/pictures\/upload-e2.png\" width=\"507\" height=\"382\" alt=\"\" \/>\n<\/div>\n<p>Распаковываем дистрибутив в директорию сайта:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo apt-get install unzip\nunzip  \/home\/anton\/e2_distr_v2970.zip -d \/var\/www\/html<\/code><\/pre><p>Открываем сайт в браузере и устанавливаем Эгею.<\/p>\n<h2>Настраиваем почтовый сервер<\/h2>\n<p>Чтобы заработали почтовые уведомления, нужно поставить sendmail:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">apt-get install sendmail<\/code><\/pre><p>Добавить свой хост в строку «127.0.0.1 localhost localhost.localdomain место_для_вашего_хоста»:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">nano \/etc\/hosts<\/code><\/pre><p>Запустить настройку sendmail и на всё ответить ’y’:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sendmailconfig<\/code><\/pre><p>Перезапустить сервер:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">service apache2 restart<\/code><\/pre><p>Мне не удалось сделать так, чтобы письма не попадали в спам. Если у вас получится — пожалуйста, поделитесь способом в комментариях. Пункты из <a href=\"https:\/\/skurudo.ru\/all\/mail-server-setting-memo\/\">памятки Skurudo<\/a> не помогли.<\/p>\n<h2>Разрешаем проблемы<\/h2>\n<p>Если у вас не работает страница \/hot, выполните для базы команду<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">mysql -u root -p\nSET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,&#039;ONLY_FULL_GROUP_BY&#039;,&#039;&#039;));<\/code><\/pre>",
            "summary": "Эгея — простой и чистый движок для блога, а DigitalOcean — надёжный и масштабируемый хостинг за $5 в месяц",
            "date_published": "2016-11-05T15:02:14+02:00",
            "date_modified": "2017-01-03T19:11:22+02:00",
            "tags": [
                "инструкция",
                "мета",
                "Эгея"
            ],
            "image": "https:\/\/blog.antoniokov.com\/pictures\/Hover_small.PNG",
            "_date_published_rfc2822": "Sat, 05 Nov 2016 15:02:14 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "4",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/blog.antoniokov.com\/pictures\/Hover_small.PNG",
                    "https:\/\/blog.antoniokov.com\/pictures\/DO.png",
                    "https:\/\/blog.antoniokov.com\/pictures\/MobaXterm_small.PNG",
                    "https:\/\/blog.antoniokov.com\/pictures\/upload-e2.png"
                ]
            }
        }
    ],
    "_e2_version": 4199,
    "_e2_ua_string": "Aegea 11.5 (v4199)"
}