forked from flanchan/doushio
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.4 KiB
101 lines
2.4 KiB
5 years ago
|
// remember which posts are mine for two days
|
||
|
var Mine = new Kioku('mine', 2);
|
||
|
// no cookie though
|
||
|
Mine.bake_cookie = function () { return false; };
|
||
|
$.cookie('mine', null); // TEMP
|
||
|
|
||
|
(function () {
|
||
|
|
||
|
var mine = Mine.read_all();
|
||
|
|
||
|
function extract_post_model(el) {
|
||
|
/* incomplete */
|
||
|
var info = {num: parseInt(el.id, 10)};
|
||
|
var $article = $(el);
|
||
|
/* TODO: do these all in one pass */
|
||
|
var $header = $article.children('header');
|
||
|
var $b = $header.find('b');
|
||
|
if ($b.length)
|
||
|
info.name = $b.text();
|
||
|
var $code = $header.find('code');
|
||
|
if ($code.length)
|
||
|
info.trip = $code.text();
|
||
|
var $time = $header.find('time');
|
||
|
if ($time.length)
|
||
|
info.time = new Date($time.attr('datetime')).getTime();
|
||
|
|
||
|
var $fig = $article.children('figure');
|
||
|
if ($fig.length) {
|
||
|
var $cap = $fig.children('figcaption');
|
||
|
var image = {
|
||
|
MD5: $fig.data('md5'),
|
||
|
size: $fig.data('size'),
|
||
|
src: $cap.children('a').text(),
|
||
|
};
|
||
|
|
||
|
var $i = $cap.children('i');
|
||
|
var t = $i.length && $i[0].childNodes[0];
|
||
|
t = t && t.data;
|
||
|
var m = /(\d+)x(\d+)/.exec(t);
|
||
|
if (m)
|
||
|
image.dims = [parseInt(m[1], 10), parseInt(m[2], 10)];
|
||
|
if (t && t.indexOf(audioIndicator) == 1)
|
||
|
image.audio = true;
|
||
|
var $nm = $i.find('a');
|
||
|
image.imgnm = $nm.attr('title') || $nm.text() || '';
|
||
|
|
||
|
var $img = $fig.find('img');
|
||
|
image.thumb = $img.attr('src');
|
||
|
if (image.dims && $img.length) {
|
||
|
image.dims.push($img.width(), $img.height());
|
||
|
}
|
||
|
|
||
|
info.image = image;
|
||
|
}
|
||
|
info.body = ''; // TODO
|
||
|
if (mine[info.num])
|
||
|
info.mine = true;
|
||
|
return new Post(info);
|
||
|
}
|
||
|
|
||
|
function extract_thread_model(section) {
|
||
|
var replies = [];
|
||
|
for (var i = 0; i < section.childElementCount; i++) {
|
||
|
var el = section.children[i];
|
||
|
if (el.tagName != 'ARTICLE')
|
||
|
continue;
|
||
|
var post = extract_post_model(el);
|
||
|
new Article({model: post, el: el});
|
||
|
replies.push(post);
|
||
|
}
|
||
|
var thread = new Thread({
|
||
|
num: parseInt(section.id, 10),
|
||
|
replies: new Replies(replies),
|
||
|
});
|
||
|
if (mine[thread.num])
|
||
|
thread.set('mine', true);
|
||
|
return thread;
|
||
|
}
|
||
|
|
||
|
function scan_threads_for_extraction() {
|
||
|
var bod = document.body;
|
||
|
var threads = [];
|
||
|
for (var i = 0; i < bod.childElementCount; i++) {
|
||
|
var el = bod.children[i];
|
||
|
if (el.tagName != 'SECTION')
|
||
|
continue;
|
||
|
var thread = extract_thread_model(el);
|
||
|
new Section({model: thread, el: el});
|
||
|
threads.push(thread);
|
||
|
}
|
||
|
Threads.add(threads);
|
||
|
|
||
|
if (THREAD)
|
||
|
CurThread = Threads.get(THREAD);
|
||
|
}
|
||
|
|
||
|
scan_threads_for_extraction();
|
||
|
Mine.purge_expired_soon();
|
||
|
|
||
|
})();
|