国内PT站点最新种子公告板Pt-Board

在别人的怂恿下写了个这样的工具。原来的想法是在这里就可以直接查看各站最新的种子,方便多站辅种,后来想了想扩充了下,用爬虫补抓了国内各站的历史种子信息,就做成了现在这幅样子。

已关闭!

本工具不是跨站点搜索,你应该使用Pt-Search作为聚合搜索工具!!!!!
禁止滥用!禁止高强度连续请求!
本工具禁止在任何论坛、贴吧、Pt站点、QQ群等公开场所宣传。
本工具尊重站点要求,如站点禁止抓取展示,请及时告知。

初版(2017.09.31)截图


因为前后端是分离的,前端是静态页面,所以就用GitHub Pages来存储了,就不单独放在自己的页面中了(而且直接push就可以修改页面很方便欸有没有,其实自己也有备份)。相应的源代码在相应的repo中,可以自己修改(如果觉得我写的前端不好看(用)的话)。

Official DEMO URL:

非上面两个地址的展示DEMO地址均为他人第三方修改,不保证可用。

Docs: ptboard/README.md


与某站供up以上才可以使用的高级搜索不同,他们的是需要搜索时才在各站进行搜索,并抓取结果(中间可能因为站点无反应、Cookies认证过期或者站点变更结构等原因而不能使用)并返回。而这个是读取各站的RSS源,获取最新的种子后,存入库中,搜索时直接查数据库。
缺点在于,在脚本抓取有效期后不会对种子的情况(更改简介、被禁止、被删除情况进行改正)进行更新。(具体见2018.03.18更新说明)


更新频率

  • 目前从RSS抓取的间隔为3分钟(以保证及时),但是由于各站RSS的更新情况,可能会有2-15分钟的延迟吧。(毕竟不是irc这种实时的)
  • 自建的伪RSS(即分析站点种子首页获取最新种子信息)抓取间隔为30分钟(因为这些站没必要那么频繁的获取)
  • 部分不能使用通用模板抓取解析的站点时间一般在1-3小时或更长时间。
  • 六维空间(6V),什么时候想起来什么时候更新~(如果你有稳定的教育网服务器请联系233333
  • PreDB Live抓取间隔为5分钟(在限制订阅条件后同样没必要特别频繁抓取信息)。目前订阅类别为见下,主要拿来做国内站与美剧Scene发布时间对比,如果有其他要求,我再修改~
  • group: SVA|AVS|KILLERS|DIMENSION|FLEET|W4F
  • type: TV-XVID|TV-X264

更新日志

  • 2017.09.18 完成后端RSS抓取解析部分,及API部分
  • 2017.09.19 回溯抓取WHU、NYPT、AirPT站点所有种子数据完成
  • 2017.09.20 赶在今天结束之前,爬虫终于把麦田(MTPT、NWSUAF6)给爬完了
  • 2017.09.21 完成了BYR、XAUAT6、SJTU、Hyperay的回溯抓取,并移除了之前回溯过程中在BYR、WHU、NYPT重复抓取的数据(其他站未见重复抓取数据)
  • 2017.09.22 历时2天,爬完知行约28W条种子数据(他们站中发布时间只精确到分钟,秒统一用00替代。);完成HDChina、NPUPT、HDTime、HDU、JoyHD(67763之前)、CUGB、CHDBits、TTHD的回溯爬取(未排重)
  • 2017.09.23 发现昨天反爬TTHD的时候,站点信息填成了OpenCD,已修正(我一定是看书看糊涂了)。完成了CMCT、HDSky、Ourbits的回溯爬取。完成hudbt在136435之前的种子信息爬取。
  • 2017.09.25 爬完MT的普通区种子。
  • 2017.09.26 完成u2的回溯爬取。添加HUDBT的伪RSS更新。
  • 2017.09.27 爬完MT的隐藏区(都懂。。。)种子信息。添加HDCity的伪RSS更新。完成TCCF的回溯爬取。
  • 2017.09.28 爬完HDCity、OpenCD种子信息。
  • 2017.10.05 修改TTG的RSS链接(补充游戏区),回溯补抓TTG 影视&音乐游戏&软件资源。修改RSS脚本,并添加IPT(自2499360起)、港知堂(GZTown,自3690起)、FL(自522973起)的RSS订阅。
  • 2017.10.06 移除IPT和FL两个国外站(刷屏太恐怖了,还是弄国内的好了),更改为从PreDB中更新;添加Antsoul(都快闭站了,就做个备份纪念吧2333)的RSS订阅,并完成回溯;完成GZTown的回溯抓取。添加JoyHD的伪RSS更新。添加CCFBits的RSS订阅。修改默认前端不提供分页功能,API不变。
  • 2017.10.07 补KeepFrds的回溯抓取,并完成。修RSS脚本中一个CCFBits中时间转换为UTC的时间戳错误问题。完成CCFBits的回溯抓取。
  • 2017.10.08 更新了下后端返回total值的方法,加快在搜索条件下的响应。具体为无搜索值时,返回总行数的粗略值;有搜索值时,如果搜索结果行数小于limit参数,则返回具体行数,否则返回limit值(原来要COUNT所有符合搜索条件的记录,随着表越来越大,严重影响了响应)。修改后端分词的机制。补加HD4FANS的RSS订阅。
  • 2017.10.09 补HD4Fans的回溯抓取。
  • 2017.10.10 因为被挂v2ex,补加token认证。给每个由ProjectPoi生成的token一周的生存期以及25个搜索次数。(该数值可能会不经通知的改变)(Update: 2018.01.01 暂时移除token认证机制)
  • 2017.10.11 增加后端API的更多筛选项:start_time, end_time, site, no_site。前端不做适配。
  • 2017.11.1 收录六维空间(6V)帖子编号 1604910(2017-11-1 22:12) 之前的所有种子贴(非水区、图区等论坛贴)。因该站不支持非教育网IPv6地址访问,所以之后的更新采取手动更新的方式。
  • 2017.11.16 补加国内VPS备机抓取。(由此可能会造成部分种子被重复抓取,不过会被定时脚本给清除)
  • 2017.11.18 修正6v更新爬虫,补加候选区爬取和重爬机制。
  • 2017.12.15 给数据库title字段加全文索引,加快搜索速度。
  • 2017.12.17 跟着NPUBits站点 3万大删种 行动的脚步,移除在此次行动中被删除的所有种子记录(约 31k 行)。(可能并没有正确的从数据库中删除所有被删除的种子信息Orz
  • 2018.01.01 更改后端数据库存储引擎为MyISAM加快搜索速度,修改total返回值为实际行数。因ppoi认证不稳定移除token认证。移除备机抓取。API进入长期稳定期。
  • 2018.01.14 修改表结构,添加UNIQUE KEY,相关DDL:ALTER TABLE `ptboard_record` ADD UNIQUE KEY `unique_sid_in_one_site` (`sid`,`site`),使得不会出现单站点重复种问题。
  • 2018.01.31 部分站点存在offer区种子在通过候选后直接进入种子区的情况(这一现象不能被之前脚本正确处理,目前发现U2、HDChina、HDHome、MTeam可能存在该问题),出现该问题的站点会在稍后补抓可能在平时抓取中遗留的信息,并已经修改后端抓取脚本处理该一现象。
  • 2018.03.10 修改后端数据库,移除原ptboard_recordlink字段,改为由查询时与统计表信息拼接形成。节省了约100M的磁盘空间(200万行,含数据与索引)同时修改后端API,不再返回uid这一主键。
  • 2018.03.18 增加DUTPT(大工PT江湖)的历史数据(因一直没关注,脚本中途暂停,直到03.20才正式完成)以及抓取,暂定抓取间隔为1小时;修改后端RSS和伪RSS脚本插入语句为INSERT INTO .... VALUE(.....) ON DUPLICATE KEY UPDATE .....,使得在脚本抓取有效期内(视该站种子更新频率,一般在发布后2-3小时甚至更长时间内)种子主标题信息能随up主编辑更改,过后不管。
  • 2018.03.22 更新DOCS帮助文档;修改后端API处理,对siteno_site字段进行取值限制防止可能的注入,对search字段进行限制,分词后小于1个字段的将被排除,减少对数据库搜索的压力。
  • 2018.08.10 ByeBye 老子没空陪你们玩了,关闭后台了。
  • 2018.10.09 增加 百川PT,缩写直接域名ghtt吧
  • 2018.11.08 添加 HDArea以及部分新开小站
  • 2019.01.07 补充 教育网站点——清影HIT
  • 2019.02.17 修改数据库表结构
  • 2019.06.08 修正一些站点的订阅信息(包括链接、站点名称、关闭站点取消订阅),补爬TTG(因为原订阅链接失效导致的漏种)以及修复订阅时间错误漏洞

未来想法

  • 对已有存库资源进行复查。移除站点已删除种子信息,修改部分更名了的种子信息。
  • 通过种子列表页遍历脚本,实现种子的定期增量更新。
  • 添加按站点和按时间段搜索功能(这个肯定要改后端,等过段时间再看下后端api怎么改方便,会不会坑掉那)
  • 重复抓取数据清理改成单独脚本,在全部站点回溯基本完成的情况下运行(这个写好了就等运行了2333)

存在的问题

  • TTG的RSS源中没有提供发布时间,采用抓取时间替代(补爬修复)
  • 在回溯抓取时,部分站点存在将时间戳错误转换为timestamp的情况(未影响RSS源种子发布时间)
  • HIT的公网访问似乎有问题,VPS上ping不通,不能抓取(大清乙烷,不管了)
  • 蚂蚁PT年久失修,暂时不做抓取了(已补,在VPS上写了hosts才上去)(已关站);北洋园估计要明年初才开站,到时候再补。(已补)
  • HDCity的RSS源和其他基于NexusPHP的站点不同,需要更换规则(使用自解析抓取替代)
  • JoyHD站点的SSL设置存在问题,导致爬虫或者feedparser爬取时抛出SSLError问题无法抓取。 -> 单独写脚本执行抓取。
  • 在无搜索值时,返回的是information_schema表中粗略的总条目数,与真正值之间有1-2k的误差(这个误差已经扩大到了w级别了)。会导致点击最后一页时,无数据返回或者点击最后一页时,还有更久远的最后一页(迷之最后一页)。(2017.10.06 修改默认前端不提供分页功能,API不变) 然而并不想改后端。(更改表引擎为MyISAM解决)

API·IP地址转实际地址

参照之前脚本中使用的 JohnWong/python-tool 提供的http://pytool.sinaapp.com/ 接口实现方法,做以下修改:

  1. 对原方法中的py2+新浪SAE+wsgi实现形式,使用py3+Flask+blueprint的形式进行改造;
  2. 移除了无用的linkedin、weibo图案生成部分,合并剩余模块到同一utils中;
  3. 移除GBK编码导出,移除XML形式导出。
  4. 更新IPv4数据库。

调用方法如下:


接口名称

IPv4、IPv6通用地址反查工具

1) 请求地址

https://api.rhilip.info/tool/geo?ip={ip}

2) 调用方式:HTTP get

3) 接口描述:

  • 通过IP地址反查相关地址。
  • 使用数据库:ipv6wry.db(20150419)qqwry.dat(20170225)

4) 请求参数:

GET参数:

字段名称 字段说明 类型 必填 备注
ip IP address string Y IPv4 or IPv6

5) 请求返回结果:

请求成功

1
2
3
4
5
{
"ip": "2402:f000:1:1141:211:32ff:fe6b",
"loc": "北京市 清华大学",
"stats": "Success"
}

请求失败

  • 请求param中没有ip字段
1
2
3
4
5
{
"ip": null,
"loc": null,
"stats": "Not Find IP address."
}
  • ip地址格式错误
1
2
3
4
5
{
"ip": "asdfas",
"loc": null,
"stats": "Can't Format IP address."
}

关于Thread与while True loop的肤浅认知

虽然很久之前就接触了Python的Thread模块,但在之前的应用中也只是依瓢画葫芦,如在已经荒废了很久的 Rhilip/cn-mooc-dl 中,为了加快使用脚本下载的速度,而使用了多线程(Thread+Queue)下载的解决思路。

在这次的发种姬重构中,为了摆脱主线程while True loop循环闲置时候不能够做后台检查,我将部分与后端Database和待发布站点的相关轮询方法使用Thread与while True loop结合起来,在尝试过程中遇到了很多有意思的方法,仅此作以说明

R酱的发种姬: 一次失败重构小记

到现在为止,可以说之前半个月对于发种姬的第二次重构已经完全失败了。
究其原因,可能是没正确的理好思路吧(想太多了。。

40.jpg


反思

  1. 没有考虑到实际需求,就为class Database添加SQLBuilder相关方法。但事实证明了根本没必要,因为深究下去,整个发种姬也就用到以下一些具体的DML,没有必要专门写类似sql_insert()来构建相关语句然后执行。
1
2
3
4
5
6
7
8
INSERT INTO `{tb}` (title,`{cow}`) VALUES ('{name}',{id:d})
UPDATE `{tb}` SET `{cow}` = {id:d} WHERE title='{name}'
UPDATE `{tb}` SET `{cow}` = -1 WHERE `{cow}` = 0
UPDATE `{tb}` SET `{col}` = {rid} WHERE download_id={did}
SELECT * FROM `{tb}` WHERE {con}
SELECT MAX(`{fi}`) FROM `{tb}`
SELECT COUNT(*) FROM `{tb}`
DELETE FROM `{tb}` WHERE {con}
  1. 关于constants中定义什么常量没有明确的考量,导致最后constants.py中乱七八糟的堆放了一些没有意义的‘变量’。实际上,很多变量并不需要放在里面的,因为这些变量只在具体的package中使用,不会被多个*.py使用。而开始的用户设置已经通过utils.loadsetting中导入并创建了相关的对象(这个在为多站发种重构(即,第一次重构)中实现)。

  2. 模块思路没有理清。比如在设计的思路中,class Connect负责调度tr、db和各站处理模块,class Database负责与后端数据库联系。但在这次的失败的重构中,并没有修补之前hotfix中Connect中过多的db操作。

  3. 在所有已上问题没有解决的情况下,强行写web展示页。事实证明了,这次恢复web展示页的过程中(web展示页在第一次重构中因为无法解决多站发种情况展示的问题被移除),并没能解决之前出现的问题,也没有跳出原来静态html+json的格局。另外也造成了不必要的开销。
    TIM截图20170828225718.jpg

  4. (补充:仿rtinst写了个配置安装环境的脚本,事实证明没必要。好吧,这个不算在这次重构中,而且相关的repo已经删了


接受

  1. 放弃了之前使用pymediainfo库来获取mediainfo的方式,直接使用相关的cli命令mediainfo {option} {FileName}subprocess来执行和获取文件完整的Mediainfo。用这种方法,巧妙的避开了之前在获取fleet组作品的Mediainfo时,因为原获取参数字典中不存在相关key-value导致的直接无法获取情况。

  2. 使用了class Database.exec()的方法来合并原来的commit_sql()以及get_sql()。提出了upsert的解决方法。


下一步

  1. 合理构建视图,在现有的模块关系上进一步优化。比如将原来的utils.loadsetting拆分成utils.load.config和utils.load.modules。
  2. 暂时停止web前端的工作。
  3. 优化已经臃肿的class Connect,特别是__init__中一系列的列表定义。下沉部分数据库操作到class Database并提供接口供Connect调用。
  4. 考虑utils.serverchan的使用 额,这个模块放在这一直没用过
  5. 解决Mediainfo和thumbnails在不同站需要重复获取的问题。(这块可能要改造utils.descr模块以及在extractor中的使用问题。

Base commit:6d911db

目前在用、用过以及想尝试的VPS/独服梳理

这是一篇带有AFF性质的文章(链接可能带有aff,如果不喜,请自己复制官网地址或者Google搜索),大体上梳理了本人所有正在使用或者用过的VPS/独服,供给其他有6to4代理需求或者其他用途的同学参考~

不想自购,选择使用已经搭建好的,可直接访问 v6研究院。这是本人已经搭建好的6to4代理平台。

默认支付方式为:Paypal,如果其他支付手段会在说明中注释~
默认均带有IPv6支援,没有(部分机房有,部分机房没有)或者需要发tk申请IPv6地址的会说明注释。

至于路由,教育网IPv6均走HE通道从北京出口绕美国的(也就是说,哪怕你买香港或者日本的机子,使用IPv6连接,数据都是要从美国绕一圈),没见过其他出口(据说有香港出口~)。故,国外VPS延迟均在150ms(美西)-300ms(欧洲、日本、新加坡、香港),不要想优化延迟了,(除非国内的机子,不然没有100ms以下的)。唯一的可能就是上BBR等单边或者双边加速的软件,来提升网络速度。

2017/09/02 补充:HKIX通道是最理想的,延迟约在40-50ms,比如你用IPv6上某些不存在的网站就是走这个通道的;IIJ通道也还行,原来有conoha的日本VPS是走这个通道的,据说延迟在90ms,不过目前已经从美国绕HE了,目前不知道有什么VPS是走这个的~~

大流量建议选择欧洲的机子,因为那边给的多是无限流量或者类似无限流量;对延迟稍敏感可以选择美西的机子,来回程直走太平洋,物理距离小;有特殊需求(比如某些游戏),可以选择日本的机子,不过多数日本的IPv4地址均被墙了,这点需要注意~

另外,本人“后宫”群:243151858,欢迎于此讨论~

977641677.jpg

Blog迁移至typecho~

可以看到,在R酱没管过自己的小窝一段时间后。。
这个Blog又变了~

这次把原来的wordpress改成了现在使用的Typecho,然后换了一个好看的背景。。
相比于之前的,个人觉得Typecho很轻巧,特别是使用了Markdown作为主要编辑器语言,更加好用。

16.jpg


迁移的过程还是很顺利的,有一些小坑。比如在迁移后的伪静态nginx配置,原wordpress的图片目录以及文档格式等方面,不过这些问题都不大。
另外,我删了原来Blog中的关于IPv6一些文章,因为没必要,而且现在翻翻有些幼稚,不如不要~

在python列表推导式中对字典列表进行更新的方法

嗯,很绕的标题,但是这是为了解决这样一个问题:存在一个python列表,这个列表是由一系列的同样类型的字典组成,想要对该列表中的每一个字典进行更新(按照一定规则),并返回一个新的列表。

如此假定:

1
2
3
4
5
6
7
8
9
In [1]: d = [  # 原始列表                     
...: {"id":1,"name":"test1"},
...: {"id":2,"name":"test2"}
...: ]

In [2]: new_d = [ # 想要实现的效果,其中new_id的值为id值加1,并保留原字典中所有(未被更新)的项
...: {"id":1,"name":"test1","new_id":2},
...: {"id":2,"name":"test2","new_id":3}
...: ]

使用最简单的方法就是,新建一个空列表,使用for循环遍历已有的字典列表,并对每个字典进行更新后添加进新建的空列表中。如下代码示意

1
2
3
4
5
6
7
8
9
In [3]: d_1 = []                                                 
...: for i in d:
...: i.update({"new_id": i["id"] + 1})
...: d_1.append(i)
...: d_1
...:
Out[3]:
[{'id': 1, 'name': 'test1', 'new_id': 2},
{'id': 2, 'name': 'test2', 'new_id': 3}]

那有没有其他的方法馁,这就是本篇文章探讨了。。(最近奇技淫巧想多了。
就想用列表推导式来解决(毕竟如In[3] 的结构很容易改写成列表推导式)

1
2
In [4]: [i.update({"new_id": i["id"] + 1}) for i in d]
Out[4]: [None, None]

然而却得到了这样的结果?为什么馁。
查看官方文档dict.update

update([other])
Update the dictionary with the key/value pairs from other, overwriting existing keys. Return None.
update() accepts either another dictionary object or an iterable of key/value pairs (as tuples or other iterables of length two). If keyword arguments are specified, the dictionary is then updated with those key/value pairs: d.update(red=1, blue=2).

好吧,dict.update返回的是None。那换个思路(对,上stackoverflow找找。
然后就看到了这篇python - update dict in list comprehension - Stack Overflow

来,我们来尝试下

1
2
3
4
5
6
7
8
9
10
In [5]: [{i:j for i,j in t.items() + [("new_id",t["id"]+1)]} for t in d]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-920aa73acbd6> in <module>()
----> 1 [{i:j for i,j in t.items() + [("new_id",t["id"]+1)]} for t in d]

<ipython-input-5-920aa73acbd6> in <listcomp>(.0)
----> 1 [{i:j for i,j in t.items() + [("new_id",t["id"]+1)]} for t in d]

TypeError: unsupported operand type(s) for +: 'dict_items' and 'list'

什么鬼嘛(摔 ,怪不得是0赞0踩的答案。直接抛出了TypeError。
原来,在python3中,dict.items()不像py2中一样返回一个列表,而是返回了一个dict_items对象。(参见2.7#dict.items 以及 3.6#dict.items

items()
Python2.7 : Return a copy of the dictionary’s list of (key, value) pairs.
Python3.6 : Return a new view of the dictionary’s items ((key, value) pairs).


这都不行,那也不行,那lambda。。 也不行。。。就在我想要放弃的时候
我神tm的想出了一个方法。

你update不是不返回吗,但是实际上字典列表中的字典已经更新了,那用or来过滤掉就行。就有了以下的列表推导式。
在执行的过程中因为 None or i => i让推导式中生成值为i。

1
2
3
4
In [6]: [i.update({"new_id": i["id"] + 1}) or i for i in d]
Out[6]:
[{'id': 1, 'name': 'test1', 'new_id': 2},
{'id': 2, 'name': 'test2', 'new_id': 3}]

BYRBT 辅助脚本 · Quote in CKEditor(种子区引用脚本)

BYRBT 辅助脚本Bytbt默认的CKEditor编辑器是HTML的,不想其他BBcode的可以直接使用[quote]、[code]或者[mediainfo]标签来加上引用。
于是便有了@cabbage基于原来教程写的资源简介美化——引用nfo格式
虽然在站内已经有引用脚本的情况下,其实这样也不好用(毕竟还要去找代码,切换编辑器模式)。

一番纠结后,还是选择写一个脚本来实现~

pip正确安装方法简记

今天在给发种姬搬家的时候发现了一个很奇怪的问题。。
在安转flexget时候提示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Exception:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
status = self.run(options, args)
File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 290, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1266, in prepare_files
req_to_install.extras):
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2401, in requires
dm = self._dep_map
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2597, in _dep_map
self.__dep_map = self._compute_dependencies()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2621, in _compute_dependencies
parsed = next(parse_requirements(distvers))
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 49, in &lt;lambda&gt;
next = lambda o: o.next()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2721, in parse_requirements
"version spec")
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2686, in scan_list
raise ValueError(msg, line, "at", line[p:])
ValueError: ('Expected version spec in', 'requests ~=2.16.3', 'at', ' ~=2.16.3')
Storing debug log for failure in /root/.pip/pip.log

并且使用 pip install -U pippip install -U requests 均没能解决问题。

分别提示pip已经是最新的版本,在升级requests时候则提示
Not uninstalling requests at /usr/lib/python2.7/dist-packages, owned by OS
仔细回看了一下前面使用apt-get安装pip时候的时候,系统自动把低版本的requests给装上了(这里甚是奇怪。以前都没有出现过这种问题,估计是使用的源的问题。)

那么原来在配置Autoseed时候安装flexget的过程前安装pip(py2)就不能那么写了。。参照官方的安装方法。要改成这样的

1
2
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

如果已经使用apt-get安装了pip,要卸载使用正确的方法安装,则应该

1
2
3
4
apt-get remove python-pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
hash -r

以上参见:

  1. Installing with get-pip.py
  2. /usr/bin/pip: No such file or directory

Tv TORRENTs ro 宣布关站

截图留念喵,毕竟是本人的第一个美剧站点。。。以前还用fh(自己的和狗头的专门irss刷过一段时间的free种)。24小时的HR需求也显得十分的轻松。

TvT关站公告

以下是关站公告,大体意思就是“我们都现充了,所以准备关站,谢谢你们的支持。”

1
2
3
4
5
6
7
Dear users:

We are shutting the website down due to the lack of interest.This is no longer a fun activity and the old members simply have other things to focus on, like work and families. We like to thank each member that was present in the comunity we built and maintained for a decade.

That's all folks!

/signed Staff

5.19更

TvT关站截图