void CtestDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
_ConnectionPtr m_pConnection;
try
{
m_pConnection.CreateInstance(__uuidof(Connection));
CString conn;
conn.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d://wwwroot//mp3//mp3.mdb");
m_pConnection->Open(_bstr_t(conn),"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
exit(0);
}
_variant_t RecordsAffected;
for( int i=69;i<=4800;i++)
{
MSG msg;
for(int k=0;k<10;k++)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
CString url;
url.Format("http://cn8.cn/musiclist/mmc_%d.htm",i);
CString body = GetPage(url);
if (body.Find("无法找到")>0) continue;
int f1=body.Find("tt90_music_pic");
int f2=body.Find("'",f1);
if (f1<0 || f2 <0) continue;
CString filename=body.Mid(f1+15,f2-f1-15);//图片
filename=code(filename);
saveurl("http://cn8.cn/tt90_music_pic/"+filename,"d://wwwroot//mp3//img//");
f1=body.Find("'eeeeee'>",f2);
f2=body.Find("</td>",f1);
if (f1<0 || f2 <0) continue;
CString zhuanjiming=body.Mid(f1+9,f2-f1-9);//专辑名
zhuanjiming=code(zhuanjiming);
f1=body.Find("special",f2);
f1=body.Find(">",f1);
f2=body.Find("<",f1);
CString geshou = body.Mid(f1+1,f2-f1-1);//歌手名
geshou=code(geshou);
f1=body.Find("'eeeeee'>",f2);
f2=body.Find("</td>",f1);
CString gongsi=body.Mid(f1+9,f2-f1-9);//发行公司
gongsi=code(gongsi);
f1=body.Find("'eeeeee'>",f2);
f2=body.Find("</td>",f1);
CString riqi=body.Mid(f1+9,f2-f1-9);//发行日期
riqi=code(riqi);
f1=body.Find("'eeeeee'>",f2);
f2=body.Find("[",f1);
CString yuyan=body.Mid(f1+9,f2-f1-9);//语言种类
yuyan=code(yuyan);
f1=body.Find("</td></tr><tr><td>",f2);
f2=body.Find("</td></tr><br>",f1);
CString jianjie=body.Mid(f1+18,f2-f1-18);//简介
jianjie=code(jianjie);
f1=body.Find("this.href);'>",f2);
f2=body.Find("</a>",f1);
CString str;
while(f1>0 && f2>0)
{
CString songname = body.Mid(f1+13,f2-f1-13);//歌名
str+=songname+"|";
//int z1=body.Find("[",f2);
//int z2=body.Find("]",z1);
//CString singername=body.Mid(z1+1,z2-z1-1);
//singername.Replace("'","''");
//singername.Replace("/"","/"/"");
//singername.Trim();
body=body.Mid(f2,body.GetLength()-f2);
f1=body.Find("this.href);'>",body.Find("试听"));
f2=body.Find("</a>",f1);
}
str=code(str);
CString sql;
//sql.Format("insert into 摇滚地带 (songname,影视片名) values ('%s','%s')",songname,singername);
sql.Format("insert into 专辑 (专辑名称,演唱歌手,发行公司,发行日期,语言种类,图片,专辑说明,歌曲) values ('%s','%s','%s','%s','%s','%s','%s','%s')",zhuanjiming,geshou,gongsi,riqi,yuyan,filename,jianjie,str);
GetDlgItem(IDC_STATIC)->SetWindowText(sql);
m_pConnection->Execute(_bstr_t(sql), &RecordsAffected, adCmdText);
//MessageBox(sql);
::Sleep(200);
}
m_pConnection=NULL;
MessageBox("完成");
//OnOK();
}
void CtestDlg::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
KillTimer(1);
OnCancel();
}
BOOL CtestDlg::saveurl(CString strFile,CString path)
{
CInternetSession m_cis;
CHttpConnection *m_pHttp;
DWORD dwType;
INTERNET_PORT m_dwPort;
CString m_strServer;
CString m_strIniPath;//INI路径
AfxParseURL(strFile,dwType,m_strServer,strFile,m_dwPort);
m_cis.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,5);
m_pHttp=m_cis.GetHttpConnection(m_strServer,m_dwPort);
CHttpFile *pFile =m_pHttp->OpenRequest(CHttpConnection::HTTP_VERB_GET,
strFile, NULL, 1, NULL, NULL, HSR_DOWNLOAD | INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT);
// pFile->AddRequestHeaders(szHeaders);
try{
pFile->SendRequest();
}
catch(CInternetException* pEx)
{
TCHAR szError[1024];
pEx->GetErrorMessage(szError,1024);
AfxMessageBox(szError);
pFile->Close();
return FALSE;
}
CString str;
if(pFile)
{
pFile->QueryInfo(HTTP_QUERY_STATUS_CODE,str);
if(str=="404")
{
pFile->Close();
return FALSE;
}
pFile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH,str);
DWORD dwLen=atol(str);
int n=strFile.ReverseFind('/');
str=path+strFile.Right(strFile.GetLength()-n-1);
if (str.GetLength()<10)
{
CTime t;
t=CTime::GetCurrentTime();
str=t.Format("%Y%m%d%H%M%S");
time_t s;
srand((unsigned) time(&s));
str.Format("%s%ld",str,rand()%999999);
}
CStdioFile csf;
if(!csf.Open(str,CFile::modeCreate|CFile::modeWrite | CFile::typeBinary | CFile::shareDenyWrite))
{//先为*.upg文件
AfxMessageBox("写文件"+str+"错误!/n文件正在使用中,请先关闭程序!",MB_ICONSTOP);
pFile->Close();
return FALSE;
}
char buf[2048];
DWORD dwRead=0;
while((n=pFile->Read(buf,sizeof(buf)))>0)
{
dwRead+=n;
MSG msg;
for(int i=0;i<10;i++)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
csf.Write(buf,n);
}
pFile->Close();
}
return TRUE;
}
CString CtestDlg::GetPage(CString url)
{
CInternetSession session;
CHttpFile *myHttpFile = NULL;
CString m_SiteName;
m_SiteName.Format("%s",url);
CString m_SiteInfo;
CString myData;
try
{
myHttpFile = (CHttpFile*)session.OpenURL(m_SiteName);
}
catch(CInternetException* m_pException)
{
delete myHttpFile;
m_pException->Delete();
return "";
}
if ( myHttpFile )
{
while( myHttpFile->ReadString( myData ) )
{
m_SiteInfo+=myData;
}
}
return m_SiteInfo;
}
void CtestDlg::getpage(CString url, int page=1)
{
CString body = GetPage(url);
int f1=body.Find("666666/">");
int f2=body.Find("<",f1);
CString Type = body.Mid(f1+8,f2-f1-8);
}
void CtestDlg::down(CString url)
{
CString body = GetPage(url);
int f1=body.Find("<title>");
int f2=body.Find("</title>",f1);
if (f1<0 || f2<0) return;
CString type = body.Mid(f1+7,f2-f1-7);
if (type.GetLength()<1) return;
f1=body.Find("images2",f2);
f1=body.Find("UploadPhotos",f1);
f2=body.Find(".",f1);
CString filename=body.Mid(f1+13,f2-f1-13);
saveurl("http://wallpaper.e-teng.com/UploadPhotos/"+filename+".jpg","g://img//");
return;
}
CString CtestDlg::code(CString str)
{
str.Replace("'","''");
str.Replace("/"","/"/"");
str.Replace(" "," ");
str.Trim();
return str;
}