"Лучше день провозиться, а потом за пять минут долететь"(с).
Мануал по find-replace для полного чайника
С QIP-а на Облака одним махом:
Грохнулся популярный сервис - объявил о закрытии, сотни блогерских страничек зияют прорезами вместо картинок.
Мало перенести архивы - нужно переписать все линки в постах.
Это реально.
В прежних экзерцисах мы изощрялись в автозамене кракозябр в линках на что-то вменяемое.
Но стараниями файлохранительных сервисов более востребованной становится замена одних кракозябр на другие.
Типа Облачных или тех же яндесовских.
Задача не тривиальная - переписать ссылки во всех постах, при хаотичной букво-цифири в адресах картинок.
Судя по прежним откликам, вариант с "заклинаниями", без пояснений, что откуда берется и почему,
не очень востребован. Те, кто заинтересовался, хотят разобраться в смысле производимых действий,
а не просто следовать готовому рецепту.
На этот раз попробуем начать "от сотворения мира".
Блокнот
Обычный виндозный. Notepad.
Вдруг кто-то не знает забыл: find-replace
(С учетом регистра - "Match case")
Тоже кое-что может. Найти нужное и заменить более актуальным.
Напр. добавить соответствующие тэги ко всем ссылкам в тексте.
В два приема:
Найти: .jpg
Заменить на: .jpg.">
и
Найти: http://
Заменить на:
Опция "Вид" --> "Перенос по словам" в меню
или в англоязычии:
пригодится при копировании напр. исходных кодов,
которые Блокнот вытянет в одну строку, если не поставить галочку.
Функция поиска в браузере
ctrl + f
Ищет и на обычной странице, и в редактируемой форме записи (когда пост еще не отправлен) и на странице исходных кодов.
Массовую замену в браузере не сделаешь, но поиск тоже бывает весьма полезен, особенно в длинных текстах и кодах -
по известному слову легко выходить на искомый абзац.
◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘
Продвинутые Блокноты
Notepad++, AkelPad и.п.
Преобразования, чуть более изощренные, чем прямая замена, встречаются в задачах самых будничных и бесхитростных.
И в методах нет ничего непостижимого.
- Идею переменной никому ведь не надо объяснять. Классические иксы-игрики.
В Блокнотах-плюс подстановочные выражения используются для той же цели.
Как пример:
Изменить размеры картинок в кодах для вставки и убрать рамку.
Все значения разные, простого "найти и заменить" не достаточно.
Запишем тоже самое, но с переменными - подстановками, или,
как они в соответствующих редакторах называются - регулярными выражениями, reg_exp-ами
Найти: foto_(\d+)\.jpg" weight="\d+px" height="\d+px" border="\d+px"
Заменить на: foto_\1.jpg" weight="400px" height="600px" border="0"
\d+ - означает: в этой позиции находится одна или несколько цифр.
скобки(в данном случае) - выражению надлежит быть сохраненным для последующего использования.
\1 - вставить содержимое первых скобок.
Получаем:
Или знакомое по прежним встречам с автозаменой упражнение - отредактировать адреса с абракадаброй:
допустим, решили убить активные ссылки, которые любят подсовывать к кодам некоторые сервисы:
.... и в таком духе.
Удалить закрывающие легко: строку "Заменить на:" оставить пустой.
Но с первой частью выражений стандартному блокноту никак не справиться - абракадабры разные.
С "переменными" -- все просто:
командой: "Убрать всё между и следующей закрывающей угловой скобкой. Включительно."
Найти:
\w+/w_\d+\.net">
(\w+)\.jpg">(\w+ - латинская буква, цифра или знак подчеркивания, одна или несколько)
Заменить на:
\1.jpg">
World такое тоже умеет, формат написания подстановочных выражений у разных программ отличается,
есть несколько версий, но суть та же. Один раз освоишь - разберешься и с другими;
смотришь в подсказки, где какие символы в ходу, наизусть запоминать не обязательно.
Это было краткое повторение пройденного.
◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘
Групповые преобразования файлов
Зыбкая природа сетевых обиталищ подкидывает проблемы, которые с наскока не решить,
даже вооружившись "рег-экспами".
Недавние советы по переселению фотоархива на новый ресурс содержали непременное условие -
выберите тот, который сохраняет имена файлов; где линки будут иметь предсказуемый вид.
Увы. Таких практически не осталось - чтоб и целым архивом залить и новые ссылки выгрузить разом.
Выбирать приходится из возможного. Среди возможного несколько доступных Облачных сервисов и Я-фотки.
Одно крокозябрей другого.
Т.е. обе стороны соотношения "Заменить что:" -- "Заменить чем:" содержат неизвестные. Типа Х+Y=>a+b
Возьмем самый тяжелый случай, Яндекс-фото -
дает файлам имена вне какой-либо связи с исходными именами картинок
(на мой взгляд переезжать на Я-ф - менять шило на мыло в смысле надежности,
но многих привлекает привычный интерфейс, не ограничено места и, главное -
адреса можно получить пакетом, а не выковыривать по одному).
Пучок невнятных ссылок нужно расставить по текстам давних постов -
труднопредставимо каким образом это делать даже в ручную, сверять каждую с изображением? 0_о
Тем интересней, чем неразрешимей )
Нужен более мощный инструмент, чем Блокноты, даже расширенные.
И такой инструмент есть:
UV FilesCorrector Много чего делает на тему "Найти и заменить", с регулярными выражениями, если надо.
Только выражений для замены может быть не одно, как в Акел-паде, а несколько -тысяч.
Например понадобилось во всех каталогах и подкаталогах перебить цены,
заменить доллары на евро, а рубли на юани буквы на значки:
руб. - Р
у.е. - $
евр. - €
шек.- ₪
юань - 圓
....
Жмем в меню "Добавить", вносим одну за другой пары - что на что меняем и
получаем список замен столбиком (который можно "Загрузить" - сохранив на следующий раз):
А кроме того, сами исправляемые тексты не требуется никуда копипастить, вставлять в программу -
нужно просто указать ей путь к файлу. Или к каталогу с файлами и они, при необходимости,
будут исправлены все разом.
В случае ЖЖ не придется переносить записи в локальные папки. Достаточно открыть пост
в режиме редактирования. Программа исправит все линки в выделенном текcте - прямо в браузере.
Для чего ее, конечно, следует соответствующим образом настроить: задать список замен.
Поменять адреса вида
"httр://photo.qip.ru/photo/seкaphoto/200938981/large/217860960.jpg"
на
"httрs://img-fotki.yandex.ru/get/6305/11038107.8/0_5f84b_cea97f41_orig.jpg"
даже и с усиленным инструментарием - проблема. Но преодолимая.
Вернемся к Яндексу. В таком виде как он выдает ссылки - случай безнадежный.
Но есть способ связать полученные имена с исходными - присмотритесь,
по наведению мыши превьюшки показывают всплывающую подсказку - с родным именем картинки! "титлы" те самые.
А чтоб извлечь их - не поленимся залезть на страницу исходных кодов. ctrl+U
Не так все страшно. Вот он искомый фрагмент (начиная со слов "Выделить фотографии:")
Составим команду для извлечения нужных кодов из этой каши:
Найти: (httрs://img-fotki(.(?!XS))*)_XS"\s\S*\s\S*\s(alt="\w+\.(jpg|gif)")(.(?!ttps))*
(Найди череду символов, начинающуюся с httрs://img-fotki - после которых идет какой угодно символ (.) сколько угодно раз (*), кроме такого, за которым стоит XS; дальше найди _XS" пробел (\s), несколько символов не являющихся пробелом (\S*), еще раз (\s\S*\s ) и
группу из alt=", одной или нескольких букв/цифр (w+) с расширениями на выбор; дальше найди сколько угодно каких угодно символов (.), пока не наткнешься на такой, за которым стоит ttрs (?!) )
Если к составляемым reg_exp-выражениям не делать комментариев - уже через пару недель будет не разобрать, что там к чему
Заменить на: \1_orig.jpg \3\n
(Запомни содержимое первой и третьей скобок (внутренние считаются (кроме тех, что входят в шаблон с "?!")) и припиши к нему _orig.jpg, в конце сделай перевод строки (\n))
Получаем очищенный список, в "alt-ах" - прежние номера фот,
связывающие новые адреса с теми, что уже используются в постах
httрs://img-fotki.yandex.ru/get/6305/11038107.8/0_5f84b_cea97f41_orig.jpg alt="217860960.jpg"
httрs://img-fotki.yandex.ru/get/6210/11038107.8/0_5f84c_bb64f5bf_orig.jpg alt="217860961.jpg"
httрs://img-fotki.yandex.ru/get/6311/11038107.8/0_5f84d_a9d01408_orig.jpg alt="217860962.jpg"
httрs://img-fotki.yandex.ru/get/6309/11038107.8/0_5f84e_1ff3d0f3_orig.jpg alt="217860963.jpg"
httрs://img-fotki.yandex.ru/get/6308/11038107.8/0_5f84f_5f7050f1_orig.jpg alt="217860964.jpg"
httрs://img-fotki.yandex.ru/get/6111/11038107.8/0_5f850_23a2be0b_orig.jpg alt="217860965.jpg"
httрs://img-fotki.yandex.ru/get/6306/11038107.8/0_5f851_84c74e48_orig.jpg alt="217860966.jpg"
httрs://img-fotki.yandex.ru/get/6306/11038107.8/0_5f852_84eabdbd_orig.jpg alt="217860967.jpg"
httрs://img-fotki.yandex.ru/get/6211/11038107.8/0_5f853_5a201ac6_orig.jpg alt="217860968.jpg"
httрs://img-fotki.yandex.ru/get/6305/11038107.8/0_5f84a_24c56497_orig.jpg alt="217860968.jpg"
httрs://img-fotki.yandex.ru/get/6212/11038107.8/0_5f854_30e3f7d2_orig.jpg alt="217860970.jpg"
Нам нужно произвести замену выражения перед заданным именем
вместо httр://photo.qip.ru/photo/seкaphoto/200938981/large/217860960
вписать httрs://img-fotki.yandex.ru/get/6305/11038107.8/0_5f84b_cea97f41_orig.jpg alt="217860960
Даже хитрых подстановочных выражений не нужно.
Беда, что таких операций требуется несколько десятков(/тысяч).
Программа-корректор с этим прекрасно справится,
нужно только скормить ей специально подготовленный файл со списком замен -
вроде такого:
abra kadabra 1
tyry pyry 1
klin blin 1
pryg skok 1
И так пятьдесят тысяч раз.
- знакомые Find и Replace, только в программных кодах.
регулярки AkelPad-овские у нас под рукой, придать списку ссылок нужное для программы обрамление не долго:
Найти: (httрs://img-fotki.*) (alt="(\d+)\.(jpg|gif)")
-найти имя джипега/гифа (\d+) перед которым стоит выражение с httрs: , еще кучей символов и alt="
Заменить на: "httр://photo.qip.ru/photo/seкaphoto/200938981/large/\3.\4" "\1" 1
-заменить то, что перед номером картинки (скобка №3, считая вложенные) на выражение
httр://photo.qip.... и прочая, и в указанное место вставить саму исходную строку (первая скобка)
(Тут и пригодились alt-ы с номерами картинок, чтоб связать новые адреса со старыми.
Иначе пришлось бы отслеживать порядок загрузки и мутить с нумерацией списка.)
Список замен готов.
Сохраните полученный файл в Акел-Паде с расширением .lst (все файлы) в кодировке 1251 ANSI-Cyrillic.
Запомните путь к файлу(в какую папку положили), что бы открыть его в FileCorrector-е.
(Замены и собственно F-Corrector проделает с не меньшим успехом,
но физически текст должен где-то находиться; можно набрать его Блокноте, а подстановки запустить из FC)
Всё готово, открываем сохраненный список уже из самой программы (кнопка "Добавить из файла") ,
заходим в нужный пост (удобнее всего из "управления записями" вверху ЖЖ-страницы)
--> ctrl A --> Ctrl + Shift + X и вуаля!
Т.е. выделили текст поста, нажали сочетание Ctrl + Shift + X (при запущенной программе uFC, разумеется)
- имеем результат:
Не совсем одним махом получилось, в три прыжка, но все ж таки обозримый объем работы,
без автоматизации вовсе неподъемный.
Примечание.
Если весь архив скинуть в одну папку на Я-фото - коды для исправления будут более единообразны,
в qip-ких адресах аналогично, если фоты хранились в разных альбомах, следует учесть это при составлении списка замен:
httр://photo.qip.ru/photo/куshi/200703298/large/213216821.jpg
httр://photo.qip.ru/photo/куshi/200683461/large/211744274.jpg
Индекс папки из девяти цифр обозначим переменной:
httр://photo.qip.ru/photo/куshi/\d+/large/211744274.jpg
....... ....... ....... ....... ....... ....... ....... ....... .......
- Обязательно файл вручную конструировать, автоматом программа этого не делает?
- Делает, если пары "что" -" чем" вносить через вкладку "Добавить" - по одной, и запомнить полученное в файл.
Загрузить список - только вот таким способом.
◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘
Лирика
Есть два принципа работы в неосвоенной области.
Метод "тупо проделать то, что описано в инструкции" не так плох, как может показаться.
Приложений и устройств всё больше, досконально разобраться во всем невозможно. И наперед не известно -
стоит ли; если утилита нужна для разовой операции - включаем и едем, а как оно устроено, не докапываемся.
Минус такого подхода в том, что если что-то пойдет не как надо, то не будешь знать в чем загвоздка,
на любой ерунде можно споткнуться. В Справке есть далеко не все, а мануалов не густо.
Но может и повезти - "попробуй и получится, а если не получится попробуешь опять" =)
Например встречается ситуация:
-Я проделал Ctrl + Shift + X , а пост превратился в закорючки! ..?
-В жж-шной форме редактирования бывают накладки. Видимо операция применялась к тексту,
который прежде уже находился в буфере, выход - чистить буфер перед новой операцией.
Неувязки возможны, но откатить просто -
вернуться на страницу журнала, пост останется неотредактированным, в первозданном состоянии;
нажимать "Сохранить запись" стоит только убедившись, что с текстом все в порядке.
Если же иметь дело с текстовыми материалами, правками и заменами предполагается часто и регулярно,
то, конечно, нет ничего лучше, чем освоить и настроить под себя удобный, функциональный инструмент.
"Непонятное" по большей части оказывается неизвестным.
Как при изучении языка: встретил новое слово - смотришь в словаре.
Наткнувшись на какой-нибудь "нежадный поиск" - приходим в недоумение и опускаем руки спрашиваем
у Гугла что оно такое. Обнаруживается интересная штука, полезная.
Бывает еще типа третий метод, как у
lorique живописано в
Аптечном инструктаже;
скажем, юзер не понимает разницы между кодом для вставки и именем файла -
но не роется в справочнике и не повторяет шаг за шагом готовый рецепт,
а с ходу принимается спорить: "а там не то, там вот это!", "но я не понимаю, тут так не получится".
На случай, если - что так, что эдак: никак, самый верный путь - попросить кого-то, кто хоть как-то.
◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘
Эквилибристика автозамены в более ранних постах:
Запасной аэродром для фоток с Яндекса Групповые преобразования в ЖЖ GRAB'им фликр, гугло-пикасу + обзор фото-хостов Прогулка по Облакам. Обзор