Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(groups/profiles): add links section #734

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft

feat(groups/profiles): add links section #734

wants to merge 2 commits into from

Conversation

maksalees
Copy link
Member

@maksalees maksalees commented Sep 25, 2022

Это подобие ссылок которые есть в оригинальном ВК, но в отличии от оригинала, ссылки могут быть не только у группы а и у станицы (Linktree moment).

Первые 5 ссылок отображаются в блоке в самой группе или странице. Остальные ссылки доступны на отдельной страницы.

Screenshot_20220925_161236
Screenshot_20220925_161205
Screenshot_20220925_161307

Ссылки могут иметь заголовок, иконку и описание. Иконка и описание не обязательны, если описание не указано вместо него отображается домен ссылки.

Что ещё нужно сделать

В оригинальном ВК есть автоопределение заголовка и иконки ссылки. Для этого сервер запрашивает ссылку и парсит HTML. Делать такое на клиенте нельзя из-за ограничений CORS.

Такое можно повторить и в OpenVK, но в таком случае будет легко узнать настоящий IP сервера.

Думаю что это можно решить следующими способами:

  1. Забить на то что можно узнать IP (и сделать отключение в конфиге)
  2. Добавить поддержку прокси и использовать его на официальном инстансе
  3. Не реализовывать эту возможность

Я не знаю что лучше делать с этим. Кстати, решение этого поможет для реализации импорта RSS (#437) и предпросмотра ссылок в постах

Также нужно найти или сделать стандартную иконку для ссылок, так как использование силуэта Даниеля Мысливетса будет путать людей, учитывая что они отображаются в блоке.

Закрывает #582 и #421

This is similar to the links that are in the original VK, but unlike the original, links can be not only the group but also the page (Linktree moment).
@celestora celestora self-requested a review September 25, 2022 16:06
Copy link
Member

@celestora celestora left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@celestora
Copy link
Member

хотя это больше не LGTM, а utACK (untested acknowledgment, согласен, узнал, но не тестил)

@maksalees
Copy link
Member Author

В оригинальном ВК есть автоопределение заголовка и иконки ссылки. Для этого сервер запрашивает ссылку и парсит HTML. Делать такое на клиенте нельзя из-за ограничений CORS.

Такое можно повторить и в OpenVK, но в таком случае будет легко узнать настоящий IP сервера.

Думаю что это можно решить следующими способами:

  1. Забить на то что можно узнать IP (и сделать отключение в конфиге)
  2. Добавить поддержку прокси и использовать его на официальном инстансе
  3. Не реализовывать эту возможность

Я не знаю что лучше делать с этим. Кстати, решение этого поможет для реализации импорта RSS (#437) и предпросмотра ссылок в постах

Есть предложения?

@celestora
Copy link
Member

Есть предложения?

Добавить небольшой метод open_curl($url) который будет проверять есть ли в конфиге проксе и делать все хттп запросы через него.
Псевдо пример:

use Satori\cURL;

function open_curl(string $url): cURL {
    $curl = (new cURL)->url($url)->retry(2)->timeout(2)->header(["User-Agent" => "mozilla/5.0 (compatible; OpenVkCrawler-TechPreview/1.0 +https://$instanceHost/about_crawl)"]);
    if(...proxy...)
        $curl->proxy("socks5://$proxy");
        
    return $curl;
}

@celestora
Copy link
Member

image

алсо я настоятельно требую реализовать кеширование заголовков и описаний ссылок (желателбно даже отдельной сущностью, а то вдруг будем в постах такое ебать) && reasonable timeout чтобы нельзя было оверлордить создавая ссылки которые не отвечают.

@maksalees maksalees marked this pull request as draft September 25, 2022 16:23
@maksalees
Copy link
Member Author

image

алсо я настоятельно требую реализовать кеширование заголовков и описаний ссылок (желателбно даже отдельной сущностью, а то вдруг будем в постах такое ебать) && reasonable timeout чтобы нельзя было оверлордить создавая ссылки которые не отвечают.

А на сколько долго лучше держать кеш в бд? Хранить ли его в бд для событий или в обычной?

@maksalees
Copy link
Member Author

image
алсо я настоятельно требую реализовать кеширование заголовков и описаний ссылок (желателбно даже отдельной сущностью, а то вдруг будем в постах такое ебать) && reasonable timeout чтобы нельзя было оверлордить создавая ссылки которые не отвечают.

А на сколько долго лучше держать кеш в бд? Хранить ли его в бд для событий или в обычной?

@celestora

@celestora
Copy link
Member

Держать до распада Китая в обычной

@maksalees
Copy link
Member Author

maksalees commented Oct 3, 2022

Держать до распада Китая в обычной

Но заголовок же могут поменять до распада Китая

@celestora
Copy link
Member

Держать до распада Китая в обычной

Но заголовок же могут поменять до распада Китая

есть идеи получше?

@maksalees
Copy link
Member Author

Держать до распада Китая в обычной

Но заголовок же могут поменять до распада Китая

есть идеи получше?

Можно держать кеш неделю, а заголовки ссылок в уже существующих сущностях до распада США

@celestora
Copy link
Member

Держать до распада Китая в обычной

Но заголовок же могут поменять до распада Китая

есть идеи получше?

Можно держать кеш неделю, а заголовки ссылок в уже существующих сущностях до распада США

Мне кажется это сильно повлияет на производительность открытия страницы с кучей ссылок.

@maksalees
Copy link
Member Author

Держать до распада Китая в обычной

Но заголовок же могут поменять до распада Китая

есть идеи получше?

Можно держать кеш неделю, а заголовки ссылок в уже существующих сущностях до распада США

Мне кажется это сильно повлияет на производительность открытия страницы с кучей ссылок.

Временный кеш использовать можно только при создании новых сущностей, на открытие страниц это не должно тогда повлиять

@celestora
Copy link
Member

Держать до распада Китая в обычной

Но заголовок же могут поменять до распада Китая

есть идеи получше?

Можно держать кеш неделю, а заголовки ссылок в уже существующих сущностях до распада США

Мне кажется это сильно повлияет на производительность открытия страницы с кучей ссылок.

Временный кеш использовать можно только при создании новых сущностей, на открытие страниц это не должно тогда повлиять

Но тогда базу прийдётся засирать. Не проще ли тогда обновлять для всех постов?

@maksalees
Copy link
Member Author

Держать до распада Китая в обычной

Но заголовок же могут поменять до распада Китая

есть идеи получше?

Можно держать кеш неделю, а заголовки ссылок в уже существующих сущностях до распада США

Мне кажется это сильно повлияет на производительность открытия страницы с кучей ссылок.

Временный кеш использовать можно только при создании новых сущностей, на открытие страниц это не должно тогда повлиять

Но тогда базу прийдётся засирать. Не проще ли тогда обновлять для всех постов?

Тогда весь сохраненный кеш придётся обновлять каждую неделю, а не только при создании сущности (а ведь кеша может быть очень много). Я вообще изначально понял предложение ввести кеш, как то что я описал выше (кеш находится в отдельной таблице и используется только при создании ссылок или постов). Но похоже ты имел ввиду то что нужно просто не запрашивать заголовок при каждой загрузке списка :trollface:

@myslivets
Copy link
Collaborator

А может давайте добавление/просмотр ссылок в AJAX-формате? =))

@maksalees
Copy link
Member Author

А может давайте добавление/просмотр ссылок в AJAX-формате? =))

Определение заголовка и иконки ссылки будет конечно же в AJAX. А вот все остальное думаю можно и потом)

@celestora celestora force-pushed the master branch 3 times, most recently from a9d021b to cbec4b5 Compare February 7, 2023 20:46
@openvk-org openvk-org force-pushed the master branch 5 times, most recently from e198aff to 2db815d Compare June 15, 2023 12:21
@openvk-org openvk-org force-pushed the master branch 26 times, most recently from e198aff to 2db815d Compare June 15, 2023 12:48
Copy link
Member

@veselcraft veselcraft left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

мне нрав

@nbt1248
Copy link

nbt1248 commented Sep 29, 2023

а че когда допил
хочется поскорее мерж 👉 👈

@mrilyew mrilyew changed the title Draft: Блок с ссылками feat(groups/profiles): add links section Dec 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants