Развитие кодера в функциях поиск замены (раскодировать, закодировать)

Тема в разделе "Развитие Content Downloader", создана пользователем Root, 6 июн 2021.

  1. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Решили добавить инструмент для кодирования/раскодирования в функции поиск замены.

    Перед выпуском обновления хотелось бы хорошо его протестировать и написать, какие ЕЩЕ направления кодирования/декодирования вы хотите видеть.

    Замените файл Content Downloader.exe (в папке с программой) этим файлом:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 10 постов.**
    Просто вставьте в поиск замену такую строку [CODER]|Направление

    Например

    2021-06-06_07-57-51.png

    Список готовых рабочих направлений

    Код:
    [CODER]|htmldecode
    [CODER]|urlencode_ansi
    [CODER]|urlencode_ansi+
    [CODER]|urlencode_utf8
    [CODER]|urlencode_utf8+
    [CODER]|urldecode_1
    [CODER]|urldecode_2
    [CODER]|urldecode_3
    [CODER]|base64encode
    [CODER]|base64decode
    [CODER]|base64decode_utf8
    [CODER]|jsondecode
    [CODER]|jsonencode
    [CODER]|jsonencode_all
    [CODER]|jsonencode_escape_only
    [CODER]|getmd5
    Описание направлений

    Код:
    1) htmldecode - преобразует HTML мнемоники типа < в нормальные символы
    
    2) urlencode_ansi - преобразует символы в ANSI URL кодировку
       Было:
           абв abc +
       Стало:
           %E0%E1%E2%20abc%20%2B
    
    3) urlencode_ansi+ - преобразует символы в ANSI URL кодировку (с заменой пробелов на символы плюса, используется в запросах поисковых форм некоторых сайтов)
       Было:
           абв abc +
       Стало:
           %E0%E1%E2+abc+%2B
    
    4) urlencode_utf8 - преобразует символы в UTF8 URL кодировку
       Было:
           абв abc +
       Стало:
           %D0%B0%D0%B1%D0%B2%20abc%20+
    
    5) urlencode_utf8+ - преобразует символы в UTF8 URL кодировку (с заменой пробелов на символы плюса, используется в запросах поисковых форм некоторых сайтов)
       Было:
           абв abc +
       Стало:
           %D0%B0%D0%B1%D0%B2+abc++
    
    6) urldecode_1 или urldecode_2 или urldecode_3 - три разные функции декодирования URL (процентной) кодировки (со своими особенностями)
    
    7) base64encode - закодирует строку в Base64
    
    8) base64decode - раскодирует ANSI Base64
    
    9) base64decode_utf8 - раскодирует UTF8 Base64
    
    10) jsondecode - раскодирует JSON кодировку
    
    11) jsonencode или jsonencode_all или jsonencode_escape_only - три разных функции кодирования символов в JSON кодировку
    
    12) getmd5 - получение MD5 hash из строки
    
    Спасибо...
     
    Последнее редактирование: 9 июн 2021
    smmshik, Felix_b, pers и 2 другим нравится это.
  2. kadishev1997

    kadishev1997 Well-Known Member Пользователи

    Регистрация:
    27 мар 2019
    Сообщения:
    310
    О, доработка что нужно!
    Спасибо за неё, протестирую.
    Если что-то обнаружу в некорректной форме - отпишу
     
    dimochkaorg и Root нравится это.
  3. dimochkaorg

    dimochkaorg Active Member Пользователи

    Регистрация:
    25 мар 2017
    Сообщения:
    181
    Вот сегодня понадобилось... Но не понял синтаксис? нужно закодировть в JSON текст... обыкновенный текст. Не понимаю как надо прописать.
    UPDATE: Пришлось пока помаяться с онлайн-конвертором, но с нетерпением жду великой мудрости (в смысле видео или мануала), дабы обрести душевный покой, достичь нирваны и дзена. ))))
     
    Последнее редактирование: 6 июн 2021
    Root нравится это.
  4. dimochkaorg

    dimochkaorg Active Member Пользователи

    Регистрация:
    25 мар 2017
    Сообщения:
    181
    А как я метко зашел, только мне понадобилось и вот оно. Сегодня же. Сергей работает на опережение или... (срочно бегу за фольгой для изготовления шапочки) :- ))))
     
  5. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Да вроде просто значения переменных в JSON обработать этим
    Код:
    [CODER]|jsonencode_escape_only
    Если не получится, создайте тему типа "Кодирование JSON запроса" и приложите проект.
     
    dimochkaorg нравится это.
  6. Slavikprof

    Slavikprof New Member Пользователи

    Регистрация:
    10 ноя 2016
    Сообщения:
    5
    Сергей, спасибо!
    В некоторых проектах нужна была перекодировка.
     
    Root нравится это.
  7. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Отличный функционал, периодически нужен. CD становится с каждым обновлением удобнее.
     
    pers, dimochkaorg, kadishev1997 и ещё 1-му нравится это.
  8. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Добавил
    Код:
    [CODER]|getmd5
     
    Bureau, Slavikprof, kagorec и ещё 1-му нравится это.
  9. kadishev1997

    kadishev1997 Well-Known Member Пользователи

    Регистрация:
    27 мар 2019
    Сообщения:
    310
    Протестировал большинство из этого функционала.
    В целом все работает, каких-то погрешностей лично я не заметил.
    Еще раз спасибо за данную, очень полезную доработку!
     
    Root нравится это.
  10. Kostushko

    Kostushko Member Пользователи

    Регистрация:
    23 июн 2015
    Сообщения:
    6
    Здравствуйте, предлагаю добавить punycode, чтобы преобразовать нечитабельное название домена вида "xn--80aswg.xn--p1ai" в понятное "сайт.рф".
     
    hort, Root, kadishev1997 и 2 другим нравится это.
  11. hort

    hort New Member Пользователи

    Регистрация:
    21 сен 2019
    Сообщения:
    3
    Город:
    Москва
    Спасибо! Очень пригодилось.
     
    Root нравится это.
  12. kudetolog

    kudetolog New Member Пользователи

    Регистрация:
    18 май 2018
    Сообщения:
    7
    Город:
    Кременчуг
    Доброго времени суток участникам! Много думал, но так и не смог разобраться. Раскодировщик работает "на лету"? Конкретный пример проблемной картинки в виде кода:
    Код:
    <div id="dyn_infeed_2" data-ad="dyninfeed" data-ad-cls="keep" data-ad-label="Publicité" class="unfyas af-label-ads"></div>
    <div class="af-photo">
    <span class="af-zoomable af-pin-it-wrapper" > <span class="af-pin-it af-to-obfuscate-7353" onclick="af_ua_trackEvent(\'Share\', \'pinIt Click\', \'pinterest-light\');" data-pin-do="none" data-encoded-link="Ly93d3cucGludGVyZXN0LmNvbS9waW4vY3JlYXRlL2J1dHRvbi8/dXJsPWh0dHBzJTNBJTJGJTJGd3d3LmF1ZmVtaW5pbi5jb20lMkZiZWJlJTJGdGEtZGlmZmVyZW5jZS1lc3QtdG9uLXN1cGVyLXBvdXZvaXItZWNyaXQtZWxsZS1hLXNhLWZpbGxlLW5lZS1hdmVjLXVuZS10dW1ldXItcGlnbWVudGVlLXN1ci1sZS12aXNhZ2UtczQwMzk0OTguaHRtbCZkZXNjcmlwdGlvbj0mbWVkaWE9aHR0cHMlM0ElMkYlMkZhc3NldHMuYWZjZG4uY29tJTJGc3RvcnklMkYyMDIyMDMzMSUyRjIxNjcyMTdfdzExMjBoOTc0Y3g1NjBjeTQ4N2N4dDBjeXQwY3hiMTEyMGN5Yjk3NC5qcGc=" target="_blank" ><span class="icon icon-pinterest"></span></span></span> </div>
    
    То есть как можно разобрать закодированное, чтобы уже потом почистить и привести к адекватному виду типа <img src=...>
     
  13. masrub

    masrub Well-Known Member Пользователи

    Регистрация:
    29 июн 2018
    Сообщения:
    194
    в поиск замене вставить
    data-pin-do="none" data-encoded-link="{get}"|{get}
    [CODER]|base64decode

    Получите вот это //Ссылки недоступны для гостей
     
  14. kudetolog

    kudetolog New Member Пользователи

    Регистрация:
    18 май 2018
    Сообщения:
    7
    Город:
    Кременчуг
    Спасибо огромное за быстрый ответ! Но есть нюанс: данная картинка - только часть собственно страницы (и текста на ней). Моя задача - получить и текст, и картинку удобоваримого вида.
     
  15. kudetolog

    kudetolog New Member Пользователи

    Регистрация:
    18 май 2018
    Сообщения:
    7
    Город:
    Кременчуг
    Правильно ли понимаю, что готового решения нет? Чтобы "просто взять и раскодировать" закодированное, оставив на том же месте в теле страницы - и саму страницу на исходном месте?
     
  16. Vitaliy_S

    Vitaliy_S Member Пользователи

    Регистрация:
    20 янв 2019
    Сообщения:
    48
    Город:
    Уфа
    Добавьте макрос для декодирования email закодированных Cloudflare. В коде это выглядит так Ссылки недоступны для гостей
    Пример можно тут посмотреть Ссылки недоступны для гостей
    Вот есть примеры как это декодировать Ссылки недоступны для гостей
    Возможно также это добавить в макроc extractemails
     
    kagorec и kadishev1997 нравится это.
  17. iam9ripe

    iam9ripe New Member Пользователи

    Регистрация:
    12 май 2022
    Сообщения:
    21
    Город:
    Москва
    Великолепные функциии!
    Есть предложение дописать функционал base64encode, что бы картинку или любой другой загружаемый файл, можно было бы закодировать.
    У меня была задача, картинки не хранить отдельно в директории проекта, а записать в поле JSON, для хранения и дальнейшего использования.
    Можно сделать отдельный макрос [TO_STREAM] который будет брать ссылку на данные (картинку, файл, другие бинарные данные) и подавать на вход любой кодирующей функции, в данном конкретном случае base64encode. и получалась бы конструкция [BASE64ENCODE ] [TO_STREAM] url[/TO_STREAM][/BASE64ENCODE], на выходе поток BASE64 для записи куда угодно.

    Заранее, благодарен за возможное написание данного функционала!
     
    Последнее редактирование: 15 май 2022
  18. inotoxic

    inotoxic Well-Known Member Пользователи

    Регистрация:
    13 сен 2015
    Сообщения:
    867
    да чего уж, давайте архивы, pdf и все прочие файлы хранить в bs64 - а еще лучше в бд писать
    "Чудо"недо разработчики придумали файлы кодировать в bs64, а потом удивляются - что так все медленно работает !?!?!
     
  19. iam9ripe

    iam9ripe New Member Пользователи

    Регистрация:
    12 май 2022
    Сообщения:
    21
    Город:
    Москва
    Ну да оно конечно "лучше", таскать проект архивом типа gzip от сайта к сайту, если нужно разворачивать с кучей файлов внутри, а потом сопоставлять ссылки в базе на файлы на диске.

    У меня статичные картинки хранятся в одном из полей JSON файла который грузится напрямую в базу одной простой командой в SQL или PHP .
    Я эту ситуацию в любом случае уже решил, запросом внешнего скрипта, куда картинка передается как параметр, а назад возвращается готовый бинарный поток который передаю уже BASE64ENCODE.
    Но коль есть уже реализованная функция BASE64ENCODE, почему бы для нее не написать такой функционал.
    Я думаю, что многие, кто работает с JSON и потоковыми данными типа картинок, или тех же pdf, очень оценят такой функционал.

    Ну "в бд писать", мы уже во всю пишем, хоть и через внешний скрипт, но все же работает :)
    По поводу "Чудо"недо"", я не согласен от слова совсем! На сегодняшний день закодировать или раскодировать bs64 для любого мало мальского сервера вообще не проблема, посему "медленно работает" - это точно не к bs64.
    Нет оно конечно, если с дурной головой, то конечно можно, что то и сломать. Во всем нужен баланс и вменяемость. :)
     
    Последнее редактирование: 16 май 2022
  20. kudetolog

    kudetolog New Member Пользователи

    Регистрация:
    18 май 2018
    Сообщения:
    7
    Город:
    Кременчуг
    уважаемые члены сообщества, на всякий случай объясните мне, неграмотному и несмышлёному... Стоит задача "только" раскодировать часть кода в рамках поиск-замены - оставив его (доведённый до удобо-читаемого вида код) на том же месте тела страницы, чтобы опять же в дальнейшем обрабатывать и заменять до нужного состояния. На всякий случай искомый код привожу ниже:
    Код:
    <span class="af-pin-it af-to-obfuscate-7353" onclick="af_ua_trackEvent(\'Share\', \'pinIt Click\', \'pinterest-light\');" data-pin-do="none" data-encoded-link="Ly93d3cucGludGVyZXN0LmNvbS9waW4vY3JlYXRlL2J1dHRvbi8/dXJsPWh0dHBzJTNBJTJGJTJGd3d3LmF1ZmVtaW5pbi5jb20lMkZiZWJlJTJGdGEtZGlmZmVyZW5jZS1lc3QtdG9uLXN1cGVyLXBvdXZvaXItZWNyaXQtZWxsZS1hLXNhLWZpbGxlLW5lZS1hdmVjLXVuZS10dW1ldXItcGlnbWVudGVlLXN1ci1sZS12aXNhZ2UtczQwMzk0OTguaHRtbCZkZXNjcmlwdGlvbj0mbWVkaWE9aHR0cHMlM0ElMkYlMkZhc3NldHMuYWZjZG4uY29tJTJGc3RvcnklMkYyMDIyMDMzMSUyRjIxNjcyMTdfdzExMjBoOTc0Y3g1NjBjeTQ4N2N4dDBjeXQwY3hiMTEyMGN5Yjk3NC5qcGc=" target="_blank" ><span class="icon icon-pinterest"></span></span>
    Ответ пользователя masrub выше в виде замен типа
    data-pin-do="none" data-encoded-link="{get}"|{get} (после можно использовать и {multiget} - так подбираются все нахождения)
    [CODER]|base64decode​
    неудобен - он в принципе от кода страницы оставляет только найденное и успешно раскодированное.
     

Поделиться этой страницей