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

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

Open
gh-Destiny opened this issue Feb 13, 2024 · 13 comments
Labels

Comments

@gh-Destiny
Copy link

gh-Destiny commented Feb 13, 2024

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

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

@zenden2k
Copy link
Owner

zenden2k commented Feb 17, 2024

  • upload.ee Ссылка для удаления для некоторых хостингов доступна в истории загрузок. Я добавлю эту возможность для upload.ee. Вы хотите видеть эту ссылку в результатах загрузки?
    clipboard

  • imgbb.com
    С этим сложнее. Честно говоря, я сейчас не готов думать об этом.
    Я не смогу это сделать быстро, особенно если учесть, что используемый GUI-фреймворк недостаточно гибок и морально устарел.
    Вариант - выбрать наиболее часто встречающие опции и захардкодить их.
    Можно взять уже имеющийся Property editor и показывать его перед каждой загрузкой, вроде там есть и ComboBox.
    screenshot 2024-02-17 14-35-59 001

@gh-Destiny
Copy link
Author

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

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

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

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

@zenden2k
Copy link
Owner

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

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

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

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

@gh-Destiny
Copy link
Author

gh-Destiny commented Feb 17, 2024

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

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

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

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

zenden2k added a commit that referenced this issue Feb 18, 2024
zenden2k added a commit that referenced this issue Feb 18, 2024
@gh-Destiny
Copy link
Author

gh-Destiny commented Feb 20, 2024

Решил потестировать ночнушку с выше упомянутыми правками и ....
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
Copy link
Author

gh-Destiny commented Feb 20, 2024

пытался вставить запись лога - вроде же есть функция 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
Copy link
Owner

zenden2k commented Feb 20, 2024

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

потому что я не трогал скрипт 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
Copy link
Author

gh-Destiny commented Feb 20, 2024

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

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

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

@zenden2k
Copy link
Owner

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

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

@gh-Destiny
Copy link
Author

gh-Destiny commented Feb 21, 2024

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

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

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

@gh-Destiny
Copy link
Author

gh-Destiny commented Mar 7, 2024

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

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

@zenden2k
Copy link
Owner

zenden2k commented Mar 8, 2024

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

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

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

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

@gh-Destiny
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants