document.write('
'); // TwitterAPIから受け取ったJSON…というかオブジェクト var jsonArray = {"errors":[{"code":32,"message":"Could not authenticate you."}]}; for (var i = 0; i < jsonArray.length; i++) { var obj = jsonArray[i]; if (obj.user.protected == true) { document.write('
'); document.write('現在、鍵が掛かってます…'); document.write('Protected'); document.write('
'); document.write('
'); document.write('
'); document.write('
'); break; } /* * ツイート本文の加工 */ // ツイート本文 var tweet = obj.text; // 改行 tweet = tweet.replace(/\n/g, '
'); // Twitter公式のサムネイル挿入 if (obj.entities.media) { if (obj.entities.media[0].type == "photo") { tweet = tweet.replace(obj.entities.media[0].url, '
'); } } // 一般URL短縮「t.co」を展開&リンク var urlCnt = obj.entities.urls.length; if (urlCnt > 0) { for (var j = 0; j < urlCnt; j++) { tweet = tweet.replace(obj.entities.urls[j].url, '' + obj.entities.urls[j].expanded_url + ''); } } // instagramのサムネイル挿入&リンク処理 tweet = tweet.replace(/\"_blank\">https:\/\/instagram[.]com\/p\/([\w\-]+)\/<\/a>/g, '"_blank">
'); // Twitpicのサムネイル挿入&リンク処理 tweet = tweet.replace(/\"_blank\">http:\/\/twitpic[.]com\/(\w+)<\/a>/g, '"_blank">
'); // フォト蔵のサムネイル挿入&リンク処理( tweet = tweet.replace(/\"_blank\">http:\/\/photozou[.]jp\/photo\/show\/([0-9]+)\/([0-9]+)<\/a>/g, '"_blank">
'); // yFlogのサムネイル挿入&リンク処理 tweet = tweet.replace(/\"_blank\">http:\/\/yfrog[.]com\/(\w+)<\/a>/g, '"_blank">
'); // twitvideoのサムネイル挿入&リンク処理 tweet = tweet.replace(/\"_blank\">http:\/\/twitvideo[.]jp\/(\w+)<\/a>/g, '"_blank">
'); // 携帯百景のリンク処理 tweet = tweet.replace(/\"_blank\">http:\/\/movapic[.]com\/pic\/(\w+)<\/a>/g, '"_blank">'); // リツイートを自分のツイートと明確に区別 if (obj.retweeted_status) { var retweet_ref_name = obj.retweeted_status.user.name; retweet_ref_url = tweet = tweet.replace(/^RT @([\w]+):/g, '【' + retweet_ref_name + 'さんのTweet紹介】
'); } // 宛先のリンク var mentionCnt = obj.entities.user_mentions.length; if (mentionCnt > 0) { for (var j = 0; j < mentionCnt; j++) { tweet = tweet.replace('@' + obj.entities.user_mentions[j].screen_name, '@' + obj.entities.user_mentions[j].screen_name + ''); } } // ハッシュタグをリンク var hashtagCnt = obj.entities.hashtags.length; if (hashtagCnt > 0) { for (var j = 0; j < hashtagCnt; j++) { tweet = tweet.replace('#' + obj.entities.hashtags[j].text, '#' + obj.entities.hashtags[j].text + ''); } } // 本文が 0x5C で終わると「\'」→ unterminated string literal(閉じてないことになるので) // 0x5C で終わるのはキャラクタ2バイト目が 0x5C 、すなわち 0x5C の重複ケース tweet = tweet.replace("/\\\\$/", "\\ "); // JavaScriptで¥が消える件 tweet = tweet.replace('\\', '\\\\'); // シングルクォートはJavaScriptの括りを破壊してしまうので tweet = tweet.replace("/'/", "\'"); /* * ツイート本文の出力 */ document.write('
'); document.write(tweet); document.write('
'); /* * 付帯情報の組み立て */ // ツイート本体のURL tweetUrl = 'https://twitter.com/' + 'nigaradi' + '/statuses/' + obj.id_str; // 返信ツイートアイコン var replyTo = ""; if (obj.in_reply_to_status_id_str) { replyTo = '' + '返信元ツイートを見る' + ' '; } // 位置情報アイコン var point = ""; if (obj.geo) { if (obj.geo.coordinates.length) { var lat = obj.geo.coordinates[0]; var lng = obj.geo.coordinates[1]; point = '' + '位置情報 '; } } // ツイート日時 var dateValues = obj.created_at.split(" "); dateValue = dateValues[1] + " " + dateValues[2] + ", " + dateValues[5] + " " + dateValues[3]; var date = new Date(dateValue); date.setHours(date.getHours() + 9); var year = date.getYear(); if (year < 2000) { year += 1900; } var mon = '0' + (date.getMonth() + 1); mon = mon.substr(mon.length - 2); var day = '0' + date.getDate(); day = day.substr(day.length - 2); var dy = date.getDay(); dy = new Array("(日)","(月)","(火)","(水)","(木)","(金)","(土)")[dy]; var hour = '0' + date.getHours(); hour = hour.substr(hour.length - 2); var minute = '0' + date.getMinutes(); minute = minute.substr(minute.length - 2); var dateText = year + "/" + mon + "/" + day + dy + " " + hour + ":" + minute; // リツイートされた件数 var rt_stat = ""; if (obj.retweet_count) { rt_stat = ''
				+ obj.retweet_count
				+ '人からリツイートされてる×' + obj.retweet_count; } // お気に入りにされた件数 var fav_stat = ""; if (obj.favorite_count) { fav_stat = ''
				 + obj.favorite_count
				 + '人のお気に入り×' + obj.favorite_count; } // リツイート数とお気に入り数の間のスペーサー var spacer = ""; if (obj.retweet_count && obj.favorite_count) { spacer = " "; } // 端末判別 var ua = obj.source; if (ua.match(/movatwi|yubitter|Keitai/i)) { ua = ' 携帯から投稿'; } else if (ua.match(/iphone/i)) { ua = ' iPhoneから投稿'; } else if (ua.match(/Echofon/i)) { ua = ' iPhoneから投稿'; } else if (ua.match(/android/i)) { ua = ' Androidから投稿'; } else { ua = ' PCから投稿'; } // 付帯情報のフォーマッティング var incidental = '
' + replyTo + point + '' + dateText + '' + ua + '
' + rt_stat + spacer + fav_stat + '
'; /* * 付帯情報の出力 */ document.write(incidental); } document.write('
');