Rimon Lusi (fotovivo) wrote,
Rimon Lusi
fotovivo

Categories:

Как заменить все ссылки в записях при смене фотохостинга

На примере ремонта записи, пострадавшей от Photobuket-a

fotovivo
"Если вас шарахнет током - вы тихонько вскрикните,
Раз шарахнет, два шарахнет, а потом привыкните.
"

Кст. это так и есть, кто физиотерапию проходил, в курсе -
переносимость повышается до определенных приделов.


С фотохостами не впервой. Один посыпался, другой...
Переправляю все в ЖЖ, не заморачиваясь поисками очередного надежного-дружелюбного:
по сравнению с другими предложениями теперь и кобыла невеста.
(Яндексу не доверяю издавна, а с появлением Я-Диска и подавно, ясно к чему идет)

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

Задача - насколько можно автоматизировать процесс, чтоб не вручную линк за линком переписывать.


Разруха во всей неприглядности

fotovivo


Открываем редактирование в кодах ХТМЛ.

Исходно имеем HTML-текcт вида:
<img srс="httр//i1381.photobucket.com/albums/ah209/myName/Ashkelon/ashkelon_005_zpslk1aohr3.jрg">

...слева, над дюнами.

<img srс="httр//i1381.photobucket.com/albums/ah209/myName/Ashkelon/ashkelon_006_zpsvd61qp5s.jрg">

Ашкелон не в лучшей форме - перестраивается.


В котором нужно ссылки заменить на жж-шные.

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

1.Для начала нужно найти сами файлы в локальных папках или выкачать обратно с фотобакета
(а он, зловред, еще и закрыл скачивание папок, только по штучке)
На компьютере легко открыть нужную папку из строки поиска, вбив имя джипега

fotovivo



2.Проще всего грузить фото не из редактора записи, а зайти в ФотоАльбомы,
создать новый, залить туда файлы и нажать "добавить все в запись"

fotovivo



Вот такой список линков получим

fotovivo



А теперь нам понадобится инструмент, что бы не делать работу по замене вручную.
3.Скачать, установить, немного повтыкать в процесс и настройки - всегдашний выбор:
"День повозиться, а потом за пять минут долететь" ((с) Мартышка, Удав и Попугай) или раз за разом днями возиться, зато без напряга.

Инструмент из самых простых - текстовый редактор вроде виндозного, чуть более функциональный: Akelpad.
Свободное ПО, на вид тот же Блокнот, ничего непривычного.

4.Скопируем текст записи в наш Блокнот:

fotovivo



Чтобы было понятней, что происходит, проведем преобразования поэтапно,
для начала заменим повторяющееся Photobuket-ное начало линка на соответствующее жж-ное.

5.
Т.е. заменим httр/i1381.photobucket.com/albums/ah209/MyName/Ashkelon
на httр/ic.pics.livejournal.com/MyLJ/6204657/ по всему тексту


fotovivo

Обычным порядком, кто работал с любым текстовым редактором, знают:
пребывая в Блокноте нажмите ctrl R (вызываем функцию поиска и замены),
в верхнюю строку "заменить Что" вставляем то, что нужно заменить, в нижнюю строчку "Чем" - чем заменяем.
Поставьте курсор в верхний угол текстового поля и запустите процесс: "Заменить всё".
Готово.


Теперь проделаем чуть более изощренную операцию - ради которой Акелпад и скачивали.
6.Удалим "кракозябру" - беспорядочный цифробуквенный суффикс в именах джипегов.
Довесок у всех джипегов однотипный, одиннадцатисимвольный

fotovivo


И так, снова - ctrl R
Ставим галочку в чек-бокс "Регулярные выражения" и флажок "вниз".
В строку "Заменить что" впишем:
_\w{11}.jpg
в "Заменить чем" - просто
.jpg

Эта директива говорит Блокноту: найди фрагмент начинающийся с _, после которого следуют одиннадцать буквоцифр и .jpg
и замени всё на .jpg

Не сложно, правда?

Это уже пол-дела. Следующий шаг не принципиально отличается от предыдущего.

У жж-ных линков своя засада: вместо имени файла - нерегулярный цифровой индекс
при джипеге - 1283328/1283328_original, цифры у каждой картинки разные.

Правда, при вставке через Фотоальбомы, исходные имена отображаются в атрибутах alt и title, есть на что опереться.

Продолжим, на следующем этапе
7.открываем новый документ в Блокноте.
Копируем туда список линков, полученный на втором шаге.

Очистим их от всего лишнего:
Попросту, в три прохода.

8.
Вызываем поиск/замену и -
В "Заменить что": <img src="httр://ic.pics.livejournal.com/MyLJ/6204657/
А в "Заменить чем" оставляем пустую строку. Т.е просто удаляем ненужное.

9.
Еще один прогон:
В "Заменить что": .jpg" alt="
В "Заменить чем": ничего

Получится столбик выражений: имена джипегов слитно со словом original




fotovivo

10.
Уберем и окончания строк вида: .JPG" title="MyРicture_022.JPG">
- для этого еще раз поиграем с опцией "Регулярные выражения"
На этот раз у нас отличия в именах джипегов (и возможно они отличаются не только цифрами)

В строку "Заменить что" впишем директиву: JPG" title="\w+.JPG">
(это для случая, если имя файла содержит только латинские буквы, цифры или знак подчеркивания)
А в "Заменить чем": ничего.

Шаги 8,9,10 можно объединить в одну формулу.


11.Скопируем то, что получилось в первый документ, выше текста, который уже там -

fotovivo


А теперь - завершающий рывок.

12.

В линках, разбросанных по тексту, нужно заменить родное имя файла (в примере это ashkelon_001)
на присвоенное жуже-альбомом невнятное 1281444/1281444_original

У нас все готово для этого, не зря ж провели подготовительные работы.

Вызовем "поиск и замену"
и зададим следующие директивы
(как на картинке выше) -

"Заменить что": (\S{24})(ashkelon_\d{3})(.+)\2
"Заменить чем": \3\1

Не пугайтесь, это всего лишь синтаксис регулярных выражений.
На человеческом языке команда предписывает АкелПаду следующее:

"Найди двадцать четыре типографских знака (любых, только не пробелы), после которых следует слово ashkelon с нижним подчеркиванием и тремя цифрами, запомни выражения в скобках, ..."
24 - это число символов в 1281444/1281444_original
"...продолжай поиск, пока не найдешь то же, что было во вторых по счету скобках. ..."
А у нас там как раз имя джипега
"...Замени все найденное на содержимое скобок №3 (у нас там весь-весь текст до самой ссылки на нужную картинку)
и следом припиши содержимое первых скобок."


fotovivo

вот так срабатывает единичный запуск поиска: найдено и отмечено все до самого "ашкелона" с нужным номером.
Всё выделенное сохранится, и только ashkelon_ с соответствующим номером заменится на новое имя из жж-альбома.


Разумеется, процедура будет гораздо проще, если вы загрузите файлы на личный хост, сохранив родные имена,
тогда вообще можно обойтись обычной заменой без всяких регулярок. Но мы ж простых путей не ищем =)
И, нужно сделать уточнение относительно имен картинок. В примере они все на одно слово с номерами.
А если как попало, разные слова без номеров?
- Тогда на предыдущем этапе, на шаге №10 нужно будет добавить перед беспорядочными именами единый опознавательный знак -
т.е. "Заменить чем" не пустым оставлять, а вписать туда какое-нибудь слово. Латиницей. И, кст. если в названиях
где-либо используются дефисы - отдельным прогоном их поубирать, в обоих документах
(ну или заглянуть в Справку и записать формулы иначе. То же на случай кириллицы, иврита и прочих изысков.).



Итого - директива отработала, выбрала нужное, нашла на странице целевой файл,
произвела замену (а вспомогательную строку вверху удалила).
И довольная остановилась - Я всё сделала!
- Но это же только один линк исправлен, чтобы продолжить - нужно запустить процесс снова.
Программа умеет сама такое проделывать?
Умеет. Встроенным макросом.

Но пока остановимся на этом. Про макросы - в следующей серии.

Даже так как сейчас - тридцать-пятьдесят-семьдесят, сколько там в посте картинок, раз нажать кнопку "Заменить всё"
сподручней, чем ковыряться с копированием линков вручную. (Замена происходит очень быстро, практически моментально).

А вот он, исправленный Ашкелон http://fotovivo.livejournal.com/216607.html


Tags: Мануалы, веб-штучки
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 70 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →