Twilogのバックアップを使ってツイッターの投稿を丸ごと自分のサイトに表示する
Twilogのバックアップファイル"767i_bot-230930.xml.gz"を解凍して得られた"767i_bot-230930.xml"の構造は次の通り。
<tweets>
<tweet>
<id>1655731020979933184</id>
<time>230509 092652</time>
<text>~</text>
</tweet>
<tweet>
<id>1410361141390241797</id>
<time>210701 071434</time>
<text>~</text>
</tweet>
~
</tweets>
「time」の形式が気に入らなければテキストエディタで置換する。(例:検索文字列「<time>(\d{2})(\d{2})(\d{2})\ (\d{2})(\d{2})(\d{2})」、置換文字列「<time>20$1/$2/$3\ $4:$5:$6」)
このファイルを自分のサイトにアップロードして、ブラウザで開いた時に投稿の一覧表を表示する。
その前に、上のコードに次のように使うxslファイル"767i_bot.xsl"を指定する。
<?xml-stylesheet type="text/xsl" href="767i_bot.xsl"?>
<tweets>
~
</tweets>
その"767i_bot.xsl"のコードは次の通り。(一部修正あり)
<xsl:template match="/">
<html>
<head>
<title>@767i_botのtweet</title>
</head>
<body>
<h2><a href="https://twitter.com/767i_bot" target="_blank" title="767i_bot(非公式)@767i_bot / Twitter">@767i_bot</a>のtweet</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th><div>id</div><div>time</div></th>
<th>tweet</th>
</tr>
<xsl:for-each select="tweets/tweet">
<tr>
<td><div><a href="https://twitter.com/767i_bot/status/{id}" target="_blank" title=""><xsl:value-of select="id"/></a></div>
<div style="font-size:120%;font-weight:bold;"><xsl:value-of select="time"/></div></td>
<td><xsl:copy-of select="text"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Twitterのバックアップファイルの中にある"tweets.js"をcsv形式に変換してもらえるサイトがある。ただし、"tweet.js"だった時に作られたものなので、少し"tweets.js"の修正が必要。
- tweet.js loader
- Twitterデータの tweet.js を読み込んで全ツイート履歴を表示するツール「tweet.js loader」を作った - to-me-mo-rrow - 未来の自分に残すメモ -
- tweet.js loaderで「tweets.js」を読み込む方法|めるぽん
csv形式のファイルから必要な情報だけを取り出してTwilogのバックアップファイルのようなxml形式に変換する際に必要なxsdファイル"tweets.xsd"のコードは次の通り。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="tweets">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="tweet" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="tweet">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="id"/>
<xsd:element ref="time"/>
<xsd:element ref="text"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="id" type="xsd:integer"/>
<xsd:element name="time" type="xsd:dateTime"/>
<xsd:element name="text" type="xsd:string"/>
</xsd:schema>
このxsdファイル"tweets.xsd"を使ってcsvからxmlに変換するのはExcelでできる。
Excelの「開発」タブの「ソース」をクリックして右側に表示されたウインドウ内の「XMLの対応付け」をクリックして、ポップアップウインドウの「追加」をクリックして、xsdファイル"tweets.xsd"を選択。ルートを選択するポップアップで「tweets」を選択して「OK」。「XMLの対応付け」ポップアップに選択したファイルが表示されたら「OK」。右側のウィンドウ内に表示された「id」をシートの「id」列の一番上にドラッグ。その他の「time」「text」も同様。「開発」タブの「エクスポート」をクリック。ファイル名を入力して「エクスポート」。以上。
ただし、作成されたxmlファイル内の日時「time」の形式が気に入らなければテキストエディタで置換。(例:検索文字列「<time>(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\.000」、置換文字列「<time>20$1/$2/$3\ $4:$5:$6」)
また、csvファイルをExcelで開く前に「id」の数値の前に「'」を追加しておかないと、Excelが15桁よりも位の低い所を「0」に置き換えてしまう。「'」を追加することで数値ではなく文字列と認識されるので「0」にされない。ただし、xmlファイルを作成した後はテキストエディタで「'」を除去しておく。
そうやって作ったページ。
コメント
コメントを投稿