Powered by WordPress | Theme by mg12 | Valid XHTML 1.1 and CSS 3
  • миграция с ЖЖ – импорт записей

    migraciya-s-zhzh-import-zapisejj

    ну, вроде бы миграция с ЖЖ завершилась(?) более-менее успешно:)
    Одной из задач по миграции было перенесение всех записей из ЖЖ с комментариями в мой новый журнал.
    В комплекте вордпресса есть импорт из ЖЖ (wp-admin/import/livejournal.php), в ЖЖ есть экспорт записей (livejournal.com/export.bml – эта ссылка находится только поиском по хелпу, между прочим – в менюшках и «карте сайта» ее нет).
    Но ЖЖшный экспорт во первых экспортирует только «помесячно», во вторых, по крайней мере для «базовых» пользователей – только записи, без комментариев.
    С другой стороны базовый импорт записей в вордпрессе сделан таким образом, что он во-первых игнорирует все параметры записи, во вторых не имеет никакой поддержки вложенности комментариев. Если с комментариями все понятно, то первое замечание означает, что НЕ импортируются ни теги (!!!) ни настройки приватности (!!!!!!!!!!!). В результате закрытые записи или записи только для друзей становяться видны всем! «Настроениями» и «музыкой» я не пользовался, поэтому то что они тоже не импортируются для меня было несущественно:)

    В результате для экспорта был выбран внешний «экспортер» LJ-Archive (все скопом с комментариями, с тем же форматом что и ЖЖ), для импорта я слегка подправил стандартный «импорт»:)
    реализация «тегов» простая – формат тегов в ЖЖ и в вордпрессе совпадают до мелочей – это строчка, разделенная запятыми:) поэтому она в чистом виде передается вордпрессу.
    С настройками приватности все несколько по другому – есть два варианта параметра security, «private» и «usemask». Первое как и предполагается – приватная запись, второе – запись «для друзей». При этом во втором случае есть еще параметр «allowmask» который определяет для каких групп друзей запись видна.
    Поскольку записи «для друзей» это обычно (у меня) что-то личное, актуальное на момент написания, и ничего особо интересного там нет, я решил не заморачиваться с переносом груп друзей и поэтому оба варианта в вордпрессе обозначаются как private. При необходимости, реализовать групы друзей (среди зарегестрированых пользователей) можно с помощью плагина Disclose-secrets. Вообще, если мне таки понадобится писать посты «для друзей», можно будет скриптом «зарегестрировать» всех жж-шных френдов у себя с правами «читателей» по openid, и с помощью disclose secrets назначать соотв. права для записей:)

    Задача с вложенными коментариями просто так не решалась, пришлось попрограммировать слегка:) в результате в livejournal.php появилась модифицированная функция wp_insertcomment_lj в которой используется дополнительный столбец в таблице wp_comments. Для пользования нужно добавить к этой таблице столбец comments_ljid (ALTER TABLE wp_comments ADD comment_ljid BIGINT;) – после окончания экспорта столбец можно будет удалить, он нужен для того чтоб содержать в себе itemid комментария для привязки к парент-комментарию:) Столбец «comment_parent» в таблице уже присутствовал, я не знаю – это из поставки так или результат активации плагина wp-threaded comments (который на порядок лучше работает чем Brian’s threaded comments, не глючит с темой, не глючит с опенайди – ну удобнее и лучше!).
    Да, кроме этого для этих записей назначается рубрика LJ (у меня – catid=5!), поэтому нужно или убрать назначение рубрики, или вписать в соотв. кусок кода актуальный CatID для нужной рубрики.
    В остальном все «very straightforward»:)

    Скачать архив livejournal.php

    Ах, да, еще – скрипт отрабатывает почему-то достаточно медленно, у меня он импортировал где-то по 1 записи в 2 секунды (интересо очень, с чего бы это??)
    В результате после 14-16 записей он отваливался по тайм-ауту пхп в 30 секунд. Мне было лень копаться (а записей немного!) и поэтому я просто повторял импорт – существующие записи скрипт не вставляет (впрочем, парочку повторяющихся было, но я не знаю от каких моих экспериментов они остались:))
    Я думаю что отключив все плагины (кроме необходимых – например disclose secrets если его таки будете использовать; threaded comments может быть выключен кстати) можно сильно ускорить отработку скрипта (или, если есть возможность, в параметрах ПХП отключить таймаут на время импорта).

    По поводу плагинов и других мелочей миграции еще как-то напишу:)
    Если есть вопросы – спрашивайте.

    Пятница, Октябрь 3rd, 2008 at 18:14
  • шотла
    Пятница, Октябрь 3rd, 2008 at 19:25 | #1

    слушай, очень жаль что ты затеялся с миграцией, потому что очень неудобно комментировать с введением имени, емейла и т.д. – для меня это значит, что вряд ли когда буду комментировать.
    оставь хотя бы возможность через жж комментировать тоже.

    [Ответить]

    Yaroslaw Reply:

    Оля, я еще напишу подробную инструкцию:)
    На самом деле, нужно ОДИН РАЗ ввести свой ЖЖ-шный ник (о чем, кстати написано:) в виде http://olga_scotland.livejournal.com в поле Website, ОДИН РАЗ нажать кнопку подтвердить когда тебя перебросит на ЖЖ, и после этого писать комментарии сколько душе угодно:)
    Я, более того собираюсь эту процедуру еще упростить (сделать выпадающий список – ЖЖ, ли.ру, блоггер) – можно будет только ник ввести:) или автоматическое определение жж-ника, нужно будет только подтверждение что это именно ты.
    В любом случае, даже сейчас, твоя информация контактная уже запомнена и вводить второй раз (с этого же компьютера) тебе ее не надо:)

    [Ответить]

  • Понедельник, Октябрь 13th, 2008 at 13:05 | #2

    Вообще, довольно интересное занятие – разрабатывать свой блог.

    Мне размещать его негде, но уже ради одного интереса балуюсь с ВордПрессом на домашнем компе. Авось, рано или поздно пригодится.

    [Ответить]

    Yaroslaw Reply:

    я кстати уже как-то предлагал свой хостинг:)

    [Ответить]

    Yaroslaw Reply:

    Ты, кстати, на этот «авось», делай бекап ЖЖ регулярно:)

    с помощью LJArchive лучше всего, он вытягивает совершенно все – с комментариями, групами друзей, настройками музыки и настроений…

    Потом, если что, в вордпресс можно будет засунуть:)

    Правда с твоей любовью к подзамкам, непонятно для кого вести блог:) Хотя, если делать подзамочную трансляцию в ЖЖ и автоматическую регистрацию по OpenID (и ручным добавлением тех-кого-надо в нужную тебе групу юзеров) и использованием DiscloseSecrets все возможно….:)

    [Ответить]

    Стаська (satinenok) Reply:

    Кстати да, давно не бэкапилась :)

    И тоже думаю, что все возможно :)

    [Ответить]

  • Воскресенье, Декабрь 21st, 2008 at 13:10 | #3

    Здравствуйте! А подскажите пожалуйста название плагина, благодаря которому у вас для комментирования достаточно ввести лишь имя пользователя ЖЖ, а не целую ссылку, как в обычных openid плагинах. Заранее благодарен!

    [Ответить]

    Yaroslaw Reply:

    эммм. Сию функциональность я сам запрограмировал:))))

    Но вообще-то для Вордпресса существует два open-id плагина. Один официальный, другой – русский:) Поиском находится легко. В русском – там такая фича встроена (там есть livejournal и deadjournal по дефолту).
    Я решил основываться на официальном, только тему переправил, там все JS-кодом меняется перед отправкой формы.

    [Ответить]

    Аджей (ajayver) Reply:

    Русский плагин пробовал, он у меня не заработал, может вы можете мне скинуть на имейл свой comments.php или хотя бы ту часть кода, которая меня интересует? Я просто не программист, но порывшись в коде, может чего и понял бы… Был бы очень благодарен!

    [Ответить]

  • Понедельник, Декабрь 29th, 2008 at 02:26 | #4

    помогите, пожалуста, с проблемкой в ljarchive
    он постоянно выдает такую ошибку при попытке создать архив:
    System.TypeLoadException: Тип «XmlRpcProxy84820925-5cd6-43ee-87d5-ea50bb09c180″ из сборки «XmlRpcProxy84820925-5cd6-43ee-87d5-ea50bb09c180, Version=0.9.6.0, Culture=neutral, PublicKeyToken=null» пытается реализовать недоступный интерфейс.
    в System.Reflection.Emit.TypeBuilder._TermCreateClass(Int32 handle, Module module)
    в System.Reflection.Emit.TypeBuilder.CreateTypeNoLock()
    в System.Reflection.Emit.TypeBuilder.CreateType()
    в CookComputing.XmlRpc.XmlRpcProxyGen.BuildAssembly(Type itf, String assemblyName, String moduleName, String typeName)
    в CookComputing.XmlRpc.XmlRpcProxyGen.Create(Type itf)
    в EF.ljArchive.Engine.LJServerFactory.Create(String url)
    в EF.ljArchive.Engine.Sync.ThreadStart()

    net.framework установлен (где-то писали, что он нужен)

    [Ответить]

  • Среда, Июль 1st, 2009 at 11:29 | #5

    в линке на архив два раза папка you указана, я руками правил…

    [Ответить]

  • Пятница, Декабрь 4th, 2009 at 23:13 | #6

    Очень жаль, что файл livejournal.php недоступен для скачивания.

    [Ответить]

    anarchofront (anarchofront) Reply:

    Не обратил внимания на комментарий выше… Всё ясно, скачал. Правда, нынешний текст livejournal.php как-то сильно отличается от того, что находится в вашем файле, так что экспериментировать не стал.

    [Ответить]

    Yaroslaw Reply:

    не знаю на счет «нынешнего текста livejournal.php» – я взял ту версию которая тогда была, подправил ее для своих задач – и она работает (работала тогда, если ЖЖшники ничего не изменили – в чем я сомневаюсь, ибо тут привязка больше к LJArchive)

    Править новую версию как-то не вижу смысла:) Могу порекомендовать попробовать на каком-нибудь тестовом блоге.

    [Ответить]

  • Четверг, Июль 15th, 2010 at 06:28 | #7

    А вы не ставили перед собой задачу синхронизации текущих комментов в ЖЖ с вордпрессом? Есть плагин lj_comments_import, но я не могу добиться от него нормальной работы :(

    [Ответить]

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Используйте OpenID URL чтоб оставить комментарий. Если вы пользователь LiveJournal - URL должен быть вида http://user.livejournal.com

*
To prove you're a person (not a spam script), type the security word shown in the picture.
Anti-spam image

TOP