//オブジェクトパーサー(トゥート)
function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var templete = "";
if (obj[0]) {
if (tlid === 1) {
}
localStorage.setItem("lastunix_" + tlid, date(obj[0].created_at, "unix"));
}
var actb = "re,rt,fav,qt,del,pin,red";
if (actb) {
var actb = actb.split(",");
var disp = {};
for (var k = 0; k < actb.length; k++) {
if (k < 4) {
var tp = "type-a";
} else {
var tp = "type-b";
}
disp[actb[k]] = tp;
}
}
var qt = localStorage.getItem("quote");
if (qt == "nothing" || !qt) {
var qtClass = "hide";
} else {
if (qt == "apiQuote") {
if (localStorage.getItem("quote_" + acct_id)) {
var qtClass = "";
} else {
var qtClass = "hide";
}
} else {
var qtClass = "";
}
}
var datetype = localStorage.getItem("datetype");
var nsfwtype = localStorage.getItem("nsfw");
var sent = localStorage.getItem("sentence");
var ltr = localStorage.getItem("letters");
var gif = localStorage.getItem("gif");
var imh = localStorage.getItem("img-height");
if (!imh) {
imh = 200;
}
if (imh == "full") {
imh = "auto";
} else {
imh = imh + "px";
}
//独自ロケール
var locale = localStorage.getItem("locale");
if (locale == "yes") {
var locale = false;
}
//ネイティブ通知
var native = localStorage.getItem("nativenotf");
if (!native) {
native = "yes";
}
//クライアント強調
var empCli = localStorage.getItem("client_emp");
if (empCli) {
var empCli = JSON.parse(empCli);
}
//クライアントミュート
var muteCli = localStorage.getItem("client_mute");
if (muteCli) {
var muteCli = JSON.parse(muteCli);
}
//ユーザー強調
var useremp = localStorage.getItem("user_emp");
if (useremp) {
var useremp = JSON.parse(useremp);
}
//ワード強調
var wordempList = localStorage.getItem("word_emp");
if (wordempList) {
var wordempList = JSON.parse(wordempList);
}
//ワードミュート
var wordmuteList = localStorage.getItem("word_mute");
if (wordmuteList) {
var wordmuteList = JSON.parse(wordmuteList);
if (wordmuteList) {
wordmuteList = wordmuteList.concat(mutefilter);
}
} else {
wordmuteList = mutefilter;
}
//Ticker
var tickerck = localStorage.getItem("ticker_ok");
if (tickerck=="yes") {
var ticker = true;
} else if(!ticker || ticker == "no") {
var ticker = false;
}
//Animation
var anime = localStorage.getItem("animation");
if (anime == "yes" || !anime) {
var animecss = "cvo-anime";
} else {
var animecss = "";
}
//Cards
var card = localStorage.getItem("card_" + tlid);
if (!sent) {
sent = 500;
}
if (!ltr) {
var ltr = 500;
}
if (!nsfwtype || nsfwtype == "yes") {
var nsfw = "ok";
} else {
var nsfw;
}
var cwtype = localStorage.getItem("cw");
if (!cwtype || cwtype == "yes") {
var cw = "ok";
} else {
var cw;
}
if (!datetype) {
datetype = "absolute";
}
if (!gif) {
var gif = "yes";
}
if (!imh) {
var imh = "200";
}
if (!emp) {
var emp = [];
}
if (!mute) {
var mute = [];
}
if (!useremp) {
var useremp = [];
}
if (!wordemp) {
var wordemp = [];
}
if (!wordmute) {
var wordmute = [];
}
//via通知
var viashow = localStorage.getItem("viashow");
if (!viashow) {
viashow = "via-hide";
}
if (viashow == "hide") {
viashow = "via-hide";
}
//認証なしTL
if (mix == "noauth") {
var noauth = "hide";
var antinoauth = "";
} else {
var noauth = "";
var antinoauth = "hide";
}
//DMTL
if (type == "dm") {
var dmHide = "hide";
var antidmHide = "";
} else {
var dmHide = "";
var antidmHide = "hide";
}
//マウスオーバーのみ
var mouseover = localStorage.getItem("mouseover");
if (!mouseover) {
mouseover = "";
} else if (mouseover == "yes" || mouseover == "click") {
mouseover = "hide";
} else if (mouseover == "no") {
mouseover = "";
}
//リプカウント
var replyct_view = localStorage.getItem("replyct");
if (!replyct_view) {
replyct_view = "hidden";
}
var local = [];
var times = [];
Object.keys(obj).forEach(function(key) {
var domain = localStorage.getItem("domain_" + acct_id);
var toot = obj[key];
if (type == "dm") {
var dmid = toot.id;
toot = toot.last_status;
}
if (toot.account.display_name) {
var dis_name = escapeHTML(toot.account.display_name);
} else {
var dis_name = toot.account.acct;
}
if (toot.account.emojis) {
var actemojick = toot.account.emojis[0];
} else {
var actemojick = false;
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.account.emojis).forEach(function(key5) {
var emoji = toot.account.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
});
}
var noticeavatar = "";
if (mix == "notf") {
if (gif == "yes") {
noticeavatar = toot.account.avatar;
} else {
noticeavatar = toot.account.avatar_static;
}
noticeavatar = "' + '';
if (toot.type == "mention") {
var what = lang.lang_parse_mentioned;
var icon = "fa-share teal-text";
noticeavatar = "";
} else if (toot.type == "reblog") {
var what = lang.lang_parse_bted;
var icon = "fa-retweet light-blue-text";
if (!locale && localStorage.getItem("bt_" + acct_id)) {
what = localStorage.getItem("bt_" + acct_id);
}
} else if (toot.type == "favourite") {
var what = lang.lang_parse_faved;
var icon = "fa-star yellow-text";
if (!locale && localStorage.getItem("fav_" + acct_id)) {
what = localStorage.getItem("fav_" + acct_id);
}
} else if (toot.type == "poll") {
var what = lang.lang_parse_polled;
var icon = "fa-tasks purple-text";
}
if (tlid == "notf") {
var notfFilHide = "hide";
} else {
var notfFilHide = "";
}
var noticetext = '' + date(toot.created_at, datetype) + '' + dis_name + "(@" + toot.account.acct + ")";
var notice = noticetext;
var memory = localStorage.getItem("notice-mem");
if (popup >= 0 && obj.length < 5 && noticetext != memory) {
if (localStorage.getItem("hasNotfC_" + acct_id) != "true") {
if (toot.type == "mention") {
var replyct = localStorage.getItem("notf-reply_" + acct_id);
$(".notf-reply_" + acct_id).text(replyct * 1 - -1);
localStorage.setItem("notf-reply_" + acct_id, replyct * 1 - -1);
$(".notf-reply_" + acct_id).removeClass("hide");
var sound = localStorage.getItem("replySound");
if (sound == "default") {
var file = "../../source/notif3.wav";
}
} else if (toot.type == "reblog") {
var btct = localStorage.getItem("notf-bt_" + acct_id);
$(".notf-bt_" + acct_id).text(btct * 1 - -1);
localStorage.setItem("notf-bt_" + acct_id, btct * 1 - -1);
$(".notf-bt_" + acct_id).removeClass("hide");
var sound = localStorage.getItem("btSound");
if (sound == "default") {
var file = "../../source/notif2.wav";
}
} else if (toot.type == "favourite") {
var favct = localStorage.getItem("notf-fav_" + acct_id);
$(".notf-fav_" + acct_id).text(favct * 1 - -1);
localStorage.setItem("notf-fav_" + acct_id, favct * 1 - -1);
$(".notf-fav_" + acct_id).removeClass("hide");
var sound = localStorage.getItem("favSound");
if (sound == "default") {
var file = "../../source/notif.wav";
}
}
}
if (popup > 0) {
M.toast({ html: "[" + domain + "]" + escapeHTML(toot.account.display_name) + what, displayLength: popup * 1000 });
}
//通知音
if (sound == "c1") {
var file = localStorage.getItem("custom1");
} else if (sound == "c2") {
var file = localStorage.getItem("custom2");
} else if (sound == "c3") {
var file = localStorage.getItem("custom3");
} else if (sound == "c4") {
var file = localStorage.getItem("custom4");
}
if (file) {
request = new XMLHttpRequest();
request.open("GET", file, true);
request.responseType = "arraybuffer";
request.onload = playSound;
request.send();
}
if (native == "yes") {
var os = localStorage.getItem("platform");
var options = {
body: toot.account.display_name + "(" + toot.account.acct + ")" + what + "\n\n" + $.strip_tags(toot.status.content),
icon: toot.account.avatar
};
var n = new Notification("TheDesk:" + domain, options);
}
if (localStorage.getItem("hasNotfC_" + acct_id) != "true") {
$(".notf-icon_" + acct_id).addClass("red-text");
}
localStorage.setItem("notice-mem", noticetext);
noticetext = "";
}
var if_notf = 'data-notfIndv="' + acct_id + "_" + toot.id + '" data-notf="' + toot.id + '"';
var toot = toot.status;
var uniqueid = toot.id;
var dis_name = escapeHTML(toot.account.display_name);
if (toot.account.emojis) {
var actemojick = toot.account.emojis[0];
} else {
var actemojick = false;
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.account.emojis).forEach(function(key5) {
var emoji = toot.account.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
});
}
} else {
var if_notf = "";
if (toot.reblog) {
if (gif == "yes") {
noticeavatar = toot.account.avatar;
} else {
noticeavatar = toot.account.avatar_static;
}
noticeavatar = "' + '';
var rebtxt = lang.lang_parse_btedsimple;
var rticon = "fa-retweet light-blue-text";
if (localStorage.getItem("domain_" + acct_id) == "imastodon.net" && !locale) {
rebtxt = ":「わかるわ」";
} else if (localStorage.getItem("domain_" + acct_id) == "mstdn.osaka" && !locale) {
rebtxt = "がしばいた";
}
var notice = '' + dis_name + "(@" + toot.account.acct + ")
";
var boostback = "shared";
var uniqueid = toot.id;
var toot = toot.reblog;
var dis_name = escapeHTML(toot.account.display_name);
if (!dis_name) {
dis_name = toot.account.acct;
}
if (toot.account.emojis) {
var actemojick = toot.account.emojis[0];
} else {
var actemojick = false;
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.account.emojis).forEach(function(key5) {
var emoji = toot.account.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
});
}
} else {
var uniqueid = toot.id;
var notice = "";
var boostback = "unshared";
//ユーザー強調
if (toot.account.username != toot.account.acct) {
var fullname = toot.account.acct;
} else {
var domain = localStorage.getItem("domain_" + acct_id);
var fullname = toot.account.acct + "@" + domain;
}
if (useremp) {
Object.keys(useremp).forEach(function(key10) {
var user = useremp[key10];
if (user == fullname) {
boostback = "emphasized";
}
});
}
}
}
if (toot.content == "") {
var content = " ";
} else {
var content = toot.content;
}
if (content) {
var id = toot.id;
if (mix == "home") {
var home = "";
var divider = '
';
} else {
var home = "";
var divider = '';
}
if (toot.account.locked) {
var locked = ' ';
} else {
var locked = "";
}
if (!toot.application) {
var via = "";
viashow = "hide";
} else {
var via = escapeHTML(toot.application.name);
if (empCli) {
//強調チェック
Object.keys(empCli).forEach(function(key6) {
var empCliList = empCli[key6];
if (empCliList == via) {
boostback = "emphasized";
}
});
}
if (muteCli) {
//ミュートチェック
Object.keys(muteCli).forEach(function(key7) {
var muteCliList = muteCli[key7];
if (muteCliList == via) {
boostback = "hide";
}
});
}
}
if (mix == "pinned") {
boostback = "emphasized";
}
if (toot.spoiler_text && cw) {
var spoil = escapeHTML(toot.spoiler_text);
var spoiler = "cw cw_hide_" + toot.id;
var api_spoil = "gray";
var spoiler_show = '' + lang.lang_parse_cwshow + "
";
} else {
if (content) {
var ct1 = content.split("").length + content.split("
").length - 2;
var ct2 = content.split("").length + content.split("
").length - 2;
} else {
var ct1 = 100;
var ct2 = 100;
}
if (ct1 > ct2) {
var ct = ct1;
} else {
var ct = ct2;
}
if ((sent < ct && $.mb_strlen($.strip_tags(content)) > 5) || ($.strip_tags(content).length > ltr && $.mb_strlen($.strip_tags(content)) > 5)) {
var content = '' + lang.lang_parse_fulltext + "
" + content;
var spoil = '' + $.mb_substr($.strip_tags(content), 0, 100) + '' + lang.lang_parse_autofold + "";
var spoiler = "cw cw_hide_" + toot.id;
var spoiler_show = '' + lang.lang_parse_more + "
";
} else {
var spoil = escapeHTML(toot.spoiler_text);
var spoiler = "";
var spoiler_show = "";
}
}
var urls = $.strip_tags(content)
.replace(/\n/g, " ")
.match(/https?:\/\/([^+_]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/);
urlsck = content.match(/(https?):\/\/([^<>]*?)\/([^"]*)/g);
if (urlsck) {
for (var urlct = 0; urlct < urlsck.length; urlct++) {
var urlindv = urlsck[urlct];
urlCont = urlindv.match(/(https?):\/\/([^a-zA-Z0-9.-]*?)\.(.+?)\/([^"]*)/);
if (urlCont) {
urlindv = urlindv.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&");
var encoded = encodeURI(urlCont[4]);
var punycoded = "xn--" + punycode.encode(urlCont[2]);
var eUrl = urlCont[1] + "://" + punycoded + "." + urlCont[3] + "/" + encoded;
var regExp = new RegExp('href="' + urlindv + '"', "g");
content = content.replace(regExp, 'href="' + eUrl + '"');
}
}
}
if (urls) {
var analyze = "' + lang.lang_parse_url + "
";
} else {
var analyze = "";
}
var viewer = "";
var hasmedia = "";
var youtube = "";
//Poll
var poll = "";
if (toot.poll) {
var poll = pollParse(toot.poll, acct_id);
}
var mediack = toot.media_attachments[0];
//メディアがあれば
var media_ids = "";
if (mediack) {
hasmedia = "hasmedia";
var cwdt = 100 / toot.media_attachments.length;
Object.keys(toot.media_attachments).forEach(function(key2) {
var media = toot.media_attachments[key2];
var purl = media.preview_url;
media_ids = media_ids + media.id + ",";
var url = media.url;
var nsfwmes = "";
if (toot.sensitive && nsfw) {
var sense = "sensitive";
var blur = media.blurhash;
nsfwmes = '' + lang.lang_parse_nsfw + "
";
if (blur) {
purl = parseBlur(blur);
var sense = "";
}
} else {
var sense = "";
var blur = null;
}
if (media.pleroma && media.pleroma.mime_type.indexOf("video") !== -1) {
viewer = viewer + "';
} else {
if (media.type == "unknown") {
var mty = media.remote_url.match(/.+(\..+)$/)[1];
viewer = viewer + '[' + lang.lang_parse_unknown + "( " + mty + " )] ";
} else if (media.type == "audio") {
viewer = viewer + '