zenden2k / image-uploader

A program for uploading images, screenshots and other files to a few dozen file hosting services. It has screenshooting capabilities and integrated image editor.
https://svistunov.dev/imageuploader
Apache License 2.0
117 stars 26 forks source link

Рассмотреть вариант поддержки ссылок на удаление и на установку времени хранения #366

Open gh-Destiny opened 6 months ago

gh-Destiny commented 6 months ago

Приветствую! Среди сервисов, что перечислены - как минимум в двух: www.upload.ee/ и imgbb.com/ есть доп.опции, которые очень важны при заливке туда контента. Для upload.ee важным является наличие на итоговой странице ссылки для удаления залитого. Т.е. надо по-быстрому залить - но потом! не забыть удалить, а для этого нужна ссылка, которая будет показана в итогах процедуры заливки! поле называется "Адрес удаления файла". Для imgbb.com важным является выбор ПЕРЕД процессом заливки времени, в течение которого будет рабочей эта ссылка. На сайте прям комбобокс выводится предварительно с вариантами таких периодов. Т.е. и в программе (и в командной строке - CLI в первую очередь!!!) надо бы предусмотреть возможность указания такого периода.

Так же вполне возможно, что не только в этих двух сервисов есть подобные возможности - но просто это те, про которые СРАЗУ же вспоминаешь, когда надо о подобном рассказать.

zenden2k commented 6 months ago
gh-Destiny commented 6 months ago

Мммммм... Вы знаете меня в 1 очередь интересовал именно консольный вариант - когда можно в скрипте закодить все настройки нужному сервису (к примеру время жизни для imgbb.com, выбрать сам сервис), вызвать сабж и получить на выходе нужные URL: для эскиза, для полной картинки, для удаления. Ну и конечно именно просто ссылки, т.к. под нужные теги форматирования для форумов я именно в скрипте и доведу дело до конца. Но именно сразу все три варианта! А уж где там эти все ссылки могут быть доступны в GUI оболочке - это дело десятое - потому как там места много.

Ну и разумеется, если есть/будет возможность показа ссылок для удаления - то для все тех уже тогда сервисов, у которых эта опция есть, надо бы сделать это. Хорошо конечно, что для upload.ee это может появиться очень быстро, но и все другие сервисы не должны быть обойдены вниманием относительно этой новой фичи.

Что же касается выбора/установки времени жизни загружаемого файла на сервис, то .. Опять-таки - т.к. это в 1 очередь о консольке речь, то просто для каждого сервиса, где есть такая возможность - предусмотреть в его файле настроек перечисление этих минут/часов/дней/недель/... Потому как их никто не будет менять каждый день/месяц/год - я про разрабов/поддержку самих сервисов сейчас. Для того же imgbb есть 23 варианта, включая "Никогда не удалять" - и их я там года два/три уже помню. Соответственно, если такое перечисление в настройке сервиса есть и есть/будет поддержка нового ключа в ком.строке для консольки - то при их совместном использовании - выполнять это действие.

P.S. кстати, странно, что консолька не понимает команду /? - выдать справку по работе. Только --help надо вводить - неинтуитивно, учитывая, что консольку я под виндой запускаю. И так же странно, что нет примеров, показывающих - ЧТО и в каком ИМЕННО формате вернет утилита, если я запускаю консольку.

zenden2k commented 6 months ago

Ну и конечно именно просто ссылки, т.к. под нужные теги форматирования для форумов я именно в скрипте и доведу дело до конца.

Может добавить в консольную утилиту вывод в виде JSON?

P.S. кстати, странно, что консолька не понимает команду /? - выдать справку по работе. Только --help надо вводить - неинтуитивно, учитывая, что консольку я под виндой запускаю.

Обычно у кросс-платформенного софта под Windows именно такое поведение.

gh-Destiny commented 6 months ago

Может добавить в консольную утилиту вывод в виде JSON?

Очень интересное решение. В принципе весьма да.

Обычно у кросс-платформенного софта под Windows именно такое поведение.

Ээээ. ну по умолчанию наверняка да. Но явно же можно добавить БОЛЕЕ стандартный ключ вызова помощи справки для винды? И так же ВСЁ ещё странно, что нет примеров, показывающих - ЧТО и в каком ИМЕННО формате вернет утилита, если я запускаю консольку. Т.е. показать список ключей, поддерживаемых утилитой - это верно - но и результаты вывода ЗАРАНЕЕ в той же помощи хорошо бы показать. Ну, или на сайте хотя бы с картинками показать - а то и там лишь сугубо список ключей и ничего более.

gh-Destiny commented 6 months ago

Решил потестировать ночнушку с выше упомянутыми правками и .... Result: [ { "delete_url" : "", "direct_url" : "https://i.ibb.co/vHkjh1 ........................

как видим - ссылки для удаления почему-то нет в выводе.

P.S. так же вопрос - а зачем для сохранения ссылки в upload.ee.nut код вида: local reg2 = CRegExp("href=\"(.+\?killcode=\w+)\"", "i"); if (reg2.match(nm.responseBody())) { options.setDeleteUrl(reg2.getMatch(1)) } если выше есть УЖЕ перехват всего тела ответа в объект типа Document, из которого уже можно вытягивать нужное в стиле: doc.find("input#file_src")?

gh-Destiny commented 6 months ago

пытался вставить запись лога - вроде же есть функция WriteLog, но ничего нигде не появилось само. Стал искать справку по ней вроде это должно быть справка языка Squirrel но при переходе на их сайт: 1) ошибка проверки самоподписанного сертификата 2) File not found (404 error) по итогу.

P.S. блин, вроде эта функция не от этого языка. КАК в итоге воспользоваться записью лога? ГДЕ его файл? P.P.S. еще раз блин, но вроде умолчательная реализацию логера это ConsoleLogger, но вот чёт я вывода на экран консоли не замечаю.... НО и это тоже странно - ДОЛЖНА быть опция для CLI - чтоб указывать: КУДА я хочу перенаправлять ВЕСЬ вывод. Или хотя бы ИМЕННО вывод встроенного логера.

P.P.P.S. вообще что-то. Я выставил return 0; сразу после: local doc = Document(nm.responseBody()); в файле upload.ee.nut и ..... программа как ни в чем не бывало - выполняет загрузку картинки и выдает итоговый JSON.....

zenden2k commented 6 months ago

как видим - ссылки для удаления почему-то нет в выводе.

потому что я не трогал скрипт imgbb.com

так же вопрос - а зачем для сохранения ссылки в upload.ee.nut код вида:

Потому что нужная ссылка <a> не имеет ни класса, ни ID, по которому её можно найти в документе. Проще регуляркой.

P.S. блин, вроде эта функция не от этого языка.

Эта функция не попала в документацию по API, должна быть в списке глобальных функций.

По умолчанию встроенный логер пишет в STDERR. Но, как оказалось, в ConsoleLogger перепутаны аргументы. Исправлю. Плюс добавлю перевод строки, чтобы текст не затирался.

НО и это тоже странно - ДОЛЖНА быть опция для CLI - чтоб указывать: КУДА я хочу перенаправлять ВЕСЬ вывод. Или хотя бы ИМЕННО вывод встроенного логера.

Вывод результата в файл: imgupload.exe -s upload.ee bicycle-kick-min.gif -cl json > d:\\results.txt

Вывод stderr в лог: imgupload.exe -s upload.ee bicycle-kick-min.gif -cl json 2> d:\\log.txt

P.P.P.S. вообще что-то. Я выставил return 0; сразу после:

ну, может перепутали файл

gh-Destiny commented 6 months ago

да, дурачина я, простофиля. Реально перепутал. Надо под upload проверять, а чинилось для imgbb..... НО тогда уж жду фикса логгера - чтобы уж точно с ним проверить все возможности. Спасибо за проделанное! Очень вдохновляет и радует!

P.S. но все же касательно поддерживаемых ключей и опций.... То, что можно перебросить канал вывода через > или >& - это в целом для скрипта конечно же доступно. НО! скажем так, основываясь на неких плохих ситуациях, когда этот вывод все равно был недостаточно корректен и/или порой невозможен из-за глубокого уровня косвенности вызова(текст вывода будет банально замусорен другими строками от других компонент), возникает вопрос - ну неужели не правильнее будет ввести опцию -slog <имя потока> => save log to? Если имя потока это "cerr" - то в STDERR выводить, если "cout" - то в STDOUT. А если это имя файла с расширением(или полным путем) - то в файл пишем. И так же касательно /? => вот сколько надо было мне перепроверять список поддерживаемых ключей - я всегда ошибался по факту, когда набирал эту последовательно символов - но, блин, я же в винде сижу! Вроде это нормально! Для нее это самая что ни на есть естественная последовательность для вызова справки! А оказывается нет - я в линукс-версии сижу программы(((

P.P.S. для случая, когда ссылки для удаления нет в парсере сервиса, более логичным в выводе JSON было бы увидеть строку вида: "delete_url" : "<support in service ... is absent>", где подставлялось бы имя сервиса вместо троеточия.

zenden2k commented 6 months ago

P.P.S. для случая, когда ссылки для удаления нет в парсере сервиса, более логичным в выводе JSON было бы увидеть строку вида: "delete_url" : "<support in service ... is absent>", где подставлялось бы имя сервиса вместо троеточия.

А чем просто пустая строка не подходит? Программа не видит разницы между "при написании скрипта не подумали про ссылку на удаление", и "сервис не поддерживает ссылки на удаление", "сервис вернул пустую ссылку". Всё равно пустая строка. Или может быть лучше там был null?

gh-Destiny commented 6 months ago

А чем просто пустая строка не подходит?

А чем она отличается от ситуации, когда поддержка есть, но она сломалась и выдала просто пустую строку? Получив вывод утилиты, хотелось бы сразу понимать ЧТО именно дало такой результат. И моя фраза-заполнитель предусматривает ИМЕННО вариант - когда в NUT-файле нет готового правила для парсинга/сохранения ссылки на удаление. А если в самом сервисе ее нет - то это можно и логично не расписывать.

P.S. тогда можно доуточнить фразу так: "delete_url" : "<support in NUT-file for service ... is absent>", или покороче: <NO rule in NUT-file for that>

gh-Destiny commented 6 months ago

ну неужели не правильнее будет ввести опцию -slog <имя потока> => save log to? Если имя потока это "cerr" - то в STDERR выводить, если "cout" - то в STDOUT. А если это имя файла с расширением(или полным путем) - то в файл пишем. И так же касательно /? => вот сколько надо было мне перепроверять список поддерживаемых ключей - я всегда ошибался по факту, когда набирал эту последовательно символов - но, блин, я же в винде сижу! Вроде это нормально! Для нее это самая что ни на есть естественная последовательность для вызова справки! А оказывается нет - я в линукс-версии сижу программы((( => должен запоминать --help

@zenden2k Так как насчет рассмотрения вышеизложенного? И вроде бы с консольным логгером вы исправили ситуацию, но я почему-то не могу понять - а откуда/где я тогда смог бы скачать nightly билды с этим фиксом, ну или просто самый последний nightly....

zenden2k commented 6 months ago

Так как насчет рассмотрения вышеизложенного?

Я пока думаю, как переделать систему логирования, потому что техущая схема запутанная.

а откуда/где я тогда смог бы скачать nightly

Там же, где и раньше https://svistunov.dev/ru/imageuploader_nightly

gh-Destiny commented 6 months ago

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