<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Opml on akky@サイボウズラボ・ブログ</title>
		<link>https://labs.cybozu.co.jp/blog/akky/tags/opml/</link>
		<description>Recent content in Opml on akky@サイボウズラボ・ブログ</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Wed, 30 Aug 2017 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://labs.cybozu.co.jp/blog/akky/tags/opml/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>LiveDwangoReaderからInoreaderへ移行しました</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2017/08/migration-from-livedwangoreader-to-inoreader/</link>
				<pubDate>Wed, 30 Aug 2017 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2017/08/migration-from-livedwangoreader-to-inoreader/</guid>
				<description>&lt;p&gt;素晴らしいRSSリーダーを無料提供してくれてきたライブドアとドワンゴには感謝しかないです。&lt;/p&gt;&#xA;&lt;p&gt;8末のサービス終了が見えてきたので、ついに長年使っていたリーダーからの移行が必要となりました。移行先はとりあえず&lt;a href=&#34;https://jp.inoreader.com/&#34;&gt;Inoreader&lt;/a&gt;です。&lt;/p&gt;&#xA;&lt;p&gt;LDR から opml をエクスポートして、そのファイルを Inoreader の[設定]-[インポート/エクスポート]-[OPML のインポート]で読み込ませます。&lt;/p&gt;&#xA;&lt;p&gt;(30分ぐらい経過)&lt;/p&gt;&#xA;&lt;p&gt;インポート中のプログレスバーが80%ぐらいで止まったまま動きません。別のタブでリーダーを開くと、それなりにフィードの移行はできている模様。表示が80%なだけなのか、80%のフィードしか移行できなかったのか、パッと見わからない。&lt;/p&gt;&#xA;&lt;p&gt;LDRとInoreaderで購読中のフィード数、みたいな情報を探す。LDR の方はフィードの編集で「すべて」の所に件数が表示されました。1200件ぐらい。Inoreader は使い始めたばかりで、購読フィード数的な情報があるのかどうかわかりません。&lt;/p&gt;&#xA;&lt;p&gt;1200件のうち2割が移行できてないとしたらたいへんです。しかし1200件のどれが移行できてないかを調べるのも大変。&lt;/p&gt;&#xA;&lt;p&gt;インポート済の Inoreader からも opml をエクスポートし、二つの opml を比較することにします。オンラインでそういうツールないかなと思ったのだけれどちょっと検索しても見つからず。&lt;/p&gt;&#xA;&lt;p&gt;とりあえず opml のパーザを適当に。&lt;a href=&#34;https://packagist.org/packages/vipnytt/opmlparser&#34;&gt;vipnytt/opmlparser - Packagist&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;composer.json を書く&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;{ &amp;quot;require&amp;quot; : { &amp;quot;vipnytt/opmlparser&amp;quot;: &amp;quot;dev-master&amp;quot; } }&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;opml を配列にしてくれるので、配列の要素を比較するコードを書く。一回限りの利用なので、opml ファイル名は直書きで。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;require_once &#39;vendor/autoload.php&#39;;  $ldrUrlArray = parse(&#39;ldr_exported_20170828.xml&#39;); $inoreaderUrlArray = parse(&#39;Inoreader_Subscriptions_20170830.xml&#39;);  function canonicalizeUrl($originalUrl) { // remove trailing slash // set all into http return preg_replace(&#39;|https:|&#39;, &#39;http:&#39;, rtrim($originalUrl, &#39;/&#39;)); }  function parse($opmlFilename) {  $opmlContents = file_get_contents($opmlFilename); $parser = new vipnytt\OPMLParser($opmlContents);  // get result as Array $array = $parser-&amp;gt;getResult();  $htmlUrlArray = []; array_walk_recursive($array, function($value, $key) use(&amp;amp;$htmlUrlArray) { if ($key == &#39;xmlUrl&#39;) { // or check by other tags like &#39;title&#39;, &#39;xmlUrl&#39;, &#39;htmlUrl&#39;, etc. $canonicalizedValue = canonicalizeUrl($value); $htmlUrlArray[] = $canonicalizedValue; } });  return $htmlUrlArray; }  // show how many items exist before and after //var_dump(count($ldrUrlArray)); //var_dump(count($inoreaderUrlArray));  // show different items var_dump(array_diff($ldrUrlArray, $inoreaderUrlArray)); //var_dump(array_diff($inoreaderUrlArray, $ldrUrlArray));&lt;/code&gt;&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
