170 похожих чатов

Всем привет! Я делаю что-то вроде мини-редактора изображений для своих

нужд и для удобства, я хочу добавить функцию быстрого поиска фотографий в интернете, чтобы драгендропом перетаскивать их в программу. Каким образом это можно сделать? Если встраивать браузер, то какой самый минимальный вариант, чтобы программа сильно не прибавила в весе?

28 ответов

10 просмотров

Можете помочь пожалуйста?

Если ты готов платить денюжку, то используй API гугла, яндекса и т.д. по поиску изображений. Там будет REST API (или что-то подобное). А дальше можешь хоть на нативных формах/канвасах это выводить

Андрей
Не готов

Тогда тоже самое, но можешь попробовать сэмулировать фронт самого сайта-поисковика с точки зрения сетевого взаимодействия. Но это крайне нестабильный вариант. P.S. посмотри тарифы, можно сделать разные способы оплаты/монетизации и т.д. взаимодействия с API. Для опен-сорс решений тоже могут быть отдельные тарифы со спец. условиями.

Alex
Тогда тоже самое, но можешь попробовать сэмулирова...

Мне в принципе это не так важно. Я просто хочу, чтобы в идеале всё было компактно и получить интересные и полезные знания по этому поводу. Заниматься парсингом поисковика (при этом просто получить HTML-код страницы будет не достаточно) я не сильно хочу, потому что не люблю эту сферу. Мне в принципе, хочется найти хорошее решение, для эстетического удовольствия и создания впечатления компактности программы, когда я выложу исходники на GitHub (не пропадать же добру). В общем говоря, мне бы хотелось другие решения

Андрей
Мне в принципе это не так важно. Я просто хочу, чт...

Посмотри в сторону бесплатных тарифов поисковиков. Там м.б. лимиты, но ответы по REST парсятся через boost/qt/....

Андрей
Мне в принципе это не так важно. Я просто хочу, чт...

можешь использовать халявные ключи от апи (гугл точно выдавал). Просто перед использованием юзеру придётся получить себе ключ и ввести

Aniki Hi$ok@ 🌈 Z 🐀
можешь использовать халявные ключи от апи (гугл то...

Та не. Лучше не заниматься подобным, потом к тому же придётся встраивать систему в свой пользовательский интерфейс. А потом ещё и тарифы поменяются и программу придётся переделывать. В общем говоря, лучше бы какой-то другой вариант

Андрей
Мне в принципе это не так важно. Я просто хочу, чт...

Ну тогда зависит от твоего gui-фреймворка. Например, в Qt есть QWebView. Реализовать drag&drop из него также тривиально.

Max
Ну тогда зависит от твоего gui-фреймворка. Наприм...

Я использую FLTK . Там, насколько я знаю, нету такого. Но в целом, можно встроить QWebView. Я о нём слышал, но в нём все функции самого полноценного браузера, а мне нужно просто открыть страницу с картинками, чтобы можно было картинки перетаскивать в программу FLTK, мне кажется, его функциональность и вес будут излишними. Но в целом, если это простой и хороший вариант, то можно попробовать встроить его в свою программу

дешевый по ресурсам вариант в этом плане - апи, а обходные пути в любом случае будут излишними. Тем более это qt, вон vscode вообще почти полноценный браузер по сути, но легковесный редактор кода

Андрей
Я использую FLTK . Там, насколько я знаю, нету так...

Я боюсь, что нынче для любой web-страницы с картинками потребуется js. Что означает, что и для этого и нужен будет полноценный браузер. Вариант простой в плане реализации, но, конечно, по размеру бинарника не легковесный. С другой стороны, даже десктопный телеграм уже выедает сотни мегабайт. Так ли это принципиально? Легковесная альтернатива - это, как уже сказали, API и своя реализация лэйаута для отображения всего этого.

Max
Я боюсь, что нынче для любой web-страницы с картин...

Да, но для простого отображения страницы с картинками, не нужно будет наверное большая часть штук, которые есть в qtwebview , да и как я говорил ранее у них какие-то дела с лицензированием. а я решил как минимум отречься от пиратства, но и платить за это я тоже не хочу) Поэтому, раз уж нету хорошей альтернативы кроме API, парсинга и qtwebview , то если у них всё в порядке с лицензией, я выберу третий вариант

Андрей
Да, но для простого отображения страницы с картинк...

Может быть, вам реализовать только поддержку drop в приложение, а drag пусть делают из браузера?

Alexey Petrunyaka
Может быть, вам реализовать только поддержку drop ...

По такому принципу, я могу просто открывать браузер по умолчанию в зависимости от системы. Но такой способ не позволяет открывать отдельное окно, а заставляет пользователя выходить в браузер, делать маленькое окошко (чтобы при нажатии, браузер не перекрывал окно программы) и только потом перетаскивать из браузера картинку. Как-то костыльно, не удобно и не по феншую

Андрей
Да, но для простого отображения страницы с картинк...

Какие штуки имеются ввиду? Он умеет рендерить html, отправлять запросы, получать ответы и процессить js. Это всё будет необходимо для реальной вебстраницы. Если продукт некоммерческий, то лицензия lgpl. Альтернатив масса, просто неясны хотелки.

Андрей
По такому принципу, я могу просто открывать браузе...

Во многих оконных менеджерах перетаскивать можно на application bar, который и откроет нужное окно. Про невозможность открытия отдельного окна не понял.

Max
Какие штуки имеются ввиду? Он умеет рендерить html...

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

Max
Во многих оконных менеджерах перетаскивать можно н...

Я имею ввиду, если браузер открыт, он просто откроет в нём дополнительную вкладку и (поскольку браузер скорее всего на весь экран) перекроет приложений. Потом браузер нужно будет уменьшать, ставить рядышком окно с приложением и перетаскивать туда картинку. Встроенный же браузер, может позволить открыть отдельное маленькое окно, которое будет хорошо вписываться в "микрофлору приложения", не заставляющее отвлекаться от создания изображения и в целом создающего хорошее впечатление маленькой полезной утилиты

Эмм, перечислю свои варианты: 1) Встройка API поисковиков 2) Встройка WebView 3) Встройка js движка и оборачивание запросов, парсить придётся не так много, но повозится всё-таки придётся с тем, чтобы обеспечить движок необходимым минимумом данных и постобработкой ответов. Примерно такой вариант является самым толковым, при сохранении независимости, но в целом его например придерживаются авторы youtube-dl и многих других программ-утилит для скачивания или создания безбраузерного API для своих нужд.

Александр
Эмм, перечислю свои варианты: 1) Встройка API поис...

Программы в 3 пункте, насколько мне известно, переодически нужно обновлять, поскольку HTML код страницы время-от-времени меняется и то, что было актуально раньше, уже не работает сейчас. Скорей всего использую 2 пункт, если вы про QtWebView

Андрей
Программы в 3 пункте, насколько мне известно, пере...

Это в целом верно для всех случаев, ибо и API может меняться и WebView от API зависим. А касательно обработки html и пр. там не такие катастрофичные изменения получаются, ибо суть либо остаётся прежней и нужно подправить имена/ссылки, либо переделывать тупо нужно столько же как и в остальных случаях. В случае движка основная возьня - начать, т.е. затащить движок и научить с его помощью получать динамическое содержимое + что не менее важно нужно грамотно играть с частотой и содержанием запросов, дабы либо грамотно обходить проверки на ботов, либо их даже решать. Короче с движком трудно начать, но дальше технический долг примерно одинаковый становится.

Александр
Это в целом верно для всех случаев, ибо и API може...

Но ведь мне нужно просто отобразить картинки любым способом. QtView просто открывает сайт и сайт может меняться сколько ему влезет, QtView будет всё равно, главная чтобы ссылка не поменялась, а если содержимое HTML будет меняться, ему разве есть разница, если он переходит по ссылке?

Андрей
Но ведь мне нужно просто отобразить картинки любым...

Если вы только в строку поиска человека собрались отправлять, то это одно, если же вы собрались взаимодействовать с каким-нибудь сервисом, то это другое, т.е. если вы хотите отправить пользователя чисто найти картинку по запросу, то тут и движок загружать не придётся, а просто более замороченный запрос сделать и учесть подводные камни, WebView же по сути будет работать как браузер и тут с одной стороны - да, вам не придётся возится с формированием запросов, но всё же сами переходы например вам нужно будет ограничить, фильтровать содержимое, типы ссылок и пр., в противном случае пользователь может будет перейти на какой-нибудь youtube и не знать как с него обратной уйти, потом не забывайте, что содержимое WebView довольно плотное, поэтому может так оказаться, что при перетягивании может перетягиваться не ссылка на изображение, а лишь ссылка на изображение в каких-нибудь Яндекс.Картинках, на кэшированную версию изображения и на много чего ещё. С запросом(или обёрткой js движка) проще вы сразу предоставляете пользователю только то, что необходимо и не больше, попутно выполняя необходимую постобработку.

Александр
Если вы только в строку поиска человека собрались ...

В любом случаи, я так понимаю, встроенный браузер самый стабильный и простой вариант? На счёт ограничения прав на переход по ссылкам, маловероятно, что он куда-то перейдёт и если уж перейдёт, маловероятно, что он не поймёт, что нужно перезапустить окно. По поводу картинок, да, проблема, нужно будет исследовать какой сайт для этого подходит больше других. - Парсинг - Требует обхода защиты и в зависим от HTML кода (притом он не такой простой). - API - Для того, чтобы его использовали много пользователей, нужно либо покупать подписку, либо заставлять пользователей при запуске получать ключ. При этом также зависит от лицензирования. Сегодня всё работает бесплатно, а завтра они решили поменять условия лицензирования. - Открывать браузер по умолчанию - В целом, можно. Но в этом есть свои минусы. Если открывать через linux, то вместо маленького компактного окна сбоку, он будет раскрывать браузер на весь экран с кучей лишних ссылок и отвлекающих от процесса факторов, а потом ещё и придётся манипулировать окнами, чтобы перетаскивать картинки. В некоторых браузеров насколько я знаю, есть возможность с консоли открывать маленькое окошко, но кроме подключения поддержки кучи браузеров, это может работать не всегда. В Windows аналогично, но через терминал насколько я знаю, вообще нельзя управлять никакими браузерами. Других способов я не знаю. В итоге, максимально хороший вариант в данных реалиях, это подключить встроенный браузер и найти подходящий сайт или поисковик, чтобы открывать эту ссылку при нажатии на кнопку "поиск"

Похожие вопросы

Обсуждают сегодня

Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
13
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Карта сайта