summary refs log tree commit diff
path: root/_layouts/post.html
blob: 2ad1fdd52b9522a3f723b9a5d59c3e17028cad0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
---
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("https://summary.mayx.eu.org/is_uploaded?id={{ page.url }}&sign=" + postContentSign, function (data) {
      if (data == "yes") {
        $.get("https://summary.mayx.eu.org/get_summary?id={{ page.url }}&sign=" + postContentSign, function (data2) {
          outputContainer.textContent = data2;
        });
      } else {
        $.post("https://summary.mayx.eu.org/upload_blog?id={{ page.url }}", postContent, function (data) {
          $.get("https://summary.mayx.eu.org/get_summary?id={{ page.url }}&sign=" + postContentSign);
          const evSource = new EventSource("https://summary.mayx.eu.org/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>tags: <em>{{ page.tags | join: "</em> - <em>" }}</em></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
    })
  }
  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
    })
  }

  gitalk.render('gitalk-container')
</script>
<!-- <![endif]-->