q78kgblog 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/.github/workflows/HexoSeoAutoPush.yml +36 -0
  2. package/404.html +933 -0
  3. package/BingSiteAuth.xml +4 -0
  4. package/CNAME +1 -0
  5. package/about/index.html +1096 -0
  6. package/archives/2022/06/index.html +942 -0
  7. package/archives/2022/index.html +942 -0
  8. package/archives/2023/02/index.html +942 -0
  9. package/archives/2023/04/index.html +942 -0
  10. package/archives/2023/05/index.html +942 -0
  11. package/archives/2023/08/index.html +942 -0
  12. package/archives/2023/09/index.html +942 -0
  13. package/archives/2023/index.html +942 -0
  14. package/archives/2024/01/index.html +942 -0
  15. package/archives/2024/02/index.html +942 -0
  16. package/archives/2024/index.html +942 -0
  17. package/archives/index.html +942 -0
  18. package/assets/css/APlayer.min.css +3 -0
  19. package/assets/douban-loading.gif +0 -0
  20. package/assets/js/APlayer.min.js +2 -0
  21. package/assets/js/Meting.min.js +1 -0
  22. package/atom.xml +311 -0
  23. package/baidusitemap.xml +43 -0
  24. package/bangumis/index.html +1247 -0
  25. package/bigpie/index.html +714 -0
  26. package/bing.json +1 -0
  27. package/categories/Hello-World/index.html +954 -0
  28. package/categories/Hexo/index.html +954 -0
  29. package/categories/index.html +710 -0
  30. package/categories//345/271/264/347/273/210/346/200/273/347/273/223/index.html +954 -0
  31. package/categories//346/201/260/351/245/255/index.html +954 -0
  32. package/categories//347/264/240/346/235/220/index.html +954 -0
  33. package/categories//351/227/262/350/201/212/346/235/202/350/260/210/index.html +954 -0
  34. package/content.json +1 -0
  35. package/css/404page.css +65 -0
  36. package/css/ariasakablog.css +5632 -0
  37. package/css/commentBarrage.css +111 -0
  38. package/css/danmaku.css +89 -0
  39. package/css/essay.css +306 -0
  40. package/css/iconfont.css +55 -0
  41. package/css/iconfont.ttf +0 -0
  42. package/css/iconfont.woff +0 -0
  43. package/css/iconfont.woff2 +0 -0
  44. package/css/index.css +7006 -0
  45. package/css/people.css +18 -0
  46. package/css/stylessimple.css +40 -0
  47. package/css/swiper.min.css +701 -0
  48. package/css/swiperstyle.css +567 -0
  49. package/css/var.css +0 -0
  50. package/essay/index.html +701 -0
  51. package/favicon.ico +0 -0
  52. package/fcircle/index.html +733 -0
  53. package/fontawesome/index.html +716 -0
  54. package/google.txt +10 -0
  55. package/googlebe706248808ee393.html +1 -0
  56. package/img/144.png +0 -0
  57. package/img/16.png +0 -0
  58. package/img/1666416625095-iPhone X.png +0 -0
  59. package/img/1666416702650-Macbook Pro 2016 (1).png +0 -0
  60. package/img/1666416764216-Nexus 9.png +0 -0
  61. package/img/180.png +0 -0
  62. package/img/192.png +0 -0
  63. package/img/20200904222157.png +0 -0
  64. package/img/20200924153652.png +0 -0
  65. package/img/256.png +0 -0
  66. package/img/36.png +0 -0
  67. package/img/48.png +0 -0
  68. package/img/512.png +0 -0
  69. package/img/72.png +0 -0
  70. package/img/72645310.jpg +0 -0
  71. package/img/8DSTSS20990281646044689944.PNG +0 -0
  72. package/img/96.png +0 -0
  73. package/img/O35HOG22090681654187900371.jpg +0 -0
  74. package/img/a.webp +0 -0
  75. package/img/ad.png +0 -0
  76. package/img/apple-touch-icon.png +0 -0
  77. package/img/avatar.jpg +0 -0
  78. package/img/buYgVO22990681624844309044.jpg +0 -0
  79. package/img/comment.png +0 -0
  80. package/img/favicon.ico +0 -0
  81. package/img/favicon.jpg +0 -0
  82. package/img/friend_404.gif +0 -0
  83. package/img/mqaizf23990681654186719414.jpeg +0 -0
  84. package/img/nyancat.gif +0 -0
  85. package/img/siteshot.png +0 -0
  86. package/img/uTools_1666416859497-iMac.png +0 -0
  87. package/img-col/index.html +802 -0
  88. package/index.html +1056 -0
  89. package/js/aplayersave.js +268 -0
  90. package/js/baiduhistory.js +76 -0
  91. package/js/bbtalk.js +11354 -0
  92. package/js/bbtalklunbo.js +78 -0
  93. package/js/browser.js +35 -0
  94. package/js/calendar.js +380 -0
  95. package/js/cate.js +22 -0
  96. package/js/commentBarrage.js +240 -0
  97. package/js/commentsCount.js +43 -0
  98. package/js/copy.js +23 -0
  99. package/js/countup.js +209 -0
  100. package/js/cursor.js +82 -0
  101. package/js/danmaku.js +106 -0
  102. package/js/day.js +199 -0
  103. package/js/dianzan.js +249 -0
  104. package/js/dis.js +255 -0
  105. package/js/dist/baiduhistory.dev.js +102 -0
  106. package/js/dist/bbtalk.dev.js +12876 -0
  107. package/js/dist/bbtalklunbo.dev.js +45 -0
  108. package/js/dist/calendar.dev.js +395 -0
  109. package/js/dist/fixbugpjax.dev.js +8 -0
  110. package/js/dist/gongnong.dev.js +565 -0
  111. package/js/dist/heimu.dev.js +19 -0
  112. package/js/dist/links.dev.js +13 -0
  113. package/js/dist/main.dev.js +845 -0
  114. package/js/dist/resizeTop.dev.js +50 -0
  115. package/js/dist/seo.dev.js +33 -0
  116. package/js/dist/twikoo.all.min.dev.js +1 -0
  117. package/js/fixbugpjax.js +7 -0
  118. package/js/fixed_card_widget.js +46 -0
  119. package/js/fps.js +58 -0
  120. package/js/gitalker.js +11 -0
  121. package/js/gsap.min.js +11 -0
  122. package/js/heimu.js +16 -0
  123. package/js/hide.show.js +17 -0
  124. package/js/jike.js +121 -0
  125. package/js/jikewater.js +60 -0
  126. package/js/languages.js +511 -0
  127. package/js/latest.js +49 -0
  128. package/js/local-search.js +476 -0
  129. package/js/lunar.js +1071 -0
  130. package/js/lyxTalk.js +12 -0
  131. package/js/main.js +783 -0
  132. package/js/nav.js +30 -0
  133. package/js/noie.js +3 -0
  134. package/js/owo.js +52 -0
  135. package/js/people.js +175 -0
  136. package/js/pikaday.js +109 -0
  137. package/js/random.js +1 -0
  138. package/js/randomFriend.js +95 -0
  139. package/js/resizeTop.js +43 -0
  140. package/js/rightmenu.js +335 -0
  141. package/js/sakura.js +164 -0
  142. package/js/search/algolia.js +155 -0
  143. package/js/search/local-search.js +188 -0
  144. package/js/settings.js +353 -0
  145. package/js/sitetime.js +25 -0
  146. package/js/smooth-scrolling.js +546 -0
  147. package/js/sw-toolbox.js +16 -0
  148. package/js/swiperinit.js +23 -0
  149. package/js/tw_cn.js +100 -0
  150. package/js/twikoo.all.min.js +2 -0
  151. package/js/utils.js +278 -0
  152. package/js/welcome.js +107 -0
  153. package/js/welcomeconsole.js +23 -0
  154. package/links/index.html +842 -0
  155. package/live2d-widget/LICENSE +674 -0
  156. package/live2d-widget/README.md +188 -0
  157. package/live2d-widget/assets/screenshot-1.png +0 -0
  158. package/live2d-widget/assets/screenshot-2.png +0 -0
  159. package/live2d-widget/assets/screenshot-3.png +0 -0
  160. package/live2d-widget/autoload.js +63 -0
  161. package/live2d-widget/demo/demo.html +34 -0
  162. package/live2d-widget/demo/login.html +271 -0
  163. package/live2d-widget/live2d.min.js +1 -0
  164. package/live2d-widget/package.json +31 -0
  165. package/live2d-widget/rollup.config.js +38 -0
  166. package/live2d-widget/src/index.js +178 -0
  167. package/live2d-widget/src/message.js +22 -0
  168. package/live2d-widget/src/model.js +75 -0
  169. package/live2d-widget/src/tools.js +78 -0
  170. package/live2d-widget/src/utils.js +5 -0
  171. package/live2d-widget/src/waifu-tips.js +3 -0
  172. package/live2d-widget/waifu-tips.js +5 -0
  173. package/live2d-widget/waifu-tips.json +255 -0
  174. package/live2d-widget/waifu.css +310 -0
  175. package/manifest.json +1 -0
  176. package/noie.html +69 -0
  177. package/othersite/index.html +779 -0
  178. package/owo.json +1 -0
  179. package/package.json +1 -0
  180. package/people.html +24 -0
  181. package/posts/164ef646/index.html +1027 -0
  182. package/posts/228c2ef8/index.html +1014 -0
  183. package/posts/4a17b156/index.html +1010 -0
  184. package/posts/6f3c565b/index.html +1013 -0
  185. package/posts/7da7c3f6/index.html +1070 -0
  186. package/posts/a9a6c1fb/index.html +1041 -0
  187. package/posts/c262e439/index.html +1002 -0
  188. package/posts/c81531cf/index.html +1080 -0
  189. package/posts/da2093a1/index.html +1022 -0
  190. package/posts/e54f7476/index.html +1052 -0
  191. package/projects.html +424 -0
  192. package/random.html +32 -0
  193. package/robots.txt +17 -0
  194. package/search.xml +309 -0
  195. package/sitemap.txt +62 -0
  196. package/sitemap.xml +488 -0
  197. package/sw.js +190 -0
  198. package/swReg.js +29 -0
  199. package/tags/AI/index.html +955 -0
  200. package/tags/Butterfly/index.html +955 -0
  201. package/tags/Cloudflare/index.html +955 -0
  202. package/tags/DiffSinger/index.html +955 -0
  203. package/tags/Hexo/index.html +955 -0
  204. package/tags/Next/index.html +955 -0
  205. package/tags/RAID/index.html +955 -0
  206. package/tags/VPS/index.html +955 -0
  207. package/tags/Vercel/index.html +955 -0
  208. package/tags/Workers/index.html +955 -0
  209. package/tags/hello-world/index.html +955 -0
  210. package/tags/index.html +710 -0
  211. package/tags//344/270/273/351/242/230/index.html +955 -0
  212. package/tags//344/272/221/346/234/215/345/212/241/345/231/250/index.html +955 -0
  213. package/tags//344/276/277/345/256/234/index.html +955 -0
  214. package/tags//345/206/231/344/275/234/index.html +955 -0
  215. package/tags//345/245/263/346/200/247/346/204/217/350/257/206/index.html +955 -0
  216. package/tags//345/255/246/344/271/240/index.html +955 -0
  217. package/tags//345/256/266/351/207/214/344/272/221/index.html +955 -0
  218. package/tags//345/271/264/347/273/210/346/200/273/347/273/223/index.html +955 -0
  219. package/tags//346/200/247/344/273/267/346/257/224/index.html +955 -0
  220. package/tags//346/212/230/350/205/276/index.html +955 -0
  221. package/tags//346/217/220/344/276/233/345/225/206/index.html +955 -0
  222. package/tags//346/227/245/345/270/270/index.html +955 -0
  223. package/tags//346/234/215/345/212/241/345/231/250/index.html +955 -0
  224. package/tags//346/265/252/346/275/256/index.html +955 -0
  225. package/tags//347/256/200/347/210/261/index.html +955 -0
  226. package/tags//350/207/252/345/212/250/346/240/207/346/263/250/index.html +955 -0
  227. package/tags//350/256/272/346/226/207/index.html +955 -0
  228. package/tags//350/260/267/346/255/214/347/277/273/350/257/221/index.html +955 -0
  229. package/tags//350/264/237/350/275/275/345/235/207/350/241/241/index.html +955 -0
  230. package/tags//351/207/221/345/217/245/index.html +955 -0
  231. package/tags//351/255/224/346/224/271/index.html +955 -0
@@ -0,0 +1,1070 @@
1
+ <!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>这可能是首个DiffSinger数据集全自动标注工具——Fast-Phasr-Next | 梦溯·镜影</title><meta name="keywords" content="DiffSinger,自动标注,AI"><meta name="author" content="Q78KG"><meta name="copyright" content="Q78KG"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="引言 DiffSinger是一种基于神经网络的歌声合成系统,它可以根据给定的歌词和旋律生成高质量的歌声。然而,DiffSinger的训练过程也面临着一些挑战,其中之一就是它需要一个大规模且高质量的歌声数据集来训练。为了制作一个适合DiffSinger的数据集,声库开发者需要对每个音频片段进行音素持续时间标注,这是一个非常耗时和繁琐的过程。 因此,我们开发了一个自动标注工具,名为Fast-Phas">
2
+ <meta property="og:type" content="article">
3
+ <meta property="og:title" content="这可能是首个DiffSinger数据集全自动标注工具——Fast-Phasr-Next">
4
+ <meta property="og:url" content="https://anjiurine.top/posts/7da7c3f6/index.html">
5
+ <meta property="og:site_name" content="梦溯·镜影">
6
+ <meta property="og:description" content="引言 DiffSinger是一种基于神经网络的歌声合成系统,它可以根据给定的歌词和旋律生成高质量的歌声。然而,DiffSinger的训练过程也面临着一些挑战,其中之一就是它需要一个大规模且高质量的歌声数据集来训练。为了制作一个适合DiffSinger的数据集,声库开发者需要对每个音频片段进行音素持续时间标注,这是一个非常耗时和繁琐的过程。 因此,我们开发了一个自动标注工具,名为Fast-Phas">
7
+ <meta property="og:locale" content="zh_CN">
8
+ <meta property="og:image" content="https://pximg.anjiurine.top/img-original/img/2022/07/11/17/28/44/99654366_p0.jpg">
9
+ <meta property="article:published_time" content="2023-09-28T16:00:00.000Z">
10
+ <meta property="article:modified_time" content="2024-03-15T12:57:56.735Z">
11
+ <meta property="article:author" content="Q78KG">
12
+ <meta property="article:tag" content="DiffSinger">
13
+ <meta property="article:tag" content="自动标注">
14
+ <meta property="article:tag" content="AI">
15
+ <meta name="twitter:card" content="summary">
16
+ <meta name="twitter:image" content="https://pximg.anjiurine.top/img-original/img/2022/07/11/17/28/44/99654366_p0.jpg"><link rel="shortcut icon" href="https://registry.npmmirror.com/q78kg-website-npm-cdn/latest/files/avatar-60x60.png"><link rel="canonical" href="https://anjiurine.top/posts/7da7c3f6/"><link rel="preconnect" href="//jsd.anjiurine.top"><link rel="preconnect" href="//static.cloudflareinsights.com"><link rel="preconnect" href="//cdn.dusays.com"><link rel="manifest" href="/manifest.json"><link rel="apple-touch-icon" sizes="180x180" href="https://registry.npmmirror.com/q78kg-website-npm-cdn/latest/files/avatar.png"><link rel="icon" type="image/png" sizes="32x32" href="https://registry.npmmirror.com/q78kg-website-npm-cdn/latest/files/avatar.png"><link rel="icon" type="image/png" sizes="16x16" href="https://registry.npmmirror.com/q78kg-website-npm-cdn/latest/files/avatar.png"><link rel="mask-icon" href="/img/safari-pinned-tab.svg" color="#5bbad5"><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://jsd.anjiurine.top/npm/@fortawesome/fontawesome-free@6/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://jsd.anjiurine.top/npm/node-snackbar/dist/snackbar.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://jsd.anjiurine.top/npm/@fancyapps/ui/dist/fancybox.css" media="print" onload="this.media='all'"><script defer="defer" data-pjax="data-pjax" src="https://static.cloudflareinsights.com/beacon.min.js" data-cf-beacon="{&quot;token&quot;: &quot;87c9b7f9ab404af1a750443261226d3c&quot;}"></script><script>const GLOBAL_CONFIG = {
17
+ root: '/',
18
+ algolia: undefined,
19
+ localSearch: {"path":"/search.xml","preload":true,"languages":{"hits_empty":"找不到您查询的内容:${query}"}},
20
+ translate: {"defaultEncoding":2,"translateDelay":0,"msgToTraditionalChinese":"简","msgToSimplifiedChinese":"繁"},
21
+ noticeOutdate: {"limitDay":120,"position":"top","messagePrev":"距离上次更新已经过了","messageNext":"天,文章所描述的內容可能已经发生变化,请留意"},
22
+ highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":500},
23
+ copy: {
24
+ success: '复制成功',
25
+ error: '复制错误',
26
+ noSupport: '浏览器不支持'
27
+ },
28
+ relativeDate: {
29
+ homepage: false,
30
+ post: false
31
+ },
32
+ runtime: '天',
33
+ date_suffix: {
34
+ just: '刚刚',
35
+ min: '分钟前',
36
+ hour: '小时前',
37
+ day: '天前',
38
+ month: '个月前'
39
+ },
40
+ copyright: {"limitCount":50,"languages":{"author":"作者: Q78KG","link":"链接: ","source":"来源: 梦溯·镜影","info":"著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。"}},
41
+ lightbox: 'fancybox',
42
+ Snackbar: {"chs_to_cht":"你已切换为繁体","cht_to_chs":"你已切换为简体","day_to_night":"你已切换为深色模式","night_to_day":"你已切换为浅色模式","bgLight":"#49b1f5","bgDark":"#1f1f1f","position":"top-right"},
43
+ source: {
44
+ justifiedGallery: {
45
+ js: 'https://jsd.anjiurine.top/npm/flickr-justified-gallery@2/dist/fjGallery.min.js',
46
+ css: 'https://jsd.anjiurine.top/npm/flickr-justified-gallery@2/dist/fjGallery.min.css'
47
+ }
48
+ },
49
+ isPhotoFigcaption: false,
50
+ islazyload: false,
51
+ isAnchor: false
52
+ }</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
53
+ title: '这可能是首个DiffSinger数据集全自动标注工具——Fast-Phasr-Next',
54
+ isPost: true,
55
+ isHome: false,
56
+ isHighlightShrink: false,
57
+ isToc: true,
58
+ postUpdate: '2024-03-15 20:57:56'
59
+ }</script><noscript><style type="text/css">
60
+ #nav {
61
+ opacity: 1
62
+ }
63
+ .justified-gallery img {
64
+ opacity: 1
65
+ }
66
+
67
+ #recent-posts time,
68
+ #post-meta time {
69
+ display: inline !important
70
+ }
71
+ </style></noscript><script>(win=>{
72
+ win.saveToLocal = {
73
+ set: function setWithExpiry(key, value, ttl) {
74
+ if (ttl === 0) return
75
+ const now = new Date()
76
+ const expiryDay = ttl * 86400000
77
+ const item = {
78
+ value: value,
79
+ expiry: now.getTime() + expiryDay,
80
+ }
81
+ localStorage.setItem(key, JSON.stringify(item))
82
+ },
83
+
84
+ get: function getWithExpiry(key) {
85
+ const itemStr = localStorage.getItem(key)
86
+
87
+ if (!itemStr) {
88
+ return undefined
89
+ }
90
+ const item = JSON.parse(itemStr)
91
+ const now = new Date()
92
+
93
+ if (now.getTime() > item.expiry) {
94
+ localStorage.removeItem(key)
95
+ return undefined
96
+ }
97
+ return item.value
98
+ }
99
+ }
100
+
101
+ win.getScript = url => new Promise((resolve, reject) => {
102
+ const script = document.createElement('script')
103
+ script.src = url
104
+ script.async = true
105
+ script.onerror = reject
106
+ script.onload = script.onreadystatechange = function() {
107
+ const loadState = this.readyState
108
+ if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
109
+ script.onload = script.onreadystatechange = null
110
+ resolve()
111
+ }
112
+ document.head.appendChild(script)
113
+ })
114
+
115
+ win.activateDarkMode = function () {
116
+ document.documentElement.setAttribute('data-theme', 'dark')
117
+ if (document.querySelector('meta[name="theme-color"]') !== null) {
118
+ document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
119
+ }
120
+ }
121
+ win.activateLightMode = function () {
122
+ document.documentElement.setAttribute('data-theme', 'light')
123
+ if (document.querySelector('meta[name="theme-color"]') !== null) {
124
+ document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
125
+ }
126
+ }
127
+ const t = saveToLocal.get('theme')
128
+
129
+ const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches
130
+ const isLightMode = window.matchMedia('(prefers-color-scheme: light)').matches
131
+ const isNotSpecified = window.matchMedia('(prefers-color-scheme: no-preference)').matches
132
+ const hasNoSupport = !isDarkMode && !isLightMode && !isNotSpecified
133
+
134
+ if (t === undefined) {
135
+ if (isLightMode) activateLightMode()
136
+ else if (isDarkMode) activateDarkMode()
137
+ else if (isNotSpecified || hasNoSupport) {
138
+ const now = new Date()
139
+ const hour = now.getHours()
140
+ const isNight = hour <= 6 || hour >= 18
141
+ isNight ? activateDarkMode() : activateLightMode()
142
+ }
143
+ window.matchMedia('(prefers-color-scheme: dark)').addListener(function (e) {
144
+ if (saveToLocal.get('theme') === undefined) {
145
+ e.matches ? activateDarkMode() : activateLightMode()
146
+ }
147
+ })
148
+ } else if (t === 'light') activateLightMode()
149
+ else activateDarkMode()
150
+
151
+ const asideStatus = saveToLocal.get('aside-status')
152
+ if (asideStatus !== undefined) {
153
+ if (asideStatus === 'hide') {
154
+ document.documentElement.classList.add('hide-aside')
155
+ } else {
156
+ document.documentElement.classList.remove('hide-aside')
157
+ }
158
+ }
159
+
160
+ const detectApple = () => {
161
+ if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
162
+ document.documentElement.classList.add('apple')
163
+ }
164
+ }
165
+ detectApple()
166
+ })(window)</script><link rel="stylesheet" type="text/css" href="https://registry.npmmirror.com/js-heo/latest/files/mainColor/heoMainColor.css"><link rel="stylesheet" type="text/css" href="https://registry.npmmirror.com/js-heo/latest/files/404/404.css"><script async="" data-pjax="" src="/js/jikewater.js"></script><script async="" data-pjax="" src="/js/jike.js"></script><link rel="stylesheet" type="text/css" href="/css/essay.css"><link rel="stylesheet" type="text/css" href="/css/404page.css"><script src="/live2d-widget/autoload.js"></script><link rel="stylesheet" href="/css/ariasakablog.css"><link id="css" rel="stylesheet" href="/css/stylessimple.css"><link rel="stylesheet" href="/css/iconfont.css"><style>#article-container h1:before, h2:before, h3:before, h4:before, h5:before, h6:before { -webkit-animation: avatar_turn_around 3s linear infinite; -moz-animation: avatar_turn_around 3s linear infinite; -o-animation: avatar_turn_around 3s linear infinite; -ms-animation: avatar_turn_around 3s linear infinite; animation: avatar_turn_around 3s linear infinite; }</style><style id="barragesColor"></style><style id="settingStyle"></style><style id="yjjs"></style><style id="themeColor"></style><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans+SC"><link rel="stylesheet" href="https://jsd.anjiurine.top/gh/Zfour/Butterfly-card-history/baiduhistory/css/main.css"><link rel="stylesheet" href="/css/commentBarrage.css"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Serif+SC"><link rel="stylesheet" type="text/css" href="https://registry.npmmirror.com/node-snackbar/latest/files/dist/snackbar.min.css"><script charset="UTF-8" id="LA_COLLECT" src="//sdk.51.la/js-sdk-pro.min.js"></script><script>LA.init({id: "JnlSnWLD7XChjrlx",ck: "JnlSnWLD7XChjrlx"})</script><script src="https://sdk.51.la/perf/js-sdk-perf.min.js" crossorigin="anonymous"></script><script>new LingQue.Monitor().init({id:"JnnW6bt2WtyehVan"});</script><script src="/swReg.js"></script></head><body><span id="fps"></span><style id="grays"></style><script src="https://registry.npmmirror.com/prefetch-page/latest/files"></script><script>addEventListener('DOMContentLoaded', function () {prefetch({ threshold: 25, delay: 3000, limit: 10 ,customs: ['search.xml']})});requestIdleCallback(function () {prefetch({ threshold: 25, delay: 3000, limit: 10,customs: ['search.xml']})})</script><!-- hexo injector head_end start --><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Zfour/Butterfly-card-history/baiduhistory/css/main.css"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/5.4.5/css/swiper.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://registry.npmmirror.com/hexo-butterfly-swiper-lyx/latest/files/lib/swiperstyle.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://registry.npmmirror.com/hexo-butterfly-tag-plugins-plus/latest/files/lib/assets/font-awesome-animation.min.css" media="defer" onload="this.media='all'"><link rel="stylesheet" href="https://registry.npmmirror.com/hexo-butterfly-tag-plugins-plus/latest/files/lib/tag_plugins.css" media="defer" onload="this.media='all'"><script src="https://registry.npmmirror.com/hexo-butterfly-tag-plugins-plus/latest/files/lib/assets/carousel-touch.js"></script><!-- hexo injector head_end end --><meta name="generator" content="Hexo 7.0.0"><link rel="alternate" href="/atom.xml" title="梦溯·镜影" type="application/atom+xml">
167
+ <div id="loading-box"><div class="loading-left-bg"></div><div class="loading-right-bg"></div><img src="/img/nyancat.gif" id="loadcat"></div><div id="web_bg"></div><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><hr><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fa fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);" rel="external nofollow noreferrer"><i class="fa-fw fa fa-newspaper"></i><span> 文章</span><!--i.fas.fa-chevron-down--></a><ul class="menus_item_child"><li><a class="site-page child" href="javascript:toRandomPost()" rel="external nofollow noreferrer"><i class="fa-fw fa fa-paper-plane"></i><span> 随便逛逛</span></a></li><li><a class="site-page child" href="/archives/"><i class="fa-fw fa fa-archive"></i><span> 归档</span></a></li><li><a class="site-page child" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></li><li><a class="site-page child" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></li></ul></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);" rel="external nofollow noreferrer"><i class="fa-fw fa fa-sitemap"></i><span> 本站</span><!--i.fas.fa-chevron-down--></a><ul class="menus_item_child"><li><a class="site-page child" href="/links/"><i class="fa-fw fas fa-link"></i><span> 友链</span></a></li><li><a class="site-page child" href="/fcircle/"><i class="fa-fw fab fa-galactic-republic"></i><span> 朋友圈</span></a></li><li><a class="site-page child" href="/othersite/"><i class="fa-fw fa fa-tasks"></i><span> 分站</span></a></li></ul></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);" rel="external nofollow noreferrer"><i class="fa-fw fa fa-briefcase"></i><span> 工具</span><!--i.fas.fa-chevron-down--></a><ul class="menus_item_child"><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://pixiv.anjiurine.top/"><i class="fa-fw fa fa-book"></i><span> Pixiv镜像站</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://api.anjiurine.top/"><i class="fa-fw fa fa-cube"></i><span> 公共API</span></a></li></ul></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);" rel="external nofollow noreferrer"><i class="fa-fw fa-fw fas fa-address-card"></i><span> 我的</span><!--i.fas.fa-chevron-down--></a><ul class="menus_item_child"><li><a class="site-page child" href="/bangumis/"><i class="fa-fw fa-fw fas fa fa-film"></i><span> 追番</span></a></li><li><a class="site-page child" href="/about/"><i class="fa-fw fa fa-info-circle"></i><span> 关于我</span></a></li><li><a class="site-page child" href="/bigpie/"><i class="fa-fw fas fa-cheese"></i><span> 大饼</span></a></li></ul></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);" rel="external nofollow noreferrer"><i class="fa-fw fas fa-link"></i><span> 线路</span><!--i.fas.fa-chevron-down--></a><ul class="menus_item_child"><li><a class="site-page child" href="https://anjiurine.top/"><span> 主站</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://vercel.anjiurine.top/"><span> Vercel</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.anjiurine.top/"><span> Github</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://cf.anjiurine.top/"><span> Cloudflare</span></a></li></ul></div></div></div></div><div class="post" id="body-wrap"><header class="post-bg" id="page-header" style="background-image: url('https://pximg.anjiurine.top/img-original/img/2022/07/11/17/28/44/99654366_p0.jpg')"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">梦溯·镜影</a></span><div id="menus"><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fa fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);" rel="external nofollow noreferrer"><i class="fa-fw fa fa-newspaper"></i><span> 文章</span><!--i.fas.fa-chevron-down--></a><ul class="menus_item_child"><li><a class="site-page child" href="javascript:toRandomPost()" rel="external nofollow noreferrer"><i class="fa-fw fa fa-paper-plane"></i><span> 随便逛逛</span></a></li><li><a class="site-page child" href="/archives/"><i class="fa-fw fa fa-archive"></i><span> 归档</span></a></li><li><a class="site-page child" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></li><li><a class="site-page child" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></li></ul></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);" rel="external nofollow noreferrer"><i class="fa-fw fa fa-sitemap"></i><span> 本站</span><!--i.fas.fa-chevron-down--></a><ul class="menus_item_child"><li><a class="site-page child" href="/links/"><i class="fa-fw fas fa-link"></i><span> 友链</span></a></li><li><a class="site-page child" href="/fcircle/"><i class="fa-fw fab fa-galactic-republic"></i><span> 朋友圈</span></a></li><li><a class="site-page child" href="/othersite/"><i class="fa-fw fa fa-tasks"></i><span> 分站</span></a></li></ul></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);" rel="external nofollow noreferrer"><i class="fa-fw fa fa-briefcase"></i><span> 工具</span><!--i.fas.fa-chevron-down--></a><ul class="menus_item_child"><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://pixiv.anjiurine.top/"><i class="fa-fw fa fa-book"></i><span> Pixiv镜像站</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://api.anjiurine.top/"><i class="fa-fw fa fa-cube"></i><span> 公共API</span></a></li></ul></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);" rel="external nofollow noreferrer"><i class="fa-fw fa-fw fas fa-address-card"></i><span> 我的</span><!--i.fas.fa-chevron-down--></a><ul class="menus_item_child"><li><a class="site-page child" href="/bangumis/"><i class="fa-fw fa-fw fas fa fa-film"></i><span> 追番</span></a></li><li><a class="site-page child" href="/about/"><i class="fa-fw fa fa-info-circle"></i><span> 关于我</span></a></li><li><a class="site-page child" href="/bigpie/"><i class="fa-fw fas fa-cheese"></i><span> 大饼</span></a></li></ul></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);" rel="external nofollow noreferrer"><i class="fa-fw fas fa-link"></i><span> 线路</span><!--i.fas.fa-chevron-down--></a><ul class="menus_item_child"><li><a class="site-page child" href="https://anjiurine.top/"><span> 主站</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://vercel.anjiurine.top/"><span> Vercel</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.anjiurine.top/"><span> Github</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://cf.anjiurine.top/"><span> Cloudflare</span></a></li></ul></div></div><center id="name-container"><a id="page-name" href="javascript:rmf.scrollToTop()" rel="external nofollow noreferrer">PAGE_NAME</a></center></div><div id="toggleButtons"><div id="search-button"><a class="site-page social-icon search"><i class="fas fa-search fa-fw"></i><!--span=' '+_p('search.title')--></a></div><div id="randoms"><a class="site-page social-icon" href="javascript:toRandomPost()" rel="external nofollow noreferrer"><i class="fa fa-paper-plane"></i></a></div><div id="travellings"><a class="site-page social-icon" target="_blank" rel="noopener external nofollow noreferrer" href="https://travellings.link"><i class="fa fa-subway"></i></a></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="post-info"><h1 class="post-title">这可能是首个DiffSinger数据集全自动标注工具——Fast-Phasr-Next</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="far fa-calendar-alt fa-fw post-meta-icon"></i><span class="post-meta-label">发表于</span><time class="post-meta-date-created" datetime="2023-09-28T16:00:00.000Z" title="发表于 2023-09-29 00:00:00">2023-09-29</time><span class="post-meta-separator">|</span><i class="fas fa-history fa-fw post-meta-icon"></i><span class="post-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2024-03-15T12:57:56.735Z" title="更新于 2024-03-15 20:57:56">2024-03-15</time></span><span class="post-meta-categories"><span class="post-meta-separator">|</span><i class="fas fa-inbox fa-fw post-meta-icon"></i><a class="post-meta-categories" href="/categories/%E9%97%B2%E8%81%8A%E6%9D%82%E8%B0%88/">闲聊杂谈</a></span></div><div class="meta-secondline"><span class="post-meta-separator">|</span><span class="post-meta-wordcount"><i class="far fa-file-word fa-fw post-meta-icon"></i><span class="post-meta-label">字数总计:</span><span class="word-count">774</span><span class="post-meta-separator">|</span><i class="far fa-clock fa-fw post-meta-icon"></i><span class="post-meta-label">阅读时长:</span><span>2分钟</span></span><span class="post-meta-separator">|</span><span id="" data-flag-title="这可能是首个DiffSinger数据集全自动标注工具——Fast-Phasr-Next"><i class="far fa-eye fa-fw post-meta-icon"></i><span class="post-meta-label">阅读量:</span><span id="twikoo_visitors"></span></span><span class="post-meta-separator">|</span><span class="post-meta-commentcount"><i class="far fa-comments fa-fw post-meta-icon"></i><span class="post-meta-label">评论数:</span><a href="/posts/7da7c3f6/#post-comment"><span id="twikoo-count"></span></a></span><span class="post-meta-separator">|&nbsp; <span class="post-meta-dianzan"><a class="dianzan" href="javascript:void(0)" rel="external nofollow noreferrer" onclick="dianzan()"><i class="fas fa-thumbs-up"></i></a><span class="post-meta-label"> 点赞:</span><span class="dianzan-count">0</span></span></span></div></div></div></header><main class="layout" id="content-inner"><div id="post"><article class="post-content" id="article-container"><h2 id="引言"><a class="markdownIt-Anchor" href="#引言"></a> 引言</h2>
168
+ <p>DiffSinger是一种基于神经网络的歌声合成系统,它可以根据给定的歌词和旋律生成高质量的歌声。然而,DiffSinger的训练过程也面临着一些挑战,其中之一就是它需要一个大规模且高质量的歌声数据集来训练。为了制作一个适合DiffSinger的数据集,声库开发者需要对每个音频片段进行音素持续时间标注,这是一个非常耗时和繁琐的过程。</p>
169
+ <p>因此,我们开发了一个自动标注工具,名为Fast-Phasr-Next,它可以快速地生成DiffSinger所需的标注信息,从而简化了数据集的制作过程。本文将介绍我们的工具的设计思路,主要功能,技术细节,以及使用方法。需要注意的是,目前该工具目前<strong>支持中文、英文和日语</strong>(但日语识别的可靠性不高)。</p>
170
+ <h2 id="开发思路"><a class="markdownIt-Anchor" href="#开发思路"></a> 开发思路</h2>
171
+ <p>在开发时,我们借鉴了Fast-Phasr,也就是第一代自动标注工具的开发者Infinity-INF的设计思路,使用了AI来检测数据音频中的人声,不过初代工具所转换出来的.lab文件中的音素是散乱的,需要重新整合,这使得下一步的开发难上加难。</p>
172
+ <p>第一代不同的是,我们使用了OpenAI的语音识别项目openai-whisper,它可以将输入的语音通过模型精准的转换为文字。当音频转换为文字后,困难便会迎刃而解,在此,我们使用pypinyin来处理转换出的文字,这样输出的就是符合DiffSinger数据集标准的标注了。</p>
173
+ <h2 id="使用"><a class="markdownIt-Anchor" href="#使用"></a> 使用</h2>
174
+ <p>目前Fast-Phasr-Next支持openai-whisper的几个模型</p>
175
+ <table>
176
+ <thead>
177
+ <tr>
178
+ <th style="text-align:center">Size</th>
179
+ <th style="text-align:center">Parameters</th>
180
+ <th style="text-align:center">English-only model</th>
181
+ <th style="text-align:center">Multilingual model</th>
182
+ <th style="text-align:center">Required VRAM</th>
183
+ <th style="text-align:center">Relative speed</th>
184
+ </tr>
185
+ </thead>
186
+ <tbody>
187
+ <tr>
188
+ <td style="text-align:center">tiny</td>
189
+ <td style="text-align:center">39 M</td>
190
+ <td style="text-align:center"><code>tiny.en</code></td>
191
+ <td style="text-align:center"><code>tiny</code></td>
192
+ <td style="text-align:center">~1 GB</td>
193
+ <td style="text-align:center">~32x</td>
194
+ </tr>
195
+ <tr>
196
+ <td style="text-align:center">base</td>
197
+ <td style="text-align:center">74 M</td>
198
+ <td style="text-align:center"><code>base.en</code></td>
199
+ <td style="text-align:center"><code>base</code></td>
200
+ <td style="text-align:center">~1 GB</td>
201
+ <td style="text-align:center">~16x</td>
202
+ </tr>
203
+ <tr>
204
+ <td style="text-align:center">small</td>
205
+ <td style="text-align:center">244 M</td>
206
+ <td style="text-align:center"><code>small.en</code></td>
207
+ <td style="text-align:center"><code>small</code></td>
208
+ <td style="text-align:center">~2 GB</td>
209
+ <td style="text-align:center">~6x</td>
210
+ </tr>
211
+ <tr>
212
+ <td style="text-align:center">medium</td>
213
+ <td style="text-align:center">769 M</td>
214
+ <td style="text-align:center"><code>medium.en</code></td>
215
+ <td style="text-align:center"><code>medium</code></td>
216
+ <td style="text-align:center">~5 GB</td>
217
+ <td style="text-align:center">~2x</td>
218
+ </tr>
219
+ <tr>
220
+ <td style="text-align:center">large</td>
221
+ <td style="text-align:center">1550 M</td>
222
+ <td style="text-align:center">N/A</td>
223
+ <td style="text-align:center"><code>large</code></td>
224
+ <td style="text-align:center">~10 GB</td>
225
+ <td style="text-align:center">1x</td>
226
+ </tr>
227
+ </tbody>
228
+ </table>
229
+ <p>其中base和small模型已经能满足大部分的需要,更大的模型会减缓标注的速度,如非必要无需选择更大的模型。</p>
230
+ <p>使用项目先clone仓库到任意文件夹</p>
231
+ <figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git clone https://github.com/Anjiurine/fast-phasr-next.git</span><br></pre></td></tr></tbody></table></figure>
232
+ <p>随后创建一个conda虚拟环境</p>
233
+ <figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">conda create -n fast-phasr-next python=3.11 -y</span><br><span class="line">conda activate fast-phasr-next</span><br></pre></td></tr></tbody></table></figure>
234
+ <p>随后安装依赖,需要注意的是,使用gpu的用户需要先安装cuda版本的torch,否则在openai-whisper安装时会自动安装cpu-only版本的torch,这样在使用时会对推理速度造成影响。</p>
235
+ <figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"># cpu</span><br><span class="line">pip install -r requirement.txt</span><br><span class="line"></span><br><span class="line"># gpu</span><br><span class="line">conda install cudatoolkit -y</span><br><span class="line">pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118</span><br><span class="line"></span><br><span class="line">pip install -r requirement.txt</span><br></pre></td></tr></tbody></table></figure>
236
+ <p>在安装好依赖后就可以开始推理啦</p>
237
+ <figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python main.py -d [import directory] -m [model default="base"] -l [language default="Chinese"]</span><br></pre></td></tr></tbody></table></figure>
238
+ <p><strong>ps:程序永远存在不确定性,请不要100%相信自动程序(即使程序有很高的可靠性),如果是重大项目请在使用该程序后对音素序列进行必要的检查</strong></p>
239
+ </article><div class="post-copyright"><div class="post-copyright__title"><span class="post-copyright-info"><h>这可能是首个DiffSinger数据集全自动标注工具——Fast-Phasr-Next</h></span></div><div class="post-copyright__type"><span class="post-copyright-info"><a href="https://anjiurine.top/posts/7da7c3f6/">https://anjiurine.top/posts/7da7c3f6/</a></span></div><div class="post-copyright-m"><div class="post-copyright-m-info"><div class="post-copyright-a" style="display: inline-block;width: 120px"><h>作者</h><div class="post-copyright-cc-info"><h>Q78KG</h></div></div><div class="post-copyright-c" style="display: inline-block;width: 120px"><h>发布于</h><div class="post-copyright-cc-info"><h>2023-09-29</h></div></div><div class="post-copyright-u" style="display: inline-block;width: 120px"><h>更新于</h><div class="post-copyright-cc-info"><h>2024-03-15</h></div></div><div class="post-copyright-c" style="display: inline-block;width: 180px"><h>许可协议</h><div class="post-copyright-cc-info"><a class="icon" rel="noopener external nofollow noreferrer" target="_blank" title="Creative Commons" href="https://creativecommons.org/"><i class="fab fa-creative-commons"></i></a><a rel="noopener external nofollow noreferrer" target="_blank" title="CC BY-NC-SA 4.0" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh">CC BY-NC-SA 4.0</a></div></div></div></div></div><div class="tag_share"><div class="post-meta__tag-list"><a class="post-meta__tags" href="/tags/DiffSinger/">DiffSinger</a><a class="post-meta__tags" href="/tags/%E8%87%AA%E5%8A%A8%E6%A0%87%E6%B3%A8/">自动标注</a><a class="post-meta__tags" href="/tags/AI/">AI</a></div><div class="post_share"><div class="social-share" data-image="https://pximg.anjiurine.top/img-original/img/2022/07/11/17/28/44/99654366_p0.jpg" data-sites="wechat,weibo,qq"></div><link rel="stylesheet" href="https://jsd.anjiurine.top/npm/social-share.js/dist/css/share.min.css" media="print" onload="this.media='all'"><script src="https://jsd.anjiurine.top/gh/overtrue/share.js@master/dist/js/social-share.min.js" defer=""></script></div></div><nav class="pagination-post" id="pagination"><div class="prev-post pull-left"><a href="/posts/6f3c565b/"><img class="prev-cover" src="https://registry.npmmirror.com/q78kg-website-npm-cdn/latest/files/MXP1xJAnYDlLGWT.jpg" onerror="onerror=null;src='https://api.vvhan.com/api/acgimg'" alt="cover of previous post"><div class="pagination-info"><div class="label">上一篇</div><div class="prev_info">拯救流量爆炸的vercel——使用Cloudflare Workers做负载均衡</div></div></a></div><div class="next-post pull-right"><a href="/posts/c262e439/"><img class="next-cover" src="https://pximg.anjiurine.top/img-original/img/2023/11/14/12/04/37/113398570_p0.jpg" onerror="onerror=null;src='https://api.vvhan.com/api/acgimg'" alt="cover of next post"><div class="pagination-info"><div class="label">下一篇</div><div class="next_info">2023年终总结</div></div></a></div></nav><hr><div id="post-comment"><div class="comment-head"><div class="comment-headline"><i class="fas fa-comments fa-fw"></i><span> 评论</span></div></div><div class="comment-wrap"><div><div id="twikoo-wrap"></div></div></div></div></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="fgx"><div class="avatar_img"><img style="border-radius:10px" src="https://registry.npmmirror.com/q78kg-website-npm-cdn/latest/files/avatar-60x60.png" onerror="this.onerror=null;this.src='https://apis.yisous.xyz/api/randomAvatar'" alt="avatar"></div><div class="author-info__description">这是梦溯·镜影,会时不时发一些自己都没眼看的文章</div><div class="rights"><div class="author-info__name">Q78KG</div><div class="card-info-data site-data is-center"><a class="adiv" href="/archives/"><div class="headline">文章</div><div class="length-num">10</div></a><a class="adiv" href="/tags/"><div class="headline">标签</div><div class="length-num">32</div></a><a class="adiv" href="/categories/"><div class="headline">分类</div><div class="length-num">6</div></a></div></div></div><div class="card-info-social-icons"><a class="social-icon" href="https://github.com/Hoshino-Yumetsuki" rel="external nofollow noreferrer" target="_blank" title="Github"><i class="fab fa-github"></i></a></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn fa-shake"></i><span>公告</span></div><div class="announcement_content">本网站的Twikoo评论系统使用Cravatar头像系统,请自行绑定邮箱配置</div></div><div class="card-widget card-history"><div class="card-content"><div class="item-headline"><i class="fas fa-clock fa-spin"></i><span>那年今日</span></div><div id="history-baidu" style="height: 100px;overflow: hidden;"><div class="history_swiper-container" id="history-container" style="width: 100%;height: 100%;"><div class="swiper-wrapper" id="history_container_wrapper" style="height:20px"></div></div></div></div></div><div class="sticky_layout"><div class="card-widget" id="card-toc"><div class="item-headline"><i class="fas fa-stream"></i><span>目录</span><span class="toc-percentage"></span></div><div class="toc-content"><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%BC%95%E8%A8%80"><span class="toc-number">1.</span> <span class="toc-text"> 引言</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%BC%80%E5%8F%91%E6%80%9D%E8%B7%AF"><span class="toc-number">2.</span> <span class="toc-text"> 开发思路</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BD%BF%E7%94%A8"><span class="toc-number">3.</span> <span class="toc-text"> 使用</span></a></li></ol></div></div><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/posts/228c2ef8/" title="家里云折腾之路——如何把一台好好的浪潮NF5270M3玩坏"><img src="https://pximg.anjiurine.top/img-original/img/2020/02/24/00/00/10/79687052_p0.jpg" onerror="this.onerror=null;this.src='https://api.vvhan.com/api/acgimg'" alt="家里云折腾之路——如何把一台好好的浪潮NF5270M3玩坏"></a><div class="content"><a class="title" href="/posts/228c2ef8/" title="家里云折腾之路——如何把一台好好的浪潮NF5270M3玩坏">家里云折腾之路——如何把一台好好的浪潮NF5270M3玩坏</a><time datetime="2024-02-08T16:00:00.000Z" title="发表于 2024-02-09 00:00:00">2024-02-09</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/da2093a1/" title="2024,哪些服务器提供商的性价比高?"><img src="https://pximg.anjiurine.top/img-original/img/2024/02/06/00/17/01/115799920_p0.jpg" onerror="this.onerror=null;this.src='https://api.vvhan.com/api/acgimg'" alt="2024,哪些服务器提供商的性价比高?"></a><div class="content"><a class="title" href="/posts/da2093a1/" title="2024,哪些服务器提供商的性价比高?">2024,哪些服务器提供商的性价比高?</a><time datetime="2024-02-07T16:00:00.000Z" title="发表于 2024-02-08 00:00:00">2024-02-08</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/c262e439/" title="2023年终总结"><img src="https://pximg.anjiurine.top/img-original/img/2023/11/14/12/04/37/113398570_p0.jpg" onerror="this.onerror=null;this.src='https://api.vvhan.com/api/acgimg'" alt="2023年终总结"></a><div class="content"><a class="title" href="/posts/c262e439/" title="2023年终总结">2023年终总结</a><time datetime="2023-12-31T16:00:00.000Z" title="发表于 2024-01-01 00:00:00">2024-01-01</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/7da7c3f6/" title="这可能是首个DiffSinger数据集全自动标注工具——Fast-Phasr-Next"><img src="https://pximg.anjiurine.top/img-original/img/2022/07/11/17/28/44/99654366_p0.jpg" onerror="this.onerror=null;this.src='https://api.vvhan.com/api/acgimg'" alt="这可能是首个DiffSinger数据集全自动标注工具——Fast-Phasr-Next"></a><div class="content"><a class="title" href="/posts/7da7c3f6/" title="这可能是首个DiffSinger数据集全自动标注工具——Fast-Phasr-Next">这可能是首个DiffSinger数据集全自动标注工具——Fast-Phasr-Next</a><time datetime="2023-09-28T16:00:00.000Z" title="发表于 2023-09-29 00:00:00">2023-09-29</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/6f3c565b/" title="拯救流量爆炸的vercel——使用Cloudflare Workers做负载均衡"><img src="https://registry.npmmirror.com/q78kg-website-npm-cdn/latest/files/MXP1xJAnYDlLGWT.jpg" onerror="this.onerror=null;this.src='https://api.vvhan.com/api/acgimg'" alt="拯救流量爆炸的vercel——使用Cloudflare Workers做负载均衡"></a><div class="content"><a class="title" href="/posts/6f3c565b/" title="拯救流量爆炸的vercel——使用Cloudflare Workers做负载均衡">拯救流量爆炸的vercel——使用Cloudflare Workers做负载均衡</a><time datetime="2023-09-16T16:00:00.000Z" title="发表于 2023-09-17 00:00:00">2023-09-17</time></div></div></div></div><div class="card-widget card-weather" style="width:100%,height:270px"><div class="item-headline"><i class="fas fa-cloud-sun"></i><span>天气</span></div><div id="he-plugin-standard"></div><script>WIDGET = {
240
+ "CONFIG": {
241
+ "layout": "2",
242
+ "width": 270,
243
+ "height": 270,
244
+ "background": "5",
245
+ "dataColor": "000000",
246
+ "key": "170186298b184055bafbb4d30e4322a7"
247
+ }
248
+ }</script><script src="https://widget.qweather.net/standard/static/js/he-standard-common.js?v=2.0"></script></div></div></div></main><footer id="footer" style="background: transparent"><div id="footer-wrap"><div class="social-icons"></div><div class="copyright">©2022 - 2024 By Q78KG</div><div class="framework-info"></div><div class="footer_custom_text" id="footer_custom_text">这个小破站已运行{y}年{d}天{s}时{min}分{sec}秒</div></div></footer></div><div id="rightside"><div id="rightside-config-hide"></div><div id="rightside-config-show"><button id="readmode" type="button" title="阅读模式"><i class="fas fa-book-open"></i></button><button id="translateLink" type="button" title="简繁转换">简</button><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button><button class="close" id="mobile-toc-button" type="button" title="目录"><i class="fas fa-list-ul"></i></button><a id="to_comment" href="#post-comment" title="直达评论"><i class="fas fa-comments"></i></a><a id="switch_commentBarrage" href="javascript:switchCommentBarrage();" rel="external nofollow noreferrer" title="开关弹幕"><i class="iconfont icon-danmu"></i></a><a id="opensettings" href="javascript:toggleWinbox();" rel="external nofollow noreferrer" title="博客设置"><i class="fa fa-wrench"></i></a><button id="go-up" type="button" title="回到顶部" onclick="rmf.scrollToTop()"><i class="fas fa-arrow-up"></i></button></div></div><div id="local-search"><div class="search-dialog"><nav class="search-nav"><span class="search-dialog-title">搜索</span><span id="loading-status"></span><button class="search-close-button"><i class="fas fa-times"></i></button></nav><div class="is-center" id="loading-database"><i class="fas fa-spinner fa-pulse"></i><span> 数据库加载中</span></div><div class="search-wrap"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索文章" type="text"></div></div><hr><div id="local-search-results"></div></div></div><div id="search-mask"></div></div><div class="js-pjax" id="rightMenu"><div class="rightMenu-group rightMenu-small"><a class="rightMenu-item" href="javascript:window.history.back();" rel="external nofollow noreferrer"><i class="fa fa-arrow-left"></i></a><a class="rightMenu-item" href="javascript:window.history.forward();" rel="external nofollow noreferrer"><i class="fa fa-arrow-right"></i></a><a class="rightMenu-item" href="javascript:window.location.reload();" rel="external nofollow noreferrer"><i class="fa fa-refresh"></i></a><a class="rightMenu-item" href="javascript:rmf.scrollToTop();" rel="external nofollow noreferrer"><i class="fa fa-arrow-up"></i></a></div><div class="rightMenu-group rightMenu-line hide" id="menu-text"><a class="rightMenu-item" href="javascript:rmf.copySelect();" rel="external nofollow noreferrer"><i class="fa fa-copy"></i><span>复制</span></a><a class="rightMenu-item" href="javascript:window.open(&quot;https://www.baidu.com/s?wd=&quot;+window.getSelection().toString());window.location.reload();" rel="external nofollow noreferrer"><i class="iconfont icon-baidu"></i><span>百度搜索</span></a><a class="rightMenu-item" href="javascript:rmf.searchinThisPage();" rel="external nofollow noreferrer"><i class="fas fa-search"></i><span>站内搜索</span></a><a class="rightMenu-item" href="#post-comment" onclick="rmf.yinyong()"><i class="fa-solid fa-message"></i><span>引用文本评论</span></a></div><div class="rightMenu-group rightMenu-line hide" id="menu-too"><a class="rightMenu-item" href="javascript:window.open(window.getSelection().toString());window.location.reload();" rel="external nofollow noreferrer"><i class="fa fa-link"></i><span>转到链接</span></a></div><div class="rightMenu-group rightMenu-line hide" id="menu-paste"><a class="rightMenu-item" href="javascript:rmf.paste()" rel="external nofollow noreferrer"><i class="fa fa-copy"></i><span>粘贴</span></a></div><div class="rightMenu-group rightMenu-line hide" id="menu-post"><a class="rightMenu-item" href="#post-comment"><i class="fas fa-comment"></i><span>空降评论</span></a><a class="rightMenu-item" href="javascript:switchCommentBarrage()" rel="external nofollow noreferrer"><i class="iconfont icon-danmu"></i><span>开/关评论弹幕</span></a><a class="rightMenu-item" href="javascript:rmf.copyWordsLink()" rel="external nofollow noreferrer"><i class="fa fa-link"></i><span>复制本文地址</span></a></div><div class="rightMenu-group rightMenu-line hide" id="menu-to"><a class="rightMenu-item" href="javascript:rmf.openWithNewTab()" rel="external nofollow noreferrer"><i class="fa fa-window-restore"></i><span>新窗口打开</span></a><a class="rightMenu-item" id="menu-too" href="javascript:rmf.open()" rel="external nofollow noreferrer"><i class="fa fa-link"></i><span>转到链接</span></a><a class="rightMenu-item" href="javascript:rmf.copyLink()" rel="external nofollow noreferrer"><i class="fa fa-copy"></i><span>复制链接</span></a></div><div class="rightMenu-group rightMenu-line hide" id="menu-img"><a class="rightMenu-item" href="javascript:rmf.saveAs()" rel="external nofollow noreferrer"><i class="fa fa-download"></i><span>保存图片</span></a><a class="rightMenu-item" href="javascript:rmf.openWithNewTab()" rel="external nofollow noreferrer"><i class="fa fa-window-restore"></i><span>在新窗口打开</span></a><a class="rightMenu-item" href="javascript:rmf.click()" rel="external nofollow noreferrer"><i class="fa fa-arrows-alt"></i><span>全屏显示</span></a><a class="rightMenu-item" href="javascript:rmf.copyLink()" rel="external nofollow noreferrer"><i class="fa fa-copy"></i><span>复制图片链接</span></a></div><div class="rightMenu-group rightMenu-line"><a class="rightMenu-item" href="javascript:toRandomPost()" rel="external nofollow noreferrer"><i class="fa fa-paper-plane"></i><span>随便逛逛</span></a><a class="rightMenu-item" href="javascript:rmf.switchDarkMode();" rel="external nofollow noreferrer"><i class="fa fa-moon"></i><span>昼夜切换</span></a><a class="rightMenu-item" href="javascript:rmf.translate();" rel="external nofollow noreferrer"><i class="iconfont icon-fanti"></i><span>繁简转换</span></a><a class="rightMenu-item" href="javascript:pjax.loadUrl(&quot;/license/&quot;);" rel="external nofollow noreferrer"><i class="fa fa-info-circle"></i><span>版权声明</span></a><a class="rightMenu-item" href="javascript:toggleWinbox();" rel="external nofollow noreferrer"><i class="fas fa-cog"></i><span>博客设置</span></a><a class="rightMenu-item" href="javascript:fullScreen();" rel="external nofollow noreferrer"><i class="fas fa-expand"></i><span>进入全屏</span></a></div></div><div class="js-pjax" id="settingWindow"><span class="setting-title"> <span id="stt">控制面板</span><a id="close-console" onclick="toggleWinbox();">×</a></span><button id="backer" onclick="$('.asetting').hide();$('.settingx').show();$('#backer').hide()"><i class="fa fa-chevron-left"></i><span>返回</span></button><div class="settings"><div id="setting-buttons"><button class="settingx" onclick="$('#theme-settings').show();$('.settingx').hide();$('#backer').show();"><i class="fas fa-layer-group"></i><span>外观</span></button><button class="settingx" onclick="$('#font-settings').show();$('.settingx').hide();$('#backer').show();"><i class="fa fa-font"></i><span>字体</span></button><button class="settingx" onclick="$('#background-settings').show();$('.settingx').hide();$('#backer').show();"><i class="far fa-image"></i><span>背景</span></button><button class="settingx" onclick="$('#con-echarts').show();$('.settingx').hide();$('#backer').show();var evt = document.createEvent(&quot;HTMLEvents&quot;);evt.initEvent(&quot;resize&quot;, false, false);window.dispatchEvent(evt);"><i class="fas fa-chart-pie"></i><span>统计</span></button><button class="settingx" onclick="$('#con-abouts').show();$('.settingx').hide();$('#backer').show();"><i class="fa fa-cloud-download"></i><span>关于</span></button></div><div id="setting-hides"><div class="asetting" id="theme-settings"><h2 class="content-head">性能设置</h2><p></p><div class="content" style="display:flex"><input id="blur" type="checkbox" onclick="setBlur()"><div class="content-text">禁用模糊效果</div></div><div class="content" style="display:flex"><input id="fpson" type="checkbox" onclick="fpssw()" style="flex-shrink: 0"><div class="content-text"><span>开启帧率检测(</span><a href="javascript:window.location.reload()" rel="external nofollow noreferrer">刷新</a><span>后生效)</span></div></div><p></p><p></p><h2 class="content-head">主题设置</h2><div class="content" style="display:flex"><input id="hideAplayer" type="checkbox" onclick="toggleAplayer()"><div class="content-text">显示aplayer</div></div><div class="content" style="display:flex"><input id="hideSakura" type="checkbox" onclick="toggleSakuras()"><div class="content-text">落樱特效</div></div><div class="content" style="display:flex"><input id="autoTheme" type="checkbox" onclick="toggleAutoTheme()"><div class="content-text">明暗模式自动切换</div></div><div class="content" style="display:flex"><input id="autoColor" type="checkbox" onclick="autoColor()"><div class="content-text">自动主题色(跟随文章封面)</div></div>未完工<div class="content" style="display:flex"><input id="hideAplayer" type="checkbox" onclick="toggleNav()"><div class="content-text">固定导航栏</div></div>###<div class="content" style="display:flex"><button class="content-button" onclick="switchTheme()">切换主题</button></div><p></p><p></p><h3 class="content-head">主题色</h3><div class="content" id="themeColorSettings" style="display:flex"><input id="red" type="radio" name="colors" onclick="setColor('red')"><input id="orange" type="radio" name="colors" onclick="setColor('orange')"><input id="yellow" type="radio" name="colors" onclick="setColor('yellow')"><input id="green" type="radio" name="colors" onclick="setColor('green')"><input id="blue" type="radio" name="colors" onclick="setColor('blue')"><input id="heoblue" type="radio" name="colors" onclick="setColor('heoblue')"><input id="darkblue" type="radio" name="colors" onclick="setColor('darkblue')"><input id="purple" type="radio" name="colors" onclick="setColor('purple')"><input id="pink" type="radio" name="colors" onclick="setColor('pink')" checked="checked"><input id="black" type="radio" name="colors" onclick="setColor('black')"><input id="blackgray" type="radio" name="colors" onclick="setColor('blackgray')"></div><p></p></div><div class="asetting" id="font-settings"><h2 class="content-head">字体设置</h2><p id="swfs"><a class="swf" href="javascript:;" rel="noopener external nofollow" style="font-family:'HYTMR'!important;color:black" onclick="setFont('HYTMR')">汉仪唐美人</a><br><a class="swf" href="javascript:;" rel="noopener external nofollow" style="font-family:'HYPailou'!important;color:black" onclick="setFont('HYPailou')">汉仪新蒂牌楼</a><br><a class="swf" href="javascript:;" rel="noopener external nofollow" style="font-family:'FZXJLJ'!important;color:black" onclick="setFont('FZXJLJ')">方正金陵体</a><br><a class="swf" href="javascript:;" rel="noopener external nofollow" style="font-family:'FZXS'!important;color:black" onclick="setFont('FZXS')">方正像素体</a><br><a class="swf" href="javascript:;" rel="noopener external nofollow" style="font-family:'ZhuZiAWan'!important;color:black" onclick="setFont('ZhuZiAWan')">筑紫A丸ゴシック</a><br><a class="swf" href="javascript:;" rel="noopener external nofollow" style="font-family:'FZODZK'!important;color:black" onclick="setFont('FZODZK')">方正欧蝶正楷</a><br><a class="swf" href="javascript:;" rel="noopener external nofollow" style="font-family:'Source Serif'!important;color:black" onclick="setFont('Source Serif')">思源宋体</a><br><a class="swf" href="javascript:;" rel="noopener external nofollow" style="font-family:'Source Sans'!important;color:black" onclick="setFont('Source Sans')">思源黑体</a><br><a class="swf" href="javascript:;" rel="noopener external nofollow" style="font-family:-apple-system, IBM Plex Mono ,monosapce,'微软雅黑', sans-serif;" onclick="setFont('main')">系统默认</a><br></p></div><div class="asetting" id="background-settings"><h2 style="margin-left:10px">背景设置</h2><div></div><span>注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效</span><button class="content-button" onclick="localStorage.removeItem('blogbg');location.reload();"><i class="fa-solid fa-arrows-rotate"></i><span> 点我恢复默认背景</span></button><button class="content-button" onclick="switchTheme()">切换主题</button><h3>图片(手机)</h3><div class="bgbox"><a class="pimgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2022/08/30/630d6d4d539a5.webp)" onclick="changeBg('url(https://bu.dusays.com/2022/08/30/630d6d4d539a5.webp)')"></a><a class="pimgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2022/08/30/630d6d4e15c9d.webp)" onclick="changeBg('url(https://bu.dusays.com/2022/08/30/630d6d4e15c9d.webp)')"></a><a class="pimgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2022/08/30/630d6f22c03c6.webp)" onclick="changeBg('url(https://bu.dusays.com/2022/08/30/630d6f22c03c6.webp)')"></a><a class="pimgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2022/08/30/630d6d56c83eb.webp)" onclick="changeBg('url(https://bu.dusays.com/2022/08/30/630d6d56c83eb.webp)')"></a><a class="pimgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2022/08/30/630d6d50b439b.webp)" onclick="changeBg('url(https://bu.dusays.com/2022/08/30/630d6d50b439b.webp)')"></a><a class="pimgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://pximg.anjiurine.top/img-original/img/2023/05/04/00/18/34/107784754_p0.png)" onclick="changeBg('url(https://pximg.anjiurine.top/img-original/img/2023/05/04/00/18/34/107784754_p0.png)')"></a></div><h3>图片(电脑)</h3><div class="bgbox"><a class="imgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2022/08/30/630d6d5574d0e.webp)" onclick="changeBg('url(https://bu.dusays.com/2022/08/30/630d6d5574d0e.webp)')"></a><a class="imgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2022/08/30/630d6d529adf9.webp)" onclick="changeBg('url(https://bu.dusays.com/2022/08/30/630d6d529adf9.webp)')"></a><a class="imgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2022/08/30/630d6d5159b31.webp)" onclick="changeBg('url(https://bu.dusays.com/2022/08/30/630d6d5159b31.webp)')"></a><a class="imgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2022/08/30/630d718bbeef6.webp)" onclick="changeBg('url(https://bu.dusays.com/2022/08/30/630d718bbeef6.webp)')"></a><a class="imgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2022/08/30/630d72f237d19.jpg)" onclick="changeBg('url(https://bu.dusays.com/2022/08/30/630d72f237d19.jpg)')"></a><a class="imgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2022/08/30/630d72f2032c8.jpg)" onclick="changeBg('url(https://bu.dusays.com/2022/08/30/630d72f2032c8.jpg)')"></a><a class="imgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2021/12/01/7792ff0082ec4.jpg)" onclick="changeBg('url(https://bu.dusays.com/2021/12/01/7792ff0082ec4.jpg)')"></a><a class="imgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2022/08/30/630d72ee6d4f3.png)" onclick="changeBg('url(https://bu.dusays.com/2022/08/30/630d72ee6d4f3.png)')"></a><a class="imgbox" href="javascript:;" rel="noopener external nofollow" style="background-image:url(https://bu.dusays.com/2022/08/30/630d72ed76532.jpg)" onclick="changeBg('url(https://bu.dusays.com/2022/08/30/630d72ed76532.jpg)')"></a><a class="imgbox" href="javascript:;" rel="external nofollow noreferrer" onclick="changeBg('url(https://bu.dusays.com/2022/09/17/6324aea549be6.webp)')"><img src="https://bu.dusays.com/2022/09/17/6324aea549be6.webp"></a><a class="imgbox" href="javascript:;" rel="external nofollow noreferrer" onclick="changeBg('url(https://bu.dusays.com/2022/09/17/6324aec701a68.webp)')"><img src="https://bu.dusays.com/2022/09/17/6324aec701a68.webp"></a><a class="imgbox" href="javascript:;" rel="external nofollow noreferrer" onclick="changeBg('url(https://bu.dusays.com/2022/09/17/6324aef4a5543.webp)')"><img src="https://bu.dusays.com/2022/09/17/6324aef4a5543.webp"></a><a class="imgbox" href="javascript:;" rel="external nofollow noreferrer" onclick="changeBg('url(https://bu.dusays.com/2022/09/17/6324af3622884.webp)')"><img src="https://bu.dusays.com/2022/09/17/6324af3622884.webp"></a></div><h3>渐变色</h3><div class="bgbox"><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: linear-gradient(to right, #eecda3, #ef629f)" onclick="changeBg('linear-gradient(to right, #eecda3, #ef629f)')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: linear-gradient(to right, #B7D31E, #42CE1E)" onclick="changeBg('linear-gradient(to right, #B7D31E, #42CE1E)')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: linear-gradient(to right, #06DE86, #06A5DE)" onclick="changeBg('linear-gradient(to right, #06DE86, #06A5DE)')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: linear-gradient(to right, #189BC4, #183DC4)" onclick="changeBg('linear-gradient(to right, #189BC4, #183DC4)')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: linear-gradient(to right, #C018C4, #C41818)" onclick="changeBg('linear-gradient(to right, #C018C4, #C41818)')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: linear-gradient(to right, #8B00BB, #030094)" onclick="changeBg('linear-gradient(to right, #8B00BB, #030094)')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: linear-gradient(to right, #eecda3, #ef629f)" onclick="changeBg('linear-gradient(to right, #eecda3, #ef629f)')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: linear-gradient(90deg, #ffd7e4 0%, #c8f1ff 100%)" onclick="changeBg('linear-gradient(90deg, #ffd7e4 0%, #c8f1ff 100%)')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: linear-gradient(45deg, #e5737b, #c6999e, #96b9c2, #00d6e8)" onclick="changeBg('linear-gradient(45deg, #e5737b, #c6999e, #96b9c2, #00d6e8)')"></a></div><h3>纯色</h3><div class="bgbox"><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: #7D9D9C" onclick="changeBg('#7D9D9C')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: #fff" onclick="changeBg('#fff')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: #49A6E9" onclick="changeBg('#49A6E9')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: #F7CEFF" onclick="changeBg('#F7CEFF')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: #FFFFCE" onclick="changeBg('#FFFFCE')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: #CFFFCE" onclick="changeBg('#CFFFCE')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: #17EFE9" onclick="changeBg('#17EFE9')"></a><a class="box" href="javascript:;" rel="noopener external nofollow" style="background: #9F17EF" onclick="changeBg('#9F17EF')"></a></div></div><div class="asetting" id="con-echarts"><h1>文章统计</h1><h2>监控</h2><iframe src="https://status.yisous.xyz" width="100%" height="500px" frameborder="no"></iframe><h2>文章统计</h2><script src="https://registry.npmmirror.com/echarts/4.9.0/files/dist/echarts.min.js"></script><div id="posts-chart" data-start="2021-01" style="border-radius: 8px; height: 300px; padding: 10px;"></div>
249
+ <script id="postsChart">
250
+ var color = document.documentElement.getAttribute('data-theme') === 'light' ? '#4c4948' : 'rgba(255,255,255,0.7)'
251
+ var postsChart = echarts.init(document.getElementById('posts-chart'), 'light');
252
+ var postsOption = {
253
+ title: {
254
+ text: '文章发布统计图',
255
+ x: 'center',
256
+ textStyle: {
257
+ color: color
258
+ }
259
+ },
260
+ tooltip: {
261
+ trigger: 'axis'
262
+ },
263
+ xAxis: {
264
+ name: '日期',
265
+ type: 'category',
266
+ boundaryGap: false,
267
+ nameTextStyle: {
268
+ color: color
269
+ },
270
+ axisTick: {
271
+ show: false
272
+ },
273
+ axisLabel: {
274
+ show: true,
275
+ color: color
276
+ },
277
+ axisLine: {
278
+ show: true,
279
+ lineStyle: {
280
+ color: color
281
+ }
282
+ },
283
+ data: ["2021-01","2021-02","2021-03","2021-04","2021-05","2021-06","2021-07","2021-08","2021-09","2021-10","2021-11","2021-12","2022-01","2022-02","2022-03","2022-04","2022-05","2022-06","2022-07","2022-08","2022-09","2022-10","2022-11","2022-12","2023-01","2023-02","2023-03","2023-04","2023-05","2023-06","2023-07","2023-08","2023-09","2023-10","2023-11","2023-12","2024-01","2024-02","2024-03"]
284
+ },
285
+ yAxis: {
286
+ name: '文章篇数',
287
+ type: 'value',
288
+ nameTextStyle: {
289
+ color: color
290
+ },
291
+ splitLine: {
292
+ show: false
293
+ },
294
+ axisTick: {
295
+ show: false
296
+ },
297
+ axisLabel: {
298
+ show: true,
299
+ color: color
300
+ },
301
+ axisLine: {
302
+ show: true,
303
+ lineStyle: {
304
+ color: color
305
+ }
306
+ }
307
+ },
308
+ series: [{
309
+ name: '文章篇数',
310
+ type: 'line',
311
+ smooth: true,
312
+ lineStyle: {
313
+ width: 0
314
+ },
315
+ showSymbol: false,
316
+ itemStyle: {
317
+ opacity: 1,
318
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
319
+ offset: 0,
320
+ color: 'rgba(128, 255, 165)'
321
+ },
322
+ {
323
+ offset: 1,
324
+ color: 'rgba(1, 191, 236)'
325
+ }])
326
+ },
327
+ areaStyle: {
328
+ opacity: 1,
329
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
330
+ offset: 0,
331
+ color: 'rgba(128, 255, 165)'
332
+ }, {
333
+ offset: 1,
334
+ color: 'rgba(1, 191, 236)'
335
+ }])
336
+ },
337
+ data: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1,0,0,1,2,0,0,0,1,2,0],
338
+ markLine: {
339
+ data: [{
340
+ name: '平均值',
341
+ type: 'average',
342
+ label: {
343
+ color: color
344
+ }
345
+ }]
346
+ }
347
+ }]
348
+ };
349
+ postsChart.setOption(postsOption);
350
+ window.addEventListener('resize', () => {
351
+ postsChart.resize();
352
+ });
353
+ postsChart.on('click', 'series', (event) => {
354
+ if (event.componentType === 'series') window.location.href = '/archives/' + event.name.replace('-', '/');
355
+ });
356
+ </script><div id="tags-chart" data-length="10" style="border-radius: 8px; height: 300px; padding: 10px;"></div>
357
+ <script id="tagsChart">
358
+ var color = document.documentElement.getAttribute('data-theme') === 'light' ? '#4c4948' : 'rgba(255,255,255,0.7)'
359
+ var tagsChart = echarts.init(document.getElementById('tags-chart'), 'light');
360
+ var tagsOption = {
361
+ title: {
362
+ text: 'Top 10 标签统计图',
363
+ x: 'center',
364
+ textStyle: {
365
+ color: color
366
+ }
367
+ },
368
+ tooltip: {},
369
+ xAxis: {
370
+ name: '标签',
371
+ type: 'category',
372
+ nameTextStyle: {
373
+ color: color
374
+ },
375
+ axisTick: {
376
+ show: false
377
+ },
378
+ axisLabel: {
379
+ show: true,
380
+ color: color,
381
+ interval: 0
382
+ },
383
+ axisLine: {
384
+ show: true,
385
+ lineStyle: {
386
+ color: color
387
+ }
388
+ },
389
+ data: ["日常","Hexo","谷歌翻译","年终总结","魔改","主题","Next","Butterfly","云服务器","VPS"]
390
+ },
391
+ yAxis: {
392
+ name: '文章篇数',
393
+ type: 'value',
394
+ splitLine: {
395
+ show: false
396
+ },
397
+ nameTextStyle: {
398
+ color: color
399
+ },
400
+ axisTick: {
401
+ show: false
402
+ },
403
+ axisLabel: {
404
+ show: true,
405
+ color: color
406
+ },
407
+ axisLine: {
408
+ show: true,
409
+ lineStyle: {
410
+ color: color
411
+ }
412
+ }
413
+ },
414
+ series: [{
415
+ name: '文章篇数',
416
+ type: 'bar',
417
+ data: [{"name":"日常","value":3,"path":"tags/日常/"},{"name":"Hexo","value":2,"path":"tags/Hexo/"},{"name":"谷歌翻译","value":2,"path":"tags/谷歌翻译/"},{"name":"年终总结","value":1,"path":"tags/年终总结/"},{"name":"魔改","value":1,"path":"tags/魔改/"},{"name":"主题","value":1,"path":"tags/主题/"},{"name":"Next","value":1,"path":"tags/Next/"},{"name":"Butterfly","value":1,"path":"tags/Butterfly/"},{"name":"云服务器","value":1,"path":"tags/云服务器/"},{"name":"VPS","value":1,"path":"tags/VPS/"},{"name":"提供商","value":1,"path":"tags/提供商/"},{"name":"便宜","value":1,"path":"tags/便宜/"},{"name":"性价比","value":1,"path":"tags/性价比/"},{"name":"hello-world","value":1,"path":"tags/hello-world/"},{"name":"浪潮","value":1,"path":"tags/浪潮/"},{"name":"服务器","value":1,"path":"tags/服务器/"},{"name":"折腾","value":1,"path":"tags/折腾/"},{"name":"家里云","value":1,"path":"tags/家里云/"},{"name":"RAID","value":1,"path":"tags/RAID/"},{"name":"简爱","value":1,"path":"tags/简爱/"},{"name":"女性意识","value":1,"path":"tags/女性意识/"},{"name":"论文","value":1,"path":"tags/论文/"},{"name":"金句","value":1,"path":"tags/金句/"},{"name":"写作","value":1,"path":"tags/写作/"},{"name":"学习","value":1,"path":"tags/学习/"},{"name":"Cloudflare","value":1,"path":"tags/Cloudflare/"},{"name":"Vercel","value":1,"path":"tags/Vercel/"},{"name":"负载均衡","value":1,"path":"tags/负载均衡/"},{"name":"Workers","value":1,"path":"tags/Workers/"},{"name":"DiffSinger","value":1,"path":"tags/DiffSinger/"},{"name":"自动标注","value":1,"path":"tags/自动标注/"},{"name":"AI","value":1,"path":"tags/AI/"}],
418
+ itemStyle: {
419
+ borderRadius: [5, 5, 0, 0],
420
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
421
+ offset: 0,
422
+ color: 'rgba(128, 255, 165)'
423
+ },
424
+ {
425
+ offset: 1,
426
+ color: 'rgba(1, 191, 236)'
427
+ }])
428
+ },
429
+ emphasis: {
430
+ itemStyle: {
431
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
432
+ offset: 0,
433
+ color: 'rgba(128, 255, 195)'
434
+ },
435
+ {
436
+ offset: 1,
437
+ color: 'rgba(1, 211, 255)'
438
+ }])
439
+ }
440
+ },
441
+ markLine: {
442
+ data: [{
443
+ name: '平均值',
444
+ type: 'average',
445
+ label: {
446
+ color: color
447
+ }
448
+ }]
449
+ }
450
+ }]
451
+ };
452
+ tagsChart.setOption(tagsOption);
453
+ window.addEventListener('resize', () => {
454
+ tagsChart.resize();
455
+ });
456
+ tagsChart.on('click', 'series', (event) => {
457
+ if(event.data.path) window.location.href = '/' + event.data.path;
458
+ });
459
+ </script><div id="categories-chart" data-parent="true" style="border-radius: 8px; height: 300px; padding: 10px;"></div>
460
+ <script id="categoriesChart">
461
+ var color = document.documentElement.getAttribute('data-theme') === 'light' ? '#4c4948' : 'rgba(255,255,255,0.7)'
462
+ var categoriesChart = echarts.init(document.getElementById('categories-chart'), 'light');
463
+ var categoryParentFlag = false
464
+ var categoriesOption = {
465
+ title: {
466
+ text: '文章分类统计图',
467
+ x: 'center',
468
+ textStyle: {
469
+ color: color
470
+ }
471
+ },
472
+ legend: {
473
+ top: 'bottom',
474
+ data: ["闲聊杂谈","年终总结","Hexo","恰饭","Hello World","素材"],
475
+ textStyle: {
476
+ color: color
477
+ }
478
+ },
479
+ tooltip: {
480
+ trigger: 'item'
481
+ },
482
+ series: []
483
+ };
484
+ categoriesOption.series.push(
485
+ categoryParentFlag ?
486
+ {
487
+ nodeClick :false,
488
+ name: '文章篇数',
489
+ type: 'sunburst',
490
+ radius: ['15%', '90%'],
491
+ center: ['50%', '55%'],
492
+ sort: 'desc',
493
+ data: [{"name":"闲聊杂谈","value":5,"path":"categories/闲聊杂谈/","id":"clu1bkllc000xssn984lqday9","parentId":"0"},{"name":"年终总结","value":1,"path":"categories/年终总结/","id":"clu1bkll40004ssn9hwx5cnek","parentId":"0"},{"name":"Hexo","value":1,"path":"categories/Hexo/","id":"clu1bkll8000cssn93gqg62c1","parentId":"0"},{"name":"恰饭","value":1,"path":"categories/恰饭/","id":"clu1bkll9000kssn98aea1rnc","parentId":"0"},{"name":"Hello World","value":1,"path":"categories/Hello-World/","id":"clu1bkllb000sssn92a5b4hm6","parentId":"0"},{"name":"素材","value":1,"path":"categories/素材/","id":"clu1bklle0017ssn9crtqhnq9","parentId":"0"}],
494
+ itemStyle: {
495
+ borderColor: '#fff',
496
+ borderWidth: 2,
497
+ emphasis: {
498
+ focus: 'ancestor',
499
+ shadowBlur: 10,
500
+ shadowOffsetX: 0,
501
+ shadowColor: 'rgba(255, 255, 255, 0.5)'
502
+ }
503
+ }
504
+ }
505
+ :
506
+ {
507
+ name: '文章篇数',
508
+ type: 'pie',
509
+ radius: [30, 80],
510
+ roseType: 'area',
511
+ label: {
512
+ color: color,
513
+ formatter: '{b} : {c} ({d}%)'
514
+ },
515
+ data: [{"name":"闲聊杂谈","value":5,"path":"categories/闲聊杂谈/","id":"clu1bkllc000xssn984lqday9","parentId":"0"},{"name":"年终总结","value":1,"path":"categories/年终总结/","id":"clu1bkll40004ssn9hwx5cnek","parentId":"0"},{"name":"Hexo","value":1,"path":"categories/Hexo/","id":"clu1bkll8000cssn93gqg62c1","parentId":"0"},{"name":"恰饭","value":1,"path":"categories/恰饭/","id":"clu1bkll9000kssn98aea1rnc","parentId":"0"},{"name":"Hello World","value":1,"path":"categories/Hello-World/","id":"clu1bkllb000sssn92a5b4hm6","parentId":"0"},{"name":"素材","value":1,"path":"categories/素材/","id":"clu1bklle0017ssn9crtqhnq9","parentId":"0"}],
516
+ itemStyle: {
517
+ emphasis: {
518
+ shadowBlur: 10,
519
+ shadowOffsetX: 0,
520
+ shadowColor: 'rgba(255, 255, 255, 0.5)'
521
+ }
522
+ }
523
+ }
524
+ )
525
+ categoriesChart.setOption(categoriesOption);
526
+ window.addEventListener('resize', () => {
527
+ categoriesChart.resize();
528
+ })
529
+ categoriesChart.on('click', 'series', (event) => {
530
+ if(event.data.path) window.location.href = '/' + event.data.path;
531
+ });
532
+ </script><h2>访问统计显示不出来请刷新页面<script data-pjax="" id="LA-DATA-WIDGET" crossorigin="anonymous" charset="UTF-8" src="https://v6-widget.51.la/v6/JnlSnWLD7XChjrlx/quote.js?theme=0&amp;col=true&amp;f=12&amp;badge=icon_0&amp;icon=center"></script></h2></div><div class="asetting" id="con-abouts"><h1>关于</h1>Hexo-theme-Acryple v1.0.100<br>Ariasaka Console v0.01<br>欢迎<a href="/messageboard">反馈!</a></div></div></div><div id="setting-sidesl"><button class="reSettings con-rightside" title="恢复默认设置"><i class="fa fa-repeat"></i></button><div id="setting-sides"><button class="con-rightside" title="繁简转换" id="con-translate" onclick="javascript:rmf.translate();"><i class="iconfont icon-fanti"></i></button><button class="con-rightside" title="昼夜切换" id="con-mode" onclick="rmf.switchDarkMode();"><i class="fa fa-adjust"></i></button><button class="con-rightside" title="阅读模式" id="con-reading" onclick="rmf.switchReadMode();"><i class="fa fa-book-open"></i></button><button class="con-rightside" title="单双栏切换" id="con-toggleaside" onclick="toggleAside();"><i class="fas fa-arrows-alt-h"></i></button><button class="con-rightside" title="左右栏切换" id="con-toggleleftaside" onclick="switchAside();"><i class="fas fa-binoculars"></i></button><button class="con-rightside" title="开关弹幕" id="con-barrage" onclick="switchCommentBarrage();"><i class="iconfont icon-danmu"></i></button><button class="con-rightside" title="全屏" id="con-fullscreen" onclick="fullScreen();"><i class="fas fa-expand"></i></button></div></div></div><!-- hexo injector body_end start --><script data-pjax="">function history_calendar_injector_config(){
533
+ var parent_div_git = document.getElementsByClassName('sticky_layout')[null];
534
+ var item_html = 'undefined';
535
+ console.log('已挂载history_calendar')
536
+ // parent_div_git.innerHTML=item_html+parent_div_git.innerHTML // 无报错,但不影响使用(支持pjax跳转)
537
+ parent_div_git.insertAdjacentHTML("afterbegin",item_html) // 有报错,但不影响使用(支持pjax跳转)
538
+ }if( document.getElementsByClassName('sticky_layout')[null] && (location.pathname ==='/'|| '/' ==='all')){
539
+
540
+ history_calendar_injector_config()
541
+ } </script><script data-pjax="" src="https://cdn.jsdelivr.net/gh/Zfour/Butterfly-card-history/baiduhistory/js/main.js"></script><script data-pjax="">
542
+ function butterfly_swiper_injector_config(){
543
+ var parent_div_git = document.getElementsByClassName('swiper-div')[0];
544
+ var item_html = '<div class="recent-post-item" style="height: auto;width: 100%"><div class="blog-slider swiper-container-fade swiper-container-horizontal" id="swiper_container"><div class="blog-slider__wrp swiper-wrapper" style="transition-duration: 0ms;"><div class="blog-slider__item swiper-slide" style="background:url(https://registry.npmmirror.com/q78kg-website-npm-cdn/latest/files/MXP1xJAnYDlLGWT.jpg);border-radius:12px;opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><div class="blog-slider__content"><span class="blog-slider__code">2023-09-17</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/6f3c565b/&quot;);" href="javascript:void(0);" rel="external nofollow noreferrer" alt="">拯救流量爆炸的vercel——使用Cloudflare Workers做负载均衡</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦!</div></div></div><div class="blog-slider__item swiper-slide" style="background:url(https://registry.npmmirror.com/q78kg-website-npm-cdn/latest/files/background7.jpg);border-radius:12px;opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><div class="blog-slider__content"><span class="blog-slider__code">2023-08-25</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/e54f7476/&quot;);" href="javascript:void(0);" rel="external nofollow noreferrer" alt="">全国首款支持多环境开发的 CEC-IDE,卡脖子问题解决,国产崛起了?</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦!</div></div></div><div class="blog-slider__item swiper-slide" style="background:url(https://registry.npmmirror.com/q78kg-website-npm-cdn/latest/files/57dac3c9-fb11-4fa1-a100-172a7172372d.png);border-radius:12px;opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><div class="blog-slider__content"><span class="blog-slider__code">2023-05-03</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/a9a6c1fb/&quot;);" href="javascript:void(0);" rel="external nofollow noreferrer" alt="">简爱中的女性意识</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦!</div></div></div></div><div class="blog-slider__pagination swiper-pagination-clickable swiper-pagination-bullets"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></div></div>';
545
+ console.log('已挂载butterfly_swiper')
546
+ parent_div_git.insertAdjacentHTML("afterbegin",item_html)
547
+ }
548
+ var elist = 'undefined'.split(',');
549
+ var cpage = location.pathname;
550
+ var epage = 'all';
551
+ var flag = 0;
552
+
553
+ for (var i=0;i<elist.length;i++){
554
+ if (cpage.includes(elist[i])){
555
+ flag++;
556
+ }
557
+ }
558
+
559
+ if ((epage ==='all')&&(flag == 0)){
560
+ butterfly_swiper_injector_config();
561
+ }
562
+ else if (epage === cpage){
563
+ butterfly_swiper_injector_config();
564
+ }
565
+ </script><script defer="" src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/5.4.5/js/swiper.min.js"></script><script defer="" data-pjax="" src="https://registry.npmmirror.com/hexo-butterfly-swiper-lyx/latest/files/lib/swiper_init.js"></script><script async="" src="//at.alicdn.com/t/font_2032782_8d5kxvn09md.js"></script><!-- hexo injector body_end end --><div><script src="https://registry.npmmirror.com/vue/2.6.11/files/dist/vue.min.js"></script><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="/js/tw_cn.js"></script><script src="https://jsd.anjiurine.top/npm/@fancyapps/ui/dist/fancybox.umd.js"></script><script src="https://jsd.anjiurine.top/npm/node-snackbar/dist/snackbar.min.js"></script><script src="/js/local-search.js"></script><script>window.addEventListener('DOMContentLoaded',function(){
566
+ var preloader = {
567
+ endLoading: () => {
568
+ document.body.style.overflow = 'auto';
569
+ document.getElementById('loading-box').classList.add("loaded")
570
+ setTimeout(function(){document.getElementById('loading-box').classList.add("loadend")},700)
571
+ },
572
+ initLoading: () => {
573
+ document.body.style.overflow = '';
574
+ document.getElementById('loading-box').classList.remove("loaded")
575
+ document.getElementById('loading-box').classList.remove("loadend")
576
+
577
+ }
578
+ }
579
+ window.addEventListener('load',preloader.endLoading())} )
580
+ window.addEventListener('pjax:start',function(){
581
+ var preloader = {
582
+ endLoading: () => {
583
+ document.body.style.overflow = 'auto';
584
+ document.getElementById('loading-box').classList.add("loaded")
585
+ setTimeout(function(){document.getElementById('loading-box').classList.add("loadend")},700)
586
+ },
587
+ initLoading: () => {
588
+ document.body.style.overflow = '';
589
+ document.getElementById('loading-box').classList.remove("loaded")
590
+ document.getElementById('loading-box').classList.remove("loadend")
591
+
592
+ }
593
+ }
594
+ window.addEventListener('pjax:complete',preloader.endLoading())} )</script><div class="js-pjax"><link rel="stylesheet" type="text/css" href="https://jsd.anjiurine.top/npm/katex@latest/dist/katex.min.css"><script src="https://jsd.anjiurine.top/npm/katex@latest/dist/contrib/copy-tex.min.js"></script><link rel="stylesheet" type="text/css" href="https://jsd.anjiurine.top/npm/katex@latest/dist/contrib/copy-tex.css"><script>(() => {
595
+ document.querySelectorAll('#article-container span.katex-display').forEach(item => {
596
+ btf.wrap(item, 'div', { class: 'katex-wrap'})
597
+ })
598
+ })()</script><script>(() => {
599
+ const $mermaidWrap = document.querySelectorAll('#article-container .mermaid-wrap')
600
+ if ($mermaidWrap.length) {
601
+ window.runMermaid = () => {
602
+ window.loadMermaid = true
603
+ const theme = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'default'
604
+
605
+ Array.from($mermaidWrap).forEach((item, index) => {
606
+ const mermaidSrc = item.firstElementChild
607
+ const mermaidThemeConfig = '%%{init:{ \'theme\':\'' + theme + '\'}}%%\n'
608
+ const mermaidID = 'mermaid-' + index
609
+ const mermaidDefinition = mermaidThemeConfig + mermaidSrc.textContent
610
+ mermaid.mermaidAPI.render(mermaidID, mermaidDefinition, (svgCode) => {
611
+ mermaidSrc.insertAdjacentHTML('afterend', svgCode)
612
+ })
613
+ })
614
+ }
615
+
616
+ const loadMermaid = () => {
617
+ window.loadMermaid ? runMermaid() : getScript('https://jsd.anjiurine.top/npm/mermaid/dist/mermaid.min.js').then(runMermaid)
618
+ }
619
+
620
+ window.pjax ? loadMermaid() : document.addEventListener('DOMContentLoaded', loadMermaid)
621
+ }
622
+ })()</script><script>(()=>{
623
+ const init = () => {
624
+ twikoo.init(Object.assign({
625
+ el: '#twikoo-wrap',
626
+ envId: 'https://twikoo.anjiurine.top',
627
+ region: '',
628
+ onCommentLoaded: function () {
629
+ btf.loadLightbox(document.querySelectorAll('#twikoo .tk-content img:not(.tk-owo-emotion)'))
630
+ }
631
+ }, null))
632
+ }
633
+
634
+ const getCount = () => {
635
+ const countELement = document.getElementById('twikoo-count')
636
+ if(!countELement) return
637
+ twikoo.getCommentsCount({
638
+ envId: 'https://twikoo.anjiurine.top',
639
+ region: '',
640
+ urls: [window.location.pathname],
641
+ includeReply: true
642
+ }).then(function (res) {
643
+ countELement.innerText = res[0].count
644
+ }).catch(function (err) {
645
+ console.error(err);
646
+ });
647
+ }
648
+
649
+ const runFn = () => {
650
+ init()
651
+ GLOBAL_CONFIG_SITE.isPost && getCount()
652
+ }
653
+
654
+ const loadTwikoo = () => {
655
+ if (typeof twikoo === 'object') {
656
+ setTimeout(runFn,0)
657
+ return
658
+ }
659
+ getScript('https://registry.npmmirror.com/twikoo/latest/files/dist/twikoo.all.min.js').then(runFn)
660
+ }
661
+
662
+ if ('Twikoo' === 'Twikoo' || !false) {
663
+ if (false) btf.loadComment(document.getElementById('twikoo-wrap'), loadTwikoo)
664
+ else loadTwikoo()
665
+ } else {
666
+ window.loadOtherComment = () => {
667
+ loadTwikoo()
668
+ }
669
+ }
670
+ })()</script><script>var gitcalendar = new Vue({
671
+ el: '#gitcalendar',
672
+ data: {
673
+ simplemode: false,
674
+ user: 'Hoshino-Yumetsuki',
675
+ fixed: 'fixed',
676
+ px: 'px',
677
+ x: '',
678
+ y: '',
679
+ span1: '',
680
+ span2: '',
681
+ month: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
682
+ monthchange: [],
683
+ oneyearbeforeday: '',
684
+ thisday: '',
685
+ amonthago: '',
686
+ aweekago: '',
687
+ weekdatacore: 0,
688
+ datacore: 0,
689
+ total: 0,
690
+ datadate: '',
691
+ data: [],
692
+ positionplusdata: [],
693
+ firstweek: [],
694
+ lastweek: [],
695
+ beforeweek: [],
696
+ thisweekdatacore: 0,
697
+ mounthbeforeday: 0,
698
+ mounthfirstindex: 0,
699
+ crispedges: 'crispedges',
700
+ thisdayindex: 0,
701
+ amonthagoindex: 0,
702
+ amonthagoweek: [],
703
+ firstdate: [],
704
+ first2date: [],
705
+ montharrbefore: [],
706
+ monthindex: 0,
707
+ color: ['#ebedf0', '#f1f8ff', '#dbedff', '#c8e1ff', '#79b8ff', '#2188ff', '#0366d6', '#005cc5', '#044289', '#032f62', '#05264c']
708
+ },
709
+ methods: {
710
+ selectStyle(data, event) {
711
+ document.querySelector('.angle-wrapper').style.display = 'block'
712
+ this.span1 = data.date;
713
+ this.span2 = data.count;
714
+ this.x = event.clientX - 100;
715
+ this.y = event.clientY - 60
716
+ },
717
+ outStyle() {
718
+ document.querySelector('.angle-wrapper').style.display = 'none'
719
+ },
720
+ thiscolor(x) {
721
+ if (x === 0) {
722
+ let i = parseInt(x / 2);
723
+ return this.color[0]
724
+ } else if (x < 2) {
725
+ return this.color[1]
726
+ } else if (x < 20) {
727
+ let i = parseInt(x / 2);
728
+ return this.color[i]
729
+ } else {
730
+ return this.color[9]
731
+ }
732
+ },
733
+ }
734
+ });
735
+ var apiurl = 'gcapi.anjiurine.top' ? 'https://gcapi.anjiurine.top/api?user=' : 'https://gcapi.yisous.xyz/api?user='
736
+ var githubapiurl = apiurl + gitcalendar.user;
737
+ //canvas绘图
738
+ function responsiveChart() {
739
+ let c = document.getElementById("gitcanvas");
740
+ if (c) {
741
+ let cmessage = document.getElementById("gitmessage");
742
+ let ctx = c.getContext("2d");
743
+ c.width = document.getElementById("gitcalendarcanvasbox").offsetWidth;
744
+ let linemaxwitdh = 0.96 * c.width / gitcalendar.data.length;
745
+ c.height = 9 * linemaxwitdh;
746
+ let lineminwitdh = 0.8 * linemaxwitdh;
747
+ let setposition = {
748
+ x: 0.02 * c.width,
749
+ y: 0.025 * c.width
750
+ };
751
+ for (let week in gitcalendar.data) {
752
+ weekdata = gitcalendar.data[week];
753
+ for (let day in weekdata) {
754
+ let dataitem = {
755
+ date: "",
756
+ count: "",
757
+ x: 0,
758
+ y: 0
759
+ };
760
+ gitcalendar.positionplusdata.push(dataitem);
761
+ ctx.fillStyle = gitcalendar.thiscolor(weekdata[day].count);
762
+ setposition.y = Math.round(setposition.y * 100) / 100;
763
+ dataitem.date = weekdata[day].date;
764
+ dataitem.count = weekdata[day].count;
765
+ dataitem.x = setposition.x;
766
+ dataitem.y = setposition.y;
767
+ ctx.fillRect(setposition.x, setposition.y, lineminwitdh, lineminwitdh);
768
+ setposition.y = setposition.y + linemaxwitdh
769
+ };
770
+ setposition.y = 0.025 * c.width;
771
+ setposition.x = setposition.x + linemaxwitdh
772
+ };
773
+ ctx.font = "600 Arial";
774
+ ctx.fillStyle = '#aaa';
775
+ ctx.fillText("日", 0, 1.9 * linemaxwitdh);
776
+ ctx.fillText("二", 0, 3.9 * linemaxwitdh);
777
+ ctx.fillText("四", 0, 5.9 * linemaxwitdh);
778
+ ctx.fillText("六", 0, 7.9 * linemaxwitdh);
779
+ let monthindexlist = c.width / 24;
780
+ for (let index in gitcalendar.monthchange) {
781
+ ctx.fillText(gitcalendar.monthchange[index], monthindexlist, 0.7 * linemaxwitdh);
782
+ monthindexlist = monthindexlist + c.width / 12
783
+ };
784
+ cmessage.onmousemove = function(event) {
785
+ document.querySelector('.angle-wrapper').style.display = 'none'
786
+ };
787
+ c.onmousemove = function(event) {
788
+ document.querySelector('.angle-wrapper').style.display = 'none'
789
+ getMousePos(c, event);
790
+ };
791
+
792
+ function getMousePos(canvas, event) {
793
+ var rect = canvas.getBoundingClientRect();
794
+ var x = event.clientX - rect.left * (canvas.width / rect.width);
795
+ var y = event.clientY - rect.top * (canvas.height / rect.height);
796
+ //console.log("x:"+x+",y:"+y);
797
+ for (let item of gitcalendar.positionplusdata) {
798
+ let lenthx = x - item.x;
799
+ let lenthy = y - item.y;
800
+ //console.log(lenthx,lenthy);
801
+ if (0 < lenthx && lenthx < lineminwitdh) {
802
+ if (0 < lenthy && lenthy < lineminwitdh) {
803
+ //console.log(item.date,item.count)
804
+ document.querySelector('.angle-wrapper').style.display = 'block'
805
+ gitcalendar.span1 = item.date;
806
+ gitcalendar.span2 = item.count;
807
+ gitcalendar.x = event.clientX - 100;
808
+ gitcalendar.y = event.clientY - 60
809
+ }
810
+ }
811
+ //if(0< x - item.x <lineminwitdh&&0< y - item.y <lineminwitdh){
812
+ //console.log(item.count,item.date);
813
+ //}
814
+ }
815
+ }
816
+ }
817
+ }
818
+ //数据统计算法
819
+ function addlastmonth() {
820
+ if (gitcalendar.thisdayindex === 0) {
821
+ thisweekcore(52);
822
+ thisweekcore(51);
823
+ thisweekcore(50);
824
+ thisweekcore(49);
825
+ thisweekcore(48);
826
+ gitcalendar.thisweekdatacore += gitcalendar.firstdate[6].count;
827
+ gitcalendar.amonthago = gitcalendar.firstdate[6].date
828
+ } else {
829
+ thisweekcore(52);
830
+ thisweekcore(51);
831
+ thisweekcore(50);
832
+ thisweekcore(49);
833
+ thisweek2core();
834
+ gitcalendar.amonthago = gitcalendar.first2date[gitcalendar.thisdayindex - 1].date
835
+ }
836
+ };
837
+
838
+ function thisweek2core() {
839
+ for (let i = gitcalendar.thisdayindex - 1; i < gitcalendar.first2date.length; i++) {
840
+ gitcalendar.thisweekdatacore += gitcalendar.first2date[i].count
841
+ }
842
+ };
843
+
844
+ function thisweekcore(index) {
845
+ for (let item of gitcalendar.data[index]) {
846
+ gitcalendar.thisweekdatacore += item.count
847
+ }
848
+ };
849
+
850
+ function addlastweek() {
851
+ for (let item of gitcalendar.lastweek) {
852
+ gitcalendar.weekdatacore += item.count
853
+ }
854
+ };
855
+
856
+ function addbeforeweek() {
857
+ for (let i = gitcalendar.thisdayindex; i < gitcalendar.beforeweek.length; i++) {
858
+ gitcalendar.weekdatacore += gitcalendar.beforeweek[i].count
859
+ }
860
+ };
861
+
862
+ function addweek(data) {
863
+ if (gitcalendar.thisdayindex === 6) {
864
+ gitcalendar.aweekago = gitcalendar.lastweek[0].date;
865
+ addlastweek()
866
+ } else {
867
+ lastweek = data.contributions[51];
868
+ gitcalendar.aweekago = lastweek[gitcalendar.thisdayindex + 1].date;
869
+ addlastweek();
870
+ addbeforeweek()
871
+ }
872
+ }
873
+
874
+ fetch(githubapiurl)
875
+ .then(data => data.json())
876
+ .then(data => {
877
+ gitcalendar.data = data.contributions;
878
+ gitcalendar.total = data.total;
879
+ gitcalendar.first2date = gitcalendar.data[48];
880
+ gitcalendar.firstdate = gitcalendar.data[47];
881
+ gitcalendar.firstweek = data.contributions[0];
882
+ gitcalendar.lastweek = data.contributions[52];
883
+ gitcalendar.beforeweek = data.contributions[51];
884
+ gitcalendar.thisdayindex = gitcalendar.lastweek.length - 1;
885
+ gitcalendar.thisday = gitcalendar.lastweek[gitcalendar.thisdayindex].date;
886
+ gitcalendar.oneyearbeforeday = gitcalendar.firstweek[0].date;
887
+ gitcalendar.monthindex = gitcalendar.thisday.substring(5, 7) * 1;
888
+ gitcalendar.montharrbefore = gitcalendar.month.splice(gitcalendar.monthindex, 12 - gitcalendar.monthindex);
889
+ gitcalendar.monthchange = gitcalendar.montharrbefore.concat(gitcalendar.month);
890
+ addweek(data);
891
+ addlastmonth();
892
+ responsiveChart();
893
+ })
894
+ .catch(function(error) {
895
+ console.log(error);
896
+ });
897
+
898
+ //手机版更换为svg绘制
899
+ if (document.getElementById("gitcalendarcanvasbox").offsetWidth < 500) {
900
+ gitcalendar.simplemode = false
901
+ }
902
+
903
+ //当改变窗口大小时重新绘制canvas
904
+ window.onresize = function() {
905
+ if (gitcalendar.simplemode) responsiveChart()
906
+ }
907
+
908
+ //解决滚动滑轮时出现的标签显示
909
+ window.onscroll = function() {
910
+ if (document.querySelector('.angle-wrapper')) {
911
+ document.querySelector('.angle-wrapper').style.display = 'none'
912
+ }
913
+ };</script></div><script>window.addEventListener('load', () => {
914
+ const changeContent = (content) => {
915
+ if (content === '') return content
916
+
917
+ content = content.replace(/<img.*?src="(.*?)"?[^\>]+>/ig, '[图片]') // replace image link
918
+ content = content.replace(/<a[^>]+?href=["']?([^"']+)["']?[^>]*>([^<]+)<\/a>/gi, '[链接]') // replace url
919
+ content = content.replace(/<pre><code>.*?<\/pre>/gi, '[代码]') // replace code
920
+ content = content.replace(/<[^>]+>/g,"") // remove html tag
921
+
922
+ if (content.length > 150) {
923
+ content = content.substring(0,150) + '...'
924
+ }
925
+ return content
926
+ }
927
+
928
+ const getComment = () => {
929
+ const runTwikoo = () => {
930
+ twikoo.getRecentComments({
931
+ envId: 'https://twikoo.anjiurine.top',
932
+ region: '',
933
+ pageSize: 6,
934
+ includeReply: true
935
+ }).then(function (res) {
936
+ const twikooArray = res.map(e => {
937
+ return {
938
+ 'content': changeContent(e.comment),
939
+ 'avatar': e.avatar,
940
+ 'nick': e.nick,
941
+ 'url': e.url + '#' + e.id,
942
+ 'date': new Date(e.created).toISOString()
943
+ }
944
+ })
945
+
946
+ saveToLocal.set('twikoo-newest-comments', JSON.stringify(twikooArray), 10/(60*24))
947
+ generateHtml(twikooArray)
948
+ }).catch(function (err) {
949
+ const $dom = document.querySelector('#card-newest-comments .aside-list')
950
+ $dom.innerHTML= "无法获取评论,请确认相关配置是否正确"
951
+ })
952
+ }
953
+
954
+ if (typeof twikoo === 'object') {
955
+ runTwikoo()
956
+ } else {
957
+ getScript('https://registry.npmmirror.com/twikoo/latest/files/dist/twikoo.all.min.js').then(runTwikoo)
958
+ }
959
+ }
960
+
961
+ const generateHtml = array => {
962
+ let result = ''
963
+
964
+ if (array.length) {
965
+ for (let i = 0; i < array.length; i++) {
966
+ result += '<div class=\'aside-list-item\'>'
967
+
968
+ if (true) {
969
+ const name = 'src'
970
+ result += `<a href='${array[i].url}' class='thumbnail'><img ${name}='${array[i].avatar}' alt='${array[i].nick}'></a>`
971
+ }
972
+
973
+ result += `<div class='content'>
974
+ <a class='comment' href='${array[i].url}' title='${array[i].content}'>${array[i].content}</a>
975
+ <div class='name'><span>${array[i].nick} / </span><time datetime="${array[i].date}">${btf.diffDate(array[i].date, true)}</time></div>
976
+ </div></div>`
977
+ }
978
+ } else {
979
+ result += '没有评论'
980
+ }
981
+
982
+ let $dom = document.querySelector('#card-newest-comments .aside-list')
983
+ $dom.innerHTML= result
984
+ window.lazyLoadInstance && window.lazyLoadInstance.update()
985
+ window.pjax && window.pjax.refresh($dom)
986
+ }
987
+
988
+ const newestCommentInit = () => {
989
+ if (document.querySelector('#card-newest-comments .aside-list')) {
990
+ const data = saveToLocal.get('twikoo-newest-comments')
991
+ if (data) {
992
+ generateHtml(JSON.parse(data))
993
+ } else {
994
+ getComment()
995
+ }
996
+ }
997
+ }
998
+
999
+ newestCommentInit()
1000
+ document.addEventListener('pjax:complete', newestCommentInit)
1001
+ })</script><script type="text/javascript" src="/js/fixbugpjax.js"></script><script src="/js/sakura.js"></script><div class="aplayer no-destroy" data-id="7803928554" data-server="netease" data-type="playlist" data-listfolded="false" data-preload="metadata" data-theme="var(--lyx-theme)" data-fixed="true" data-autoplay="false" data-volume="0.1" style="z-index:514"> </div><script type="text/javascript" src="/js/aplayersave.js"></script><script type="text/javascript" src="/js/noie.js"></script><script src="https://registry.npmmirror.com/leancloud-storage/4.13.1/files/dist/av-min.js"></script><script src="https://jsd.anjiurine.top/gh/nextapps-de/winbox/dist/winbox.bundle.min.js"></script><script src="https://registry.npmmirror.com/sweetalert2/8/files"></script><script type="text/javascript" data-pjax="" src="/js/rightmenu.js"></script><script type="text/javascript" src="/js/copy.js"></script><script type="text/javascript" src="/js/welcome.js"></script><script type="text/javascript" src="https://registry.npmmirror.com/jquery/latest/files/dist/jquery.min.js"></script><script type="text/javascript" src="/js/resizeTop.js"></script><script type="text/javascript" src="/js/languages.js"></script><script type="text/javascript" src="/js/browser.js"></script><script type="text/javascript" src="/js/smooth-scrolling.js"></script><script src="//cdn.bootcss.com/pace/1.0.2/pace.min.js"></script><script type="text/javascript" src="/js/sitetime.js"></script><script data-pjax="" type="text/javascript" src="/js/heimu.js"></script><script data-pjax="" src="/js/bbtalklunbo.js"></script><script data-pjax="" src="/js/fps.js"></script><script data-pjax="" src="/js/dis.js"></script><script data-pjax="" src="/js/settings.js"></script><script src="/js/owo.js"></script><script src="/js/welcomeconsole.js"></script><script src="/js/hide.show.js"></script><script src="https://f.zhheo.com/JS-Heo/bb/showbb_in_index.js" data-pjax="" =""="" defer=""></script><script data-pace-options="{ &quot;restartOnRequestAfter&quot;:false,&quot;eventLag&quot;:false}" src="https://cdn.bootcss.com/pace/1.0.2/pace.min.js"></script><script data-pjax="" src="/js/baiduhistory.js"></script><script src="/js/random.js"></script><script src="/js/lunar.js"></script><script src="/js/day.js"></script><script data-pjax="" src="/js/nav.js"></script><script src="/js/cursor.js"></script><script data-pjax="" type="text/javascript" src="/js/dianzan.js"></script><script type="text/javascript" src="/js/commentsCount.js"></script><script type="text/javascript" src="/js/latest.js"></script><script data-pjax="" defer="" src="/js/fixed_card_widget.js"></script><script type="text/javascript" src="https://registry.npmmirror.com/node-snackbar/0.1.16/files/src/js/snackbar.js"></script><script src="https://registry.npmmirror.com/pjax/latest/files/pjax.min.js"></script><script>let pjaxSelectors = ["head > title","#config-diff","#body-wrap","#rightside-config-hide","#rightside-config-show",".js-pjax","#fixedcard-dashboard"]
1002
+
1003
+ var pjax = new Pjax({
1004
+ elements: 'a:not([target="_blank"]):not([href="/essay/"])',
1005
+ selectors: pjaxSelectors,
1006
+ cacheBust: false,
1007
+ analytics: false,
1008
+ scrollRestoration: false
1009
+ })
1010
+
1011
+ document.addEventListener('pjax:send', function () {
1012
+
1013
+ // removeEventListener scroll
1014
+ window.tocScrollFn && window.removeEventListener('scroll', window.tocScrollFn)
1015
+ window.scrollCollect && window.removeEventListener('scroll', scrollCollect)
1016
+
1017
+ typeof preloader === 'object' && preloader.initLoading()
1018
+ document.getElementById('rightside').style.cssText = "opacity: ''; transform: ''"
1019
+
1020
+ if (window.aplayers) {
1021
+ for (let i = 0; i < window.aplayers.length; i++) {
1022
+ if (!window.aplayers[i].options.fixed) {
1023
+ window.aplayers[i].destroy()
1024
+ }
1025
+ }
1026
+ }
1027
+
1028
+ typeof typed === 'object' && typed.destroy()
1029
+
1030
+ //reset readmode
1031
+ const $bodyClassList = document.body.classList
1032
+ $bodyClassList.contains('read-mode') && $bodyClassList.remove('read-mode')
1033
+
1034
+ })
1035
+
1036
+ document.addEventListener('pjax:complete', function () {
1037
+ window.refreshFn()
1038
+
1039
+ document.querySelectorAll('script[data-pjax]').forEach(item => {
1040
+ const newScript = document.createElement('script')
1041
+ const content = item.text || item.textContent || item.innerHTML || ""
1042
+ Array.from(item.attributes).forEach(attr => newScript.setAttribute(attr.name, attr.value))
1043
+ newScript.appendChild(document.createTextNode(content))
1044
+ item.parentNode.replaceChild(newScript, item)
1045
+ })
1046
+
1047
+ GLOBAL_CONFIG.islazyload && window.lazyLoadInstance.update()
1048
+
1049
+ typeof chatBtnFn === 'function' && chatBtnFn()
1050
+ typeof panguInit === 'function' && panguInit()
1051
+
1052
+ // google analytics
1053
+ typeof gtag === 'function' && gtag('config', '', {'page_path': window.location.pathname});
1054
+
1055
+ // baidu analytics
1056
+ typeof _hmt === 'object' && _hmt.push(['_trackPageview',window.location.pathname]);
1057
+
1058
+ typeof loadMeting === 'function' && document.getElementsByClassName('aplayer').length && loadMeting()
1059
+
1060
+ // prismjs
1061
+ typeof Prism === 'object' && Prism.highlightAll()
1062
+
1063
+ typeof preloader === 'object' && preloader.endLoading()
1064
+ })
1065
+
1066
+ document.addEventListener('pjax:error', (e) => {
1067
+ if (e.request.status === 404) {
1068
+ pjax.loadUrl('/404.html')
1069
+ }
1070
+ })</script><script async="" data-pjax="" src="https://cdn.dusays.com/bsz.js"></script><div id="fixedcard-dashboard"><button class="fixedcard-activebtn" type="button" title="我的信息" onclick="FixedCardWidget(&quot;class&quot;,&quot;card-info&quot;,&quot;0&quot;)"><i class="fas fa-address-book"></i></button><button class="fixedcard-activebtn" type="button" title="公告" onclick="FixedCardWidget(&quot;class&quot;,&quot;card-announcement&quot;,&quot;0&quot;)"><i class="fas fa-bullhorn"></i></button><button class="fixedcard-activebtn" type="button" title="天气" onclick="FixedCardWidget(&quot;class&quot;,&quot;card-weather&quot;,&quot;0&quot;)"><i class="fas fa-cloud-sun"></i></button><button class="fixedcard-activebtn" type="button" title="最新文章" onclick="FixedCardWidget(&quot;class&quot;,&quot;card-recent-post&quot;,&quot;0&quot;)"><i class="fas fa-history"></i></button><button class="fixedcard-activebtn" type="button" title="最新评论" onclick="FixedCardWidget(&quot;id&quot;,&quot;card-newest-comments&quot;,&quot;0&quot;)"><i class="fas fa-comment-dots"></i></button><button class="fixedcard-activebtn" type="button" title="文章日历" onclick="FixedCardWidget(&quot;class&quot;,&quot;card-calendar&quot;,&quot;0&quot;)"><i class="fas fa-calendar"></i></button><div class="fixedcard-user-avatar fixedcard-activebtn" onclick="RemoveFixedCardWidget()"><img class="fixedcard-user-avatar-img" src="https://registry.npmmirror.com/q78kg-website-npm-cdn/latest/files/avatar-60x60.png" title="Q78KG"></div></div></div><div class="barrageswiper swiper-container"><div class="comment-barrage js-pjax swiper-wrapper"></div><link rel="stylesheet" href="/css/commentBarrage.css"><script data-pjax="" src="/js/commentBarrage.js"></script></div></body></html>