@johan насколько понимаю, не кешируется, а просто хранится на постоянке. Мастодон позволяет админу выбрать, где будут храниться картинки.
https://docs.joinmastodon.org/admin/optional/object-storage/
@iliazeus @skobkin @Mahury @erua Блин, в смысле — да, хранится. Но что-то я как-то перестал (окончательно) понимать, как это работает. Потому что вроде как картинка обернута в ссылку на s3, но по клику грузится кэшированная копия уже с хранилища моего инстанса. Хрень какая-то нездоровая-жабоскриптовая
@johan насколько понимаю я, с чужих инстансов картинки сохраняются вместе с остальным контентом поста, просто обычно не в полном разрешении. Но можно открыть оригинал в том месте, где он хранится.
Вроде все логично - все, что ты видишь в интерфейсе твоего инстанса - подтягивается всегда с твоего инстанса.
Чтобы прям оригинал увидеть, в веб-мастодоне можно нажать "открыть ссылку в новой вкладке" на картинке (или Ctrl+щелчок, что суть то же самое).
@erua Ага. Но тут по ходу выяснилось, что, в принципе всё нормально с картинками больших размеров: инстанс закэширует уменьшенную копию, полную версию можно посмотреть через «Открыть ссылку в новой вкладке».
@erua Напомню, весь сыр-бор из-за идеи заливать картинки на https://dvd.chat. Я хз, где он; админ в Калифорнии, постит на ниппонском…
что за болезненная тяга постить в мастодон?
есть же pixelfed-инстанцы, спецом для постинга картинок. закинул туда, а мастодон-аккаунте форварднул/расшарил/забустил.
Так я именно это и хочу делать.
«Join to enjoy: - 200GB»
ну если pixelfed действительно портит картинки, тогда предпочёл бы хостить их на каком-то S3-хранилище, вставляя в посты через ссылку и тэги/разметку.
Действительно портит. Не портит из известных мне https://pixelfed.art (регистрация закрыта); но там в рулезах упомянуто NO generated images (ну, пока не придирались); да и заполнять аккаунт всякими проходными вещами не хочу.
вставляя в посты через ссылку и тэги/разметку.
В том-то и проблема, что это зделоть в #Mastodon крайне проблематично (если вообще возможно).
![Alt text](https://assets.digitalocean.com/articles/alligator/boo.svg "a title")
@erua Я попробовал — таким макаром картинка вставляется тупо в оригинальном размере, без превью и прочего, разумеется, не влезая в колонку и ломая ленту. Так что это не вариант вообще.
@erua Я как раз в вебморде и смотрел. Она не ресайзит картинку, вставленную через Markdown
![Alt text](https://aaa.bbb/ccc.jpeg "a title")
@erua Всё равно не понимаю: в каком месте ебанулись-то и в чём виноваты? В том, что сделали поддержку Markdown, который конвертирует в </img>, и оно отображается браузером, собсно, так, как и должно?
@erua Ну вот код картинки в таком виде приходит, никаких скриптов на нее не понавешено → браузер отображает так, как должен, т.е. в полном размере. Другие форки вообще не отображают. Кто прав в ситуации, которая вообще не задокументирована — сказать, имхо, сложно.
<img style="max-width: 100%;" src="https://images.weserv.nl/?n=-1&il&url=https://calckey.dvd.moe/file/dvd-calckey/dvd-calckey/c56f62a3-d976-4034-a2f1-6f5358b37663.jpg" alt="Image/photo" loading="eager">
@erua Это личная инициатива хабзиллы же.
![Alt text](https://aaa.bbb/ccc.jpeg "a title")
<img style="max-width: 100%;" src="https://images.weserv.nl/?n=-1&il&url=https://calckey.dvd.moe/file/dvd-calckey/dvd-calckey/c56f62a3-d976-4034-a2f1-6f5358b37663.jpg" alt="Image/photo" loading="eager">
@erua Видимо, то, что max-width — мордоспецифичный атрибут и подставлять его должна сама морда?
@erua Ну. Всё так. Поэтому отдавать html со стилями неправильно.
@erua Хм. Судя по тому, что а) можно писать не только с Markdown-разметкой, но и с html; б) в настройках морды есть галочка «удалять форматирование» — у меня подозрение, что таки в ActivityPub пихают html-разметку.
{
"@context": ["https://www.w3.org/ns/activitystreams",
{"@language": "en"}],
"type": "Note",
"id": "http://postparty.example/p/2415",
"content": "<p>I <em>really</em> like strawberries!</p>",
"source": {
"content": "I *really* like strawberries!",
"mediaType": "text/markdown"}
}
@erua Ну? В ActivityPub пихают html-разметку, как я и предполагал.
"content": "<p>I <em>really</em> like strawberries!</p>",
"source": {
"content": "I *really* like strawberries!",
"mediaType": "text/markdown"}
@erua А если я сообщение в html-разметке наберу, что будет в Source?
А если на мисскеевском диалекте (всратом) Markdown — какой вообще от такого сорца прок принимающей стороне?
@erua Ну там жеж написано черным по зеленому, что source — для редактирования поста автором. А на принимающей стороне должен отображаться приехавший html.
ActivityPub extends the Object by supplying the source property. The source property is intended to convey some sort of source from which the content markup was derived, as a form of provenance, or to support future editing by clients.
Alyssa P. Hacker likes to post to her ActivityPub powered blog via an Emacs client she has written, leveraging Org mode. Later she switches to editing on her phone’s client, which has no idea what text/x-org is or how to render it to HTML, so it provides a text box to edit the original content instead.
@erua Ну переведи тогда, что там на самом деле написано. Может, у меня с английским плохо?
@erua 3-й пункт. Неформатированный текст, безо всяких там сорцов. Т.е. подразумевается, что клиент должен показывать имено content, а не source. Но в случае скачущего текста в Миске — непонятно…
Хотя… Я вот замечал, что разные реализации клиентов не всегда видят зачеркнутый текст, хотя полужирный и курсив — умеют.
Надо, короче, поиграться с html-форматированием.
@erua Т.е. ты утверждаешь, что клиент интерпретирует source, но если его нет или неизвестный тип — то content?
@erua фух… Наконец-то 😂
"@context": ["https://www.w3.org/ns/activitystreams", {"@language": "en"}],
"type": "Note",
"id": "http://postparty.example/p/2415",
"content": "<p>I <em>really</em> like strawberries!</p>",
"source": {
"content": "<p>I <em>really</em> like strawberries!</p>",
"mediaType": "text/html"}
@erua Следи за руками: я пишу вот такой html. Естественно, style игнорится, соблюдаются только полужрный, курсив и зачеркивание.
При нажатии кнопки «изменить» в поле ввода попадает исходный html.
Таким образом, Markdown здесь 100% не участвует.
В общем, как я понимаю, учитывая взаимодействие Mastodon и Misskey с ее всратым Markdown’ом: если клиент узнает тип сорца — наверное, парсит сорц. Иначе - контент, который суть html отфильтрованный до минимального набора безопасных тегов.
Других объяснений происходящей неразберихе у меня нет.
где пишешь
В поле вводе поста, разумеется.
какой JSON фомируется в плане ActivityPub?
Я ж не могу это посмотрет!
@erua Естественно, html выставлен.
@erua
Запрос:
{
“content_type”: “text/html”,
“in_reply_to_id”: null,
“language”: “ru”,
“local_only”: false,
“media_ids”: [],
“poll”: null,
“sensitive”: false,
“spoiler_text”: “”,
“status”: “<p>test</p>”,
“visibility”: “public”
}
Ответ:
{
“id”: “111934698345269000”,
“created_at”: “2024-02-15T09:05:50.825Z”,
“in_reply_to_id”: null,
“in_reply_to_account_id”: null,
“sensitive”: false,
“spoiler_text”: “”,
“visibility”: “public”,
“language”: “ru”,
“uri”: “https://aethy.com/users/johan/statuses/111934698345269000”,
“url”: “https://aethy.com/@johan/111934698345269000”,
“replies_count”: 0,
“reblogs_count”: 0,
“favourites_count”: 0,
“edited_at”: null,
“favourited”: false,
“reblogged”: false,
“muted”: false,
“bookmarked”: false,
“pinned”: false,
“local_only”: false,
“content”: “<p>test</p>”,
“filtered”: [],
“reblog”: null,
“application”: {
“name”: “Web”,
“website”: null
},
“account”: {
“id”: “111125016015385194”,
“username”: “johan”,
“acct”: “johan”,
“display_name”: “Johan”,
“locked”: false,
“bot”: false,
“discoverable”: true,
“group”: false,
“created_at”: “2023-09-25T00:00:00.000Z”,
“note”: “<p>— Тебе здесь не понравится, Сьюзен. Дело в фетишистских религиозных верованиях. Тут проводятся опасные ритуалы.</p>”,
“url”: “https://aethy.com/@johan”,
“uri”: “https://aethy.com/users/johan”,
“avatar”: “https://cdn.aethy.com/accounts/avatars/111/125/016/015/385/194/original/90924dd9143c0e8f.png”,
“avatar_static”: “https://cdn.aethy.com/accounts/avatars/111/125/016/015/385/194/original/90924dd9143c0e8f.png”,
“header”: “https://cdn.aethy.com/accounts/headers/111/125/016/015/385/194/original/c03222c5e36e7d2e.jpg”,
“header_static”: “https://cdn.aethy.com/accounts/headers/111/125/016/015/385/194/original/c03222c5e36e7d2e.jpg”,
“followers_count”: 4,
“following_count”: 1,
“statuses_count”: 6,
“last_status_at”: “2024-02-15”,
“noindex”: false,
“emojis”: [],
“roles”: [],
“fields”: []
},
“media_attachments”: [],
“mentions”: [],
“tags”: [],
“emojis”: [],
“reactions”: [],
“card”: null,
“poll”: null
}
@erua Погоди. ActivityPub — это же сервер-сервер? Веб-клиент шлет то, что выбрал: либо html, либо markdown.
<img src="images/username_t.png" />
<div id="pic"></div>
...
#pic {
background-image: url('images/username_t.png');
display: inline-block; width: 100px; height: 100px;
}
@erua А вот — в случае с Markdown:
{
“content_type”: “text/markdown”,
“in_reply_to_id”: null,
“language”: “ru”,
“local_only”: false,
“media_attributes”: [],
“media_ids”: [],
“poll”: null,
“sensitive”: false,
“spoiler_text”: “”,
“status”: “# Заголовок\n\nТекст сообщения”,
“visibility”: “direct”
}
{
“id”: “111934777808015618”,
“created_at”: “2024-02-15T09:26:03.332Z”,
“in_reply_to_id”: null,
“in_reply_to_account_id”: null,
“sensitive”: false,
“spoiler_text”: “”,
“visibility”: “direct”,
“language”: “ru”,
“uri”: “https://aethy.com/users/johan/statuses/111934777808015618”,
“url”: “https://aethy.com/@johan/111934777808015618”,
“replies_count”: 0,
“reblogs_count”: 0,
“favourites_count”: 0,
“edited_at”: null,
“favourited”: false,
“reblogged”: false,
“muted”: false,
“bookmarked”: false,
“local_only”: false,
“content”: “<h1>Заголовок</h1><p>Текст сообщения</p>”,
“filtered”: [],
“reblog”: null,
“application”: {
“name”: “Web”,
“website”: null
},
“account”: {
“id”: “111125016015385194”,
“username”: “johan”,
“acct”: “johan”,
“display_name”: “Johan”,
“locked”: false,
“bot”: false,
“discoverable”: true,
“group”: false,
“created_at”: “2023-09-25T00:00:00.000Z”,
“note”: “<p>— Тебе здесь не понравится, Сьюзен. Дело в фетишистских религиозных верованиях. Тут проводятся опасные ритуалы.</p>”,
“url”: “https://aethy.com/@johan”,
“uri”: “https://aethy.com/users/johan”,
“avatar”: “https://cdn.aethy.com/accounts/avatars/111/125/016/015/385/194/original/90924dd9143c0e8f.png”,
“avatar_static”: “https://cdn.aethy.com/accounts/avatars/111/125/016/015/385/194/original/90924dd9143c0e8f.png”,
“header”: “https://cdn.aethy.com/accounts/headers/111/125/016/015/385/194/original/c03222c5e36e7d2e.jpg”,
“header_static”: “https://cdn.aethy.com/accounts/headers/111/125/016/015/385/194/original/c03222c5e36e7d2e.jpg”,
“followers_count”: 4,
“following_count”: 1,
“statuses_count”: 6,
“last_status_at”: “2024-02-15”,
“noindex”: false,
“emojis”: [],
“roles”: [],
“fields”: []
},
“media_attachments”: [],
“mentions”: [],
“tags”: [],
“emojis”: [],
“reactions”: [],
“card”: null,
“poll”: null
}
@erua А вот здесь гля че написано:
Please be aware that most of the toot formatting will be stripped by mainline Mastodon, which may lead to the meaning of your toots being altered.
Если Мастодон не знает про Markdown, то как он может вычистить его из текста? Поэтому делаю вывод, что вычищается именно html-разметка.