-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.json
1 lines (1 loc) · 78.8 KB
/
index.json
1
[{"content":"写在前面 这篇教程能实现什么?\n语雀文章更新 → webhook推送 → 触发器触发云函数 → 私有仓库actions拉取文章更新 → 部署到公开仓库 → 托管网站博客自动更新/部署,即语雀端文章更新/发布,博客网站端自动同步。查看我的博客\n**为什么选择Hexo博客生成器? **\n开发者为台湾同胞,文档等中文支持较好;社区、主题资源较为完善。\n**为什么选择语雀作为编辑端? **\n语雀在国产在线文档产品中编辑体验较好,支持Markdown。\n**本教程适用人群? **\n小白、非程序员等人士,专业和资深人员请选择性阅读。\n搭建Hexo 安装Node.js/Git 如果你的电脑中已经安装Node.js \u0026amp; Git,可直接跳到下节安装Hexo\n安装Node.js Node.js 为大多数平台提供了官方的 安装程序,可下载安装包进行安装,或者:\n Windows:通过nvs(推荐)或者nvm安装。 Mac:终端使用 Homebrew安装。 1 brew install node 安装Git Windows:下载并安装git. Mac:终端使用 Homebrew或者下载 安装程序。 1 brew install git 安装Hexo 终端执行安装命令:\n1 npm install -g hexo-cli 安装以后,可以使用以下两种方式(推荐2)执行 Hexo:\n npx hexo \u0026lt;command\u0026gt; 将 Hexo 所在的目录下的 node_modules 添加到环境变量之中即可直接使用 hexo \u0026lt;command\u0026gt;,环境变量文件追加内容: 1 echo \u0026#39;PATH=\u0026#34;$PATH:./node_modules/.bin\u0026#34;\u0026#39; \u0026gt;\u0026gt; ~/.profile - [Windows环境变量配置参考案例](https://blog.csdn.net/palmer_kai/article/details/80588594) - [Mac环境变量配置参考案例](https://www.jianshu.com/p/8e51bc9cebfa) 使用Hexo建站 终端依次输入以下命令,为要创建的Hexo站点项目文件夹名称:\n1 2 3 hexo init \u0026lt;folder\u0026gt; cd \u0026lt;folder\u0026gt; npm install 创建完成后,指定文件夹的目录如下:\n├── _config.yml\n├── package.json\n├── scaffolds\n├── source\n├ ├── _drafts\n├ └── _posts\n└── themes\n_config.yml(根目录)\n网站的配置信息文件,可配置除主题内嵌功能外大部分参数,如网站名称等,参考 Hexo文档|配置\n package.json\n应用程序/依赖包信息文件\n themes\n主题文件夹,Hexo会根据主题来生成静态页面\n更换主题 Hexo自带了landscape主题:\n如果不喜欢,可以参考官网案例更换其他主题,比如我选择的Cactus:\n操作步骤(以Cactus主题为例):\n 在项目根目录下执行: 1 git clone https://github.com/probberechts/hexo-theme-cactus.git themes/cactus 最后的themes/cactus是指克隆cactus主题到themes文件下。这里有一个坑,在后面部署到GitHub pages时仓库里不能再有仓库,所以克隆完毕后最好删除cactus文件夹里的.git文件夹(已隐藏的文件夹)。\n在根目录下的 _config.yml中设置主题: 1 2 # theme: landscape theme: cactus 一些主题相关的配置项因主题不同而不同,请查阅相关主题文档 Hexo命令 至此,你完成了最基础的一个Hexo博客搭建,可以在本地进行配置和调试,参考Hexo文档|命令\n比如执行:\n1 hexo g \u0026amp;\u0026amp; hexo s 即可在本地浏览器地址localhost:4000 检查是否搭建成功\n语雀文章同步到Hexo 安装yuque-hexo 项目根目录下命令行安装:\n1 npm i -g yuque-hexo package.json文件添加以下内容,其中login,repo,token字段需自己配置:\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 \u0026#34;yuqueConfig\u0026#34;: { \u0026#34;postPath\u0026#34;: \u0026#34;source/_posts\u0026#34;, \u0026#34;cachePath\u0026#34;: \u0026#34;yuque.json\u0026#34;, \u0026#34;mdNameFormat\u0026#34;: \u0026#34;slug\u0026#34;, \u0026#34;adapter\u0026#34;: \u0026#34;hexo\u0026#34;, \u0026#34;concurrency\u0026#34;: 5, \u0026#34;baseUrl\u0026#34;: \u0026#34;https://www.yuque.com/api/v2\u0026#34;, \u0026#34;login\u0026#34;: \u0026#34;raydon\u0026#34;, \u0026#34;repo\u0026#34;: \u0026#34;tszs\u0026#34;, \u0026#34;token\u0026#34;: \u0026#34;在语雀右上角头像-账户设置-Token新建,把全部的读取权限勾上即可\u0026#34;, \u0026#34;onlyPublished\u0026#34;: true, \u0026#34;onlyPublic\u0026#34;: true }, \u0026#34;devDependencies\u0026#34;: { \u0026#34;yuque-hexo\u0026#34;: \u0026#34;^1.9.1\u0026#34; }, \u0026#34;hexo\u0026#34;: { \u0026#34;version\u0026#34;: \u0026#34;6.3.0\u0026#34; }, 其中的login和repo这样对应:\n配置好后,在项目根目录下执行命令,即可拉取语雀对应知识库内容到本地路径/source/_posts:\n1 yuque-hexo sync 之后执行:\n1 hexo g \u0026amp;\u0026amp; hexo s 即可在本地浏览器地址localhost:4000 检查是否成功\n语雀图片无法显示的解决 因为语雀图片的防盗链机制,图片会有无法显示的问题,请在 themes/cactus(主题路径)/layout/_partial/head.ejs 中加上一行代码:\n1 \u0026lt;meta name=\u0026#34;referrer\u0026#34; content=\u0026#34;no-referrer\u0026#34; /\u0026gt; **注意:**此行代码可能会导致使用不蒜子等计数器失效,但目前经我测试还OK;另外其他教程有建议将图片上传到图床解决这个问题,但因一下原因,请按需选择:\n 免费图床不可靠 收费图床有配置和RMB成本,即使七牛云图床有免费额度,但仍存在Chrome无法加载http图片需要配置SSL证书等问题 通过github actions自动更新 准备工作 创建一个github公开仓库:用来托管最终生成的静态网站源码,必须以用户名.github.io命名,因为github pages 必须以这种格式才能在浏览器通过域名访问。我的公开仓库 [https://raydon10.github.io](https://raydon10.github.io) 创建一个github私有仓库:用来push托管本地代码,并通过github actions自动(一旦仓库发生变化)部署到上面的公开仓库中,这样以后语雀来源的文章更新就和本地代码没关系了。我的私有仓库 [https://github.com/raydon10/tszs](https://github.com/raydon10/tszs)。注意请删掉主题文件夹内的 .git文件夹,因为有 .git就相当于一个仓库,仓库里不能再放仓库,否则本地代码push不到github私有仓库 github配置 创建一个token(classic)\n勾上这几个:\n创建完的token要记下来,不然以后就看不到了\n再进到刚才准备工作创建的私有仓库,创建两个sercet:\nGH_REF 内容是公开仓库/博客地址(不需要https://):raydon10.github.io\nGH_TOKEN 是上面生成的token(这样做为了防止token在gitHub action代码中暴露)\n在本地项目文件夹根目录创建目录文件:.github/workflows/main.yml ,也可以在github私有仓库的Actions选项中创建,但为了本地调试改代码方便,直接在本地文件创建workflows文件,可直接同步到github。\nmain.yml 填入以下代码:\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 name:Blog CI/CDon:[push, repository_dispatch]jobs:blog-cicd:name:Hexo blog build \u0026amp; deployruns-on:ubuntu-latestenv:TZ:Asia/Shanghaisteps:- name:Checkout codesuses:actions/checkout@v2- name:Setup nodeuses:actions/setup-node@v1with:node-version:\u0026#39;12.x\u0026#39;- name:Cache node modulesuses:actions/cache@v1with:path:~/.npmkey:${{ runner.os }}-node-${{ hashFiles(\u0026#39;**/package-lock.json\u0026#39;) }}- name:Install dependenciesrun:|npm install hexo-cli -g npm install yuque-hexo -g npm install yuque-hexo sync - name:Generate filesrun:hexo generate- name:Deploy blogrun:|git clone \u0026#34;https://${{ secrets.GH_REF }}\u0026#34; deploy_git mv ./deploy_git/.git ./public cd ./public git config user.name \u0026#34;填入自己的github用户名\u0026#34; git config user.email \u0026#34;填入自己的github邮箱\u0026#34; git add . git commit -m \u0026#34;GitHub Actions Auto Builder at $(date +\u0026#39;%Y-%m-%d %H:%M:%S\u0026#39;)\u0026#34; git push --force --quiet \u0026#34;https://${{ secrets.GH_TOKEN }}@${{ secrets.GH_REF }}\u0026#34; main:main 通过上面的代码,当仓库发生变化或 repository_dispatch 时会自动触发更新部署到公开仓库(即博客网站)\nserverless云函数配置 进入 腾讯云控制台 搜索 云函数,点击新建:\n代码内容填写:\n1 2 3 4 5 6 7 8 9 10 11 12 13 # -*- coding: utf8 -*- import requests def main_handler(event, context): r = requests.post(\u0026#34;https://api.github.com/repos/raydon10/tszs/dispatches\u0026#34;, json = {\u0026#34;event_type\u0026#34;: \u0026#34;run-it\u0026#34;}, headers = {\u0026#34;User-Agent\u0026#34;:\u0026#39;curl/7.52.1\u0026#39;, \u0026#39;Content-Type\u0026#39;: \u0026#39;application/json\u0026#39;, \u0026#39;Accept\u0026#39;: \u0026#39;application/vnd.github.everest-preview+json\u0026#39;, \u0026#39;Authorization\u0026#39;: \u0026#39;token 这里是上面创建的github_token\u0026#39;}) if r.status_code == 204: return \u0026#34;This\u0026#39;s OK!\u0026#34; else: return r.status_code 注意用你自己的私有仓库替代上述代码中的仓库地址,\u0026lsquo;Authorization\u0026rsquo;: \u0026rsquo;token 的token不要删掉。\n点击测试,看到“That\u0026rsquo;s OK!”就是成功了;同时在github私有仓库的Actions选项卡下可以看到对应动作,等待动作从黄色变成绿色则说明配置成功了,否则点进去详情看下具体原因具体解决~\n在刚才的函数服务下创建一个触发器(用于接受语雀更新的webhook):\n选择这个然后提交:\n然后找到刚创建的触发器的访问路径:\n**注意:**腾讯云函数服务可能有一定费用(不高),使用过程需留意。\n语雀webhook配置 在作为博客写作端的语雀知识库(没有则新建一个),点击设置:\nwebhook地址填上面的触发器访问地址。\n至此,一个语雀文章更新 → webhook推送 → 触发器触发云函数 → 私有仓库actions拉取文章更新 → 部署到公开仓库的自动化过程就完成了!自己验证试试吧!\n使用自己的域名 通过上面的一通操作,可以在自己的github pages页面查看自动化部署的Hexo个人博客网站,域名如 https:// raydon10.github.io,如果想使用自己的域名,可以参考以下内容:\n腾讯云Web应用托管 进入腾讯云控制台,搜索找到 Web应用托管 新建应用,选择从github仓库,导入我们之前创建的公开仓库(github pages),这样一旦仓库有更新,就会触发Web应用托管自动同步更新内容并构建和部署网站:\n**注意:**腾讯云Web应用托管服务有一定费用(但不高),使用中请留意。\n腾讯云域名中有.git片段会导致无法自动构建,经过我和腾讯云的沟通他们已经修复这个BUG:\n至此我们能通过腾讯云分配给我们的域名进行访问,要使用自己的域名可以进行绑定(需要备案):\n其他私有域名方案 请自行查阅~\nHexo/Cactus主题的技巧和坑 Hexo 添加 .gitignore文件 将一些不需要的文件添加到本地项目根目录下的 .gitignore文件(新建/纯文本),如果按上面教程进行的博客搭建,可添加以下内容:\n1 2 3 4 5 6 7 .DS_Store .deploy_git/ public/ source/_posts/ lastGeneratePath.log db.json yuque.json 这样git push时会忽略这些文件或文件夹,.DS_Store只有Mac系统需添加,其余文件会在github actions执行时重新构建,无需push。\n添加 lastGeneratePath.log 文件 在本地项目根目录添加 lastGeneratePath.log 文件,并在 package.json 的 \u0026ldquo;yuqueConfig\u0026rdquo; 中写入 \u0026quot;lastGeneratePath\u0026quot;: \u0026quot;lastGeneratePath.log\u0026quot;,这样每次执行yuque-hexo sync同步语雀内容时,只会获取上次更新时间戳之后发生变化的内容。\nCactus 菜单在Chrome中消失的BUG 在Chromium内核的PC浏览器中,文章正文页如超出屏幕高度,拖动浏览页面菜单消失,回到顶部后不再出现,并且点击菜单按钮也不会出现。解决办法:\n将 /themes/cactus/source/js/main.js 文件中\n1 2 3 4 5 6 /** * Add a scroll listener to the menu to hide/show the navigation links. */ if (menu.length) { $(window).on(\u0026#34;scroll\u0026#34;, function() { var topDistance = menu.offset().top; 部分的var topDistance = menu.offset().top替换为var topDistance = window.pageYOffset即可解决。\n增加不蒜子统计 效果如图:\n在 /themes/cactus/layout/_partial/footer.ejs 文件末尾增加不蒜子代码:\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 \u0026lt;footer id=\u0026#34;footer\u0026#34;\u0026gt; \u0026lt;div class=\u0026#34;footer-left\u0026#34;\u0026gt; \u0026lt;%= __(\u0026#39;footer.copyright\u0026#39;) %\u0026gt; \u0026amp;copy; \u0026lt;% var endYear = (theme.copyright \u0026amp;\u0026amp; theme.copyright.end_year) ? theme.copyright.end_year : new Date().getFullYear() %\u0026gt; \u0026lt;% var startYear = (theme.copyright \u0026amp;\u0026amp; theme.copyright.start_year) ? theme.copyright.start_year : new Date().getFullYear() %\u0026gt; \u0026lt;%= startYear \u0026gt;= endYear ? endYear : startYear + \u0026#34;-\u0026#34; + endYear %\u0026gt; \u0026lt;%= config.author || config.title %\u0026gt; 转载请注明出处 \u0026lt;/div\u0026gt; \u0026lt;div class=\u0026#34;footer-right\u0026#34;\u0026gt; \u0026lt;nav\u0026gt; \u0026lt;ul\u0026gt; \u0026lt;% for (var i in theme.nav) { %\u0026gt;\u0026lt;!-- --\u0026gt;\u0026lt;li\u0026gt;\u0026lt;a href=\u0026#34;\u0026lt;%- url_for(theme.nav[i]) %\u0026gt;\u0026#34;\u0026gt;\u0026lt;%= __(\u0026#39;nav.\u0026#39;+i).replace(\u0026#34;nav.\u0026#34;, \u0026#34;\u0026#34;) %\u0026gt;\u0026lt;/a\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;!-- --\u0026gt;\u0026lt;% } %\u0026gt; \u0026lt;/ul\u0026gt; \u0026lt;/nav\u0026gt; \u0026lt;/div\u0026gt; \u0026lt;div class=\u0026#34;busuanzi\u0026#34;\u0026gt; \u0026lt;% if (theme.busuanzi \u0026amp;\u0026amp; theme.busuanzi.enable){ %\u0026gt; \u0026lt;!-- 不蒜子统计 --\u0026gt; \u0026lt;span id=\u0026#34;busuanzi_container_site_pv\u0026#34;\u0026gt; 网站总访问量:\u0026lt;span id=\u0026#34;busuanzi_value_site_pv\u0026#34;\u0026gt;\u0026lt;/span\u0026gt; \u0026lt;/span\u0026gt; \u0026lt;!-- \u0026lt;span class=\u0026#34;post-meta-divider\u0026#34;\u0026gt;|\u0026lt;/span\u0026gt; \u0026lt;span id=\u0026#34;busuanzi_container_site_uv\u0026#34; style=\u0026#39;display:none\u0026#39;\u0026gt; 本站访客数\u0026lt;span id=\u0026#34;busuanzi_value_site_uv\u0026#34;\u0026gt;\u0026lt;/span\u0026gt;人 \u0026lt;/span\u0026gt; --\u0026gt; \u0026lt;script async src=\u0026#34;//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;% } %\u0026gt; \u0026lt;/div\u0026gt; \u0026lt;/footer\u0026gt; 同时在 /themes/cactus/source/css/_partial/footer.styl 文件增加 .busuanzi及以后内容:\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @media (min-width: 39rem) #footer display: flex flex-flow: row wrap justify-content: space-between align-items: center align-content: center margin-bottom: 20px .footer-left align-self: flex-start margin-right: 20px .footer-right align-self: flex-end .busuanzi display: inline-block width: 100% text-align: left 在 /themes/cactus/_config.yml 追加以下内容:\n1 2 3 # 是否开启访问量统计功能(不蒜子)busuanzi:enable:true ","permalink":"https://tszs.info/p/pg3i82/","summary":"写在前面 这篇教程能实现什么? 语雀文章更新 → webhook推送 → 触发器触发云函数 → 私有仓库actions拉取文章更新 → 部署到公开仓库 → 托管网站","title":"小白搭建Hexo博客(语雀端写作)详细教程"},{"content":"人生励志 .post-preview { max-width: 780px; height: 200px; margin: 1em auto; position: relative; display: flex; background: var(--entry); border-radius: 15px; box-shadow: 0 2px 4px rgba(0, 0, 0, .25), 0 0 2px rgba(0, 0, 0, .25); } .dark .post-preview { background: var(--entry); box-shadow: 0 2px 4px rgba(0, 0, 0, .5), 0 0 2px rgba(0, 0, 0, .5); } .post-preview--meta { width: 80%; padding: 23px; overflow: hidden; } .post-preview--middle { line-height: 28px; } .post-preview--title { font-size: 22px; margin: 0 !important; } .post-preview--title a { text-decoration: none; } .post-preview--date { font-size: 14px; color: #999; } .post-preview--excerpt { font-size: 14px; line-height: 1.825; } .post-preview--excerpt p { display: inline; margin: 0; } .post-preview--image { height: 200px !important; width: 25%; float: right; border-radius: 0 15px 15px 0; } .post-preview img { margin: unset; width: 20%; border-radius: 0 15px 15px 0; } @media (max-width: 550px) { .post-preview { width: 95%; } .post-preview--excerpt { } .post-preview--middle { line-height: 19px; } .post-preview--meta { width: 60%; padding: 23px; overflow: hidden; } .post-preview img { margin: unset; width: 40%; border-radius: 0 15px 15px 0; } } .rating { display: block; line-height: 15px; } .rating-star { display: inline-block; width: 75px; height: 15px; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAClCAYAAAAUAAAYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5xJREFUeNrs3T9rFEEcxvG7qEQIglaCICKkin9AUEtBKxU7wS61VlYivgWj70TtNFj5BqzE7qxEWwsxKIoYn4UtluFmbm8nczvzm+/BjxyuDwNzu3uXD0+46f7LC5PA45Hm+WTYw1x2LRDc0jzTXB+wqMlsaLPutz8fDFjYZHYauAz3NBvt83XNnyUWNpn1nVm3OsHmsb3EomazzZnVXKMPNcc0xzUnNKc0Rzv/77fms+Z7O3vt9b1eU7bZrNN68l5zcolX4ofmsuZXTdnmMvyi2dR86Bmcac62P6vKrnVubpc0bxYE32nOab45N8YqsvPeDfcD4SOav4HjprPuu+H5BTt9LXDMfNbdLPfT678Fx6vKupt1o/O8+R3pkOaJ5/iktqx7z/qp+aq5q/nY+fczmheaK03Gs7D5rLtZdzSvA6/Ebc2u55j57HQB0TzW7AzkjiKzny6+2hlKNE8juMNcFqKBaIZndRlCNBBNgmx7ZkE0fbLtZkE0EA1EM17WuQwhGogGooFoss6296y52cNO+J6HLJoPaFdbsvA9zGerIxrPh85eWYgGooFoDiQbuAxp0UA0EVmdWbRo+ma1WbRoIBqIZtzsnHdDWjQQDUQD0WSbde5ZS2UhmtqJJtSEiVkXooFoIJre2VATJmZdiKZ2ogk1YSb8oVMvDeUPnSAaiCaPJkzMuhANRAPRQDQpsqEmTMy6EI11oolpwkA0EA1EcyDZmCYMRAPR+LMxTZjqiCamCQPRQDQQzehNGIgGooFoIJpVZ2OaMBBN7USTqgkD0UA0EE3vbKomDERTO9GkasKYJJpUTRiIBqKBaEZvwkA0EA1EA9GkyKZqwkA01olmrCYMRAPRQDR9LkO+0QmiKbAJUyTRjNWEgWggGohm9CYMRAPRQDQQzZDsWE0YiMYC0eTYhIFoIJrKiCbHJgxEY4FocmzCZEs0OTZhIBqIpjKiybEJA9FANBANROPL5tiEgWhKIJoSmzAQDURjjGhKbMJANCUQTYlNmNGIpsQmDEQD0RgjmhKbMBANRAPR1Es0JTZhIJpciMZaEwaigWgKJBprTRiIJheisdaESUo01powEA1EUyDRWGvCQDQQDURjm2isNWEgmlURzWw2q4pZIBqIJkOiCVyGJpkFolkV0ejMMvel28mIRptl7ku3IRqIpjCimfNuaJpZIBqIBqIpm2ice5Z5ZonJupvVkMRu4JW4qXnrOWY++1+AAQBw9BJSCTeN9wAAAABJRU5ErkJggg==); overflow: hidden; } .allstar10 { background-position: 0px 0px; } .allstar9 { background-position: 0px -15px; } .allstar8 { background-position: 0px -30px; } .allstar7 { background-position: 0px -45px; } .allstar6 { background-position: 0px -60px; } .allstar5 { background-position: 0px -75px; } .allstar4 { background-position: 0px -90px; } .allstar3 { background-position: 0px -105px; } .allstar2 { background-position: 0px -120px; } .allstar1 { background-position: 0px -135px; } .allstar0 { background-position: 0px -150px; } .rating-average { color: #777; display: inline-block; font-size: 13px; margin-left: 10px; } $(document).ready(function () { $('.douban_item').each(function () { var _this = $(this); var strs = _this.attr('urlstring').toString(); var db_reg = /^https\\:\\/\\/(movie|book)\\.douban\\.com\\/subject\\/([0-9]+)\\/?/; if (db_reg.test(strs)) { var db_type = strs.replace(db_reg, \"$1\"); var db_id = strs.replace(db_reg, \"$2\").toString(); var db_api = \"https://douban.edui.fun/\"; if (db_type === 'movie') { var ls_item = 'movie' + db_id; var url = db_api + \"movies/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: \"json\", success: function (data) { localStorage.setItem(ls_item, JSON.stringify(data)); movieShow(_this, ls_item, strs) } }) } else { movieShow(_this, ls_item, strs) } } else if (db_type === 'book') { var ls_item = 'book' + db_id; var url = db_api + \"v2/book/id/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { localStorage.setItem('book' + db_id, JSON.stringify(data)); bookShow(_this, ls_item, strs) } }) } else { bookShow(_this, ls_item, strs) } } } }); }); function movieShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating); $(\"\" + data.name + \"\" + data.rating + \"导演:\" + data.director + \" / 类型:\" + data.genre + \" / \" + data.year + \"\" + data.intro.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } function bookShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating.average); $(\"\" + data.title + \"\" + data.rating.average + \"作者:\" + data.author + \" / 出版:\"+ data.pubdate +\" / \"+ data.publisher +\" \" + data.summary.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } .post-preview { max-width: 780px; height: 200px; margin: 1em auto; position: relative; display: flex; background: var(--entry); border-radius: 15px; box-shadow: 0 2px 4px rgba(0, 0, 0, .25), 0 0 2px rgba(0, 0, 0, .25); } .dark .post-preview { background: var(--entry); box-shadow: 0 2px 4px rgba(0, 0, 0, .5), 0 0 2px rgba(0, 0, 0, .5); } .post-preview--meta { width: 80%; padding: 23px; overflow: hidden; } .post-preview--middle { line-height: 28px; } .post-preview--title { font-size: 22px; margin: 0 !important; } .post-preview--title a { text-decoration: none; } .post-preview--date { font-size: 14px; color: #999; } .post-preview--excerpt { font-size: 14px; line-height: 1.825; } .post-preview--excerpt p { display: inline; margin: 0; } .post-preview--image { height: 200px !important; width: 25%; float: right; border-radius: 0 15px 15px 0; } .post-preview img { margin: unset; width: 20%; border-radius: 0 15px 15px 0; } @media (max-width: 550px) { .post-preview { width: 95%; } .post-preview--excerpt { } .post-preview--middle { line-height: 19px; } .post-preview--meta { width: 60%; padding: 23px; overflow: hidden; } .post-preview img { margin: unset; width: 40%; border-radius: 0 15px 15px 0; } } .rating { display: block; line-height: 15px; } .rating-star { display: inline-block; width: 75px; height: 15px; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAClCAYAAAAUAAAYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5xJREFUeNrs3T9rFEEcxvG7qEQIglaCICKkin9AUEtBKxU7wS61VlYivgWj70TtNFj5BqzE7qxEWwsxKIoYn4UtluFmbm8nczvzm+/BjxyuDwNzu3uXD0+46f7LC5PA45Hm+WTYw1x2LRDc0jzTXB+wqMlsaLPutz8fDFjYZHYauAz3NBvt83XNnyUWNpn1nVm3OsHmsb3EomazzZnVXKMPNcc0xzUnNKc0Rzv/77fms+Z7O3vt9b1eU7bZrNN68l5zcolX4ofmsuZXTdnmMvyi2dR86Bmcac62P6vKrnVubpc0bxYE32nOab45N8YqsvPeDfcD4SOav4HjprPuu+H5BTt9LXDMfNbdLPfT678Fx6vKupt1o/O8+R3pkOaJ5/iktqx7z/qp+aq5q/nY+fczmheaK03Gs7D5rLtZdzSvA6/Ebc2u55j57HQB0TzW7AzkjiKzny6+2hlKNE8juMNcFqKBaIZndRlCNBBNgmx7ZkE0fbLtZkE0EA1EM17WuQwhGogGooFoss6296y52cNO+J6HLJoPaFdbsvA9zGerIxrPh85eWYgGooFoDiQbuAxp0UA0EVmdWbRo+ma1WbRoIBqIZtzsnHdDWjQQDUQD0WSbde5ZS2UhmtqJJtSEiVkXooFoIJre2VATJmZdiKZ2ogk1YSb8oVMvDeUPnSAaiCaPJkzMuhANRAPRQDQpsqEmTMy6EI11oolpwkA0EA1EcyDZmCYMRAPR+LMxTZjqiCamCQPRQDQQzehNGIgGooFoIJpVZ2OaMBBN7USTqgkD0UA0EE3vbKomDERTO9GkasKYJJpUTRiIBqKBaEZvwkA0EA1EA9GkyKZqwkA01olmrCYMRAPRQDR9LkO+0QmiKbAJUyTRjNWEgWggGohm9CYMRAPRQDQQzZDsWE0YiMYC0eTYhIFoIJrKiCbHJgxEY4FocmzCZEs0OTZhIBqIpjKiybEJA9FANBANROPL5tiEgWhKIJoSmzAQDURjjGhKbMJANCUQTYlNmNGIpsQmDEQD0RgjmhKbMBANRAPR1Es0JTZhIJpciMZaEwaigWgKJBprTRiIJheisdaESUo01powEA1EUyDRWGvCQDQQDURjm2isNWEgmlURzWw2q4pZIBqIJkOiCVyGJpkFolkV0ejMMvel28mIRptl7ku3IRqIpjCimfNuaJpZIBqIBqIpm2ice5Z5ZonJupvVkMRu4JW4qXnrOWY++1+AAQBw9BJSCTeN9wAAAABJRU5ErkJggg==); overflow: hidden; } .allstar10 { background-position: 0px 0px; } .allstar9 { background-position: 0px -15px; } .allstar8 { background-position: 0px -30px; } .allstar7 { background-position: 0px -45px; } .allstar6 { background-position: 0px -60px; } .allstar5 { background-position: 0px -75px; } .allstar4 { background-position: 0px -90px; } .allstar3 { background-position: 0px -105px; } .allstar2 { background-position: 0px -120px; } .allstar1 { background-position: 0px -135px; } .allstar0 { background-position: 0px -150px; } .rating-average { color: #777; display: inline-block; font-size: 13px; margin-left: 10px; } $(document).ready(function () { $('.douban_item').each(function () { var _this = $(this); var strs = _this.attr('urlstring').toString(); var db_reg = /^https\\:\\/\\/(movie|book)\\.douban\\.com\\/subject\\/([0-9]+)\\/?/; if (db_reg.test(strs)) { var db_type = strs.replace(db_reg, \"$1\"); var db_id = strs.replace(db_reg, \"$2\").toString(); var db_api = \"https://douban.edui.fun/\"; if (db_type === 'movie') { var ls_item = 'movie' + db_id; var url = db_api + \"movies/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: \"json\", success: function (data) { localStorage.setItem(ls_item, JSON.stringify(data)); movieShow(_this, ls_item, strs) } }) } else { movieShow(_this, ls_item, strs) } } else if (db_type === 'book') { var ls_item = 'book' + db_id; var url = db_api + \"v2/book/id/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { localStorage.setItem('book' + db_id, JSON.stringify(data)); bookShow(_this, ls_item, strs) } }) } else { bookShow(_this, ls_item, strs) } } } }); }); function movieShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating); $(\"\" + data.name + \"\" + data.rating + \"导演:\" + data.director + \" / 类型:\" + data.genre + \" / \" + data.year + \"\" + data.intro.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } function bookShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating.average); $(\"\" + data.title + \"\" + data.rating.average + \"作者:\" + data.author + \" / 出版:\"+ data.pubdate +\" / \"+ data.publisher +\" \" + data.summary.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } .post-preview { max-width: 780px; height: 200px; margin: 1em auto; position: relative; display: flex; background: var(--entry); border-radius: 15px; box-shadow: 0 2px 4px rgba(0, 0, 0, .25), 0 0 2px rgba(0, 0, 0, .25); } .dark .post-preview { background: var(--entry); box-shadow: 0 2px 4px rgba(0, 0, 0, .5), 0 0 2px rgba(0, 0, 0, .5); } .post-preview--meta { width: 80%; padding: 23px; overflow: hidden; } .post-preview--middle { line-height: 28px; } .post-preview--title { font-size: 22px; margin: 0 !important; } .post-preview--title a { text-decoration: none; } .post-preview--date { font-size: 14px; color: #999; } .post-preview--excerpt { font-size: 14px; line-height: 1.825; } .post-preview--excerpt p { display: inline; margin: 0; } .post-preview--image { height: 200px !important; width: 25%; float: right; border-radius: 0 15px 15px 0; } .post-preview img { margin: unset; width: 20%; border-radius: 0 15px 15px 0; } @media (max-width: 550px) { .post-preview { width: 95%; } .post-preview--excerpt { } .post-preview--middle { line-height: 19px; } .post-preview--meta { width: 60%; padding: 23px; overflow: hidden; } .post-preview img { margin: unset; width: 40%; border-radius: 0 15px 15px 0; } } .rating { display: block; line-height: 15px; } .rating-star { display: inline-block; width: 75px; height: 15px; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAClCAYAAAAUAAAYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5xJREFUeNrs3T9rFEEcxvG7qEQIglaCICKkin9AUEtBKxU7wS61VlYivgWj70TtNFj5BqzE7qxEWwsxKIoYn4UtluFmbm8nczvzm+/BjxyuDwNzu3uXD0+46f7LC5PA45Hm+WTYw1x2LRDc0jzTXB+wqMlsaLPutz8fDFjYZHYauAz3NBvt83XNnyUWNpn1nVm3OsHmsb3EomazzZnVXKMPNcc0xzUnNKc0Rzv/77fms+Z7O3vt9b1eU7bZrNN68l5zcolX4ofmsuZXTdnmMvyi2dR86Bmcac62P6vKrnVubpc0bxYE32nOab45N8YqsvPeDfcD4SOav4HjprPuu+H5BTt9LXDMfNbdLPfT678Fx6vKupt1o/O8+R3pkOaJ5/iktqx7z/qp+aq5q/nY+fczmheaK03Gs7D5rLtZdzSvA6/Ebc2u55j57HQB0TzW7AzkjiKzny6+2hlKNE8juMNcFqKBaIZndRlCNBBNgmx7ZkE0fbLtZkE0EA1EM17WuQwhGogGooFoss6296y52cNO+J6HLJoPaFdbsvA9zGerIxrPh85eWYgGooFoDiQbuAxp0UA0EVmdWbRo+ma1WbRoIBqIZtzsnHdDWjQQDUQD0WSbde5ZS2UhmtqJJtSEiVkXooFoIJre2VATJmZdiKZ2ogk1YSb8oVMvDeUPnSAaiCaPJkzMuhANRAPRQDQpsqEmTMy6EI11oolpwkA0EA1EcyDZmCYMRAPR+LMxTZjqiCamCQPRQDQQzehNGIgGooFoIJpVZ2OaMBBN7USTqgkD0UA0EE3vbKomDERTO9GkasKYJJpUTRiIBqKBaEZvwkA0EA1EA9GkyKZqwkA01olmrCYMRAPRQDR9LkO+0QmiKbAJUyTRjNWEgWggGohm9CYMRAPRQDQQzZDsWE0YiMYC0eTYhIFoIJrKiCbHJgxEY4FocmzCZEs0OTZhIBqIpjKiybEJA9FANBANROPL5tiEgWhKIJoSmzAQDURjjGhKbMJANCUQTYlNmNGIpsQmDEQD0RgjmhKbMBANRAPR1Es0JTZhIJpciMZaEwaigWgKJBprTRiIJheisdaESUo01powEA1EUyDRWGvCQDQQDURjm2isNWEgmlURzWw2q4pZIBqIJkOiCVyGJpkFolkV0ejMMvel28mIRptl7ku3IRqIpjCimfNuaJpZIBqIBqIpm2ice5Z5ZonJupvVkMRu4JW4qXnrOWY++1+AAQBw9BJSCTeN9wAAAABJRU5ErkJggg==); overflow: hidden; } .allstar10 { background-position: 0px 0px; } .allstar9 { background-position: 0px -15px; } .allstar8 { background-position: 0px -30px; } .allstar7 { background-position: 0px -45px; } .allstar6 { background-position: 0px -60px; } .allstar5 { background-position: 0px -75px; } .allstar4 { background-position: 0px -90px; } .allstar3 { background-position: 0px -105px; } .allstar2 { background-position: 0px -120px; } .allstar1 { background-position: 0px -135px; } .allstar0 { background-position: 0px -150px; } .rating-average { color: #777; display: inline-block; font-size: 13px; margin-left: 10px; } $(document).ready(function () { $('.douban_item').each(function () { var _this = $(this); var strs = _this.attr('urlstring').toString(); var db_reg = /^https\\:\\/\\/(movie|book)\\.douban\\.com\\/subject\\/([0-9]+)\\/?/; if (db_reg.test(strs)) { var db_type = strs.replace(db_reg, \"$1\"); var db_id = strs.replace(db_reg, \"$2\").toString(); var db_api = \"https://douban.edui.fun/\"; if (db_type === 'movie') { var ls_item = 'movie' + db_id; var url = db_api + \"movies/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: \"json\", success: function (data) { localStorage.setItem(ls_item, JSON.stringify(data)); movieShow(_this, ls_item, strs) } }) } else { movieShow(_this, ls_item, strs) } } else if (db_type === 'book') { var ls_item = 'book' + db_id; var url = db_api + \"v2/book/id/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { localStorage.setItem('book' + db_id, JSON.stringify(data)); bookShow(_this, ls_item, strs) } }) } else { bookShow(_this, ls_item, strs) } } } }); }); function movieShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating); $(\"\" + data.name + \"\" + data.rating + \"导演:\" + data.director + \" / 类型:\" + data.genre + \" / \" + data.year + \"\" + data.intro.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } function bookShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating.average); $(\"\" + data.title + \"\" + data.rating.average + \"作者:\" + data.author + \" / 出版:\"+ data.pubdate +\" / \"+ data.publisher +\" \" + data.summary.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } 剧情推理 .post-preview { max-width: 780px; height: 200px; margin: 1em auto; position: relative; display: flex; background: var(--entry); border-radius: 15px; box-shadow: 0 2px 4px rgba(0, 0, 0, .25), 0 0 2px rgba(0, 0, 0, .25); } .dark .post-preview { background: var(--entry); box-shadow: 0 2px 4px rgba(0, 0, 0, .5), 0 0 2px rgba(0, 0, 0, .5); } .post-preview--meta { width: 80%; padding: 23px; overflow: hidden; } .post-preview--middle { line-height: 28px; } .post-preview--title { font-size: 22px; margin: 0 !important; } .post-preview--title a { text-decoration: none; } .post-preview--date { font-size: 14px; color: #999; } .post-preview--excerpt { font-size: 14px; line-height: 1.825; } .post-preview--excerpt p { display: inline; margin: 0; } .post-preview--image { height: 200px !important; width: 25%; float: right; border-radius: 0 15px 15px 0; } .post-preview img { margin: unset; width: 20%; border-radius: 0 15px 15px 0; } @media (max-width: 550px) { .post-preview { width: 95%; } .post-preview--excerpt { } .post-preview--middle { line-height: 19px; } .post-preview--meta { width: 60%; padding: 23px; overflow: hidden; } .post-preview img { margin: unset; width: 40%; border-radius: 0 15px 15px 0; } } .rating { display: block; line-height: 15px; } .rating-star { display: inline-block; width: 75px; height: 15px; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAClCAYAAAAUAAAYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5xJREFUeNrs3T9rFEEcxvG7qEQIglaCICKkin9AUEtBKxU7wS61VlYivgWj70TtNFj5BqzE7qxEWwsxKIoYn4UtluFmbm8nczvzm+/BjxyuDwNzu3uXD0+46f7LC5PA45Hm+WTYw1x2LRDc0jzTXB+wqMlsaLPutz8fDFjYZHYauAz3NBvt83XNnyUWNpn1nVm3OsHmsb3EomazzZnVXKMPNcc0xzUnNKc0Rzv/77fms+Z7O3vt9b1eU7bZrNN68l5zcolX4ofmsuZXTdnmMvyi2dR86Bmcac62P6vKrnVubpc0bxYE32nOab45N8YqsvPeDfcD4SOav4HjprPuu+H5BTt9LXDMfNbdLPfT678Fx6vKupt1o/O8+R3pkOaJ5/iktqx7z/qp+aq5q/nY+fczmheaK03Gs7D5rLtZdzSvA6/Ebc2u55j57HQB0TzW7AzkjiKzny6+2hlKNE8juMNcFqKBaIZndRlCNBBNgmx7ZkE0fbLtZkE0EA1EM17WuQwhGogGooFoss6296y52cNO+J6HLJoPaFdbsvA9zGerIxrPh85eWYgGooFoDiQbuAxp0UA0EVmdWbRo+ma1WbRoIBqIZtzsnHdDWjQQDUQD0WSbde5ZS2UhmtqJJtSEiVkXooFoIJre2VATJmZdiKZ2ogk1YSb8oVMvDeUPnSAaiCaPJkzMuhANRAPRQDQpsqEmTMy6EI11oolpwkA0EA1EcyDZmCYMRAPR+LMxTZjqiCamCQPRQDQQzehNGIgGooFoIJpVZ2OaMBBN7USTqgkD0UA0EE3vbKomDERTO9GkasKYJJpUTRiIBqKBaEZvwkA0EA1EA9GkyKZqwkA01olmrCYMRAPRQDR9LkO+0QmiKbAJUyTRjNWEgWggGohm9CYMRAPRQDQQzZDsWE0YiMYC0eTYhIFoIJrKiCbHJgxEY4FocmzCZEs0OTZhIBqIpjKiybEJA9FANBANROPL5tiEgWhKIJoSmzAQDURjjGhKbMJANCUQTYlNmNGIpsQmDEQD0RgjmhKbMBANRAPR1Es0JTZhIJpciMZaEwaigWgKJBprTRiIJheisdaESUo01powEA1EUyDRWGvCQDQQDURjm2isNWEgmlURzWw2q4pZIBqIJkOiCVyGJpkFolkV0ejMMvel28mIRptl7ku3IRqIpjCimfNuaJpZIBqIBqIpm2ice5Z5ZonJupvVkMRu4JW4qXnrOWY++1+AAQBw9BJSCTeN9wAAAABJRU5ErkJggg==); overflow: hidden; } .allstar10 { background-position: 0px 0px; } .allstar9 { background-position: 0px -15px; } .allstar8 { background-position: 0px -30px; } .allstar7 { background-position: 0px -45px; } .allstar6 { background-position: 0px -60px; } .allstar5 { background-position: 0px -75px; } .allstar4 { background-position: 0px -90px; } .allstar3 { background-position: 0px -105px; } .allstar2 { background-position: 0px -120px; } .allstar1 { background-position: 0px -135px; } .allstar0 { background-position: 0px -150px; } .rating-average { color: #777; display: inline-block; font-size: 13px; margin-left: 10px; } $(document).ready(function () { $('.douban_item').each(function () { var _this = $(this); var strs = _this.attr('urlstring').toString(); var db_reg = /^https\\:\\/\\/(movie|book)\\.douban\\.com\\/subject\\/([0-9]+)\\/?/; if (db_reg.test(strs)) { var db_type = strs.replace(db_reg, \"$1\"); var db_id = strs.replace(db_reg, \"$2\").toString(); var db_api = \"https://douban.edui.fun/\"; if (db_type === 'movie') { var ls_item = 'movie' + db_id; var url = db_api + \"movies/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: \"json\", success: function (data) { localStorage.setItem(ls_item, JSON.stringify(data)); movieShow(_this, ls_item, strs) } }) } else { movieShow(_this, ls_item, strs) } } else if (db_type === 'book') { var ls_item = 'book' + db_id; var url = db_api + \"v2/book/id/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { localStorage.setItem('book' + db_id, JSON.stringify(data)); bookShow(_this, ls_item, strs) } }) } else { bookShow(_this, ls_item, strs) } } } }); }); function movieShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating); $(\"\" + data.name + \"\" + data.rating + \"导演:\" + data.director + \" / 类型:\" + data.genre + \" / \" + data.year + \"\" + data.intro.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } function bookShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating.average); $(\"\" + data.title + \"\" + data.rating.average + \"作者:\" + data.author + \" / 出版:\"+ data.pubdate +\" / \"+ data.publisher +\" \" + data.summary.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } .post-preview { max-width: 780px; height: 200px; margin: 1em auto; position: relative; display: flex; background: var(--entry); border-radius: 15px; box-shadow: 0 2px 4px rgba(0, 0, 0, .25), 0 0 2px rgba(0, 0, 0, .25); } .dark .post-preview { background: var(--entry); box-shadow: 0 2px 4px rgba(0, 0, 0, .5), 0 0 2px rgba(0, 0, 0, .5); } .post-preview--meta { width: 80%; padding: 23px; overflow: hidden; } .post-preview--middle { line-height: 28px; } .post-preview--title { font-size: 22px; margin: 0 !important; } .post-preview--title a { text-decoration: none; } .post-preview--date { font-size: 14px; color: #999; } .post-preview--excerpt { font-size: 14px; line-height: 1.825; } .post-preview--excerpt p { display: inline; margin: 0; } .post-preview--image { height: 200px !important; width: 25%; float: right; border-radius: 0 15px 15px 0; } .post-preview img { margin: unset; width: 20%; border-radius: 0 15px 15px 0; } @media (max-width: 550px) { .post-preview { width: 95%; } .post-preview--excerpt { } .post-preview--middle { line-height: 19px; } .post-preview--meta { width: 60%; padding: 23px; overflow: hidden; } .post-preview img { margin: unset; width: 40%; border-radius: 0 15px 15px 0; } } .rating { display: block; line-height: 15px; } .rating-star { display: inline-block; width: 75px; height: 15px; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAClCAYAAAAUAAAYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5xJREFUeNrs3T9rFEEcxvG7qEQIglaCICKkin9AUEtBKxU7wS61VlYivgWj70TtNFj5BqzE7qxEWwsxKIoYn4UtluFmbm8nczvzm+/BjxyuDwNzu3uXD0+46f7LC5PA45Hm+WTYw1x2LRDc0jzTXB+wqMlsaLPutz8fDFjYZHYauAz3NBvt83XNnyUWNpn1nVm3OsHmsb3EomazzZnVXKMPNcc0xzUnNKc0Rzv/77fms+Z7O3vt9b1eU7bZrNN68l5zcolX4ofmsuZXTdnmMvyi2dR86Bmcac62P6vKrnVubpc0bxYE32nOab45N8YqsvPeDfcD4SOav4HjprPuu+H5BTt9LXDMfNbdLPfT678Fx6vKupt1o/O8+R3pkOaJ5/iktqx7z/qp+aq5q/nY+fczmheaK03Gs7D5rLtZdzSvA6/Ebc2u55j57HQB0TzW7AzkjiKzny6+2hlKNE8juMNcFqKBaIZndRlCNBBNgmx7ZkE0fbLtZkE0EA1EM17WuQwhGogGooFoss6296y52cNO+J6HLJoPaFdbsvA9zGerIxrPh85eWYgGooFoDiQbuAxp0UA0EVmdWbRo+ma1WbRoIBqIZtzsnHdDWjQQDUQD0WSbde5ZS2UhmtqJJtSEiVkXooFoIJre2VATJmZdiKZ2ogk1YSb8oVMvDeUPnSAaiCaPJkzMuhANRAPRQDQpsqEmTMy6EI11oolpwkA0EA1EcyDZmCYMRAPR+LMxTZjqiCamCQPRQDQQzehNGIgGooFoIJpVZ2OaMBBN7USTqgkD0UA0EE3vbKomDERTO9GkasKYJJpUTRiIBqKBaEZvwkA0EA1EA9GkyKZqwkA01olmrCYMRAPRQDR9LkO+0QmiKbAJUyTRjNWEgWggGohm9CYMRAPRQDQQzZDsWE0YiMYC0eTYhIFoIJrKiCbHJgxEY4FocmzCZEs0OTZhIBqIpjKiybEJA9FANBANROPL5tiEgWhKIJoSmzAQDURjjGhKbMJANCUQTYlNmNGIpsQmDEQD0RgjmhKbMBANRAPR1Es0JTZhIJpciMZaEwaigWgKJBprTRiIJheisdaESUo01powEA1EUyDRWGvCQDQQDURjm2isNWEgmlURzWw2q4pZIBqIJkOiCVyGJpkFolkV0ejMMvel28mIRptl7ku3IRqIpjCimfNuaJpZIBqIBqIpm2ice5Z5ZonJupvVkMRu4JW4qXnrOWY++1+AAQBw9BJSCTeN9wAAAABJRU5ErkJggg==); overflow: hidden; } .allstar10 { background-position: 0px 0px; } .allstar9 { background-position: 0px -15px; } .allstar8 { background-position: 0px -30px; } .allstar7 { background-position: 0px -45px; } .allstar6 { background-position: 0px -60px; } .allstar5 { background-position: 0px -75px; } .allstar4 { background-position: 0px -90px; } .allstar3 { background-position: 0px -105px; } .allstar2 { background-position: 0px -120px; } .allstar1 { background-position: 0px -135px; } .allstar0 { background-position: 0px -150px; } .rating-average { color: #777; display: inline-block; font-size: 13px; margin-left: 10px; } $(document).ready(function () { $('.douban_item').each(function () { var _this = $(this); var strs = _this.attr('urlstring').toString(); var db_reg = /^https\\:\\/\\/(movie|book)\\.douban\\.com\\/subject\\/([0-9]+)\\/?/; if (db_reg.test(strs)) { var db_type = strs.replace(db_reg, \"$1\"); var db_id = strs.replace(db_reg, \"$2\").toString(); var db_api = \"https://douban.edui.fun/\"; if (db_type === 'movie') { var ls_item = 'movie' + db_id; var url = db_api + \"movies/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: \"json\", success: function (data) { localStorage.setItem(ls_item, JSON.stringify(data)); movieShow(_this, ls_item, strs) } }) } else { movieShow(_this, ls_item, strs) } } else if (db_type === 'book') { var ls_item = 'book' + db_id; var url = db_api + \"v2/book/id/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { localStorage.setItem('book' + db_id, JSON.stringify(data)); bookShow(_this, ls_item, strs) } }) } else { bookShow(_this, ls_item, strs) } } } }); }); function movieShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating); $(\"\" + data.name + \"\" + data.rating + \"导演:\" + data.director + \" / 类型:\" + data.genre + \" / \" + data.year + \"\" + data.intro.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } function bookShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating.average); $(\"\" + data.title + \"\" + data.rating.average + \"作者:\" + data.author + \" / 出版:\"+ data.pubdate +\" / \"+ data.publisher +\" \" + data.summary.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } .post-preview { max-width: 780px; height: 200px; margin: 1em auto; position: relative; display: flex; background: var(--entry); border-radius: 15px; box-shadow: 0 2px 4px rgba(0, 0, 0, .25), 0 0 2px rgba(0, 0, 0, .25); } .dark .post-preview { background: var(--entry); box-shadow: 0 2px 4px rgba(0, 0, 0, .5), 0 0 2px rgba(0, 0, 0, .5); } .post-preview--meta { width: 80%; padding: 23px; overflow: hidden; } .post-preview--middle { line-height: 28px; } .post-preview--title { font-size: 22px; margin: 0 !important; } .post-preview--title a { text-decoration: none; } .post-preview--date { font-size: 14px; color: #999; } .post-preview--excerpt { font-size: 14px; line-height: 1.825; } .post-preview--excerpt p { display: inline; margin: 0; } .post-preview--image { height: 200px !important; width: 25%; float: right; border-radius: 0 15px 15px 0; } .post-preview img { margin: unset; width: 20%; border-radius: 0 15px 15px 0; } @media (max-width: 550px) { .post-preview { width: 95%; } .post-preview--excerpt { } .post-preview--middle { line-height: 19px; } .post-preview--meta { width: 60%; padding: 23px; overflow: hidden; } .post-preview img { margin: unset; width: 40%; border-radius: 0 15px 15px 0; } } .rating { display: block; line-height: 15px; } .rating-star { display: inline-block; width: 75px; height: 15px; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAClCAYAAAAUAAAYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5xJREFUeNrs3T9rFEEcxvG7qEQIglaCICKkin9AUEtBKxU7wS61VlYivgWj70TtNFj5BqzE7qxEWwsxKIoYn4UtluFmbm8nczvzm+/BjxyuDwNzu3uXD0+46f7LC5PA45Hm+WTYw1x2LRDc0jzTXB+wqMlsaLPutz8fDFjYZHYauAz3NBvt83XNnyUWNpn1nVm3OsHmsb3EomazzZnVXKMPNcc0xzUnNKc0Rzv/77fms+Z7O3vt9b1eU7bZrNN68l5zcolX4ofmsuZXTdnmMvyi2dR86Bmcac62P6vKrnVubpc0bxYE32nOab45N8YqsvPeDfcD4SOav4HjprPuu+H5BTt9LXDMfNbdLPfT678Fx6vKupt1o/O8+R3pkOaJ5/iktqx7z/qp+aq5q/nY+fczmheaK03Gs7D5rLtZdzSvA6/Ebc2u55j57HQB0TzW7AzkjiKzny6+2hlKNE8juMNcFqKBaIZndRlCNBBNgmx7ZkE0fbLtZkE0EA1EM17WuQwhGogGooFoss6296y52cNO+J6HLJoPaFdbsvA9zGerIxrPh85eWYgGooFoDiQbuAxp0UA0EVmdWbRo+ma1WbRoIBqIZtzsnHdDWjQQDUQD0WSbde5ZS2UhmtqJJtSEiVkXooFoIJre2VATJmZdiKZ2ogk1YSb8oVMvDeUPnSAaiCaPJkzMuhANRAPRQDQpsqEmTMy6EI11oolpwkA0EA1EcyDZmCYMRAPR+LMxTZjqiCamCQPRQDQQzehNGIgGooFoIJpVZ2OaMBBN7USTqgkD0UA0EE3vbKomDERTO9GkasKYJJpUTRiIBqKBaEZvwkA0EA1EA9GkyKZqwkA01olmrCYMRAPRQDR9LkO+0QmiKbAJUyTRjNWEgWggGohm9CYMRAPRQDQQzZDsWE0YiMYC0eTYhIFoIJrKiCbHJgxEY4FocmzCZEs0OTZhIBqIpjKiybEJA9FANBANROPL5tiEgWhKIJoSmzAQDURjjGhKbMJANCUQTYlNmNGIpsQmDEQD0RgjmhKbMBANRAPR1Es0JTZhIJpciMZaEwaigWgKJBprTRiIJheisdaESUo01powEA1EUyDRWGvCQDQQDURjm2isNWEgmlURzWw2q4pZIBqIJkOiCVyGJpkFolkV0ejMMvel28mIRptl7ku3IRqIpjCimfNuaJpZIBqIBqIpm2ice5Z5ZonJupvVkMRu4JW4qXnrOWY++1+AAQBw9BJSCTeN9wAAAABJRU5ErkJggg==); overflow: hidden; } .allstar10 { background-position: 0px 0px; } .allstar9 { background-position: 0px -15px; } .allstar8 { background-position: 0px -30px; } .allstar7 { background-position: 0px -45px; } .allstar6 { background-position: 0px -60px; } .allstar5 { background-position: 0px -75px; } .allstar4 { background-position: 0px -90px; } .allstar3 { background-position: 0px -105px; } .allstar2 { background-position: 0px -120px; } .allstar1 { background-position: 0px -135px; } .allstar0 { background-position: 0px -150px; } .rating-average { color: #777; display: inline-block; font-size: 13px; margin-left: 10px; } $(document).ready(function () { $('.douban_item').each(function () { var _this = $(this); var strs = _this.attr('urlstring').toString(); var db_reg = /^https\\:\\/\\/(movie|book)\\.douban\\.com\\/subject\\/([0-9]+)\\/?/; if (db_reg.test(strs)) { var db_type = strs.replace(db_reg, \"$1\"); var db_id = strs.replace(db_reg, \"$2\").toString(); var db_api = \"https://douban.edui.fun/\"; if (db_type === 'movie') { var ls_item = 'movie' + db_id; var url = db_api + \"movies/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: \"json\", success: function (data) { localStorage.setItem(ls_item, JSON.stringify(data)); movieShow(_this, ls_item, strs) } }) } else { movieShow(_this, ls_item, strs) } } else if (db_type === 'book') { var ls_item = 'book' + db_id; var url = db_api + \"v2/book/id/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { localStorage.setItem('book' + db_id, JSON.stringify(data)); bookShow(_this, ls_item, strs) } }) } else { bookShow(_this, ls_item, strs) } } } }); }); function movieShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating); $(\"\" + data.name + \"\" + data.rating + \"导演:\" + data.director + \" / 类型:\" + data.genre + \" / \" + data.year + \"\" + data.intro.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } function bookShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating.average); $(\"\" + data.title + \"\" + data.rating.average + \"作者:\" + data.author + \" / 出版:\"+ data.pubdate +\" / \"+ data.publisher +\" \" + data.summary.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } 冷门佳作 .post-preview { max-width: 780px; height: 200px; margin: 1em auto; position: relative; display: flex; background: var(--entry); border-radius: 15px; box-shadow: 0 2px 4px rgba(0, 0, 0, .25), 0 0 2px rgba(0, 0, 0, .25); } .dark .post-preview { background: var(--entry); box-shadow: 0 2px 4px rgba(0, 0, 0, .5), 0 0 2px rgba(0, 0, 0, .5); } .post-preview--meta { width: 80%; padding: 23px; overflow: hidden; } .post-preview--middle { line-height: 28px; } .post-preview--title { font-size: 22px; margin: 0 !important; } .post-preview--title a { text-decoration: none; } .post-preview--date { font-size: 14px; color: #999; } .post-preview--excerpt { font-size: 14px; line-height: 1.825; } .post-preview--excerpt p { display: inline; margin: 0; } .post-preview--image { height: 200px !important; width: 25%; float: right; border-radius: 0 15px 15px 0; } .post-preview img { margin: unset; width: 20%; border-radius: 0 15px 15px 0; } @media (max-width: 550px) { .post-preview { width: 95%; } .post-preview--excerpt { } .post-preview--middle { line-height: 19px; } .post-preview--meta { width: 60%; padding: 23px; overflow: hidden; } .post-preview img { margin: unset; width: 40%; border-radius: 0 15px 15px 0; } } .rating { display: block; line-height: 15px; } .rating-star { display: inline-block; width: 75px; height: 15px; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAClCAYAAAAUAAAYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5xJREFUeNrs3T9rFEEcxvG7qEQIglaCICKkin9AUEtBKxU7wS61VlYivgWj70TtNFj5BqzE7qxEWwsxKIoYn4UtluFmbm8nczvzm+/BjxyuDwNzu3uXD0+46f7LC5PA45Hm+WTYw1x2LRDc0jzTXB+wqMlsaLPutz8fDFjYZHYauAz3NBvt83XNnyUWNpn1nVm3OsHmsb3EomazzZnVXKMPNcc0xzUnNKc0Rzv/77fms+Z7O3vt9b1eU7bZrNN68l5zcolX4ofmsuZXTdnmMvyi2dR86Bmcac62P6vKrnVubpc0bxYE32nOab45N8YqsvPeDfcD4SOav4HjprPuu+H5BTt9LXDMfNbdLPfT678Fx6vKupt1o/O8+R3pkOaJ5/iktqx7z/qp+aq5q/nY+fczmheaK03Gs7D5rLtZdzSvA6/Ebc2u55j57HQB0TzW7AzkjiKzny6+2hlKNE8juMNcFqKBaIZndRlCNBBNgmx7ZkE0fbLtZkE0EA1EM17WuQwhGogGooFoss6296y52cNO+J6HLJoPaFdbsvA9zGerIxrPh85eWYgGooFoDiQbuAxp0UA0EVmdWbRo+ma1WbRoIBqIZtzsnHdDWjQQDUQD0WSbde5ZS2UhmtqJJtSEiVkXooFoIJre2VATJmZdiKZ2ogk1YSb8oVMvDeUPnSAaiCaPJkzMuhANRAPRQDQpsqEmTMy6EI11oolpwkA0EA1EcyDZmCYMRAPR+LMxTZjqiCamCQPRQDQQzehNGIgGooFoIJpVZ2OaMBBN7USTqgkD0UA0EE3vbKomDERTO9GkasKYJJpUTRiIBqKBaEZvwkA0EA1EA9GkyKZqwkA01olmrCYMRAPRQDR9LkO+0QmiKbAJUyTRjNWEgWggGohm9CYMRAPRQDQQzZDsWE0YiMYC0eTYhIFoIJrKiCbHJgxEY4FocmzCZEs0OTZhIBqIpjKiybEJA9FANBANROPL5tiEgWhKIJoSmzAQDURjjGhKbMJANCUQTYlNmNGIpsQmDEQD0RgjmhKbMBANRAPR1Es0JTZhIJpciMZaEwaigWgKJBprTRiIJheisdaESUo01powEA1EUyDRWGvCQDQQDURjm2isNWEgmlURzWw2q4pZIBqIJkOiCVyGJpkFolkV0ejMMvel28mIRptl7ku3IRqIpjCimfNuaJpZIBqIBqIpm2ice5Z5ZonJupvVkMRu4JW4qXnrOWY++1+AAQBw9BJSCTeN9wAAAABJRU5ErkJggg==); overflow: hidden; } .allstar10 { background-position: 0px 0px; } .allstar9 { background-position: 0px -15px; } .allstar8 { background-position: 0px -30px; } .allstar7 { background-position: 0px -45px; } .allstar6 { background-position: 0px -60px; } .allstar5 { background-position: 0px -75px; } .allstar4 { background-position: 0px -90px; } .allstar3 { background-position: 0px -105px; } .allstar2 { background-position: 0px -120px; } .allstar1 { background-position: 0px -135px; } .allstar0 { background-position: 0px -150px; } .rating-average { color: #777; display: inline-block; font-size: 13px; margin-left: 10px; } $(document).ready(function () { $('.douban_item').each(function () { var _this = $(this); var strs = _this.attr('urlstring').toString(); var db_reg = /^https\\:\\/\\/(movie|book)\\.douban\\.com\\/subject\\/([0-9]+)\\/?/; if (db_reg.test(strs)) { var db_type = strs.replace(db_reg, \"$1\"); var db_id = strs.replace(db_reg, \"$2\").toString(); var db_api = \"https://douban.edui.fun/\"; if (db_type === 'movie') { var ls_item = 'movie' + db_id; var url = db_api + \"movies/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: \"json\", success: function (data) { localStorage.setItem(ls_item, JSON.stringify(data)); movieShow(_this, ls_item, strs) } }) } else { movieShow(_this, ls_item, strs) } } else if (db_type === 'book') { var ls_item = 'book' + db_id; var url = db_api + \"v2/book/id/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { localStorage.setItem('book' + db_id, JSON.stringify(data)); bookShow(_this, ls_item, strs) } }) } else { bookShow(_this, ls_item, strs) } } } }); }); function movieShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating); $(\"\" + data.name + \"\" + data.rating + \"导演:\" + data.director + \" / 类型:\" + data.genre + \" / \" + data.year + \"\" + data.intro.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } function bookShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating.average); $(\"\" + data.title + \"\" + data.rating.average + \"作者:\" + data.author + \" / 出版:\"+ data.pubdate +\" / \"+ data.publisher +\" \" + data.summary.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } .post-preview { max-width: 780px; height: 200px; margin: 1em auto; position: relative; display: flex; background: var(--entry); border-radius: 15px; box-shadow: 0 2px 4px rgba(0, 0, 0, .25), 0 0 2px rgba(0, 0, 0, .25); } .dark .post-preview { background: var(--entry); box-shadow: 0 2px 4px rgba(0, 0, 0, .5), 0 0 2px rgba(0, 0, 0, .5); } .post-preview--meta { width: 80%; padding: 23px; overflow: hidden; } .post-preview--middle { line-height: 28px; } .post-preview--title { font-size: 22px; margin: 0 !important; } .post-preview--title a { text-decoration: none; } .post-preview--date { font-size: 14px; color: #999; } .post-preview--excerpt { font-size: 14px; line-height: 1.825; } .post-preview--excerpt p { display: inline; margin: 0; } .post-preview--image { height: 200px !important; width: 25%; float: right; border-radius: 0 15px 15px 0; } .post-preview img { margin: unset; width: 20%; border-radius: 0 15px 15px 0; } @media (max-width: 550px) { .post-preview { width: 95%; } .post-preview--excerpt { } .post-preview--middle { line-height: 19px; } .post-preview--meta { width: 60%; padding: 23px; overflow: hidden; } .post-preview img { margin: unset; width: 40%; border-radius: 0 15px 15px 0; } } .rating { display: block; line-height: 15px; } .rating-star { display: inline-block; width: 75px; height: 15px; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAClCAYAAAAUAAAYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5xJREFUeNrs3T9rFEEcxvG7qEQIglaCICKkin9AUEtBKxU7wS61VlYivgWj70TtNFj5BqzE7qxEWwsxKIoYn4UtluFmbm8nczvzm+/BjxyuDwNzu3uXD0+46f7LC5PA45Hm+WTYw1x2LRDc0jzTXB+wqMlsaLPutz8fDFjYZHYauAz3NBvt83XNnyUWNpn1nVm3OsHmsb3EomazzZnVXKMPNcc0xzUnNKc0Rzv/77fms+Z7O3vt9b1eU7bZrNN68l5zcolX4ofmsuZXTdnmMvyi2dR86Bmcac62P6vKrnVubpc0bxYE32nOab45N8YqsvPeDfcD4SOav4HjprPuu+H5BTt9LXDMfNbdLPfT678Fx6vKupt1o/O8+R3pkOaJ5/iktqx7z/qp+aq5q/nY+fczmheaK03Gs7D5rLtZdzSvA6/Ebc2u55j57HQB0TzW7AzkjiKzny6+2hlKNE8juMNcFqKBaIZndRlCNBBNgmx7ZkE0fbLtZkE0EA1EM17WuQwhGogGooFoss6296y52cNO+J6HLJoPaFdbsvA9zGerIxrPh85eWYgGooFoDiQbuAxp0UA0EVmdWbRo+ma1WbRoIBqIZtzsnHdDWjQQDUQD0WSbde5ZS2UhmtqJJtSEiVkXooFoIJre2VATJmZdiKZ2ogk1YSb8oVMvDeUPnSAaiCaPJkzMuhANRAPRQDQpsqEmTMy6EI11oolpwkA0EA1EcyDZmCYMRAPR+LMxTZjqiCamCQPRQDQQzehNGIgGooFoIJpVZ2OaMBBN7USTqgkD0UA0EE3vbKomDERTO9GkasKYJJpUTRiIBqKBaEZvwkA0EA1EA9GkyKZqwkA01olmrCYMRAPRQDR9LkO+0QmiKbAJUyTRjNWEgWggGohm9CYMRAPRQDQQzZDsWE0YiMYC0eTYhIFoIJrKiCbHJgxEY4FocmzCZEs0OTZhIBqIpjKiybEJA9FANBANROPL5tiEgWhKIJoSmzAQDURjjGhKbMJANCUQTYlNmNGIpsQmDEQD0RgjmhKbMBANRAPR1Es0JTZhIJpciMZaEwaigWgKJBprTRiIJheisdaESUo01powEA1EUyDRWGvCQDQQDURjm2isNWEgmlURzWw2q4pZIBqIJkOiCVyGJpkFolkV0ejMMvel28mIRptl7ku3IRqIpjCimfNuaJpZIBqIBqIpm2ice5Z5ZonJupvVkMRu4JW4qXnrOWY++1+AAQBw9BJSCTeN9wAAAABJRU5ErkJggg==); overflow: hidden; } .allstar10 { background-position: 0px 0px; } .allstar9 { background-position: 0px -15px; } .allstar8 { background-position: 0px -30px; } .allstar7 { background-position: 0px -45px; } .allstar6 { background-position: 0px -60px; } .allstar5 { background-position: 0px -75px; } .allstar4 { background-position: 0px -90px; } .allstar3 { background-position: 0px -105px; } .allstar2 { background-position: 0px -120px; } .allstar1 { background-position: 0px -135px; } .allstar0 { background-position: 0px -150px; } .rating-average { color: #777; display: inline-block; font-size: 13px; margin-left: 10px; } $(document).ready(function () { $('.douban_item').each(function () { var _this = $(this); var strs = _this.attr('urlstring').toString(); var db_reg = /^https\\:\\/\\/(movie|book)\\.douban\\.com\\/subject\\/([0-9]+)\\/?/; if (db_reg.test(strs)) { var db_type = strs.replace(db_reg, \"$1\"); var db_id = strs.replace(db_reg, \"$2\").toString(); var db_api = \"https://douban.edui.fun/\"; if (db_type === 'movie') { var ls_item = 'movie' + db_id; var url = db_api + \"movies/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: \"json\", success: function (data) { localStorage.setItem(ls_item, JSON.stringify(data)); movieShow(_this, ls_item, strs) } }) } else { movieShow(_this, ls_item, strs) } } else if (db_type === 'book') { var ls_item = 'book' + db_id; var url = db_api + \"v2/book/id/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { localStorage.setItem('book' + db_id, JSON.stringify(data)); bookShow(_this, ls_item, strs) } }) } else { bookShow(_this, ls_item, strs) } } } }); }); function movieShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating); $(\"\" + data.name + \"\" + data.rating + \"导演:\" + data.director + \" / 类型:\" + data.genre + \" / \" + data.year + \"\" + data.intro.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } function bookShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating.average); $(\"\" + data.title + \"\" + data.rating.average + \"作者:\" + data.author + \" / 出版:\"+ data.pubdate +\" / \"+ data.publisher +\" \" + data.summary.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } 纯真爱情 .post-preview { max-width: 780px; height: 200px; margin: 1em auto; position: relative; display: flex; background: var(--entry); border-radius: 15px; box-shadow: 0 2px 4px rgba(0, 0, 0, .25), 0 0 2px rgba(0, 0, 0, .25); } .dark .post-preview { background: var(--entry); box-shadow: 0 2px 4px rgba(0, 0, 0, .5), 0 0 2px rgba(0, 0, 0, .5); } .post-preview--meta { width: 80%; padding: 23px; overflow: hidden; } .post-preview--middle { line-height: 28px; } .post-preview--title { font-size: 22px; margin: 0 !important; } .post-preview--title a { text-decoration: none; } .post-preview--date { font-size: 14px; color: #999; } .post-preview--excerpt { font-size: 14px; line-height: 1.825; } .post-preview--excerpt p { display: inline; margin: 0; } .post-preview--image { height: 200px !important; width: 25%; float: right; border-radius: 0 15px 15px 0; } .post-preview img { margin: unset; width: 20%; border-radius: 0 15px 15px 0; } @media (max-width: 550px) { .post-preview { width: 95%; } .post-preview--excerpt { } .post-preview--middle { line-height: 19px; } .post-preview--meta { width: 60%; padding: 23px; overflow: hidden; } .post-preview img { margin: unset; width: 40%; border-radius: 0 15px 15px 0; } } .rating { display: block; line-height: 15px; } .rating-star { display: inline-block; width: 75px; height: 15px; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAClCAYAAAAUAAAYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5xJREFUeNrs3T9rFEEcxvG7qEQIglaCICKkin9AUEtBKxU7wS61VlYivgWj70TtNFj5BqzE7qxEWwsxKIoYn4UtluFmbm8nczvzm+/BjxyuDwNzu3uXD0+46f7LC5PA45Hm+WTYw1x2LRDc0jzTXB+wqMlsaLPutz8fDFjYZHYauAz3NBvt83XNnyUWNpn1nVm3OsHmsb3EomazzZnVXKMPNcc0xzUnNKc0Rzv/77fms+Z7O3vt9b1eU7bZrNN68l5zcolX4ofmsuZXTdnmMvyi2dR86Bmcac62P6vKrnVubpc0bxYE32nOab45N8YqsvPeDfcD4SOav4HjprPuu+H5BTt9LXDMfNbdLPfT678Fx6vKupt1o/O8+R3pkOaJ5/iktqx7z/qp+aq5q/nY+fczmheaK03Gs7D5rLtZdzSvA6/Ebc2u55j57HQB0TzW7AzkjiKzny6+2hlKNE8juMNcFqKBaIZndRlCNBBNgmx7ZkE0fbLtZkE0EA1EM17WuQwhGogGooFoss6296y52cNO+J6HLJoPaFdbsvA9zGerIxrPh85eWYgGooFoDiQbuAxp0UA0EVmdWbRo+ma1WbRoIBqIZtzsnHdDWjQQDUQD0WSbde5ZS2UhmtqJJtSEiVkXooFoIJre2VATJmZdiKZ2ogk1YSb8oVMvDeUPnSAaiCaPJkzMuhANRAPRQDQpsqEmTMy6EI11oolpwkA0EA1EcyDZmCYMRAPR+LMxTZjqiCamCQPRQDQQzehNGIgGooFoIJpVZ2OaMBBN7USTqgkD0UA0EE3vbKomDERTO9GkasKYJJpUTRiIBqKBaEZvwkA0EA1EA9GkyKZqwkA01olmrCYMRAPRQDR9LkO+0QmiKbAJUyTRjNWEgWggGohm9CYMRAPRQDQQzZDsWE0YiMYC0eTYhIFoIJrKiCbHJgxEY4FocmzCZEs0OTZhIBqIpjKiybEJA9FANBANROPL5tiEgWhKIJoSmzAQDURjjGhKbMJANCUQTYlNmNGIpsQmDEQD0RgjmhKbMBANRAPR1Es0JTZhIJpciMZaEwaigWgKJBprTRiIJheisdaESUo01powEA1EUyDRWGvCQDQQDURjm2isNWEgmlURzWw2q4pZIBqIJkOiCVyGJpkFolkV0ejMMvel28mIRptl7ku3IRqIpjCimfNuaJpZIBqIBqIpm2ice5Z5ZonJupvVkMRu4JW4qXnrOWY++1+AAQBw9BJSCTeN9wAAAABJRU5ErkJggg==); overflow: hidden; } .allstar10 { background-position: 0px 0px; } .allstar9 { background-position: 0px -15px; } .allstar8 { background-position: 0px -30px; } .allstar7 { background-position: 0px -45px; } .allstar6 { background-position: 0px -60px; } .allstar5 { background-position: 0px -75px; } .allstar4 { background-position: 0px -90px; } .allstar3 { background-position: 0px -105px; } .allstar2 { background-position: 0px -120px; } .allstar1 { background-position: 0px -135px; } .allstar0 { background-position: 0px -150px; } .rating-average { color: #777; display: inline-block; font-size: 13px; margin-left: 10px; } $(document).ready(function () { $('.douban_item').each(function () { var _this = $(this); var strs = _this.attr('urlstring').toString(); var db_reg = /^https\\:\\/\\/(movie|book)\\.douban\\.com\\/subject\\/([0-9]+)\\/?/; if (db_reg.test(strs)) { var db_type = strs.replace(db_reg, \"$1\"); var db_id = strs.replace(db_reg, \"$2\").toString(); var db_api = \"https://douban.edui.fun/\"; if (db_type === 'movie') { var ls_item = 'movie' + db_id; var url = db_api + \"movies/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: \"json\", success: function (data) { localStorage.setItem(ls_item, JSON.stringify(data)); movieShow(_this, ls_item, strs) } }) } else { movieShow(_this, ls_item, strs) } } else if (db_type === 'book') { var ls_item = 'book' + db_id; var url = db_api + \"v2/book/id/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { localStorage.setItem('book' + db_id, JSON.stringify(data)); bookShow(_this, ls_item, strs) } }) } else { bookShow(_this, ls_item, strs) } } } }); }); function movieShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating); $(\"\" + data.name + \"\" + data.rating + \"导演:\" + data.director + \" / 类型:\" + data.genre + \" / \" + data.year + \"\" + data.intro.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } function bookShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating.average); $(\"\" + data.title + \"\" + data.rating.average + \"作者:\" + data.author + \" / 出版:\"+ data.pubdate +\" / \"+ data.publisher +\" \" + data.summary.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } 人性善恶 .post-preview { max-width: 780px; height: 200px; margin: 1em auto; position: relative; display: flex; background: var(--entry); border-radius: 15px; box-shadow: 0 2px 4px rgba(0, 0, 0, .25), 0 0 2px rgba(0, 0, 0, .25); } .dark .post-preview { background: var(--entry); box-shadow: 0 2px 4px rgba(0, 0, 0, .5), 0 0 2px rgba(0, 0, 0, .5); } .post-preview--meta { width: 80%; padding: 23px; overflow: hidden; } .post-preview--middle { line-height: 28px; } .post-preview--title { font-size: 22px; margin: 0 !important; } .post-preview--title a { text-decoration: none; } .post-preview--date { font-size: 14px; color: #999; } .post-preview--excerpt { font-size: 14px; line-height: 1.825; } .post-preview--excerpt p { display: inline; margin: 0; } .post-preview--image { height: 200px !important; width: 25%; float: right; border-radius: 0 15px 15px 0; } .post-preview img { margin: unset; width: 20%; border-radius: 0 15px 15px 0; } @media (max-width: 550px) { .post-preview { width: 95%; } .post-preview--excerpt { } .post-preview--middle { line-height: 19px; } .post-preview--meta { width: 60%; padding: 23px; overflow: hidden; } .post-preview img { margin: unset; width: 40%; border-radius: 0 15px 15px 0; } } .rating { display: block; line-height: 15px; } .rating-star { display: inline-block; width: 75px; height: 15px; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAClCAYAAAAUAAAYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5xJREFUeNrs3T9rFEEcxvG7qEQIglaCICKkin9AUEtBKxU7wS61VlYivgWj70TtNFj5BqzE7qxEWwsxKIoYn4UtluFmbm8nczvzm+/BjxyuDwNzu3uXD0+46f7LC5PA45Hm+WTYw1x2LRDc0jzTXB+wqMlsaLPutz8fDFjYZHYauAz3NBvt83XNnyUWNpn1nVm3OsHmsb3EomazzZnVXKMPNcc0xzUnNKc0Rzv/77fms+Z7O3vt9b1eU7bZrNN68l5zcolX4ofmsuZXTdnmMvyi2dR86Bmcac62P6vKrnVubpc0bxYE32nOab45N8YqsvPeDfcD4SOav4HjprPuu+H5BTt9LXDMfNbdLPfT678Fx6vKupt1o/O8+R3pkOaJ5/iktqx7z/qp+aq5q/nY+fczmheaK03Gs7D5rLtZdzSvA6/Ebc2u55j57HQB0TzW7AzkjiKzny6+2hlKNE8juMNcFqKBaIZndRlCNBBNgmx7ZkE0fbLtZkE0EA1EM17WuQwhGogGooFoss6296y52cNO+J6HLJoPaFdbsvA9zGerIxrPh85eWYgGooFoDiQbuAxp0UA0EVmdWbRo+ma1WbRoIBqIZtzsnHdDWjQQDUQD0WSbde5ZS2UhmtqJJtSEiVkXooFoIJre2VATJmZdiKZ2ogk1YSb8oVMvDeUPnSAaiCaPJkzMuhANRAPRQDQpsqEmTMy6EI11oolpwkA0EA1EcyDZmCYMRAPR+LMxTZjqiCamCQPRQDQQzehNGIgGooFoIJpVZ2OaMBBN7USTqgkD0UA0EE3vbKomDERTO9GkasKYJJpUTRiIBqKBaEZvwkA0EA1EA9GkyKZqwkA01olmrCYMRAPRQDR9LkO+0QmiKbAJUyTRjNWEgWggGohm9CYMRAPRQDQQzZDsWE0YiMYC0eTYhIFoIJrKiCbHJgxEY4FocmzCZEs0OTZhIBqIpjKiybEJA9FANBANROPL5tiEgWhKIJoSmzAQDURjjGhKbMJANCUQTYlNmNGIpsQmDEQD0RgjmhKbMBANRAPR1Es0JTZhIJpciMZaEwaigWgKJBprTRiIJheisdaESUo01powEA1EUyDRWGvCQDQQDURjm2isNWEgmlURzWw2q4pZIBqIJkOiCVyGJpkFolkV0ejMMvel28mIRptl7ku3IRqIpjCimfNuaJpZIBqIBqIpm2ice5Z5ZonJupvVkMRu4JW4qXnrOWY++1+AAQBw9BJSCTeN9wAAAABJRU5ErkJggg==); overflow: hidden; } .allstar10 { background-position: 0px 0px; } .allstar9 { background-position: 0px -15px; } .allstar8 { background-position: 0px -30px; } .allstar7 { background-position: 0px -45px; } .allstar6 { background-position: 0px -60px; } .allstar5 { background-position: 0px -75px; } .allstar4 { background-position: 0px -90px; } .allstar3 { background-position: 0px -105px; } .allstar2 { background-position: 0px -120px; } .allstar1 { background-position: 0px -135px; } .allstar0 { background-position: 0px -150px; } .rating-average { color: #777; display: inline-block; font-size: 13px; margin-left: 10px; } $(document).ready(function () { $('.douban_item').each(function () { var _this = $(this); var strs = _this.attr('urlstring').toString(); var db_reg = /^https\\:\\/\\/(movie|book)\\.douban\\.com\\/subject\\/([0-9]+)\\/?/; if (db_reg.test(strs)) { var db_type = strs.replace(db_reg, \"$1\"); var db_id = strs.replace(db_reg, \"$2\").toString(); var db_api = \"https://douban.edui.fun/\"; if (db_type === 'movie') { var ls_item = 'movie' + db_id; var url = db_api + \"movies/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: \"json\", success: function (data) { localStorage.setItem(ls_item, JSON.stringify(data)); movieShow(_this, ls_item, strs) } }) } else { movieShow(_this, ls_item, strs) } } else if (db_type === 'book') { var ls_item = 'book' + db_id; var url = db_api + \"v2/book/id/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { localStorage.setItem('book' + db_id, JSON.stringify(data)); bookShow(_this, ls_item, strs) } }) } else { bookShow(_this, ls_item, strs) } } } }); }); function movieShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating); $(\"\" + data.name + \"\" + data.rating + \"导演:\" + data.director + \" / 类型:\" + data.genre + \" / \" + data.year + \"\" + data.intro.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } function bookShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating.average); $(\"\" + data.title + \"\" + data.rating.average + \"作者:\" + data.author + \" / 出版:\"+ data.pubdate +\" / \"+ data.publisher +\" \" + data.summary.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } 国产好片 .post-preview { max-width: 780px; height: 200px; margin: 1em auto; position: relative; display: flex; background: var(--entry); border-radius: 15px; box-shadow: 0 2px 4px rgba(0, 0, 0, .25), 0 0 2px rgba(0, 0, 0, .25); } .dark .post-preview { background: var(--entry); box-shadow: 0 2px 4px rgba(0, 0, 0, .5), 0 0 2px rgba(0, 0, 0, .5); } .post-preview--meta { width: 80%; padding: 23px; overflow: hidden; } .post-preview--middle { line-height: 28px; } .post-preview--title { font-size: 22px; margin: 0 !important; } .post-preview--title a { text-decoration: none; } .post-preview--date { font-size: 14px; color: #999; } .post-preview--excerpt { font-size: 14px; line-height: 1.825; } .post-preview--excerpt p { display: inline; margin: 0; } .post-preview--image { height: 200px !important; width: 25%; float: right; border-radius: 0 15px 15px 0; } .post-preview img { margin: unset; width: 20%; border-radius: 0 15px 15px 0; } @media (max-width: 550px) { .post-preview { width: 95%; } .post-preview--excerpt { } .post-preview--middle { line-height: 19px; } .post-preview--meta { width: 60%; padding: 23px; overflow: hidden; } .post-preview img { margin: unset; width: 40%; border-radius: 0 15px 15px 0; } } .rating { display: block; line-height: 15px; } .rating-star { display: inline-block; width: 75px; height: 15px; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAClCAYAAAAUAAAYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5xJREFUeNrs3T9rFEEcxvG7qEQIglaCICKkin9AUEtBKxU7wS61VlYivgWj70TtNFj5BqzE7qxEWwsxKIoYn4UtluFmbm8nczvzm+/BjxyuDwNzu3uXD0+46f7LC5PA45Hm+WTYw1x2LRDc0jzTXB+wqMlsaLPutz8fDFjYZHYauAz3NBvt83XNnyUWNpn1nVm3OsHmsb3EomazzZnVXKMPNcc0xzUnNKc0Rzv/77fms+Z7O3vt9b1eU7bZrNN68l5zcolX4ofmsuZXTdnmMvyi2dR86Bmcac62P6vKrnVubpc0bxYE32nOab45N8YqsvPeDfcD4SOav4HjprPuu+H5BTt9LXDMfNbdLPfT678Fx6vKupt1o/O8+R3pkOaJ5/iktqx7z/qp+aq5q/nY+fczmheaK03Gs7D5rLtZdzSvA6/Ebc2u55j57HQB0TzW7AzkjiKzny6+2hlKNE8juMNcFqKBaIZndRlCNBBNgmx7ZkE0fbLtZkE0EA1EM17WuQwhGogGooFoss6296y52cNO+J6HLJoPaFdbsvA9zGerIxrPh85eWYgGooFoDiQbuAxp0UA0EVmdWbRo+ma1WbRoIBqIZtzsnHdDWjQQDUQD0WSbde5ZS2UhmtqJJtSEiVkXooFoIJre2VATJmZdiKZ2ogk1YSb8oVMvDeUPnSAaiCaPJkzMuhANRAPRQDQpsqEmTMy6EI11oolpwkA0EA1EcyDZmCYMRAPR+LMxTZjqiCamCQPRQDQQzehNGIgGooFoIJpVZ2OaMBBN7USTqgkD0UA0EE3vbKomDERTO9GkasKYJJpUTRiIBqKBaEZvwkA0EA1EA9GkyKZqwkA01olmrCYMRAPRQDR9LkO+0QmiKbAJUyTRjNWEgWggGohm9CYMRAPRQDQQzZDsWE0YiMYC0eTYhIFoIJrKiCbHJgxEY4FocmzCZEs0OTZhIBqIpjKiybEJA9FANBANROPL5tiEgWhKIJoSmzAQDURjjGhKbMJANCUQTYlNmNGIpsQmDEQD0RgjmhKbMBANRAPR1Es0JTZhIJpciMZaEwaigWgKJBprTRiIJheisdaESUo01powEA1EUyDRWGvCQDQQDURjm2isNWEgmlURzWw2q4pZIBqIJkOiCVyGJpkFolkV0ejMMvel28mIRptl7ku3IRqIpjCimfNuaJpZIBqIBqIpm2ice5Z5ZonJupvVkMRu4JW4qXnrOWY++1+AAQBw9BJSCTeN9wAAAABJRU5ErkJggg==); overflow: hidden; } .allstar10 { background-position: 0px 0px; } .allstar9 { background-position: 0px -15px; } .allstar8 { background-position: 0px -30px; } .allstar7 { background-position: 0px -45px; } .allstar6 { background-position: 0px -60px; } .allstar5 { background-position: 0px -75px; } .allstar4 { background-position: 0px -90px; } .allstar3 { background-position: 0px -105px; } .allstar2 { background-position: 0px -120px; } .allstar1 { background-position: 0px -135px; } .allstar0 { background-position: 0px -150px; } .rating-average { color: #777; display: inline-block; font-size: 13px; margin-left: 10px; } $(document).ready(function () { $('.douban_item').each(function () { var _this = $(this); var strs = _this.attr('urlstring').toString(); var db_reg = /^https\\:\\/\\/(movie|book)\\.douban\\.com\\/subject\\/([0-9]+)\\/?/; if (db_reg.test(strs)) { var db_type = strs.replace(db_reg, \"$1\"); var db_id = strs.replace(db_reg, \"$2\").toString(); var db_api = \"https://douban.edui.fun/\"; if (db_type === 'movie') { var ls_item = 'movie' + db_id; var url = db_api + \"movies/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: \"json\", success: function (data) { localStorage.setItem(ls_item, JSON.stringify(data)); movieShow(_this, ls_item, strs) } }) } else { movieShow(_this, ls_item, strs) } } else if (db_type === 'book') { var ls_item = 'book' + db_id; var url = db_api + \"v2/book/id/\" + db_id; if (localStorage.getItem(ls_item) == null || localStorage.getItem(ls_item) === 'undefined') { $.ajax({ url: url, type: 'GET', dataType: 'json', success: function (data) { localStorage.setItem('book' + db_id, JSON.stringify(data)); bookShow(_this, ls_item, strs) } }) } else { bookShow(_this, ls_item, strs) } } } }); }); function movieShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating); $(\"\" + data.name + \"\" + data.rating + \"导演:\" + data.director + \" / 类型:\" + data.genre + \" / \" + data.year + \"\" + data.intro.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } function bookShow(_this, ls_item, str) { var storage = localStorage.getItem(ls_item); var data = JSON.parse(storage); var db_star = Math.ceil(data.rating.average); $(\"\" + data.title + \"\" + data.rating.average + \"作者:\" + data.author + \" / 出版:\"+ data.pubdate +\" / \"+ data.publisher +\" \" + data.summary.replace(/\\s*/g, \"\") + \"\").replaceAll(_this) } ","permalink":"https://tszs.info/p/movie_love/","summary":"根据个人观看经历推荐","title":"经典高分电影推荐"},{"content":"这篇文章用于测试语雀文章自动同步到博客内容是否正常,请忽略。\nH1标题 H2标题 H3标题 H4标题 H5标题 H6标题 正文\n 无序列表1 无序列表2 有序列表1 有序列表2 任务1 任务2 链接地址\n行内代码\n 表头1 表头2 表头3 内容1 内容2 内容3 状态1\n状态2\n1 2 t = \u0026#34;hello world!\u0026#34; print (t) $ 1+1*2^3=9 $\n:::info 高亮块内容\n:::\n折叠块标题被折叠的内容\n 引用的内容1\n引用的内容2\n 😄 😭\n","permalink":"https://tszs.info/p/qgwhdl/","summary":"请忽略这篇文章","title":"测试语雀文章自动同步是否正常"},{"content":"验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,从设计之初,就是一种区分用户是计算机还是人的公共全自动程序。\n验证码从诞生到现在,已经经历了几个大的阶段发展。随着图像识别技术和AI技术的发展,以及黑灰产和安全厂商不断的进行攻防对抗和技术演进,简单的图形验证、字符验证已早已失去了防护作用。\n就现状而言,除了专业的安全厂商的验证码,其他大多开源或自研的验证码,基本上是有其形而无其用,主要原因有两点:1、攻防对抗是长期的事情,只有安全厂商会一直投入全部精力。2、服务能力上,需要有专业的人才队伍。验证码效果衰减非常快(有时分钟级),在大批量风险发生时,快速、有效的攻防应对措施就显得非常重要。\n因此,在选型验证码时还是多从产品安全能力、服务质量上来综合考虑。验证码作为安全产品/工具,最大的作用在于有效防止机器批量做恶,在安全能力上,除了人机识别能力,还需要关注当风险发生时,如何能快速攻防应对,如何能协同风控系统做好全链路纵深防御。\n本文主要整理了主流的验证码厂商,会分别从厂商品牌、集成形态、业务诉求满足、安全响应能力、服务能力维度上进行综合评测对比,希望能为大家在做验证码选型时,带来一定的参考。\n说明:数据主要来自各厂商官网、公共号等文章。 每个评测项能力好的会用绿色字体标记出来。 总结: 1、厂商品牌:腾讯云、阿里云两个大厂不用多说,但可以看到验证码不是大厂的重点,投入度和服务质量上比不上专业的安全厂商。易盾虽然是网易大平台下的安全子品牌,但是和顶象、极验独立的专业安全厂商比,也是存在专注度的问题,他们自己网站都没上全验证码。所以综合看,腾讯云和阿里云4星半,其他3个厂商3星。 2、集成形态:腾讯云和阿里云的验证方式是最少的,且在多平台小程序支持上比较弱,也能看出,验证码产品不是他们重点。 顶象的验证方式是最丰富的,但顶象在平台支持上,比极验、易盾少一个字节平台的支持,易盾又比极验少一个快手的平台支持,考虑到对平台的支持实现起来比较简单和快速,不是什么问题点,所以3个厂商都给了4星。\n3、业务诉求满足:腾讯云和阿里云在客户业务满足度和灵活性上比较弱;顶象和极验比较有客户的业务经验,在功能满足度上比较好,特别是顶象,在渠道管理、安全设置和系统监控上比较突出。ps:从侧面也可以看出,在对客户和安全的理解上,专业的厂商要做的好很多。\n4、安全响应能力:腾讯云、阿里云和易盾基本缺失该方面的能力。极验在风控融合设计上有做考虑和支持,在对抗上有紧急处理功能,但只能选择某个时间段内出现图文选择验证。顶象在这方面做的更强一些,对抗手段和时效、融合风控和策略定制上都思考的会更深一些,可以看得出,顶象在安全攻防对抗经验上还是比较丰富的。\n极验:按时段设置为图文验证 顶象:灵活对抗响应和切换。 顶象:自定义安全策略能力,高效应急处置。\n4、服务能力:腾讯云和阿里云只有saas服务,登录云平台,可以自行开通,购买套餐使用;顶象/极验/易盾saas服务和本地化部署交付都支持。 在saas客户案例上,极验成立时间久一些,客户案例相对多些,但是在私有化客户案例上,顶象案例比较丰富,前段时间看他们公共号文章,好些国家部委机构基于安全上考虑,采用的是他们家的产品。\n最后(ps:工作时间自己亲测,当然只是个例,不一定有代表性):\n腾讯云、阿里云开通服务:无电话联系,自助服务,提工单;\n顶象注册开通服务:注册成功就可以登录后台免费试用验证码,30分钟内有电话联系,进一步沟通需求;\n极验注册开通服务:注册后不能登录后台,需要等审核,30分钟内有电话联系,采集需求后转给另外客户经理,大致1小时内再次接到电话,然后继续走注册流程才能登录后台开通服务;\n易盾开通服务:需要先等试用审核通过,第二天上午都没有人联系,也一直是试用审核中状态;\n最后说明\n整体评测对比,是参考了各厂商官网、公众号等文章资料,也结合了自己对验证码实际的使用经验和研究,以及身边朋友的反馈,难免有一定局限性,欢迎大家斧正。\n","permalink":"https://tszs.info/p/captcha/","summary":"国内主流验证码平台简单对比分析","title":"验证码产品对比"}]