Skip to content
洛谷难度标签,包含爬虫与api
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
api
css
pre
LICENSE
README.md
index.php
luogu.php

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

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.