dzzb - Добро пожаловать! Снова.
$$$
До Н.Г.
ВЕРСИЯ ДЛЯ СЛАБОВИДЯЩИХ

Показаны записи с тегом: Мои разработки.

SQLite ViewerEx

Опубликовано: 10-06-2019 01:41 Автор: MBTY Теги: Софт, Мои разработки
SQLite ViewerEx (dzzb.ru)SQLite ViewerEx (dzzb.ru)

Написал тут программу для быстрого просмотра (!!редактирования нет!!) данных в файлах БД SQLite

Функционал не широкий, но всё необходимое есть:

  • Выбор таблиц из файла БД
  • Двойной клик для редактирования ячейки (для выделения, копирования в буфер и т.д..). (!)Файл БД при это НЕ редактируется(!)
  • Экспорт выбранной таблицы БД в CSV файл (таблица с разделителем в ;)

Скачать
Читать далее

Punch! Лучше, чем Touch!

Опубликовано: 11-03-2017 01:41 Автор: MBTY Теги: Софт, Мои разработки

Touch --- это команда в Linux системах, которая меняет дату (создания/открытия/изменения) папки или файла. В Windows такого изначально нет.
Давнооо у меня была найденная на 9000й странице Яндекс-поиска консольная утилита, созданная уже и не помню кем, но помню, что сайт автора еще крутился на Narod.
Недавно понадобилось менять даты у папок. Начал снова искать утилиты. Начал искать и был разочарован результатом. Сеть усыпана какими-то советами копировать файл в папку и удалять или копировать файл на место самого себя. Ещё упоминаются невнятные скрипты для PowerShell (кто ей вообще пользуется?)
То что нашел - не устроило. Одна программа умеет работать только с файлами, другая только с папками, третья умеет править только одну из трёх дат, четвертая вообще ничего не делает.
Написал :)
Программу назвал Punch!, потому что это мощнее, чем любой найденный мной в сети аналог Touch.
Есть четыре параметра запуска:

/f - Имя файла или папки.
/c - Дата создания. /r - Дата открытия (чтения, записи и т.п..).
/w - Дата записи.
Дата/Время указывается в формате: ГГГГ-ММ-ДД-ЧЧ-мм-СС (2017-03-11-13-52-15)
Пример:
Хотим сменить только дату создания папки.
Punch!.exe /f="C:\Folder" /c=2020-10-25-22-36-48 Хотим сменить все даты
Punch!.exe /f="C:\Folder" /c=2020-10-25-22-36-48 /r=2020-10-25-22-36-48 /w=2020-10-25-22-36-48

Если не указать имя файла/папки (параметр "/f="), то вылезет такое окошко:

Punch! by MBTY (dzzb.ru) 2017.03.10 Punch! by MBTY (dzzb.ru) 2017.03.10 Tool to change File or Folder Creation/Read/Write Date and Time /f - Input Folder or File /c - New creation Date/Time /r - New read(access/open) Date/Time /w - New write Date/Time Date/Time format: YYYY-MM-DD-HH-mm-SS Example: Change on Date of creation Punch!.exe /f="C:\Folder" /c=2020-10-25-22-36-48 Change all dates Punch!.exe /f="C:\Folder" /c=2020-10-25-22-36-48 /r=2020-10-25-22-36-48 /w=2020-10-25-22-36-48

Скачать
Читать далее

Masker - набиваем однотипный текст по маске

Опубликовано: 26-02-2017 00:27 Автор: MBTY Теги: Софт, Мои разработки
А сегодня я поделюсь утилиткой, которая может пригодиться тем, кто много работает с HTML.
Предположим Вам, как и мне, часто нужно создавать или заполнять html-таблицы и формы по шаблону (по маске).
Рассмотрим самый простой пример.
Есть таблица:
ФайлРазмер
11.mp372 192
22.mp352 736
33.mp316 896
44.mp398 365
55.mp315 360
Обычно такие таблицы я заполнял ручками. Каждая отдельная строка имеет вид:

<tr align="center"><td><b>№</b></td><td><b>Файл</b></td><td><b>Размер</b></td></tr>

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

<tr align="center"><td>%1</td><td>%2</td><td>%3</td></tr>

Вносим шаблон в приложение.
Masker (dzzb.ru)Masker
Заполняем ручками три колонки.
В первой колонке то, что должно быть вместо %1.
Во второй и третьей указываем данные для %2 и %3 соответственно.
Masker (dzzb.ru)Masker
Жамкаем "Go" и получаем:
Masker (dzzb.ru)Masker

<tr align="center"><td>1</td><td>Why don't You Get a Job</td><td>2 753 514</td></tr>
<tr align="center"><td>2</td><td>Want You Bad.mp3</td><td>3 115 091</td></tr>
<tr align="center"><td>3</td><td>Vultures.mp3</td><td>3 425 218</td></tr>
<tr align="center"><td>4</td><td>The Meaning Of Life.mp3</td><td>2 814 574</td></tr>
<tr align="center"><td>5</td><td>The Kids Aren't Alright.mp3</td><td>2 879 319</td></tr>
<tr align="center"><td>6</td><td>Special Delivery.mp3</td><td>2 885 633</td></tr>
<tr align="center"><td>7</td><td>Self Esteem.mp3</td><td>4 124 043</td></tr>
<tr align="center"><td>8</td><td>Pretty Fly (For A White Guy).mp3</td><td>2 922 000</td></tr>
<tr align="center"><td>9</td><td>Original Prankster.mp3</td><td>3 533 470</td></tr>
<tr align="center"><td>10</td><td>One Fine Day.mp3</td><td>2 640 703</td></tr>
<tr align="center"><td>11</td><td>Million Miles Away.mp3</td><td>3 515 081</td></tr>
<tr align="center"><td>12</td><td>Living In Chaos.mp3</td><td>3 283 109</td></tr>
<tr align="center"><td>13</td><td>Huck It.mp3</td><td>2 539 101</td></tr>
<tr align="center"><td>14</td><td>Gone Away.mp3</td><td>4 279 901</td></tr>
<tr align="center"><td>15</td><td>Denial, Revisited.mp3</td><td>4 362 700</td></tr>
<tr align="center"><td>16</td><td>Dammit, I Changed Again.mp3</td><td>2 700 473</td></tr>
<tr align="center"><td>17</td><td>Conspiracy Of One.mp3</td><td>2 190 523</td></tr>
<tr align="center"><td>18</td><td>Come Out Swinging.mp3</td><td>2 674 101</td></tr>
<tr align="center"><td>19</td><td>All Along.mp3</td><td>1 576 161</td></tr>

Таблица готова за 10 секунд:
ФайлРазмер
1Why don't You Get a Job2 753 514
2Want You Bad.mp33 115 091
3Vultures.mp33 425 218
4The Meaning Of Life.mp32 814 574
5The Kids Aren't Alright.mp32 879 319
6Special Delivery.mp32 885 633
7Self Esteem.mp34 124 043
8Pretty Fly (For A White Guy).mp32 922 000
9Original Prankster.mp33 533 470
10One Fine Day.mp32 640 703
11Million Miles Away.mp33 515 081
12Living In Chaos.mp33 283 109
13Huck It.mp32 539 101
14Gone Away.mp34 279 901
15Denial, Revisited.mp34 362 700
16Dammit, I Changed Again.mp32 700 473
17Conspiracy Of One.mp32 190 523
18Come Out Swinging.mp32 674 101
19All Along.mp31 576 161
Для удобства вызова избранных шаблонов есть возможность сохранить их в файле opt.ini (вводим их туда сами блокнотом) - они автоматом будут подхвачены программой и станут доступны для выбора (самая верхняя строка программы является выпадающим списком)
Я знаю, что есть масса html редакторов, онлайн генераторов кода и прочей мишуры. На деле ни одна из найденных мной программ не способна была набить большой массив данных по нужному мне шаблону.
Скачать
Читать далее

Онлайн обновление Adobe Flash Player

Опубликовано: 26-03-2016 13:23 Автор: MBTY Теги: Мои разработки
Обновление 1!
Постоянные ссылки сменены с http: на https: , по прошлому протоколу перестало качаться
Flash Online Updater (dzzb.ru)Flash Online Updater Почти все знают для чего нужен Adobe Flash Player: Для воспроизведения различного контента (видео, игры, скрипты, баннеры, приложения) в браузере.
Многие знают, что этот компонент нужно обновлять. Если этого не делать - содержимое на сайтах будет отображаться некорректно (если вообще отобразится).
Мало кто знает, что существует целых ТРИ версии Flash Player:
1) На основе ActiveX для браузера Internet Eхplorer и прочих, использующих системный движок.
2) На движке NPAPI для браузера Firefox и Opera до 15 версии.
3) На движке PPAPI для хромоподобных браузеров.
Знаю точно, что обычные пользователи не учитывают последний факт и потому часто неудачно производят обновление этого чуда. Например обновление могут произвести для AtiveX, а сами пользуются Google Chrome, который продолжит требовать обновить флеш.
Так же сталкивался с людьми, которые гуглением "как обновить Adobe Flash Player" попадали на всякие-разные замечательные сайты, скачивание с которых потом приводило к поломке системы
Вообще последние версии всех трёх вариантов этого плеера лежат здесь:
http://fpdownload.macromedia.com/pub/flashplayer/latest/help/install_flash_player_ax.exe
http://fpdownload.macromedia.com/pub/flashplayer/latest/help/install_flash_player.exe
http://fpdownload.macromedia.com/pub/flashplayer/latest/help/install_flash_player_ppapi.exe
Сам я пользуюсь скриптом, который автоматом скачивает установщики по этим ссылкам и поочередно запускает их.
Обернул скрипт в наглядную оболочку и решил поделиться: Flash Online Updater

Скачать

Читать далее

BatchBro 2016.03.20

Опубликовано: 20-03-2016 01:20 Автор: MBTY Теги: Мои разработки
Обновление 1!
* Переписан код, стартовая отрисовка пунктов должна проходить быстрее.
* Максимальное количество пунктов увеличено с 45 до 90!BatchBro 2016.03.20
* Понижена прозрачность основного окна для большего удобства чтения.
* Ширина надписи каждого пункта увеличена.
BatchBro 4.09.24 (dzzb.ru)BatchBro 4.09.24 BatchBro осуществляет автоустановку приложений.
Запускаем, ставим галки на нужных приложениях, убираем на ненужных, жмем ">>>>>>", ждём пока установится. Приложения прописываются ручками в ini файле с тем же имененем, что и имя BatchBro. (BatchBro+ будет искать BatchBro+.ini, Batch_Bro ищет Batch_Bro.ini и т.д..)
Порядок автоустановки приложений идет в этой последовательностиBatchBro 4.09.24 (нумерация)
Пример настройки для устанавливаемого приложения.
[Pr1] - номер приложения
Name=Aimp v3.55.1355 - Название, отображаемое в окне BatchBro
Check=1 - При 1 галочка установки приложения будет стоять сразу.
FileName=SOOOOFT\aimp_3.55.1355.exe - Путь к файлу установки. BatchBro будет искать файл aimp_3.55.1355.exe в папке SOOOOFT.
FileParam= - Параметры установки, которые будут переданы установщику при запуске. (Тихая установка и прочее.)
MSI файлы нужно устанавливать так:
[Pr30]
Name=Skype 6.20.0.104
Check=0
FileName=msiexec
FileParam= /i SOOOOFT\SkypeSetup_6.20.0.104.msi
Неочевидные фишки:
1) Окно BatchBro всегда находится поверх всех окон.
2) Так же окошко BatchBro - полупрозрачно. Пригодится, если окажется, что оно перекрыло что-то важное.
3) Кнопка установки (>>>>>>>>) не сработает повторно, пока не завершится весь цикл установки.

Скачать
Читать далее

MScen

Опубликовано: 12-03-2016 19:53 Автор: MBTY Теги: Консоль, Мои разработки
Есть десяток-полтора консольных потоков, которые стартуют одновременно через start: cmd: dzzb.ru start lame -h audio_01.wav audio_01.mp3 -v -b 32 -B 128 start lame -h audio_02.wav audio_02.mp3 -v -b 32 -B 128 start lame -h audio_03.wav audio_03.mp3 -v -b 32 -B 128 start lame -h audio_04.wav audio_04.mp3 -v -b 32 -B 128 start lame -h audio_05.wav audio_05.mp3 -v -b 32 -B 128 Или же архивация нескольких директорий, или параллельная конвертация изображений.
Как настроить скрипт так, чтобы он не выполнялся далее, пока не сработают все потоки start из группы?
Ответ один - костылями.
Написал небольшую утилиту (MScen.exe), которая делает желаемое. Скриптом генерится список команд для неё (MScen.txt), а она уже запускает их все одновременно. Запущенные процессы отслеживаются по ID и когда они все завершаются, то закрывается и сама MScen.exe
Если MScen.exe переименовать, то утилька будет искать скрипт со своим именем (++MScen++.exe будет искать ++MScen++.txt)
Выкладываю для примера скрипт конвертации пачки WAV >> MP3 (!!Все файлы будут конвертироваться одновременно!!)
Для сотни-двух одновременных процессов запускать такое - самоубийство, хотя конкретно Lame уходит в анабиоз, если запущено ооочень много потоков. 20-30 процессов нагружает систему на 100%, 200-300 - не нагружают ее абсолютно, думаю начинает всё упираться в скорость работы HDD и получаем обратный эффект.

Скачать
Читать далее

TotalRAM

Опубликовано: 11-03-2016 17:50 Автор: MBTY Теги: Мои разработки
Перенесено отсюда
Седня столкнулся со странным ноутбуком Asus X53B на базе AMD и т.д и т.п. - не суть в общем то.
Хотел посмотреть размер оперативки из под LiveCD - Aida вызвала синий экран, а HWInfo - завесился. Само собой глянул оперативку из BIOS, можно было и другой LiveCD взять (хотя этот не подводил никогда)
В общем я чего-то заморочился и написал небольшую утилитку, которая отображает размер RAM.
Три цифры - три метода определения доступной RAM. В одних LiveUSB отобразится одна цифра, в других две, в совсем урезанных нифига не отобразится, зато без BSOD.
Программа самозакрывается по Enter или через 10 секунд после запуска.
В 32-битных WinPE отобразится 100% не вся RAM.

Скачать
Читать далее

Подбираем размер ФАЙЛА изображения.

Опубликовано: 31-12-2015 05:16 Автор: MBTY Теги: Мои разработки
PictureWeight (dzzb.ru) В общем =)
Если вам часто приходится размещать изображения в сети, заливать на собственные сайты и т.п., то вы явно сталкивались с тем, что иногда исходные изображения имеют слишком большой вес. Нужно уменьшать картинку скажем с 10 МБ до 1-2МБ. На фото это не сильно сказывается, а загрузка произойдет быстрее.
+ Есть отличный инструмент в PS, который умеет подбирать размер картинки с предпросмотром.
+ Есть консольный ImageMagick, который конвертирует что угодно в картинку требуемого размера командой converter.exe original.png -define jpeg:extent=512kb output.jpg
+ Наконец есть консольный Picture Resizer 6.0, который вообще можно назвать например PhotoResizeK128ICSOU.exe и теперь перетаскиваемые прям на приложение файлы будут конвертироваться в JPG размером до 128КБ.

Увы, но потребовался четвертый вариант по следующим причинам:
- В PS геморно организовать пакетную обработку целой папки с изображениями.
- ImageMagick страдает глюком. При маленьких размерах желаемого результата получаются картинки с размером даже больше чем у оригинала. Хотели картинку размером 1МБ ужать до 50Кб - получайте картинку размером 2МБ.
- Picture Resizer 6.0 работает только с файлами JPG. Скармливать ему bmp, png или gif не имеет смысла.

Принцип у этих программ крайне прост: Уменьшать качество картинки, пока результат не впишется в указанный размер файла. Ни разрешение, ни какая-то иная оптимизация не проводится (кроме плясок в PhotoShop).
Потому написал аналог этих трёх приложений: PictureWeight
* Консольная, а потому скриптами можно организовать пакетную обработку. (Недостаток PS)
* Если желаемый размер не достижим, то сохраняется картинка с наименьшим полученным размером. Хотели картинку размером 1МБ ужать до 50Кб - получайте картинку размером 100Кб. (Недостаток ImageMagick)
* Открывает все форматы изображений, которые способна открыть система, а точнее встроенный системный браузер. (Недостаток Picture Resizer)

Метод использования:
PicWeight.exe [Изображение] [Требуемый размер в КБ] [Префикс]
Пример:
PicWeight.exe c:\input.png 250 Hello!
Будет создана картинка c:\Hello!input.jpg размером 250КБ или менее.

Скачать

Читать далее

Total Commander F4 extender

Опубликовано: 01-12-2015 00:28 Автор: MBTY Теги: Мои разработки
Обновление 1!
Исправлена ошибка, при которой файлы с расширением, начинающимся с цифры (7z, например) не открывались.
Переписана большая часть кода, скорость работы увеличена.
Обновление 2!
Исправлен баг, обнаруженный k1: Чувствительность к регистру расширений файла и записи в ini (file.tXT не обрабатывался по записи [txt])
Есть одна утилитка. Total Commander Edit Redirector (или TCER)
Нужна для реализации открытия в TC файлов с разным расширением разными программами. Нажимаешь F4 на TXT файле - он откроется блокнотом, F4 на *.RTF - открывается виндовым вордпадом, F4 на JPG картинке - откроется пеинтом.
Все настройки ведутся через ini. Удобно, классно, пользовался годами. Тут внезапно понадобилось, чтобы файлы одного и того же расширения я мог открывать либо программой_№1 либо программой_№2.
TCER не имеет интерфейса, а потому выбора там тоже нет - по одному приложению на одно расширение.
Написал клон TCER - делает всё то же самое, но если в ini на одно и то же расширение прописано больше одного приложения, то перед открытием выпадет контекстное меню, в котором уже выбираем нужную утилитку.
Контекстное меню все видели - скриншота не прилагаю.
Подключается эта фигулька таким вот образомПрограмма-Редактор
Пример Ini:
[*]
Akelpad=..\Akelpad\AkelPad.exe
[rtf]
WordPad=%windir%\system32\write.exe
[png]
PixBuilder=..\..\EXE\PixBuilder\PixBuilder.exe
[jpg]
PixBuilder=..\..\EXE\PixBuilder\PixBuilder.exe
[bmp]
Paint=%windir%\system32\mspaint.exe
[РАСШИРЕНИЕ] - тут указываем расширение файла, на который хотим привязать свой редактор. [*] - расширение для всех файлов, которым не присвоена собственная программа.
Название софтины=Путь к ней

Название нужно, если к какому-то типу файлов будет привязано больше одного редактора. Скажем имеем Ini:
[TXT]
Akelpad=..\Akelpad\AkelPad.exe
WordPad=%windir%\system32\write.exe
При нажатии F4 на txt файле появится контекстное меню с двумя пунктами: Akelpad и WordPad. Если в файле настроек прописана только одна программа, то название роли не играет, контестное меню из 1 пункта не отобразится.
"..\" в примере означают, что нужный редактор смещен на 1 уровень от TCF4ex
Смотрим на AkelPad:
TCF4ex у меня лежит по пути c:\Programs\TC\PLUGINS\Editor\TCF4ex\TCF4ex.exe
А AkelPad по пути c:\Programs\TC\PLUGINS\Editor\AkelPad\AkelPad.exe
"..\" Заствляют TCF4ex выйти в папку Editor,а там уже искать AkelPad\AkelPad.exe

Скачать
Читать далее

http2cli 15.10.17

Опубликовано: 17-10-2015 23:38 Автор: MBTY Теги: Мои разработки, HTML
Обновление!
Добавлено несколько вариантов переформатирования текста.
В ходе решения очередной задачи потребовался инструмент, который выводил бы в консоль html-код страницы по URL.
Задача была следующей: создать скрипт, который бы находил в сети самый свежий релиз Media Player Classic Home Cinema.
Самые свежие "nightly" билды лежат тут: https://nightly.mpc-hc.org, нужно скачать MPC-HC.*.*.*.*.x86.exe (на момент написания статьи MPC-HC.1.7.9.181.x86.exe)
Так как wget не умеет нормально качать файлы со страницы по маске (через адовые костыли), то нужно предварительно прочесть html-код, чтобы "выловить" ссылку на наш файл
Недавно я выкладывал 2 консольных костыля, одним из которых был OPI - узкоспециализированный парсер страниц. Теперь он получил дополнительный функционал, несколько настроек, стал более универсальным, а так как от исходного кода OPI осталась только пара строк, то название тоже сменилось: http2cli
Как он работает:
Вводим в консоли http2cli https://nightly.mpc-hc.org|find "x86.exe" и получаем...такую дичь:
CMD: dzzb.ru <!--[if gt IE 9]><!--><html class="no-js browser" lang="en"><!--<![endif]--><head><meta charset="utf-8"><title>MPC-HC Nightly Builds</title><meta name="description" content="MPC-HC Nightly Builds"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="shortcut icon" href="/_h5ai/client/images/favicon/favicon-16-32.ico"><link rel="apple-touch-icon-precomposed" type="image/png" href="/_h5ai/client/images/favicon/favicon-152.png"><link rel="stylesheet" href="/_h5ai/client/css/styles.css"><script src="/_h5ai/client/js/scripts.js" data-module="main"></script></head><body><div id="fallback-hints"><span class="noJsMsg">Works best with JavaScript enabled!</span><span class="noBrowserMsg">Works best in <a href="http://browsehappy.com">modern browsers</a>!</span><span class="backlink"><a href="http://larsjung.de/h5ai/" target="_blank" title="h5ai 0.27.0 В· a modern HTTP web server index">powered by h5ai</a></span></div><div id="fallback"><table><tr><th class='fb-i'></th><th class='fb-n'><span>Name</span></th><th class='fb-d'><span>Last modified</span></th><th class='fb-s'><span>Size</span></th></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/folder.png' alt='folder'/></td><td class='fb-n'><a href='/mpc-hc_apps/'>mpc-hc_apps</a></td><td class='fb-d'>2011-05-07 12:12</td><td class='fb-s'></td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/folder.png' alt='folder'/></td><td class='fb-n'><a href='/old/'>old</a></td><td class='fb-d'>2015-10-04 22:14</td><td class='fb-s'></td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/Info.md'>Info.md</a></td><td class='fb-d'>2015-04-09 23:18</td><td class='fb-s'>0 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/log.1.7.9.181.log'>log.1.7.9.181.log</a></td><td class='fb-d'>2015-10-04 22:31</td><td class='fb-s'>293 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC.1.7.9.181.x64.7z'>MPC-HC.1.7.9.181.x64.7z</a></td><td class='fb-d'>2015-10-04 22:16</td><td class='fb-s'>12453 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC.1.7.9.181.x64.exe'>MPC-HC.1.7.9.181.x64.exe</a></td><td class='fb-d'>2015-10-04 22:19</td><td class='fb-s'>13401 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC.1.7.9.181.x64.pdb.7z'>MPC-HC.1.7.9.181.x64.pdb.7z</a></td><td class='fb-d'>2015-10-04 22:22</td><td class='fb-s'>17732 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC.1.7.9.181.x86.7z'>MPC-HC.1.7.9.181.x86.7z</a></td><td class='fb-d'>2015-10-04 22:25</td><td class='fb-s'>11584 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC.1.7.9.181.x86.exe'>MPC-HC.1.7.9.181.x86.exe</a></td><td class='fb-d'>2015-10-04 22:27</td><td class='fb-s'>12530 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC.1.7.9.181.x86.pdb.7z'>MPC-HC.1.7.9.181.x86.pdb.7z</a></td><td class='fb-d'>2015-10-04 22:30</td><td class='fb-s'>17006 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC_standalone_filters.1.7.9.181.x64.7z'>MPC-HC_standalone_filters.1.7.9.181.x64.7z</a></td><td class='fb-d'>2015-10-04 22:23</td><td class='fb-s'>1616 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC_standalone_filters.1.7.9.181.x86.7z'>MPC-HC_standalone_filters.1.7.9.181.x86.7z</a></td><td class='fb-d'>2015-10-04 22:31</td><td class='fb-s'>1454 KB</td></tr></table></div></body></html>
Дело в том, что именно на этом сайте исходный код страницы записан в одну строку (для экономии нескольких байт). А find находит строку, в которой было совпадение. Получается, что весь наш сайт будет отображен, потому что во всём нём есть совпадение. Хорошо бы, если между html тегами был разрыв строки.
Это есть первая, помимо основной, функция нашего приложения. Если ввести http2cli https://nightly.mpc-hc.org 1, то между html-тегами будет создаваться разрыв. Если ввести 0 или ничего не вводить, то код никак не будет переоформляться: был изначально код с разрывами - получим их и так, не было - не получим.
Теперь страница будет выглядеть не одной строкой, а вот так:
cmd: dzzb.ru <!DOCTYPE html> <!--[if lt IE 10]> <html class="no-js no-browser" lang="en"> <![endif]--> <!--[if gt IE 9]> <!--> <html class="no-js browser" lang="en"> <!--<![endif]--> <head> <meta charset="utf-8"> <title>MPC-HC Nightly Builds</title> <meta name="description" content="MPC-HC Nightly Builds"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="shortcut icon" href="/_h5ai/client/images/favicon/favicon-16-32.ico"> <link rel="apple-touch-icon-precomposed" type="image/png" href="/_h5ai/client/images/favicon/favicon-152.png"> <link rel="stylesheet" href="/_h5ai/client/css/styles.css"> <script src="/_h5ai/client/js/scripts.js" data-module="main"> </script> </head> <body> <div id="fallback-hints"> <span class="noJsMsg">Works best with JavaScript enabled!</span> <span class="noBrowserMsg">Works best in <a href="http://browsehappy.com">modern browsers</a>!</span> <span class="backlink"> <a href="http://larsjung.de/h5ai/" target="_blank" title="h5ai 0.27.0 В· a modern HTTP web server index">powered by h5ai</a> </span> </div> <div id="fallback"> <table> <tr> <th class='fb-i'> </th> <th class='fb-n'> <span>Name</span> </th> <th class='fb-d'> <span>Last modified</span> </th> <th class='fb-s'> <span>Size</span> </th> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/folder.png' alt='folder'/> </td> <td class='fb-n'> <a href='/mpc-hc_apps/'>mpc-hc_apps</a> </td> <td class='fb-d'>2011-05-07 12:12</td> <td class='fb-s'> </td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/folder.png' alt='folder'/> </td> <td class='fb-n'> <a href='/old/'>old</a> </td> <td class='fb-d'>2015-10-04 22:14</td> <td class='fb-s'> </td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/Info.md'>Info.md</a> </td> <td class='fb-d'>2015-04-09 23:18</td> <td class='fb-s'>0 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/log.1.7.9.181.log'>log.1.7.9.181.log</a> </td> <td class='fb-d'>2015-10-04 22:31</td> <td class='fb-s'>293 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC.1.7.9.181.x64.7z'>MPC-HC.1.7.9.181.x64.7z</a> </td> <td class='fb-d'>2015-10-04 22:16</td> <td class='fb-s'>12453 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC.1.7.9.181.x64.exe'>MPC-HC.1.7.9.181.x64.exe</a> </td> <td class='fb-d'>2015-10-04 22:19</td> <td class='fb-s'>13401 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC.1.7.9.181.x64.pdb.7z'>MPC-HC.1.7.9.181.x64.pdb.7z</a> </td> <td class='fb-d'>2015-10-04 22:22</td> <td class='fb-s'>17732 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC.1.7.9.181.x86.7z'>MPC-HC.1.7.9.181.x86.7z</a> </td> <td class='fb-d'>2015-10-04 22:25</td> <td class='fb-s'>11584 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC.1.7.9.181.x86.exe'>MPC-HC.1.7.9.181.x86.exe</a> </td> <td class='fb-d'>2015-10-04 22:27</td> <td class='fb-s'>12530 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC.1.7.9.181.x86.pdb.7z'>MPC-HC.1.7.9.181.x86.pdb.7z</a> </td> <td class='fb-d'>2015-10-04 22:30</td> <td class='fb-s'>17006 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC_standalone_filters.1.7.9.181.x64.7z'>MPC-HC_standalone_filters.1.7.9.181.x64.7z</a> </td> <td class='fb-d'>2015-10-04 22:23</td> <td class='fb-s'>1616 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC_standalone_filters.1.7.9.181.x86.7z'>MPC-HC_standalone_filters.1.7.9.181.x86.7z</a> </td> <td class='fb-d'>2015-10-04 22:31</td> <td class='fb-s'>1454 KB</td> </tr> </table> </div> </body> </html>
Вводим http2cli https://nightly.mpc-hc.org 1|find "x86.exe" и получаем: CMD: dzzb.ru <a href='/MPC-HC.1.7.9.181.x86.exe'>MPC-HC.1.7.9.181.x86.exe</a> Для x64 версии всё по той же схеме: вводим http2cli https://nightly.mpc-hc.org 1|find "x64.exe" и получаем:CMD: dzzb.ru <a href='/MPC-HC.1.7.9.181.x64.exe'>MPC-HC.1.7.9.181.x64.exe</a> Дальше уже обрезать лишнее и оставить только "/MPC-HC.1.7.9.181.x86.exe" - дело техники:
for /F "tokens=2 delims='" %%i in ('http2cli https://nightly.mpc-hc.org 1^|find "x86.exe"') do wget --no-check-certificate "https://nightly.mpc-hc.org%%i"
и у нас в руках самый свежий билд плеера.
Увы, но find не умеет искать то, что находится в двойных кавычках: Если ссылка лежит не в 'https://nightly.mpc-hc.org/MPC-HC.1.7.9.181.x86.exe', а "https://nightly.mpc-hc.org/MPC-HC.1.7.9.181.x86.exe", то простой правкой скрипта на for /F "tokens=2 delims="" %%i in ... не отделаешься. Нужны опять же костыли. В сети куча тематик и на русских и на английских ресурсах как обойти то, что команда for не работает с этим " разделителем.
Чтобы не нагромождались скрипты, http2cli заимел еще два параметра:
http2cli http://www.ya.ru 2 приведет к замене " на +++, но не будет в вмешиваться в разрывы строк.
http2cli http://www.ya.ru 3 приведет к замене " на +++ и создаст разрывы строк между html-тегами.
Кавычка заменена, скрипт for /F "tokens=2 delims=+++" %%i in ... - работает прекрасно.
Если сильно захотеть, то можно сделать, что-то вроде монитора изменения страницы без необходимости в запущенном браузере.
Примерно такой код будет мониторить любую страницу и сообщать, если на ней найдены изменения
@echo off
cls
for %%I in (old.html) do set OldFileSize=%%~zI
http2cli.exe "http://google.ru" > new.html
for %%I in (new.html) do set NewFileSize=%%~zI
if "%OldFileSize%"=="%NewFileSize%" goto bad

:good
echo Есть обновления!!
move /y new.html old.html >nul
goto end

:bad
echo Ничего нового...

:end
pause
Если на странице код всегда меняется, как у меня из-за счетчика до Нового Года, то http2cli всегда будет находить "обновления", это нужно учесть :)
Так же пришлось оборудовать этот костыль функцией перевода полученного текста из одной кодировки в другую.
Командная строка у нас по умолчанию в кодировке 866, а потому русский текст на современных страницах (чаще UTF8) будет отображаться так
F4 ╨╜╨░ TXT ╤Д╨░╨╣╨╗╨╡ - ╨╛╨╜ ╨╛╤В╨║╤А╨╛╨╡╤В╤Б╤П ╨▒╨╗╨╛╨║╨╜╨╛╤В╨╛╨╝, F4 ╨╜╨░ *.RTF - ╨╛╤В╨║╤А╤Л╨▓╨░╨╡╤В╤Б╤П ╨▓╨╕╨╜╨┤╨╛╨▓╤Л╨╝ ╨▓╨╛╤А╨┤╨┐╨░╨┤╨╛╨╝, F4 ╨╜╨░ JPG ╨║╨░╤А╤В╨╕╨╜╨║╨╡ - ╨╛╤В╨║╤А╨╛╨╡╤В╤Б╤П ╨┐╨╡╨╕╨╜╤В╨╛╨╝.
╨Т╤Б╨╡ ╨╜╨░╤Б╤В╤А╨╛╨╣╨║╨╕ ╨▓╨╡╨┤╤Г╤В╤Б╤П ╤З╨╡╤А╨╡╨╖ ini. ╨г╨┤╨╛╨▒╨╜╨╛, ╨║╨╗╨░╤Б╤Б╨╜╨╛, ╨┐╨╛╨╗╤М╨╖╨╛╨▓╨░╨╗╤Б╤П ╨│╨╛╨┤╨░╨╝╨╕. ╨в╤Г╤В ╨▓╨╜╨╡╨╖╨░╨┐╨╜╨╛ ╨┐╨╛╨╜╨░╨┤╨╛╨▒╨╕╨╗╨╛╤Б╤М, ╤З╤В╨╛╨▒╤Л ╤Д╨░
Кодовую страницу нужно указывать общепринятым номером (1251 - Windows Cyrillic, 866 - Dos Cyrillic, 65001 - UTF8 и т.д..), либо не указывать вообще, если перекодировка не требуется.
Команда:
http2cli.exe http://www.dzzb.ru 0 65001 866
выведет в консоль читаемый русский текст.
Наконец выкладываю сообщение, которое выдаст http2cli, если был произведен ее запуск без каких-либо параметров :
CMD: dzzb.ru http2cli 15.10.17 Сайт: http://www.dzzb.ru Автор: MBTY Приложение выводит содержимое URL в консоль. Пример использования: http2cli.exe http://www.google.ru Поддерживается переформатирование html кода из одной строки в развернутый вариант. Пример использования: Превращение однострочного кода в разбитый, путем вставки разрыва между html-тегами и заменой " на +++: http2cli.exe http://www.google.ru 3 Превращение замена " на +++ без создания разрывов строк между html-тегами: http2cli.exe http://www.google.ru 2 Превращение однострочного кода в разбитый, путем вставки разрыва между html-тегами: http2cli.exe http://www.google.ru 1 Сохранение исходно вида кода: http2cli.exe http://www.google.ru 0 Имеется поддержка перекодирования содержимого на лету. Пример использования: http2cli.exe http://www.google.ru [0/1] [исходная кодировка] [конечная кодировка] Кодовая страница указывается номером. 1251 - Windows Cyrillic 866 - Dos Cyrillic 65001 - UTF8 и т.д. Пример использования перекодировки страницы из UTF8 в DOS с сохранением форматирования: http2cli.exe http://www.google.ru 0 65001 866 Пример использования перекодировки страницы из UTF8 в DOS с разбиением кода на строки: http2cli.exe http://www.google.ru 1 65001 866

Скачать
Читать далее

◘▲▼▲◘◘▲▼▲◘◘▲▼▲◘