Author Topic: Протокол VKontakte  (Read 660777 times)

0 Members and 2 Guests are viewing this topic.

Offline Wave

Re: Протокол VKontakte
« Reply #1665 on: 18 04 2024, 12:04:34 »
Итак, обновился до самого свежего ночника.
В настройках поставил галочку (точнее, она по умолчанию была поставлена) Support BBC for NewStory.
Результат.
NewStory показывает пришедшие картинки вот так:

IEView показывает их же вот так:


Это ещё не доделано, или какие-то особенности у меня?
P.s.
Quote
'BBCNewStorySupport' = 1(BYTE)
done.
« Last Edit: 18 04 2024, 12:06:27 by Wave »
 

Offline Elzor

Re: Протокол VKontakte
« Reply #1666 on: 18 04 2024, 12:19:34 »
Настройки-События-Передача файлов нужно указать действительную папку, на запись в которую есть права. Насколько я вижу здесь путь указан некорректно.
 

Offline Wave

Re: Протокол VKontakte
« Reply #1667 on: 18 04 2024, 12:20:23 »
Так, проглядел, что каталог для «принятых файлов» должен существовать. Создал. Нажал на контакте «синхронизировать историю с сайта за последние три дня». Миранда, судя по попапам, пошла синхронизировать историю всех вк-контактов (я ожидал, что она сделает это только для контакта, на котором я вызвал этот пункт меню). Появились превьюшки и для ньюстори, и для иевью. Но теперь вопрос такой: а можно то же самое, но без необходимости скачивать это всё на диск? Для вк как раз чем и было хорошо, что от контактов летит уймища картинок, которые я разок увидел — и всё, нет надобности засирать винт.
 

Offline dartraiden

Re: Протокол VKontakte
« Reply #1668 on: 18 04 2024, 13:45:19 »
Чтобы делать превью, картинка должна существовать на диске. Иначе, из чего же его делать?

Quote
и всё, нет надобности засирать винт
Браузер точно так же "засирает винт", просто у него это называется "кэш" и робко спрятано в %LocalAppData%, отчего и создаётся ощущение, что винт не засирается. Чтобы что-то вам показать, это что-то нужно скачать.

ОБратная сторона медали: если файл стёрт, превьюшки не будет. В этом Миранда уступает браузеру: если в браузере очистить кэш и попытаться посмотреть старую историю, браузер перекачает отсутствующие изображения, чтобы их показать, а Миранда отсутствующий на диске файл не перекачает сама, поскольку ориентируется на то, есть ли событие ("входящий файл, был хоть раз скачан:да") в базе, а не на то, лежит ли в реальности файл на диске.
« Last Edit: 18 04 2024, 14:29:37 by dartraiden »
 

Offline Wave

Re: Протокол VKontakte
« Reply #1669 on: 18 04 2024, 16:44:42 »
Quote
Чтобы делать превью, картинка должна существовать на диске. Иначе, из чего же его делать?
Ну, точно так же, как это делалось до этого — иевью показывает превьюшки из сети. Я же почему спрашиваю, потому что изменилось то поведение, которое было и которое меня устраивало. Вот, скажем, из-за чего я сюда постучался — из-за того, что были неправильно настроены «принятые файлы». То есть на самом деле не только папки не существовало, но и в настройках была какая-то дичь. И много лет меня это не парило, вот я об этом и не думал, и не подумал.
Quote
Браузер точно так же "засирает винт", просто у него это называется "кэш" и робко спрятано в %LocalAppData%, отчего и создаётся ощущение, что винт не засирается. Чтобы что-то вам показать, это что-то нужно скачать.
У браузера можно настроить ограничение на размер кэша и даже полностью его отключить. Это влияет только на трафик и ограничивает отображение скоростью сети. Более того, я в любой момент могу щёлкнуть по ссылке картинки и открыть её в браузере. А что будет тут, если я сотру картинку с диска? Я смогу её увидеть опять, не открывая сайт вк и не перекачивая заново историю контакта?

Quote
ОБратная сторона медали: если файл стёрт, превьюшки не будет. В этом Миранда уступает браузеру: если в браузере очистить кэш и попытаться посмотреть старую историю, браузер перекачает отсутствующие изображения, чтобы их показать, а Миранда отсутствующий на диске файл не перекачает сама, поскольку ориентируется на то, есть ли событие ("входящий файл, был хоть раз скачан:да") в базе, а не на то, лежит ли в реальности файл на диске.
Ну вот и да.
 

Offline dartraiden

Re: Протокол VKontakte
« Reply #1670 on: 18 04 2024, 21:54:37 »
Quote
Я смогу её увидеть опять, не открывая сайт вк и не перекачивая заново историю контакта?
Достаточно дважды щёлкнуть по этому событию в журнале и файл перекачается.  Надо будет, конечно, ещё подумать в этом направлении.

Касательно улучшения всего этого мне в голову приходит только костыль
https://github.com/miranda-ng/miranda-ng/issues/4363

В таком случае диск будет забиваться превьюшками, но не полноценными файлами.

Но это уже не имеет отношения к VK.
« Last Edit: 18 04 2024, 22:15:46 by dartraiden »
 

Offline dartraiden

Re: Протокол VKontakte
« Reply #1671 on: 18 04 2024, 22:57:41 »
Нажал на контакте «синхронизировать историю с сайта за последние три дня». Миранда, судя по попапам, пошла синхронизировать историю всех вк-контактов
Проверил за 30 дней (в последние 3 дня мне не писал никто). Не воспроизводится. Грузит в тот, на ком дёрнул загрузку.
« Last Edit: 18 04 2024, 23:01:27 by dartraiden »
 

Offline Elzor

Re: Протокол VKontakte
« Reply #1672 on: 19 04 2024, 02:47:07 »
Миранда, судя по попапам, пошла синхронизировать историю всех вк-контактов
Нет, тут другое. При автосинхронизации (когда протокол выходит в онлайн) попапы об успешном поконтактном завершении подавляются, чтобы попап-флуда не было. Однако если в это же время руками запустить синхронизацию какого-нибудь контакта, подавление отключится. Механизм подавления-включения когда-то очень давно был сделан на скору руку, да так и остался, надо бы конечно когда-нибудь переделать.
Достаточно дважды щёлкнуть по этому событию в журнале и файл перекачается.
Не в случае вк, у нас в одном сообщении может прийти заопарк многочисленных вложений, делать каждое отдельным событием файлтрансфера - не красиво, кроме того становится возможным реализовать, например, графическое превью для видео. Единственная возможность сейчас перерисовать картинку, которой нет на диске - синхронизировать историю с содержащим сообщением. Отдельно для одного сообщения это сделать никак. Со следующего ночника это можно сделать через контекстное меню сообщения.
« Last Edit: 19 04 2024, 07:53:06 by Elzor »
 

Offline dartraiden

Re: Протокол VKontakte
« Reply #1673 on: 19 04 2024, 13:26:08 »
Касательно улучшения всего этого мне в голову приходит только костыль
Можно скачивать не оригиналы картинок, а их ужатые версии. Они будут кластся в каталог Preview в профиле, который можно убивать руками / планировщиком задач / реализовать какую-то логику по очистке (в будущем).

Соответственно:
- они занимают немного меньше места
- их можно смело бахать вместе с каталогом, в отличие от каталога принятых файлов, бахать который зачастую не хочется

В Telegram мы так и делаем, можно и в VK замутить.
« Last Edit: 19 04 2024, 13:28:52 by dartraiden »
 

Offline Wave

Re: Протокол VKontakte
« Reply #1674 on: 19 04 2024, 17:32:25 »
А чем плоха предыдущая реализация, где картинки показывались из сети? Я даже в общем-то любопытства ради спрашиваю, а не то чтобы критикую. Это нельзя реализовать для NewStory? Не успели реализовать? Или я чего-то не понял и можно настроить как-то так, чтобы NewStory показывала так же, как IEView? Честно говоря, не могу придумать правдоподобного объяснения, поэтому не стану гадать.
P.s. Возможно, этого нельзя реализовать для телеграма с джаббером. Тут никаких вопросов.
« Last Edit: 19 04 2024, 17:34:44 by Wave »
 

Offline dartraiden

Re: Протокол VKontakte
« Reply #1675 on: 19 04 2024, 19:09:23 »
Скорее всего, нельзя, т.к. для этого нужен JavaScript, который в litehtml, используемом NS, отсутствует.
https://github.com/miranda-ng/miranda-ng/issues/4351

Но NewStory зато умеет делать превью для файлотрансферов, чего не умеет IEView.
(и перспектив научить этому IEView не просматривается, @ghazan опасается, что это будет крайне сложно)

В самом IEView ничего не менялось вообще, так что если что-то поменялось, то вопросы к протоколу VK.
« Last Edit: 19 04 2024, 19:14:32 by dartraiden »
 

Offline MIR

Re: Протокол VKontakte
« Reply #1676 on: 20 04 2024, 03:58:07 »
Браузер точно так же "засирает винт", просто у него это называется "кэш" и робко спрятано в %LocalAppData%, отчего и создаётся ощущение, что винт не засирается. Чтобы что-то вам показать, это что-то нужно скачать.
У древних браузеров такое было, щяс давно уже всё в ОЗУ качяется и частично на диск, причём кэширование на диск можно полностью отключить в настройках браузера.
А в чём проблема на миранде загружать картинки в ОЗУ причём только те которые видны при просмотре окна чата? Ещё по 3-5 штук предыдущих и последующих чтобы при пролистывании окна чата не ждать когда они загрузятся. При закрытии окна чата они будут удаляться чтобы не засирать ОЗУ.
Скорее всего, нельзя, т.к. для этого нужен JavaScript, который в litehtml, используемом NS, отсутствует.
На крайняк Ram хранилище создать с выводом переменной внутри миранды к примеру %RamCache%
Настройки-События-Передача файлов нужно указать действительную папку, на запись в которую есть права.
А тут в таком случяе указать вместо C:\Users\User1\Мои документы\Принятые файлы\%userid%\ переменную RAM диска %RamCache%\%userid%\
Если запрашиваемый файл уже был удалён из кэша миранда заново его скачяет по ссылке из истории.

P.S. Насчёт ссылок на картинки - их подправить бы не мешало, т.к ВК изменил их адрес чтобы картинки качались не напрямую а обрабатывались скриптами на сервере, чтобы в случяе удаления картинки в сообщении её невозможно было бы просмотреть по ссылке, хотя на сервере эти картинки не удаляются и их можно просматривать по старым ссылкам, пример:

Ссылка нового образца, с обработкой на сервере
https://sun9-79.userapi.com/impg/VFMnjiNJ6btBJnpH1TBpTE11C2Etgnk6f8ZW3g/Ul6wLaB9hYk.jpg?size=640x542&quality=95&sign=24e30b50da7f18ac04438603b6ea3293&c_uniq_tag=x8CZwI4XB9tl6sAfh_GCnBWzEFPobxvo7PRe1Zyrlnc&type=album

Прямая ссылка, старого образца
https://sun9-79.userapi.com/VFMnjiNJ6btBJnpH1TBpTE11C2Etgnk6f8ZW3g/Ul6wLaB9hYk.jpg

Обе ссылки на одну и туже картинку, только вторая стабильная и картинка по ней не может быть удалена или заблокирована на сервере
 

Offline Elzor

Re: Протокол VKontakte
« Reply #1677 on: 20 04 2024, 04:40:16 »
1. Все есть файл. Так или иначе.
2. Протокол совершенно не волнует, где этот файл находится: на диске, в раме, в облаке, на альфе-центавре или еще где то. Лишь бы он был доступен через функции системного апи и ядра миранды. Он файлы качает, чтобы NewStory было что рисовать, следовательно все вопросы опять не по адресу. Но тем не менее:
3. NewStory использует litehtml - движок, который полноценным браузером не является и самостоятельно html элементы рисовать не умеет. Он лишь правильно размещает отрисованные элементы на странице. Чтобы отрисовать картинку, во-первых, используются системные апи, которые не умеют рисовать напрямую из веба. Тащить дополнительно какую-то библиотеку которая это "умеет" - избыточно. Только не надо заводить песни про браузеры которые умеют без кэша. Кому хочется браузер в мессенжере может смело отправляться на что-то на базе электрона, например. Отсюда во-вторых: картинку надо где-то иметь, то есть так или иначе скачать. Просто качать в оперативу и там бросать, в надежде что модуль журнала ее когда-то отрисует - идея плохая. Сохранять в файл куда перспективнее: этот файл прочитается и через неделю и через год, если пользователю захочется вновь на нее посмотреть.
4. Меня лично вообще не заботит ни место на диске, ни объем траффика. Это вообще в современном мире не критичные ресурсы. ВК - заведомо "дорогой" с этой точки зрения протокол. Разумно уменьшить потребление если есть возможность - я всегда за, но не в ущерб функционалу.
5. Кому хочется сохранять на рамдрайв - пусть сохраняет на рамдрайв. Я, например, принципиально не запрещаю никому спать стоя в гамаке, или, к примеру, использовать много лет назад протухшую ос. Но вешать кому-то гамак - чтобы что? Конечная цель какая?

Насчёт ссылок на картинки - их подправить бы не мешало
Опять-таки, во-первых, что с сервера пришло, то и используем. Подменять путь можно было бы, если б этот момент был задокументировал и гарантировалось, что в понедельник в 16:48 это вдруг не перестанет работать.
Во-вторых, опять же, конечная цель какая? При наличии NS и соответствующей настройки, картинки вообще локально скачиваются, даже если на сервере ее совсем удалят, она останется доступной.
« Last Edit: 20 04 2024, 10:45:43 by Elzor »
 

Offline Wave

Re: Протокол VKontakte
« Reply #1678 on: 20 04 2024, 12:11:39 »
Quote
В самом IEView ничего не менялось вообще, так что если что-то поменялось, то вопросы к протоколу VK.
Не менялось. Имеется в виду вот что. В настройках протокола вк можно снять галочку совместимости bb с newstory. И тогда в качестве просмотрщика в tabsrmm использовать иевью. Показываются превьюшки из сети, всё классно. Но нет возможности отвечать на реплику с её цитированием (указателем на неё). Т.е. тут всё по-старому.
Либо новый вариант — поставить галочку и использовать newstory. В ней есть возможность отвечать на реплики и можно организовать превьюшки, но не из сети, как для ieview, а каждая такая картинка скачивается на диск и показывается с диска.
Так что есть два варианта, надо решить, какой выбрать. У ieview+facebook.ivt красивей внешний вид, а newstory сыровата и ощутимо подглюкивает то со скроллингом, то например с такими вещами, как отправляю я картинку — и вижу только её кусок, а чтобы увидеть целиком, нужно отправить или получить ещё одну реплику. Но зато у newstory есть ответы на сообщения.

Ещё то дело, что телегой я практически не пользуюсь. Возможно, когда и если буду пользоваться активней, не будет смысла оставлять ieview.

Quote
используются системные апи, которые не умеют рисовать напрямую из веба
Вот, я услышал то, что мне объяснило, в чём причина именно такого поведения. Больше вопросов не имею и только сам для себя могу решить, какой вариант мне удобней и нравится больше.
 

Offline dartraiden

Re: Протокол VKontakte
« Reply #1679 on: 20 04 2024, 14:05:53 »
как отправляю я картинку — и вижу только её кусок
Потому что сначала формируется событие и отрисовывается во всю свою небольшую высоту, а затем туда вставляется превью и высота увеличивается. Но автоматически докручивать журнал пока непонятно как - если изображений больше одного, то журнал начнёт колбасить,