2018-01-28 23:22:43 +11:00
|
|
|
//検索
|
|
|
|
//検索ボックストグル
|
2019-03-15 06:48:01 +11:00
|
|
|
function searchMenu() {
|
2019-08-07 13:14:07 +10:00
|
|
|
$("#src-contents").html("");
|
2019-08-07 00:06:09 +10:00
|
|
|
trend();
|
2019-03-15 06:48:01 +11:00
|
|
|
$("#left-menu div").removeClass("active");
|
|
|
|
$("#searchMenu").addClass("active");
|
|
|
|
$(".menu-content").addClass("hide");
|
2019-05-19 17:39:30 +10:00
|
|
|
$("#src-box").removeClass("hide");
|
2019-08-07 13:14:07 +10:00
|
|
|
//$('ul.tabs').tabs('select_tab', 'src-sta');
|
2018-01-28 23:22:43 +11:00
|
|
|
}
|
|
|
|
|
|
|
|
//検索取得
|
2019-08-30 02:46:19 +10:00
|
|
|
function src(mode, offset) {
|
2019-09-30 03:21:18 +10:00
|
|
|
if (!offset) {
|
2019-08-30 02:46:19 +10:00
|
|
|
$("#src-contents").html("");
|
2019-11-04 03:10:06 +11:00
|
|
|
var add = "";
|
2019-09-30 03:21:18 +10:00
|
|
|
} else {
|
2019-11-04 03:10:06 +11:00
|
|
|
var add = "&type=accounts&offset=" + $("#src-accts .cvo").length;
|
2019-08-30 02:46:19 +10:00
|
|
|
}
|
2019-09-30 03:21:18 +10:00
|
|
|
|
2018-01-28 23:22:43 +11:00
|
|
|
var q = $("#src").val();
|
|
|
|
var acct_id = $("#src-acct-sel").val();
|
2019-05-19 17:39:30 +10:00
|
|
|
if (acct_id == "tootsearch") {
|
2019-11-04 03:10:06 +11:00
|
|
|
tsAdd(q);
|
2018-03-18 02:00:53 +11:00
|
|
|
return false;
|
|
|
|
}
|
2018-01-28 23:22:43 +11:00
|
|
|
localStorage.setItem("last-use", acct_id);
|
|
|
|
var domain = localStorage.getItem("domain_" + acct_id);
|
2019-05-19 17:39:30 +10:00
|
|
|
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
2018-07-11 02:36:56 +10:00
|
|
|
var m = q.match(/^#(.+)$/);
|
2019-11-04 03:10:06 +11:00
|
|
|
if (m) {
|
|
|
|
q = m[1];
|
|
|
|
}
|
2018-01-28 23:22:43 +11:00
|
|
|
if (user == "--now") {
|
2019-11-04 03:10:06 +11:00
|
|
|
var user = $("#his-data").attr("user-id");
|
2018-01-28 23:22:43 +11:00
|
|
|
}
|
2019-05-19 17:39:30 +10:00
|
|
|
if (!mode) {
|
2019-11-04 03:10:06 +11:00
|
|
|
var start = "https://" + domain + "/api/v2/search?q=" + q + add;
|
2019-05-19 17:39:30 +10:00
|
|
|
} else {
|
2019-11-04 03:10:06 +11:00
|
|
|
var start = "https://" + domain + "/api/v1/search?q=" + q;
|
2018-06-12 01:44:28 +10:00
|
|
|
}
|
2019-11-04 03:10:06 +11:00
|
|
|
console.log("Try to search at " + start);
|
2018-01-28 23:22:43 +11:00
|
|
|
fetch(start, {
|
2019-11-04 03:10:06 +11:00
|
|
|
method: "GET",
|
2018-01-28 23:22:43 +11:00
|
|
|
headers: {
|
2019-11-04 03:10:06 +11:00
|
|
|
"content-type": "application/json",
|
|
|
|
Authorization: "Bearer " + at
|
2019-10-31 02:30:26 +11:00
|
|
|
}
|
2019-11-04 03:10:06 +11:00
|
|
|
})
|
|
|
|
.then(function(response) {
|
|
|
|
if (!response.ok) {
|
|
|
|
response.text().then(function(text) {
|
|
|
|
setLog(response.url, response.status, text);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
return response.json();
|
|
|
|
})
|
|
|
|
.catch(function(error) {
|
|
|
|
src("v1");
|
|
|
|
return false;
|
|
|
|
})
|
|
|
|
.then(function(json) {
|
|
|
|
console.log(["Search", json]);
|
|
|
|
//ハッシュタグ
|
|
|
|
if (json.hashtags[0]) {
|
|
|
|
var tags = "";
|
|
|
|
Object.keys(json.hashtags).forEach(function(key4) {
|
|
|
|
var tag = json.hashtags[key4];
|
|
|
|
if (mode) {
|
|
|
|
tags = tags + "<a onclick=\"tl('tag','" + tag + "','" + acct_id + "','add')\" class=\"pointer\">#" + escapeHTML(tag) + "</a><br> ";
|
|
|
|
} else {
|
|
|
|
tags = tags + graphDraw(tag, acct_id);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
$("#src-contents").append("Tags<br>" + tags);
|
|
|
|
}
|
|
|
|
//トゥート
|
|
|
|
if (json.statuses[0]) {
|
|
|
|
var templete = parse(json.statuses, "", acct_id);
|
|
|
|
$("#src-contents").append("<br>Mentions<br>" + templete);
|
|
|
|
}
|
|
|
|
//アカウント
|
|
|
|
if (json.accounts[0]) {
|
|
|
|
var templete = userparse(json.accounts, "", acct_id);
|
|
|
|
if (!offset) {
|
|
|
|
$("#src-contents").append('<br>Accounts<div id="src-accts">' + templete + '</div><a onclick="src(false,\'more\')" class="pointer">more...</a>');
|
2019-05-19 17:39:30 +10:00
|
|
|
} else {
|
2019-11-04 03:10:06 +11:00
|
|
|
$("#src-accts").append(templete);
|
2018-06-12 01:44:28 +10:00
|
|
|
}
|
2019-08-30 02:46:19 +10:00
|
|
|
}
|
2019-11-04 03:10:06 +11:00
|
|
|
jQuery("time.timeago").timeago();
|
|
|
|
});
|
2018-01-28 23:22:43 +11:00
|
|
|
}
|
2019-05-19 17:39:30 +10:00
|
|
|
function tsAdd(q) {
|
|
|
|
var add = {
|
|
|
|
domain: acct_id,
|
|
|
|
type: "tootsearch",
|
|
|
|
data: q
|
|
|
|
};
|
|
|
|
var multi = localStorage.getItem("column");
|
|
|
|
var obj = JSON.parse(multi);
|
|
|
|
localStorage.setItem("card_" + obj.length, "true");
|
|
|
|
obj.push(add);
|
|
|
|
var json = JSON.stringify(obj);
|
|
|
|
localStorage.setItem("column", json);
|
2019-11-04 03:10:06 +11:00
|
|
|
parseColumn("add");
|
2019-04-10 00:12:11 +10:00
|
|
|
}
|
2019-05-19 17:39:30 +10:00
|
|
|
function tootsearch(tlid, q) {
|
2019-11-04 03:10:06 +11:00
|
|
|
var start = "https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=" + q;
|
|
|
|
console.log("Toot srrach at " + start);
|
2019-05-19 17:39:30 +10:00
|
|
|
$("#notice_" + tlid).text("tootsearch(" + q + ")");
|
2019-04-10 00:12:11 +10:00
|
|
|
$("#notice_icon_" + tlid).text("search");
|
2018-03-18 02:00:53 +11:00
|
|
|
fetch(start, {
|
2019-11-04 03:10:06 +11:00
|
|
|
method: "GET",
|
2018-03-18 02:00:53 +11:00
|
|
|
headers: {
|
2019-11-04 03:10:06 +11:00
|
|
|
"content-type": "application/json"
|
2019-10-31 02:30:26 +11:00
|
|
|
}
|
2019-11-04 03:10:06 +11:00
|
|
|
})
|
|
|
|
.then(function(response) {
|
|
|
|
if (!response.ok) {
|
|
|
|
response.text().then(function(text) {
|
|
|
|
setLog(response.url, response.status, text);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
return response.json();
|
|
|
|
})
|
|
|
|
.catch(function(error) {
|
|
|
|
todo(error);
|
|
|
|
setLog(start, "JSON", error);
|
|
|
|
console.error(error);
|
|
|
|
})
|
|
|
|
.then(function(raw) {
|
|
|
|
var templete = "";
|
|
|
|
var json = raw.hits.hits;
|
|
|
|
var max_id = raw["hits"].length;
|
|
|
|
for (var i = 0; i < json.length; i++) {
|
|
|
|
var toot = json[i]["_source"];
|
|
|
|
if (lastid != toot.uri) {
|
|
|
|
if (toot && toot.account) {
|
|
|
|
templete = templete + parse([toot], "noauth", null, tlid, 0, [], "tootsearch");
|
|
|
|
}
|
2018-03-18 02:00:53 +11:00
|
|
|
}
|
2019-11-04 03:10:06 +11:00
|
|
|
var lastid = toot.uri;
|
2018-03-18 02:00:53 +11:00
|
|
|
}
|
2019-11-04 03:10:06 +11:00
|
|
|
if (!templete) {
|
|
|
|
templete = lang.lang_details_nodata;
|
|
|
|
} else {
|
|
|
|
templete = templete + '<div class="hide ts-marker" data-maxid="' + max_id + '"></div>';
|
|
|
|
}
|
|
|
|
$("#timeline_" + tlid).html(templete);
|
2019-04-10 00:12:11 +10:00
|
|
|
|
2019-11-04 03:10:06 +11:00
|
|
|
jQuery("time.timeago").timeago();
|
|
|
|
});
|
2018-06-12 01:44:28 +10:00
|
|
|
}
|
2019-05-19 17:39:30 +10:00
|
|
|
function moreTs(tlid, q) {
|
2019-11-04 03:10:06 +11:00
|
|
|
var sid = $("#timeline_" + tlid + " .ts-marker")
|
|
|
|
.last()
|
|
|
|
.attr("data-maxid");
|
2019-05-19 17:39:30 +10:00
|
|
|
moreloading = true;
|
2019-11-04 03:10:06 +11:00
|
|
|
var start = "https://tootsearch.chotto.moe/api/v1/search?from=" + sid + "&sort=created_at%3Adesc&q=" + q;
|
2019-05-19 17:39:30 +10:00
|
|
|
$("#notice_" + tlid).text("tootsearch(" + q + ")");
|
2019-04-11 13:52:38 +10:00
|
|
|
$("#notice_icon_" + tlid).text("search");
|
|
|
|
fetch(start, {
|
2019-11-04 03:10:06 +11:00
|
|
|
method: "GET",
|
2019-04-11 13:52:38 +10:00
|
|
|
headers: {
|
2019-11-04 03:10:06 +11:00
|
|
|
"content-type": "application/json"
|
2019-10-31 02:30:26 +11:00
|
|
|
}
|
2019-11-04 03:10:06 +11:00
|
|
|
})
|
|
|
|
.then(function(response) {
|
|
|
|
if (!response.ok) {
|
|
|
|
response.text().then(function(text) {
|
|
|
|
setLog(response.url, response.status, text);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
return response.json();
|
|
|
|
})
|
|
|
|
.catch(function(error) {
|
|
|
|
todo(error);
|
|
|
|
setLog(start, "JSON", error);
|
|
|
|
console.error(error);
|
|
|
|
})
|
|
|
|
.then(function(raw) {
|
|
|
|
var templete = "";
|
|
|
|
var json = raw.hits.hits;
|
|
|
|
var max_id = raw["hits"].length;
|
|
|
|
for (var i = 0; i < json.length; i++) {
|
|
|
|
var toot = json[i]["_source"];
|
|
|
|
if (lastid != toot.uri) {
|
|
|
|
if (toot && toot.account) {
|
|
|
|
templete = templete + parse([toot], "noauth", null, tlid, 0, [], "tootsearch");
|
|
|
|
}
|
2019-04-11 13:52:38 +10:00
|
|
|
}
|
2019-11-04 03:10:06 +11:00
|
|
|
var lastid = toot.uri;
|
2019-04-11 13:52:38 +10:00
|
|
|
}
|
2019-11-04 03:10:06 +11:00
|
|
|
if (!templete) {
|
|
|
|
templete = lang.lang_details_nodata;
|
|
|
|
} else {
|
|
|
|
templete = templete + '<div class="hide ts-marker" data-maxid="' + max_id + '"></div>';
|
|
|
|
}
|
|
|
|
$("#timeline_" + tlid).append(templete);
|
2019-04-11 13:52:38 +10:00
|
|
|
|
2019-11-04 03:10:06 +11:00
|
|
|
jQuery("time.timeago").timeago();
|
|
|
|
});
|
2019-04-11 13:52:38 +10:00
|
|
|
}
|
2019-06-23 19:38:22 +10:00
|
|
|
function graphDraw(tag, acct_id) {
|
2019-05-19 17:39:30 +10:00
|
|
|
var tags = "";
|
|
|
|
var his = tag.history;
|
|
|
|
var max = Math.max.apply(null, [his[0].uses, his[1].uses, his[2].uses, his[3].uses, his[4].uses, his[5].uses, his[6].uses]);
|
2019-11-04 03:10:06 +11:00
|
|
|
var six = 50 - (his[6].uses / max) * 50;
|
|
|
|
var five = 50 - (his[5].uses / max) * 50;
|
|
|
|
var four = 50 - (his[4].uses / max) * 50;
|
|
|
|
var three = 50 - (his[3].uses / max) * 50;
|
|
|
|
var two = 50 - (his[2].uses / max) * 50;
|
|
|
|
var one = 50 - (his[1].uses / max) * 50;
|
|
|
|
var zero = 50 - (his[0].uses / max) * 50;
|
2019-05-19 17:39:30 +10:00
|
|
|
if (max === 0) {
|
2019-11-04 03:10:06 +11:00
|
|
|
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' + '</svg><span style="font-size:200%">' + his[0].uses + "</span>toot(s) <a onclick=\"tl('tag','" + escapeHTML(tag.name) + "','" + acct_id + "','add')\" class=\"pointer\">#" + escapeHTML(tag.name) + "</a> " + his[0].accounts + lang.lang_src_people;
|
2019-05-19 17:39:30 +10:00
|
|
|
} else {
|
2019-11-04 03:10:06 +11:00
|
|
|
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' + '<g><path d="M0,' + six + " L10," + five + " 20," + four + " 30," + three + " 40," + two + " 50," + one + " 60," + zero + '" style="stroke: #9e9e9e; stroke-width: 1;fill: none;"></path></g>' + '</svg><span style="font-size:200%">' + his[0].uses + "</span>toot <a onclick=\"tl('tag','" + escapeHTML(tag.name) + "','" + acct_id + "','add')\" class=\"pointer\">#" + escapeHTML(tag.name) + "</a> " + his[0].accounts + lang.lang_src_people;
|
2019-05-19 17:39:30 +10:00
|
|
|
}
|
|
|
|
|
2018-06-12 01:44:28 +10:00
|
|
|
return tags;
|
|
|
|
}
|
|
|
|
/*
|
|
|
|
<svg version="1.1" viewbox="0 0 50 300" width="100%" height="50">
|
|
|
|
<path d="M0,0 L10,0 20,10 20,50" fill="#3F51B5"></path>
|
|
|
|
</svg>
|
2019-08-07 00:06:09 +10:00
|
|
|
*/
|
2019-09-30 03:21:18 +10:00
|
|
|
function trend() {
|
2019-11-04 03:10:06 +11:00
|
|
|
console.log("get trend");
|
2019-08-07 00:06:09 +10:00
|
|
|
$("#src-contents").html("");
|
|
|
|
var acct_id = $("#src-acct-sel").val();
|
2019-09-30 03:21:18 +10:00
|
|
|
if (acct_id == "tootsearch") {
|
2019-08-07 00:06:09 +10:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
var domain = localStorage.getItem("domain_" + acct_id);
|
2019-09-30 03:21:18 +10:00
|
|
|
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
2019-11-04 03:10:06 +11:00
|
|
|
var start = "https://" + domain + "/api/v1/trends";
|
|
|
|
console.log(start);
|
2019-08-07 00:06:09 +10:00
|
|
|
fetch(start, {
|
2019-11-04 03:10:06 +11:00
|
|
|
method: "GET",
|
2019-08-07 00:06:09 +10:00
|
|
|
headers: {
|
2019-11-04 03:10:06 +11:00
|
|
|
"content-type": "application/json",
|
|
|
|
Authorization: "Bearer " + at
|
2019-10-31 02:30:26 +11:00
|
|
|
}
|
2019-11-04 03:10:06 +11:00
|
|
|
})
|
|
|
|
.then(function(response) {
|
|
|
|
if (!response.ok) {
|
|
|
|
response.text().then(function(text) {
|
|
|
|
setLog(response.url, response.status, text);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
return response.json();
|
|
|
|
})
|
|
|
|
.catch(function(error) {
|
|
|
|
setLog(start, "JSON", error);
|
|
|
|
console.error(error);
|
|
|
|
})
|
|
|
|
.then(function(json) {
|
|
|
|
var tags = "";
|
|
|
|
Object.keys(json).forEach(function(keye) {
|
|
|
|
var tag = json[keye];
|
|
|
|
var his = tag.history;
|
|
|
|
var max = Math.max.apply(null, [his[0].uses, his[1].uses, his[2].uses, his[3].uses, his[4].uses, his[5].uses, his[6].uses]);
|
|
|
|
var six = 50 - (his[6].uses / max) * 50;
|
|
|
|
var five = 50 - (his[5].uses / max) * 50;
|
|
|
|
var four = 50 - (his[4].uses / max) * 50;
|
|
|
|
var three = 50 - (his[3].uses / max) * 50;
|
|
|
|
var two = 50 - (his[2].uses / max) * 50;
|
|
|
|
var one = 50 - (his[1].uses / max) * 50;
|
|
|
|
var zero = 50 - (his[0].uses / max) * 50;
|
|
|
|
tags = '<svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' + '<g><path d="M-1,51, -1,' + six + ", 0," + six + " L10," + five + " 20," + four + " 30," + three + " 40," + two + " 50," + one + " 60," + zero + " 61," + zero + ' 61,51 -1,51" style="stroke: #0f8c0c;fill: rgba(13,113,19,.25); stroke-width: 1;"></path></g>' + '</svg><span style="font-size:200%">' + his[0].uses + "</span>toots <a onclick=\"tl('tag','" + tag.name + "','" + acct_id + "','add')\" class=\"pointer\">#" + tag.name + "</a> " + his[0].accounts + lang.lang_src_people + "<br><br>";
|
2019-08-07 00:06:09 +10:00
|
|
|
|
2019-11-04 03:10:06 +11:00
|
|
|
$("#src-contents").append(tags);
|
|
|
|
});
|
2019-09-30 03:21:18 +10:00
|
|
|
});
|
2019-11-04 03:10:06 +11:00
|
|
|
}
|