Опять кросспостнинг
Сделал почти человеческий кросспостинг в ЖЖ.
В чем оказалось дело?
Плагин Crossposter к MT пользуется Atom API для создания и последующего обновления кросспостов. И этот API у ЖЖ сломан. Работает и GET на feed, и POST для нового поста, и PUT на существующий для апдейта, и DELETE, но GET на отдельный пост выдает 401.
Как выкрутиться? GET перед PUT нужен в первую очередь, чтобы получить элемент <id> для поста. Без этого элемента PUT не пройдет, а на момент POST этот id еще неизвестен. Что делать? После POST получить feed журнала, пройтись по всем постам, найти нужный, сохранить его в базе, а потом при апдейте записи не делать GET, а вытянуть его из базы, изменить как нужно и отправить в ЖЖ PUT'ом.
Грязный и кривой хак, но ничего умнее я не придумал.
Вот патч: crossposter.patch.gz
Если Crossposter уже установлен, то надо изменить схему базы, добавив в таблицу mt_crossposter_cache колонку crossposter_cache_xml.
Important note: в патч закрался небольшой косяк, поэтому те, кто скачал его до Wed Dec 12 02:01:28 MSK 2007, просьба откатиться и выкачать заново.
В чем оказалось дело?
Плагин Crossposter к MT пользуется Atom API для создания и последующего обновления кросспостов. И этот API у ЖЖ сломан. Работает и GET на feed, и POST для нового поста, и PUT на существующий для апдейта, и DELETE, но GET на отдельный пост выдает 401.
Как выкрутиться? GET перед PUT нужен в первую очередь, чтобы получить элемент <id> для поста. Без этого элемента PUT не пройдет, а на момент POST этот id еще неизвестен. Что делать? После POST получить feed журнала, пройтись по всем постам, найти нужный, сохранить его в базе, а потом при апдейте записи не делать GET, а вытянуть его из базы, изменить как нужно и отправить в ЖЖ PUT'ом.
Грязный и кривой хак, но ничего умнее я не придумал.
Вот патч: crossposter.patch.gz
Если Crossposter уже установлен, то надо изменить схему базы, добавив в таблицу mt_crossposter_cache колонку crossposter_cache_xml.
Important note: в патч закрался небольшой косяк, поэтому те, кто скачал его до Wed Dec 12 02:01:28 MSK 2007, просьба откатиться и выкачать заново.
0 TrackBacks
Listed below are links to blogs that reference this entry: Опять кросспостнинг.
TrackBack URL for this entry: http://net-geek.org/cgi-bin/mt/mt-tb.cgi/32
ты для ЖЖ-кросспостов тогда комменты отключай
Хотелось бы. Но я пока не нашел, что надо написать в запросе, чтобы отключить жжшные комменты. Поэтому пока будет, как есть.
Я каким-то образом из консоли отключил все комментарии у новых записей. Команду не помню, так что подсказать не могу.
О! Точно, была такая галочка. Сейчас пойду найду.
А вы не решили проблему с перекодировкой тела поста из utf-8 в NNNN ?
Неа. Судя по всему, это "фича" ЖЖ. Что ему сказать, чтобы он этого не делал, я не нашел.
Неприятно.
WP оно нормально сабмитится, но работает через XML-RPC.
А вот блог http://blog.lexa.ru/ который транслируется в http://alextutubalin.livejournal.com/ вроде как лишен данной проблемы...
Да. Тутубалин пользуется другим плагином, который ходит вообще через /interface/flat. Это где-то в соседней записи в комментариях мы с ним на эту тему говорили.
Вижу... MTLJPost. А он его не выкладывал в свободный доступ?
А плагинов под MT реализующих /interface/xmlrpc нет?
Сам плагин лежит в сети, естественно. Алекс упоминал какие-то нетривиальные усилия по прикручиванию его к MT4, но деталей я не видел. Меня crossposter с патчем вполне устраивает как временная мера, пока читатели не перейдут на чтение фида напрямую или через трансляционный аккаунт в ЖЖ. Поэтому эти NNNN меня расстраивают не сильно.
Хм... былобы интересно услышать как именно его можно прикрутить. Он же вроде как только под 3.х версии и ниже.
Ну если не найду выхода — придется мириться с NNNN...