discuzX2.0 BT/PT下载插件“思可觅”发布

高校中比较流行的bt下载平台主要是nexusphp,开源好用的bt项目也不多,这些项目往往是bt管理、设置功能强大,社区功能较弱,对于高校来说并不合适。东北大学的六维空间是学生中比较流行的,仅限ipv6网络访问,以discuz7.2为基础扩展的bt下载功能,会员交流功能强大。四川农业大学论坛思可觅同样是基于discuz7.2开发,通过与xbtit深度整合,实现bt下载的功能。开发过程中修改了大量的discuz7.2的基础源码,并用自带的插件系统进行了扩展,几乎很难移植到另一平台。

康盛的论坛产品discuzX2.0在五月份正式发布了,功能上还是负载上都有了较大的改进,本人基于discuzX2.0正式版开发了一个pt下载插件,几乎没修改论坛核心代码,可以做到最简单化的安装和管理。

功能说明

帖子列表页面如下所示,红色表示种子数,蓝色表示正在下载数,绿色表示下载完成数。

帖子浏览页面

下载历史页面,在个人设置中

下载上传后积分变动记录

安装指南

注:本插件适用于discuzX2.0 utf8版本,其他版本尚未测试,安装前请备份数据。若要正式使用,最好先本地全新安装一遍配置熟悉后再正式使用。本插件测试时间较短,难免有bug,建议有php基础的人安装和使用。

第一步:下载此压缩包,解压后将文件上传到网站根目录,保持目录结构,配置xbt/config.php文件,修改数据库等相关参数。到后台安装“思可觅”插件。

第二步:设置上传下载两种积分并启用,默认值上传积分编号是3,下载积分编号是4,填入到xbt/config.php文件中。

第三步:设置可以发布资源的版块和相关用户特殊主题权限。到论坛后台添加资源区,并限定该区只能发布资源主题,如下图所示。

插件刚安装好任何用户都没有权限发布资源主题的,包括管理员,到用户标签下设置各个用户发布资源的权限。

第四步:在“工具-计划任务”标签下添加计划任务“清除过期种子”设定每小时执行一次,选择文件为:cron_delete_peers_hourly.php目的是清除由于意外断网等原因造成的无效种子信息。

第五步:在static/js/forum_post.js文件中第74行添加。是为了检查用户在发布资源时是否选择种子文件。

else if(theform.torrent && theform.torrent.value==””){ showDialog(‘您没有选择种子文件’); return false; }

如图:

第六步:修改template\default\forum\post.htm文件,84行form添加属性

enctype=”multipart/form-data”

如图:

第七步:修改source\function\function_delete.php文件末尾加上:

function deletetorrent($tids){

$query=DB::query(“select url FROM “.DB::table(‘xbtit_files’).” WHERE tid IN   ($tids)”); while($row=DB::fetch($query)){

@unlink($row[‘url’]); }

DB::delete(‘xbtit_files’, “tid IN ($tids)”);

DB::delete(‘xbtit_peers’, “tid IN ($tids)”);

}

并在function deletethread()中 361行DB::query(“DELETE FROM “.DB::table(‘forum_threadrush’).” WHERE tid IN ($tids)”, ‘UNBUFFERED’);后,加上deletetorrent($tids);

如图

此处为添加删除帖子的时删除数据库种子信息和删除种子文件的功能。放入回收站时并不删除,从回收站删除时才删除。至此,配置完成。

做种教程

在资源区选择发布资源,填写标题和内容描述。种子文件一栏选择种子文件,并复制tracker地址。下面讲介绍如何制作种子文件。

此插件限制了只有用utorrent才可上传或下载,在utorrent中选择“制作torrent”

另存到本地电脑一个地方,在发帖页面选择好种子文件路径就可以发布了。在utorrent中停止任务并开始,红色的任务就会变成绿色,同时帖子页面种子数显示为1。(新版本的ut可能不会更新,退出后并开启ut可显示)

文件结构及功能说明

├─source
│  ├─include
│  │  └─cron
│  │          cron_delete_peers_hourly.php 计划任务删除一小时内未活动的种子
│  │
│  └─plugin
│      └─sikemi 插件文件夹
│          │  BDecode.php
│          │  BEncode.php
│          │  discuz_plugin_sikemi.xml
│          │  download.inc.php
│          │  downloaded_users.inc.php
│          │  history.inc.php
│          │  install.php
│          │  main.fun.php
│          │  resettracker.inc.php
│          │  show_torr.class.php
│          │  thread.class.php
│          │  torr_info.inc.php
│          │  uninstall.php
│          └─upload.inc.php

├─torrent 存放种子文件的文件夹
└─xbt
│  announce.php  tracker更新文件
│  config.inc.php 配置文件

└─include
db_mysql.class.php 数据库连接类

 



discuzX2.0 BT/PT下载插件“思可觅”发布》上有71条评论

  1. 白南顺

    博主,这个pt插件在使用过程中,数据库会有很大的压力,为什么不调用mc来解决?

      1. 哈哈人

        memcache应该是会用到它cache类把一些变量存在内存里,这个不知道dz是怎么做的,但程序代码里貌似没有用到memcache

  2. nie

    楼主您好,我按照安装指南第六步加了form属性,但是发布种子时候还是有torrent error2 这是为什么呢?

  3. dntv

    不好意思,刚回错了
    还是这个问题:torrent error2已经按照上面的步骤设置了,不知道对第六步还需要哪些设置?

  4. Australis

    耗子吴同学您好,我们学校正要做一个内网PT站,苦于技术问题一直没有做成,看到您发布的这个插件,安装之后发现很多功能
    实现不了,您能不能给我发一份做好的discuz的程序包,非常感谢!

    我的邮箱:hdchen2010@163.com

    再次感谢您

    1. 耗子吴

      这个插件还存在很多问题,提供的基本思路是OK的。在思可觅用的过程中又进行了大量的优化和bug修复,一些功能在discuz的插件机制中是实现不了的,所以不适合没有技术的管理员,稍后即将放出插件思路的分析

  5. ly

    GBK版本论坛安装后别的都没问题,就是帖子里下载中和已完成数不会更新,一直显示为0.种子数更新也是很慢。 不知道什么问题导致。

  6. pyy

    刚刚装了个UTF版的DISCUZ 也是 提醒未选择种子文件。
    电脑没电了 白天再研究研究看。 请耗子兄指点指点

  7. pyy

    你好,请教一下问题。我手动转换成GBK 然后按教程一步步的修改后 在上传种子的时候就提醒未选择种子文件。

  8. tecbbs

    上传种子文件提示torrent error2,怎么解决?
    还有,那个tracker地址是不是要改成自己的网站?

  9. navi

    你好,我们建的是个内网pt站,用了你这个pt插件,安装好了以后可以发种,但一直显示红种,别人现在也没速度,请问该怎么解决?谢谢

  10. 柚子

    安装成功,红种,tracker本地测试用的是127.0.0.1,后来发现忘加upload目录了,config_inc加上后上传种子的tracker一直改不过来,下来手动改还是红种,tracker sending invalid data

  11. yesilike

    安装插件时出错,请教。

    [Type] 查询语句错误
    [1419] You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
    [Query] CREATE TRIGGER `after_peers_insert` AFTER INSERT ON `xbtit_peers` FOR EACH ROW BEGIN update xbtit_files set leechers=( select count(*) from xbtit_peers where status=’leechers’ and infohash=new.infohash),seeds=( select count(*) from xbtit_peers where status=’seeder’ and infohash=new.infohash) where info_hash=new.infohash;END

      1. yesilike

        是这句吗?
        CREATE TRIGGER `after_peers_insert` AFTER INSERT ON `xbtit_peers` FOR EACH ROW BEGIN update xbtit_files set leechers=( select count(*) from xbtit_peers where status=’leechers’ and infohash=new.infohash),seeds=( select count(*) from xbtit_peers where status=’seeder’ and infohash=new.infohash) where info_hash=new.infohash;

          1. yesilike

            ERROR 1064(42000):You have an error in your SQL syntax;check the manual that corresponds to your Mysql server version for the right syntax to use near ”at line 1.

  12. Pingback引用通告: 浅析管理后台导航设计 | 耗子吴

  13. tiaozi

    你好 我按照你说的安装后 提示 “”未选择种子文件””

    discuz x2 utf-8 最新版

      1. tiaozi

        已经按照教程修改了的 ;另外其他还有什么需要改的地方吗

  14. 小猪

    这个可以安装,就是为啥安装后,后台管理中用户管理一项,前面有四五个功能打不开,显示的是空白。

  15. seeking

    希望
    在浏览板块时
    帖子标题旁边就显示下载上传权值

    还有我们用的程序在ut里面显示的正在下载数是错误的,不知道解决没有。。。

    1. 耗子吴 文章作者

      discuz的帖子列表页面嵌入点太少,加上权值不容易排版,否则又要修改系统文件了,取舍还是不加的好了。后一个问题,待研究下

评论已关闭。