逸雨清风 校园网视频下载器 V0.26 说明
[之前的版本可能不可用,现已更新,2013-7-1]
1、初次使用请选择客户端首页顶部的“分享给同学按钮”,得到当前学校局域网的服务器IP,粘贴到软件里,之后软件自动添加IP。如成都信息工程学院 http://10.254.241.130
2、复制校园网视频客户端里地址栏的链接,如http://netkuu.letv.com/bofangye.html?
info=687474703A2F2F6D372E6E65746B75752E636F6D2F6C786A2F74616E676368616F68616F6E616E72656E2F2A2A2E6D6B76&type=netkuu.letv 到软件里。
3、点击生成得到下载链接,可以复制生成的链接到迅雷、旋风等下载工具里下载,也可点击软件的下载直接下载。(因为是局域网下载,所以平均速度都在10M/S以上)。V0.2版本的自带下载功能还很简陋,没有添加下载进度显示,建议复制链接用迅雷下载。
4、此版本相对V0.1版本针对电视剧下载做了优化,可以获取到电视剧所有集数的下载链接。
5、主机IP固定后不要随意修改,若需修改,可以在程序里暂时性修改,若要永久性修改请用文本方式打开软件文件夹里config.yyqf文件编辑。
6、因为使用了URLDownloadToFile这个函数和一个皮肤DLL,所以可能杀毒软件会误报,请将软件加入白名单或退出杀软。
-----------------------------------------------------------逸雨清风出品 2013.6.14
更多详细信息访问我的CSDN博客:http://dwz.cn/moviedown
新浪微博: 仁寿府府尹
2013.7.1
1、今天又用了一下,修复一些BUG
2013.6.15
1、提高稳定性。
2、软件自带下载功能添加多线程,界面不会卡住
软件下载地址:http://download.csdn.net/detail/xyydyyqf/5682221
1、初次使用要先配置服务器IP
2、然后就可以使用了,复制客户端地址栏的网址到软件里生成下载地址,点复制链接迅雷会自动监听打开下载窗口
3、针对电视剧下载,会生成每一集的详细下载地址,同样只需要复制下载地址即可,另外软件自带也有下载功能,不过暂时比较简陋(没有添加多线程,没有添加下载进度,毕竟只弄了半天)
铁甲刺穿,海棠酒满,校园网最高战力凸显。你有你的联通四兆,我有我的校园网。你只听说我网速奇慢,却没见过我的PT和视频客户端。校园网是注定孤独的旅行,路上少不了质疑和嘲笑, 但那有怎样,我用校园网,我为自己代言。
初始化代码
/*
********** 逸雨清风 校园网视频下载器 V0.2
********** 逸雨清风出品 2013.6.14
********** 数电也考完了!终于没有数学物理了!
********** 值得庆贺!写一发代码以表喜悦
********** 新浪微博:仁寿府府尹
*/
//添加初始化代码
SkinH_Attach();
GetCurrentDirectory(sizeof(CurrentSoftAddreass),CurrentSoftAddreass);
lstrcat(CurrentSoftAddreass,"\\config.yyqf");
ZeroMemory(ip,sizeof(ip));
ZeroMemory(ID,sizeof(ID));
ZeroMemory(client,sizeof(client));
ZeroMemory(urlready,sizeof(urlready));
ZeroMemory(urldown,sizeof(urldown));
fpip = fopen(CurrentSoftAddreass,"a+"); //检测是否存在配置文件,不存在则创建
fgets(ip,sizeof(ip),fpip); //存在配置文件读取ip地址
if (ip[0] == '\0') MessageBox(hWnd,"未检测到配置信息,初次使用请点击客户端首页顶部的“分享给同学”\n得到当前学校局域网的服务器IP,粘贴到软件里",ip,MB_OK|MB_ICONINFORMATION);
SetDlgItemText(hWnd,IDC_IP,ip);
电影下载地址生成
case IDGET:
{
GetDlgItemText(hWnd,IDC_IP,ip,sizeof(ip));
GetDlgItemText(hWnd,IDC_EDIT1,client,sizeof(client));
for (int i=0;i<300;i++)
{
if (client[i] == '=')
{
int j;
for (j=0;client[i] != '&';j++)
{
i++;
ID[j] = client[i];
}
ID[j-1] = '\0';
break;
}
} //提取视频ID
TCHAR tempready[300],tempdown[300];
sprintf(tempready,"%s/xy_new.asp?a=%s&b=%s",ip,"1",ID);
URLDownloadToFile(NULL,tempready,"c:\\1.txt",0,NULL);
if (_access("c:\\1.txt", 0) != -1) // 第二集链接页面下载成功。说明是电视剧。
{
FILE *fptemptemp = fopen("c:\\1.txt","r");
fgets(tempdown,sizeof(tempdown),fptemptemp);
if (tempdown[1] == '|')
{
//只有电视剧在集数=1的时候才有‘|’
HINSTANCE hInstance=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DSJ),NULL,DSJ_PROC);
}
fclose(fptemptemp);
DeleteFile("c:\\1.txt");
} //测试是否是电视剧,若为电视剧跳转到电视剧
sprintf(urlready,"%s/xy_new.asp?a=%s&b=%s",ip,"0",ID);
URLDownloadToFile(NULL,urlready,"c:\\1.txt",0,NULL);
FILE *fptemp = fopen("c:\\1.txt","r");
fgets(urldown,sizeof(urldown),fptemp);
if (urldown[1] != '|') MessageBox(hWnd,"视频网址复制错误或主机错误","错误",MB_OK|MB_ICONINFORMATION);
for (int i=0;i<sizeof(urldown);i++)
{
if (urldown[i] == 'h')
{
int j=0;
char temp[300];
while (urldown[i]!='|')
{
temp[j] = urldown[i];
j++;
i++;
}
ZeroMemory(urldown,sizeof(urldown));
temp[j]='\0';
strcpy(urldown,temp);
break;
}
}//生成下载链接
SetDlgItemText(hWnd,IDC_DOWNLOAD,urldown);
fclose(fptemp);
DeleteFile("c:\\1.txt"); //关闭并删除临时文件
if (fpip == NULL) fputs(ip,fpip);
fclose(fpip);
}
break;
case IDCOPY:
{
HGLOBAL hClip;
if(OpenClipboard(hWnd))
{
EmptyClipboard();
hClip = GlobalAlloc(GMEM_MOVEABLE, sizeof(urldown)+1);
char *buff;
buff = (char*)GlobalLock(hClip);
strcpy(buff, (char*)(LPCTSTR)urldown);
GlobalUnlock(hClip);
SetClipboardData(CF_TEXT, hClip);
CloseClipboard();
}
}
break;
软件自带下载功能:
case IDDOWN:
{
OPENFILENAME ofn;
TCHAR szFile[MAX_PATH];
ZeroMemory(&ofn,sizeof(ofn));
ofn.lpstrFilter = TEXT("MKV(.mkv)\0*.MKV\0RMVB(.rmvb)\0*.RMVB\0ALL(*.*)\0*.*\0");
ofn.nFilterIndex = 0;
ofn.lpstrTitle = TEXT("下载保存校园网视频");
ofn.hwndOwner = hWnd;
ofn.lpstrFile = szFile;
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile[0] = TEXT('\0');
ofn.nMaxFile = sizeof(szFile);
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST||OFN_READONLY;
ZeroMemory(urldown,sizeof(urldown));
GetDlgItemText(hWnd,IDC_DOWNLOAD,urldown,sizeof(urldown));
if (GetSaveFileName(&ofn))
{
strcat(szFile,".mkv");
if ((URLDownloadToFile(NULL,urldown,szFile,0,NULL)) == 0) MessageBox(hWnd,"校园网视频下载完成!","下载完成",MB_OK|MB_ICONINFORMATION);
//URLDowloadToFile返回0即是下载成功
}
}
break;
多集电视剧下载地址获取
BOOL DSJ_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
TCHAR DSJ[40000];
TCHAR tempready[300],tempdown[300];
ZeroMemory(DSJ,sizeof(DSJ));
for (int k=0;k<200;k++)
{
ZeroMemory(tempready,sizeof(tempready));
ZeroMemory(tempdown,sizeof(tempdown));
sprintf(tempready,"%s/xy_new.asp?a=%d&b=%s",ip,k,ID);
URLDownloadToFile(NULL,tempready,"c:\\2.txt",0,NULL);
if (_access("c:\\2.txt", 0) != -1) // 第N集链接页面下载成功。说明第N集存在
{
FILE *fptemptemp = fopen("c:\\2.txt","r");
fgets(tempdown,sizeof(tempdown),fptemptemp);
for (int i=0;i<sizeof(tempdown);i++)
{
if (tempdown[i] == 'h')
{
int j=0;
char temp[300];
while (tempdown[i]!='|')
{
temp[j] = tempdown[i];
j++;
i++;
}
ZeroMemory(tempdown,sizeof(tempdown));
temp[j]='\0';
strcpy(tempdown,temp);
break;
}
}
fclose(fptemptemp);
DeleteFile("c:\\2.txt");
TCHAR Chapter[200];
sprintf(Chapter,"第%d集: %s\r\n",k+1,tempdown);
lstrcat(DSJ,Chapter);
}
}
SetDlgItemText(hwnd,IDC_EDIT,DSJ);
return TRUE;
}
PS:电视剧的批量下载还有一种办法是使用迅雷的通配符批量下载,先用软件得到电视剧第一集的链接。每一集链接末尾的F2A2A改为F3*(集数十位数)3*(集数个位数),其余不变。例如ID为:
687474703A2F2F6D382E6E65746B75752E636F6D2F652F6C786A2F73756974616E6779696E6778696F6E677A6875616E2F2A2A2E6D6B76,前面的一长串可以无视掉,直接看最后的F2A2A,第一集就把F2A2A改为F3031其余都不变,第二十集就把F2A2A改成F3230其余不变即可。
所以校园网里第二十二集的完全下载链接是:
http://10.254.241.130/kuuG/687474703A2F2F6D382E6E65746B75752E636F6D2F652F6C786A2F73756974616E6779696E6778696F6E677A6875616E2F32322E6D6B76.mkv。之后在迅雷里建立批量下载不过只能十集批量,因为十位和个位都在变化。
/*
******逸雨清风 出品
******http://blog.csdn.net/xyydyyqf
*/