So-net無料ブログ作成
検索選択
RSS [RSS1.0] [RSS2.0]

ついっぷる、Twilog、favologをTwitter公式埋め込み表示に変えるブックマークレット

 ついっぷる、Twilog、favolog内のツイートをTwitter公式の埋め込み表示に変えるためのブックマークレットを作った。例えば、Twitter公式のホームタイムラインではツイートの取得漏れがあって見逃してしまうのでついっぷるを使いたいけれど画像を確認する手間が面倒な場合に、ついっぷる内でTwitter公式の埋め込み表示に変えちゃえば楽になる。Twilog、favologでは必要なツイートを検索した後に、Twitterカードによるリンク先の情報も一度に確認したいなど、Twitter公式の表示でしか見られないものをTwitter公式ページを開かずに見ることができる。

埋込表示(元のツイートを含める場合)
埋込表示(元のツイートを含めない場合)

 それぞれのソースは次の通り。見やすいように改行やスペースを追加した。また、ついっぷる、Twilog、favologの仕様変更で、このブックマークレットは使えなくなる可能性もあるので、注意が必要。

元のツイートを含める場合

javascript:
(function(){
var url=document.location.href;
switch(url.split("/")[2]){
    case "twilog.org":
        var tweetclass="tl-tweet";
        var linkclass="tl-posted";
        var turn=0;
    break;
    case "favolog.org":
        var tweetclass="tl-tweet";
        var linkclass="rtime";
        var turn=0;
    break;
    case "twipple.jp":
        var tweetclass="tweetBox";
        var linkclass="tweetBottomInfo";
        var turn=0;
    break;
}
var script=document.createElement("script");
script.src="//platform.twitter.com/widgets.js";
script.charset="utf-8";
script.async="async";
document.body.appendChild(script);
var gettweet=document.getElementsByClassName(tweetclass);
for(var i=0;i<gettweet.length;i++) {
    var link=gettweet[i].getElementsByClassName(linkclass)[0];
    if(typeof link!=="undefined") {
        var id=gettweet[i].getAttribute("id");
        link=link.getElementsByTagName("a")[turn].outerHTML;
        document.getElementById(id).innerHTML='<blockquote class="twitter-tweet" data-lang="ja">'+link+'</blockquote>';
    };
};
alert("There are "+i+" tweets.");
})();

元のツイートを含めない場合

javascript:
(function(){
var url=document.location.href;
switch(url.split("/")[2]){
    case "twilog.org":
        var tweetclass="tl-tweet";
        var linkclass="tl-posted";
        var turn=0;
    break;
    case "favolog.org":
        var tweetclass="tl-tweet";
        var linkclass="rtime";
        var turn=0;
    break;
    case "twipple.jp":
        var tweetclass="tweetBox";
        var linkclass="tweetBottomInfo";
        var turn=0;
    break;
}
var script=document.createElement("script");
script.src="//platform.twitter.com/widgets.js";
script.charset="utf-8";
script.async="async";
document.body.appendChild(script);
var gettweet=document.getElementsByClassName(tweetclass);
for(var i=0;i<gettweet.length;i++) {
    var link=gettweet[i].getElementsByClassName(linkclass)[0];
    if(typeof link!=="undefined") {
        var id=gettweet[i].getAttribute("id");
        link=link.getElementsByTagName("a")[turn].outerHTML;
        document.getElementById(id).innerHTML='<blockquote class="twitter-tweet" data-conversation="none" data-lang="ja">'+link+'</blockquote>';
    };
};
alert("There are "+i+" tweets.");
})();


ソネブロがソネブロ形式でインポートできなくなった

 私の【正己 (self7777) from Twitter:So-netブログ】では、毎日「ツイートまとめ投稿」を利用して自動的に自分のツイートの一日分をブログに投稿しているのだが、一か月分の自動投稿が終わったら自分好みのスタイルに変更することにしている。その時に役立つのが、記事のインポート機能である。

「記事管理」の「イン/エクスポート」からブログのデータをインポート(読み込み)することができます。

インポートできるデータはMT(MovableType)形式かSo-netブログオリジナル形式になります。
MT(MovableType)形式に対応している他社のブログからの引っ越しや、同じSo-netブログからの引っ越しの際に、簡単にデータを移行することができます。

  1. インポートファイル
    インポートするファイルを選択してください。インポートできるファイルはMT(MovableType)形式かSo-netブログオリジナル形式のどちらかになります。拡張子が.logのファイルを選択してください。
  2. ファイル形式
    他社からの引っ越しの場合は、MT(MovableType)形式を選択してください。
    既にSo-netブログをご利用の場合で、So-netブログオリジナル形式でデータをエクスポートしている場合は、オリジナル形式を選択してください。
インポート(読み込み):使い方 マニュアル:So-netブログ

 私はSo-netブログオリジナル形式で一か月分の記事を含むファイルを作成してSo-netブログオリジナル形式でインポートしていた。昨年の12月分をインポートした1月の何日かまでは問題が無かった。しかし、1月分のインポートを忘れ、2月分と一緒に3/9にインポートしようとした時に問題が起こった。インポート画面が変わっていたのである。

新しいインポート画面(クリックして拡大)

 見ると、インポートするファイルの形式が選択できなくなっている。複数の形式でインポートできるようであるが、選択しなくても良いらしい。しかし、その中にSo-netブログオリジナル形式が無い!
 ソネブロに備わったインポート機能なのだからSo-netブログオリジナル形式でもインポートできるだろうと試してみたら、インポートはできた。しかし、全ての記事が下書きになってしまった。下書きになった記事を選択して公開したら、ファイル名がソネブロのデフォルトになってしまった。ちゃんとMT(MovableType)形式でインポートした方が良さそうである。
 MT(MovableType)形式とSo-netブログオリジナル形式はどのように違うのだろうか。幸い、ソネブロの記事をMT(MovableType)形式だけでなく、So-netブログオリジナル形式でエクスポートできるらしい。

「記事管理」の「イン/エクスポート」からブログのデータをエクスポート(書き出し)することができます。

エクスポートできるデータはMT(MovableType)形式かSo-netブログオリジナル形式になります。
データのバックアップをとったり、同じSo-netブログからのお引越しの際に簡単にデータを移行することができます。

  1. ファイル形式
    エクスポートできる形式はMT(MovableType)形式 かSo-netブログオリジナル形式 のどちらかになります。
    So-netブログオリジナル形式を選択した場合「共通テーマ」の設定をそのまま保持することができます。
    他のSo-netブログに移行する場合やバックアップとしてご利用いただく場合は、オリジナル形式をお勧めいたします。
エクスポート(書き出し):使い方 マニュアル:So-netブログ

 テスト用のブログの記事をMT(MovableType)形式とSo-netブログオリジナル形式の両方でエクスポートして比較してみた。

 MT(MovableType)形式では次のようになっていた。

AUTHOR: 正己
TITLE: ここにタイトルを書く
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 0
PRIMARY CATEGORY:
CATEGORY: 2017年
DATE: 02/14/2017 21:36:13
-----
BODY:
本文はここ。
-----
EXTENDED BODY:

-----
EXCERPT:

-----
KEYWORDS:
MT形式のインポート
-----
--------

 一方、So-netブログオリジナル形式は次のようになっていた。MT(MovableType)形式と異なる所を赤い太文字にした。

AUTHOR: 正己
TITLE: ここにタイトルを書く
STATUS: 1
ALLOW COMMENTS: 1
ALLOW PINGS: 0
CONVERT BREAKS: 1
PRIMARY CATEGORY: パソコン・インターネット
CATEGORY: 2017年
DATE: 02/14/2017 21:36:13
ALLOW COMMENT CAPTCHA: 1
ALLOW NICE: 1
NAME: test20170214
-----
BODY:
本文はここ。
-----
EXTENDED BODY:

-----
EXCERPT:

-----
KEYWORDS:
MT形式のインポート
-----
--------

 まず、So-netブログオリジナル形式でインポートした時に全てが下書きになってしまったのは、MT(MovableType)形式で「STATUS: Publish」とすべき所が「STATUS: 1」となっていたからだろう。
 So-netブログオリジナル形式で「PRIMARY CATEGORY: パソコン・インターネット」となっている所は、どうやら「共通テーマ」に相当するらしい。

自分で設定したマイカテゴリーとは別に、記事をSo-ブログ共通のテーマに登録することができます。

共通テーマ:使い方 マニュアル:So-netブログ

 しかし、この「共通テーマ」はMT(MovableType)形式では「PRIMARY CATEGORY:」となって消えている。「共通テーマ」を設定してインポートできなくなったらしい。

 「ALLOW COMMENT CAPTCHA: 1」と「ALLOW NICE: 1」と「NAME: test20170214」はMT(MovableType)形式では無くなっている。
 「ALLOW COMMENT CAPTCHA: 1」はコメント時の画像認証を有効にするか否かの設定らしい。「ALLOW NICE: 1」はソネブロ独自の機能である「nice!」を受け付けるか否かなどの設定らしい。
 「NAME: test20170214」は特に重要で記事のファイル名(=URL)を指定するための設定で、ソネブロではデフォルトで投稿日を使って「2017-02-14」(URLはhttp://~.blog.so-net.ne.jp/2017-02-14)となるのを「test20170214」(URLはhttp://~.blog.so-net.ne.jp/test20170214)とすることができる。これが無くなったのは困る。例えば、同じブログからのリンクで、例えば「/test20170214」としていた所を「/2017-02-14」に変えなくてはいけなくなる。また、私の【正己 (self7777) from Twitter:So-netブログ】の場合はURLが、例えば http://self7777.blog.so-net.ne.jp/20170214 になるようにしてインポートしていたのに、これからは http://self7777.blog.so-net.ne.jp/2017-02-14 のようになってしまって、統一性が無くなる。
 どうやら、MT(MovableType)形式にも「BASENAME:」というものがあるらしく、これがSo-netブログオリジナル形式の「NAME:」に相当しそうである(参照)。しかし、ソネブロのエクスポートファイルには「BASENAME:」が無かったし、MT(MovableType)形式でインポートする時に「BASENAME:」を追加して試したが、ファイル名が指定した通りにはならなかった。これについては対策が全く思いつかない。どうしたら良いのだろうか?

 それにしても、ソネブロのインポート機能の仕様は、いつ変わったのだろうか。ソネブロの「What's new?」では情報を見つけられなかった。
 「インポート機能を使ったブログ移行方法」を見ると、新しいインポート画面と似た画像がある。

  1. お使いのブログサービスがMT(Movable Type)形式で記事データをエクスポートできることを確認し、記事をエクスポートします。
  2. 「新規登録」ボタンからSo-netブログに登録します。So-netブログへの登録はメールアドレスだけで行えます。
  3. お好みのスキンを選択して、ブログURLとタイトル、ブログ説明文を決定し、ブログを作成します。
  4. 管理ページの[記事管理]→[インポート・エクスポート]のページからエクスポートしたファイルをSo-netブログにインポートします。
    記事をインポート
    • 上図「3」:1.でエクスポートしたファイルを選択します。
    • 上図「4」:MT(Movable Type)形式を選択します。
    • 上図「5」:1.でエクスポートしたファイルの文字コードを選択します。
        例)
        Shift_JIS:「ヤプログ!プラス」
        UTF-8:「ココログ」、「はてなダイアリー」、「ヤプログ」、「FC2(新仕様)」
        EUC-JP:「FC2(旧仕様)」
    • 上図「6」:「So-netブログ」、「はてなダイアリー」、「ココログ」のエクスポートファイルをインポートする場合は、画像も一緒にインポートできます。
インポート機能を使ったブログ移行方法:使い方 マニュアル:So-netブログ

 ただ、ここにも「ファイル形式」に「So-netブログオリジナル形式」があるので、以前のままである。

 さて、再び「So-netブログオリジナル形式」でインポートできるようになるのだろうか?
 仕様を変えるのなら、せめて告知したからにしてほしいのだが、私が見逃したのだろうか?
 【正己 (self7777) from Twitter:So-netブログ】ではインポート前に「ツイートまとめ投稿」で投稿された記事をすべて削除することにしていて、仕様が変わったことに気付かずに削除してしまった。まだインポートできないから1月分と2月分の記事が抜けたままである。記事のURLの件を諦めるのなら、So-netブログオリジナル形式のファイルをMT(Movable Type)形式に変換してからインポートすれば良い。どうすべきか、まだ迷っている。迷っている間は1月分と2月分の記事が抜けたままである。


Facebookで「リンクに問題があるか、ページが削除された可能性があります」に

 最近はフェイスブックの写真にリンクを張っているツイートを見ることが増えたのだが、ツイートに表示されているURLをクリックしても、次のような「ページが見つかりません」というタイトルで「このページはご利用いただけません リンクに問題があるか、ページが削除された可能性があります」と書かれたメッセージが表示されてしまう。

「ページが見つかりません」「このページはご利用いただけません リンクに問題があるか、ページが削除された可能性があります」

 インターネットで検索して原因を探したら、ブロックされているのではないかという指摘があった。

この場合の確認方法ですが、いったんFacebookをログアウトしていただいて、同じURLを表示してみてください。
ログアウトしてから、その友達のページだったりFacebookページを表示するとログインしていないユーザー向けの画面が表示されます。
このページが表示されるようでしたら、そのユーザーからブロックされていると判断できます。
ログアウトした状態でも、同じように「このページはご利用いただけません」と表示される場合には、実際にそのページが削除されたか、URLが間違っているかということになります。
Facebookの使い方★リンクに問題があるかページが削除された可能性があります と表示される【よくある質問014】 | ソーシャル★マーケティングの教科書 改訂版

 私の場合はログアウトしたら表示された。ログインやアカウントの作成を求めるメッセージが邪魔だが見ることはできた。
 では私のアカウントはブロックされているのだろうか。冗談ではない。ブロックされる謂れは無い。私のアカウントは完全に非公開で、誰にも友達申請をしてないし、「シェア」も「いいね」も全く行っていない。私のアカウントを知っている人は皆無と言って良いほどである。そもそも、見ず知らずの人のアカウントでも表示できない。例えば、次のURLにアクセスしても「リンクに問題があるか、ページが削除された可能性があります」と表示されるが、私はフェイスブック (Facebook)さんにブロックされているのだろうか?

https://www.facebook.com/photo.php?fbid=10153651746069024

 フェイスブック (Facebook)さんのタイムラインからアクセスすれば表示されるのにブロックされているとは、いったいどのような仕様なのだろうか?

 この問題は解決策も見つからず、しばらく保留にしていたのだが、久しぶりに愚痴った後に「photo.php?fbid=」で検索したら、偶然、次のようなツイートを見つけた。

 URLから「photo.php?fbid=」を削除したら表示されるらしい。
 さっそく試したら、表示された。フェイスブックからログアウトして見るよりも大きな画像で表示された。例えば、上のURLは次のようなURLに変換して表示すれば良い。

https://www.facebook.com/10153651746069024

 これで解決策が見つかった。ツイートのURLをリンクして「リンクに問題があるか、ページが削除された可能性があります」と表示されるのは仕方がないとして、次のブックマークレットをクリックしてURLから「photo.php?fbid=」を削除して表示すれば、ストレスを減らして見ることができる。

FBフォト

javascript:(function(){var%20url=document.location.href;if(url.indexOf("photo.php?fbid=")!=-1){var%20newurl=url.replace("photo.php?fbid=","");location.href=newurl;};})();

URLの後ろに「&utm_source=dlvr.it&utm_medium=facebook」など余分なパラメータが付いていると表示できないバグがあったので以下のように訂正した。

javascript:(function(){var%20url=document.location.href;if(url.indexOf("fbid=")!=-1){var%20fbid=url.split("fbid=")[1].split("&")[0];var%20newurl="https://www.facebook.com/"+fbid;location.href=newurl;};})();

 同じ問題で困っている人は試してほしい。
 それにしても、どうして「リンクに問題があるか、ページが削除された可能性があります」と表示されてしまうのだろうか。「photo.php?fbid=」を含むURLにアクセスしても問題なく表示される人がいるから、問題が認識されていないのだろう。問題なく表示される人と、私のように「リンクに問題があるか、ページが削除された可能性があります」と表示されてしまう人の差は何なのだろうか。それは謎のままである。謎が解明しても、例えば私のアカウントを公開すれば表示されるということなら、確認することはできないが…。


ツイッターのタイムラインからツイートが消えた

 IE11でツイッターのタイムライン https://twitter.com/ を見ていた時に並び順か何か違和感があって確認したら「前回ログインからのできごと」という枠で括られたツイートがあった。普通に時間順に表示したかったので右上の閉じるボタン × をクリックして閉じて、「同じようなツイートの表示を減らす」か何かをクリックした後、表示されるはずの複数のツイートが表示されないトラブルが起こった。表示されないツイートのアカウントはフォローしていてブロックしていないので表示されるツイートもある。自分がフォローしていない人へのリプライでもない。そのアカウントのプロフィールページ(ユーザータイムライン)では見ることができる。ついっぷるでも見ることができる。Firefox 50.0.2 でIE11と同じようにタイムラインを表示しても見ることができる。大切な人の大切なツイートを見逃しかねないトラブルなので解消する方法を検索して探したけれど私と全く同じトラブルは見つからず、解消方法も分からなかった。
 似たようなトラブルを指摘している2016/3/26のブログ記事は見つけた。【【Twitter】ツイートが全部表示されない(抜けがある)原因】に次のように書いてある。

twitterを使っていて自分以外のユーザーのアカウントページに行き、ツイートを閲覧する事があると思います。この時、ツイートが全部見られない事が、実はあります。
例えば「A・B・C・D」という4つのツイートを本来しているのに、見えるのは「A・C」の2つだけ・・・と言う事があります。これは一体なぜなのでしょうか?
【Twitter】ツイートが全部表示されない(抜けがある)原因

 2014年2月14日 09:04 のTwitterサポートのツイートが紹介されている。

 私が遭遇したトラブルはプロフィールタイムラインではなく、ホームのタイムラインなので違うかもしれないが、ログアウトした後にキャッシュを削除して再ログインすれば表示されるかもしれないということなので試してみた(Internet Explorer11のブラウザキャッシュ(インターネット一時ファイル)の削除方法)。ツールボタンをクリックして表示されたメニューから「セーフティー」→「閲覧履歴の削除」を選択して「閲覧の履歴の削除」ウインドウで「インターネット一時ファイルおよびWebサイトのファイル」をチェックして「削除」ボタンをクリックすれば良い。
 しかし、残念ながら、この方法では消えたツイートは表示されなかった。「履歴」も削除したけれどダメだった。
 翌朝、ブラウザのトラブルではクッキーを削除すれば解消されることを思い出したので試してみた。ツールボタンをクリックして表示されたメニューから「セーフティー」→「閲覧履歴の削除」を選択して「閲覧の履歴の削除」ウインドウで「クッキーとWebサイトデータ」をチェックして「削除」ボタンをクリックすれば良い。

閲覧の履歴の削除

 クッキーを削除すると他のサイトもログアウトしてしまうなど他のサイトに影響があるので避けていたのだが、この方法で消えていたツイートが表示された。
 同じトラブルに遭遇した人はお試しあれ。