<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dw="https://www.dreamwidth.org">
  <id>tag:dreamwidth.org,2016-12-24:2599974</id>
  <title>dump -0f - /dev/mind</title>
  <subtitle>Я знаю Haskell, OCaml, GSM, эндофункторы и много других страшных слов</subtitle>
  <author>
    <name>Dmitry Astapov</name>
  </author>
  <link rel="alternate" type="text/html" href="https://dastapov.dreamwidth.org/"/>
  <link rel="self" type="text/xml" href="https://dastapov.dreamwidth.org/data/atom"/>
  <updated>2017-07-12T21:46:28Z</updated>
  <dw:journal username="dastapov" type="personal"/>
  <entry>
    <id>tag:dreamwidth.org,2016-12-24:2599974:129372</id>
    <link rel="alternate" type="text/html" href="https://dastapov.dreamwidth.org/129372.html"/>
    <link rel="self" type="text/xml" href="https://dastapov.dreamwidth.org/data/atom/?itemid=129372"/>
    <title>Как я переезжаю в dreamwidth, часть вторая: фиксим ссылки</title>
    <published>2017-07-12T21:24:18Z</published>
    <updated>2017-07-12T21:46:28Z</updated>
    <category term="linux"/>
    <category term="исход_из_жж"/>
    <dw:security>public</dw:security>
    <dw:reply-count>5</dw:reply-count>
    <content type="html">У меня в ЖЖ было куча ссылок между постами, и я хотел в DW поправить их так, чтобы они вели на соответствующие посты в DW.&lt;br /&gt;&lt;br /&gt;Оказалось, что все велосипеды уже придуманы до нас :) &lt;a href="http://bluedrag.dreamwidth.org/296158.html?view=628446"&gt;Вот тут&lt;/a&gt; человек наколхозил скрипт, который пробегает по архиву, сделанному ljdump, собирает соответствия между URL-ами в ЖЖ и DW, правит посты и обновляет их в DW.&lt;br /&gt;&lt;br /&gt;Из коробки скрипт у меня не заработал, пришлось его чуть поправить, чтобы он умел работать с ЖЖ-никами, в которых есть подчеркивания (как это было у меня). Результат на github-е (&lt;a href="https://github.com/adept/ljdump/blob/master/fix_links.py"&gt;https://github.com/adept/ljdump/blob/master/fix_links.py&lt;/a&gt;), запускать из директории с результатами ljdump. &lt;br /&gt;&lt;br /&gt;Оно будет показывать diff для всех поправленных постов и после подтверждения обновлять их. Можно выбрать альтернативную программу для сравнения через переменную окружения DIFF.&lt;br /&gt;&lt;br /&gt;Я запускал так:  DIFF=patdiff ~/path/to/fix_links.py&lt;br /&gt;&lt;br /&gt;Вроде бы как все переехало нормально, ссылки поправлены, ничего не поломалось.&lt;br /&gt;&lt;br /&gt;UPD: Заодно, вписав в скрипт пару строк вида url['вот это']='заменить на это', пофиксил все картинки, которые поломались после того, как dropbox закрыл public фолдеры. Красота!&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=dastapov&amp;ditemid=129372" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-24:2599974:129182</id>
    <link rel="alternate" type="text/html" href="https://dastapov.dreamwidth.org/129182.html"/>
    <link rel="self" type="text/xml" href="https://dastapov.dreamwidth.org/data/atom/?itemid=129182"/>
    <title>Как я переезжаю в dreamwidth</title>
    <published>2017-04-06T22:46:34Z</published>
    <updated>2017-04-06T22:46:34Z</updated>
    <category term="исход_из_жж"/>
    <category term="linux"/>
    <dw:security>public</dw:security>
    <dw:reply-count>10</dw:reply-count>
    <content type="html">Сказал сделать импорт всего, importer отругался, что "Unable to load FOAF data", но вроде все из профиля втянул. Что ему не нравиться - неясно, в ЖЖ по ссылке /data/foaf все отлично отдается.&lt;br /&gt;&lt;br /&gt;Взял ljdump.py &lt;a href="https://github.com/ghewgill/ljdump"&gt;отсюда&lt;/a&gt;, добавил два патчика &lt;a href="http://ljdump.livejournal.com/13677.html"&gt;отсюда&lt;/a&gt; и выкачал им все из ЖЖ и из dreamwidth.&lt;br /&gt;&lt;br /&gt;С помощью bash и patdiff сравнил выкачанное, наколхозив вот такой скрипт:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;
#!/bin/bash
lj="$1"
dw="$2"
for l in ${lj}/L-* ; do
    l_url=$(xmlstarlet sel -t -v "event/url" -n $l | grep -o '[0-9]*')
    d=$(ag -l "/${l_url}&amp;lt;/import_source" ${dw})
    d_url=$(xmlstarlet sel -t -v "event/url" -n $d | grep -o '[0-9]*')    
    echo "$l (${l_url}.html) vs ${d} (${d_url}.html)"
    [ -z "$d" ] &amp;amp;&amp;amp; { echo "cant find dw post for $l"; exit 1; }
    patdiff -ascii &amp;lt;(xmlstarlet sel -t -v "event/event" -n $l | \
              sed -re 's#lj (user|comm)="?([^ &amp;amp;"]*)"?[^&amp;amp;]*&amp;amp;gt#user site="livejournal.com" \1="\2"\&amp;amp;gt#g') \
            &amp;lt;(xmlstarlet sel -t -v "event/event" -n $d)
done
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Страшный sed из-за того, что в ссылки на пользователей ЖЖ dreamwidth добавляет site="livejournal.com" и обязательные кавычки вокруг имени пользователя.&lt;br /&gt;&lt;br /&gt;Похоже, не переехало только embedded video, а все остальное - пучком. Настроил кросспост в ЖЖ. Что еще я пропустил? &lt;br /&gt;&lt;br /&gt;Что DW делает с френдами, которые тоже переехали сюда? Как-то их вычисляет/добавляет, или нет?&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=dastapov&amp;ditemid=129182" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
</feed>
