2022-01-04 20:42:55 +08:00
---
layout: default
---
2024-07-02 08:09:28 +00:00
< 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 >
2022-01-04 20:42:55 +08:00
< 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;" >
2024-07-02 08:09:28 +00:00
< hr / >
这是一篇创建于 < span id = "outime" > < / span > 天前的文章,其中的信息可能已经有所发展或是发生改变。
< br / > < br / >
2022-01-04 20:42:55 +08:00
< / div >
< script >
2024-07-02 08:09:28 +00:00
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 ) {
2022-01-04 20:42:55 +08:00
document . getElementById ( "outdate" ) . style . display = "block" ;
document . getElementById ( "outime" ) . innerHTML = daysold ;
2024-07-02 08:09:28 +00:00
}
2022-01-04 20:42:55 +08:00
< / script >
< hr / >
2024-07-02 08:09:28 +00:00
{% if page.layout != "encrypt" %}
<!-- [if !IE]> -->
< b > AI摘要< / b >
2024-07-02 08:25:21 +00:00
< p id = "ai-output" > 正在生成中……< / p >
2024-07-02 08:09:28 +00:00
< 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 ;
}
2024-07-02 08:46:57 +00:00
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" ) ;
2024-10-04 07:13:10 +00:00
$ . get ( BlogAPI + "/is_uploaded?id={{ page.url }}&sign=" + postContentSign , function ( data ) {
2024-07-02 08:46:57 +00:00
if ( data == "yes" ) {
2024-10-04 07:13:10 +00:00
$ . get ( BlogAPI + "/get_summary?id={{ page.url }}&sign=" + postContentSign , function ( data2 ) {
2024-07-02 08:46:57 +00:00
outputContainer . textContent = data2 ;
} ) ;
} else {
2024-10-04 07:13:10 +00:00
$ . 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 }}" ) ;
2024-07-02 08:46:57 +00:00
outputContainer . textContent = "" ;
evSource . onmessage = ( event ) => {
if ( event . data == "[DONE]" ) {
evSource . close ( ) ;
return ;
} else {
const data = JSON . parse ( event . data ) ;
outputContainer . textContent += data . response ;
}
2024-07-02 08:09:28 +00:00
}
2024-07-02 08:46:57 +00:00
} ) ;
}
} ) ;
}
ai _gen ( ) ;
2024-07-02 08:09:28 +00:00
< / script >
< hr / >
<!-- <![endif] -->
{% endif %}
2022-01-04 20:42:55 +08:00
2023-06-29 18:44:09 +00:00
{% include toc.html html=content sanitize=true h_max=3 %}
2022-01-04 20:42:55 +08:00
{{content}}
{% if page.tags %}
2025-03-31 03:17:33 +00:00
< small > tags: {% for tag in page.tags %}< a href = "/search.html?keyword={{ tag | url_encode }}" > < em > {{ tag }}< / em > < / a > {% unless forloop.last %} - {% endunless %}{% endfor %}< / small >
2022-01-04 20:42:55 +08:00
{% endif %}
2024-09-30 13:59:21 +00:00
< br / >
2024-09-30 14:59:32 +00:00
< br / >
2024-10-04 06:19:24 +00:00
< 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 >
2022-01-04 20:42:55 +08:00
< div class = "pagination" >
2024-07-02 08:09:28 +00:00
{% if page.previous.url %}
< span class = "prev" >
< a href = "{{ site.baseurl }}{{ page.previous.url }}" >
上一篇:{{ page.previous.title }}
< / a >
< / span >
{% endif %}
2022-01-04 20:42:55 +08:00
< br / >
2024-07-02 08:09:28 +00:00
{% if page.next.url %}
< span class = "next" >
< a href = "{{ site.baseurl }}{{ page.next.url }}" >
下一篇:{{ page.next.title }}
< / a >
< / span >
{% endif %}
< / div >
2022-01-04 20:42:55 +08:00
<!-- [if !IE]> -->
2024-07-02 08:09:28 +00:00
< link rel = "stylesheet" href = "/css/gitalk.css" >
< script src = "/js/gitalk.min.js" > < / script >
2022-01-04 20:42:55 +08:00
< div id = "gitalk-container" > < / div >
< script >
2024-07-02 08:09:28 +00:00
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
2024-11-20 06:32:07 +00:00
distractionFreeMode : false , // Facebook-like distraction free mode
proxy : "https://cors-anywhere.mayx.eu.org/?https://github.com/login/oauth/access_token"
2024-07-02 08:09:28 +00:00
} )
}
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
2024-11-20 06:32:07 +00:00
distractionFreeMode : false , // Facebook-like distraction free mode
proxy : "https://cors-anywhere.mayx.eu.org/?https://github.com/login/oauth/access_token"
2024-07-02 08:09:28 +00:00
} )
}
2022-01-04 20:42:55 +08:00
2024-07-02 08:09:28 +00:00
gitalk . render ( 'gitalk-container' )
2022-01-04 20:42:55 +08:00
< / script >
2024-07-02 08:09:28 +00:00
<!-- <![endif] -->