监控迅雷下载文件的状态

BenjaminMa 发布于 2011/10/08 13:38
阅读 2K+
收藏 0
请各位路过的大牛看看,平常很多人都喜欢挂着迅雷或者电驴下电影或者游戏什么的,但有时比如家里下着东西想在公司的电脑上看看下载状态,有时只能远程桌面去看,这样及其不方便。

所以我想用Java写个小程序来实现下载状态的检测和汇总报表功能:

1、能够对正在下载的文件分析其下载了多少,还差多少完成,到目前为止一共用了多少时间
2、程序能够在后台运行,比如ADSL掉线,可以自动从新拨号连接,然后将获取到的IP地址发送到指定邮箱(后期可实现通过短信发送到手机)。
3、定时生成下载数据报表,可查看相应的下载信息。

暂时就想到了以上的功能。

记得电驴在Linux下有个amule,上面有很丰富的数据展示,就是不知道迅雷有没有这方面开放的接口,或者说是有没有什么文件能读出这些数据。

各位能否分享一下思路。

加载中
0
FreeZ
FreeZ
迅雷提供API 不知道有没有你要找的 http://thunderplatform.xunlei.com/
ddatsh
ddatsh
嗯,快速开始里就有个获取进度 不过用JAVA 还是免了吧 最终还是C
0
磊神Ray
磊神Ray
很可惜,迅雷不开源,没有提供API出来
0
ddatsh
ddatsh

就算能想办法进程间通信去抓一些数据,JAVA本质也是不行嘀

最多蛋疼的JNI

0
浪客Dandy
浪客Dandy

我刚做了监控amule和emule的,用的都是他们自身的web api接口

我不清楚迅雷有没有类似接口,如果迅雷有web界面的话 我想做逆向工程不难

0
Aeolus
Aeolus
依然远程桌面吧。
0
Lunar_Lin
Lunar_Lin

     很明显这是C\C++干的话,由于迅雷什么都不提供,所以你最佳方式就是读取窗口数据. 这些都需要调用windows的API, 他们都是C接口的.

    因此建议你继续远程桌面..

0
浪客Dandy
浪客Dandy

国内动态公网IP还是很多的,我以前在公司也是VNC直接回家的

监控文件夹只能看到你完成的文件,看不到其他信息,比如完成的百分比

0
BenjaminMa
BenjaminMa
2.程序实例

作者:lyc 2011-01-06

#include <stdio.h>
#include <windows.h>
#include <tchar.h>
#include ".\\XLDownload.h"
#include ".\\XLError.h"

int main()
{
     // 1、初始化下载引擎
     if ( FALSE == XLInitDownloadEngine() )
     {
          printf("Initialize download engine failed.\n");
          return 1;
     }

     // 2、启动新任务
     // PS:如果链接无法通过,请把工程属性“将wchar_t设置为内置类型        (/Zc:wchar_t)”设置为Yes
     LONG   lTaskId = 0;
     DWORD  dwRet   = XLURLDownloadToFile(
                       _T("d:\\xmp.exe"), 
                       _T("http://xmp.down.sandai.net/kankan/XMPSetup_3.8.1.485-www.exe"), 
                       _T(""), lTaskId);

     if ( XL_SUCCESS != dwRet )
     {
          XLUninitDownloadEngine();
          printf("Create new task failed, error code:%d.\n", dwRet);
          return 1;
     }

     printf("Begin download file.\n");

     // 3、查询任务状态
     do 
     {
          ::Sleep(1000);

          ULONGLONG   ullFileSize = 0;
          ULONGLONG   ullRecvSize = 0;
          LONG        lStatus     = -1;

          dwRet = XLQueryTaskInfo(lTaskId, &lStatus, &ullFileSize, &ullRecvSize);
          if ( XL_SUCCESS==dwRet )
          {
               // 输出进度信息
               if ( 0 != ullFileSize )
               {
                    double  douProgress = (double)ullRecvSize/(double)ullFileSize;
                    douProgress *= 100.0;
                    printf("Download progress:%.2f%%\n", douProgress);
               }
               else
               {
                    printf("File size is zero.\n");
               }

               if ( enumTaskStatus_Success==lStatus )
               {
                    printf("Download successfully.\n");
                    break;
               }

               if ( enumTaskStatus_Fail==lStatus )
               {
                    printf("Download failed.\n");
                    break;
               }
          }
     } while( XL_SUCCESS==dwRet );

     // 4、无论是否下载成功,都必须调用XLStopTask
     XLStopTask(lTaskId);

     // 5、释放资源
     XLUninitDownloadEngine();
     return 0;
}

以上是在http://xldoc.xl7.xunlei.com/0000000026/index.html,迅雷下载开放引擎里面找到的代码。

 // 输出进度信息
if ( 0 != ullFileSize )
{
      double  douProgress = (double)ullRecvSize/(double)ullFileSize;
      douProgress *= 100.0;
      printf("Download progress:%.2f%%\n", douProgress);
      //通过Java程序来获得这个douProgress变量值,也许能够实现功能了。
}

0
4
44maoer55

我最近也是挺朋友的推荐,一款比肩iOS迅雷的磁力下载工具-袋鼠下载。
IOS磁力下载软件支持下载敏感资源,下载速度高达100M/S,支持磁力种子电驴迅雷链接,云端秒播,在线观看 支持投屏及倍速播放

返回顶部
顶部