mirror of https://github.com/Mabbs/mabbs.github.io
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.
162 lines
6.0 KiB
162 lines
6.0 KiB
--- |
|
layout: default |
|
--- |
|
|
|
<small>{{ page.date | date: "%-d %B %Y" }} - 字数统计:{% if page.layout == "encrypt" %}God Knows {% else %}{{ page.content | strip_html | strip_newlines | remove: " " | size }} - 阅读大约需要{{ page.content | strip_html | strip_newlines | remove: "" | size | divided_by: 350 | plus: 1 }}分钟{% endif %} - Hits: <span id="{{ page.url }}" class="visitors">Loading...</span></small> |
|
<h1>{{ page.title }}</h1> |
|
|
|
<p class="view">by <a href="//github.com/{{ page.author | default: "Mabbs" }}">{{ page.author | default: site.author }}</a></p> |
|
<div id="outdate" style="display:none;"> |
|
<hr /> |
|
这是一篇创建于 <span id="outime"></span> 天前的文章,其中的信息可能已经有所发展或是发生改变。 |
|
<br /><br /> |
|
</div> |
|
<script> |
|
BirthDay = new Date("{{ page.date | date: "%m/%d/%Y" }} 00:00:00"); |
|
today = new Date(); |
|
timeold = (today.getTime() - BirthDay.getTime()); |
|
secondsold = Math.floor(timeold / 1000); |
|
e_daysold = timeold / (24 * 60 * 60 * 1000); |
|
daysold = Math.floor(e_daysold); |
|
if (daysold > 90) { |
|
document.getElementById("outdate").style.display = "block"; |
|
document.getElementById("outime").innerHTML = daysold; |
|
} |
|
</script> |
|
|
|
<hr /> |
|
{% if page.layout != "encrypt" %} |
|
<!--[if !IE]> --> |
|
<b>AI摘要</b> |
|
<p id="ai-output">正在生成中……</p> |
|
<script> |
|
async function sha(str) { |
|
const encoder = new TextEncoder(); |
|
const data = encoder.encode(str); |
|
const hashBuffer = await crypto.subtle.digest("SHA-256", data); |
|
const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array |
|
const hashHex = hashArray |
|
.map((b) => b.toString(16).padStart(2, "0")) |
|
.join(""); // convert bytes to hex string |
|
return hashHex; |
|
} |
|
async function ai_gen(){ |
|
var postContent = "文章标题:" + {{ page.title | jsonify }} + ";文章内容:" + {{ page.content | strip_html | strip_newlines | jsonify }}; |
|
var postContentSign = await sha(postContent); |
|
var outputContainer = document.getElementById("ai-output"); |
|
$.get(BlogAPI + "/is_uploaded?id={{ page.url }}&sign=" + postContentSign, function (data) { |
|
if (data == "yes") { |
|
$.get(BlogAPI + "/get_summary?id={{ page.url }}&sign=" + postContentSign, function (data2) { |
|
outputContainer.textContent = data2; |
|
}); |
|
} else { |
|
$.post(BlogAPI + "/upload_blog?id={{ page.url }}", postContent, function (data) { |
|
$.get(BlogAPI + "/get_summary?id={{ page.url }}&sign=" + postContentSign); |
|
const evSource = new EventSource(BlogAPI + "/summary?id={{ page.url }}"); |
|
outputContainer.textContent = ""; |
|
evSource.onmessage = (event) => { |
|
if (event.data == "[DONE]") { |
|
evSource.close(); |
|
return; |
|
} else { |
|
const data = JSON.parse(event.data); |
|
outputContainer.textContent += data.response; |
|
} |
|
} |
|
}); |
|
} |
|
}); |
|
} |
|
ai_gen(); |
|
</script> |
|
<hr /> |
|
<!-- <![endif]--> |
|
{% endif %} |
|
|
|
{% include toc.html html=content sanitize=true h_max=3 %} |
|
|
|
{{content}} |
|
|
|
{% if page.tags %} |
|
<small style="display: block">tags: {% for tag in page.tags %}<a href="/search.html?keyword={{ tag | url_encode }}"><em>{{ tag }}</em></a>{% unless forloop.last %} - {% endunless %}{% endfor %} <span style="float: right;"><a href="{% if site.github %}https://github.com/Mabbs/mabbs.github.io{% else %}https://gitlab.com/mayx/mayx.gitlab.io{% endif %}/tree/master/{{ page.path }}">查看原始文件</a></span></small> |
|
{% endif %} |
|
<br /> |
|
<br /> |
|
<p id="suggest-container"></p> |
|
<script> |
|
var blogurl = "{{ page.url }}"; |
|
var suggest = $("#suggest-container")[0]; |
|
suggest.innerHTML = "Loading..."; |
|
$.get(BlogAPI + "/suggest?id=" + blogurl + "&update=" + lastUpdated.valueOf(), function (data) { |
|
if (data.length) { |
|
getSearchJSON(function (search) { |
|
suggest.innerHTML = '<b>推荐文章</b><hr style="margin: 0 0 5px"/>'; |
|
const searchMap = new Map(search.map(item => [item.url, item])); |
|
const merged = data.map(suggestObj => { |
|
const searchObj = searchMap.get(suggestObj.id); |
|
return searchObj ? { ...searchObj } : null; |
|
}); |
|
merged.forEach(element => { |
|
if (element) { |
|
suggest.innerHTML += "<a href=" + element.url + ">" + element.title + "</a> - " + element.date + "<br />"; |
|
} |
|
}); |
|
}); |
|
} else { |
|
suggest.innerHTML = "暂无推荐文章……"; |
|
} |
|
}); |
|
</script> |
|
<div class="pagination"> |
|
{% if page.previous.url %} |
|
<span class="prev"> |
|
<a href="{{ site.baseurl }}{{ page.previous.url }}"> |
|
上一篇:{{ page.previous.title }} |
|
</a> |
|
</span> |
|
{% endif %} |
|
<br /> |
|
{% if page.next.url %} |
|
<span class="next"> |
|
<a href="{{ site.baseurl }}{{ page.next.url }}"> |
|
下一篇:{{ page.next.title }} |
|
</a> |
|
</span> |
|
{% endif %} |
|
</div> |
|
|
|
<!--[if !IE]> --> |
|
<link rel="stylesheet" href="/css/gitalk.css"> |
|
<script src="/js/gitalk.min.js"></script> |
|
|
|
<div id="gitalk-container"></div> |
|
|
|
<script> |
|
if (window.location.host != "mabbs.github.io") { |
|
var gitalk = new Gitalk({ |
|
clientID: '098934a2556425f19d6e', |
|
clientSecret: '0bd44eed8425e5437ce43c4ba9b2791fbc04581d', |
|
repo: 'mabbs.github.io', |
|
owner: 'Mabbs', |
|
admin: ['Mabbs'], |
|
id: '{{ page.id }}', // Ensure uniqueness and length less than 50 |
|
distractionFreeMode: false, // Facebook-like distraction free mode |
|
proxy: "https://cors-anywhere.mayx.eu.org/?https://github.com/login/oauth/access_token" |
|
}) |
|
} |
|
else { |
|
var gitalk = new Gitalk({ |
|
clientID: '36557aec4c3cb04f7ac6', |
|
clientSecret: 'ac32993299751cb5a9ba81cf2b171cca65879cdb', |
|
repo: 'mabbs.github.io', |
|
owner: 'Mabbs', |
|
admin: ['Mabbs'], |
|
id: '{{ page.id }}', // Ensure uniqueness and length less than 50 |
|
distractionFreeMode: false, // Facebook-like distraction free mode |
|
proxy: "https://cors-anywhere.mayx.eu.org/?https://github.com/login/oauth/access_token" |
|
}) |
|
} |
|
|
|
gitalk.render('gitalk-container') |
|
</script> |
|
<!-- <![endif]--> |