为题解文章标题添加题目难度tag

技术
编辑文章

项目地址:https://github.com/Llf0703/Luogu-Difficulty-Tag

(有时间给分类为项目的文章加个button用自定义字段指向项目地址)

下面把README.md复制了一遍

Luogu-Difficulty-Tag 洛谷难度标签 for typecho





项目结构

.
├── luogu.php
├── README.md
├── LICENSE
├── css
    └── luogu.css
├── pre
    ├── luogu.py
    └── process.cpp
└── api
    └── luogu.php

luogu.php是主体文件,pre/是预处理代码所在文件夹,api/是api所在文件夹。

使用方法

需要一个搭建好的typecho博客。

  1. luogu.php放入主题文件夹/usr/theme/xxx/
  2. head中引入AmazeUI2.4.2或更高的css
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/amazeui/2.7.2/css/amazeui.css">
  1. 引入css/luogu.css
<link rel="stylesheet" href="css/luogu.css">
  1. 在需要放置标签的地方写
<?php $this->need('luogu.php')?>

如我的index.php:

在分类为题解的标题右侧加上这个tag,demo:https://llf0703.com
<h1 class="post-index-title">
    <a itemtype="url" href="<?php $this->permalink() ?>"><?php $this->title() ?></a>
    <?php if ($this->category=='sol'):?>
        <?php $this->need('luogu.php')?>
    <?php endif;?>
</h1>
  1. 在您写的题解文章下的自定义字段添加字段名为luogu,值为题号的自定义字段就可以看到效果了。
题号就是洛谷题目页面url里最后部分,官方题目以P开头,Remote Judge题目以OJ名开头,接题目编号。如P1000-超级玛丽游戏,UVA100-The 3n+1 problem

爬虫的使用方法

爬虫与能否使用这个项目无直接关系,若您没有这个需求或没有python与php相关基础请不要尝试

为了保证洛谷的服务器稳定和您的账号与IP安全,请不要删除爬虫的停顿相关代码!

  1. 直接运行luogu.py,会自动生成luogu.txt
  2. 运行process.cpp,会生成luogu.php

其中luogu.php全是题号与难度对应的数组,关于typecho自定义字段的查询请参考项目中luogu.php;关于通过GET获取数据并返回相应按钮请参考api/luogu.php

API

地址

https://llf0703.com/luogu.php?id=

使用方法

id=后加上洛谷的题目编号,可以直接复制洛谷题目页面url上的。

搭建自己的API

api/luogu.php放入服务器中并按照上述方法访问所在位置即可。

运作过程

原理

通过洛谷题号索引洛谷上的题目难度。

步骤:

  1. 爬取了洛谷官方题库和Remote Judge中UVa的题目难度,用数字标号,并储存在luogu.php
  2. 因为用的时同一个html框架AmazeUI,所以直接照搬样式就行了
  3. 在主题文件中引入,并检索自定义字段,然后给出前端代码即可。

TODO

  • [ ] SPOJ,Codeforces,AtCoder的支持

Update

2019.1.30:添加对自定义字段的验证,不会出现不写字段而有尚无评定tag的情况。

LICENSE

MIT

新评论

称呼不能为空
邮箱格式不合法
网站格式不合法
内容不能为空