c写的获取音乐url
来源:互联网 发布:spss数据分析教程ppt 编辑:程序博客网 时间:2024/06/05 21:12
今天有时间来完善一下!
#include<stdio.h>
#include<windows.h>
#include<malloc.h>
#include<string.h>
#include <wininet.h>
#define MAXBLOCKSIZE 1024
#pragma comment(lib, "wininet.lib")
__inline void Utf8ToGb2312(const char *pcUtf8, char *strGB2312)//主要是因为大部分的网页都是uf-8编码,我们处理的是gb2312,所以要做一下转码
{
int nUnicodeLen = MultiByteToWideChar(CP_UTF8, 0, pcUtf8, -1, NULL, 0);//这是一个api函数,又来处理编码转换的,wingdowns程序设计里面有详细讲解
wchar_t * pcUnicode = new wchar_t[nUnicodeLen+1];
memset(pcUnicode, 0, nUnicodeLen * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, pcUtf8, -1, pcUnicode, nUnicodeLen);//中间做一个转换,把uf-8转换成宽字符,再转换成gb2312
int nGb2312Len = WideCharToMultiByte(CP_ACP, 0, pcUnicode, -1, NULL, 0, NULL, NULL);
char *pcGb2312=new char[nGb2312Len + 1];
memset(pcGb2312, 0, nGb2312Len + 1);
WideCharToMultiByte(CP_ACP, 0, pcUnicode, -1, pcGb2312, nGb2312Len, NULL, NULL);
strcpy(strGB2312,pcGb2312);
delete[] pcGb2312;
delete[] pcUnicode;
}
void GetWebSrcCode(const char *Url)//发送请求,下载自己需要的页面
{
HINTERNET hSession = InternetOpen("down", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (hSession != NULL)
{
HINTERNET hURL = InternetOpenUrl(hSession, Url, NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
if (hURL != NULL)
{
char Temp[MAXBLOCKSIZE] = {0};
ULONG Number = 1;
FILE *stream;
if( (stream = fopen( "E:\\test.html", "w" )) != NULL )
{
while (Number > 0)
{
InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number);
fwrite(Temp, sizeof (char), Number , stream);
}
fclose( stream );
}
InternetCloseHandle(hURL);
hURL = NULL;
}
else
printf("网络连接错误!请查看网络是否连接!");
InternetCloseHandle(hSession);
hSession = NULL;
}
}
int geturl()//还是搜索,比较烦人,现在网站都是多级掩饰,只有接着搜索啊!百度音乐会更烦人!
{
FILE *fp;
char *src;
char *src2;
char m[]={"歌曲出处"};
int i=0,j=0,k=0;
fp=fopen("E:\\test.html","r");
if(NULL!=fp)
{
fseek(fp,0,SEEK_END);
long L=ftell(fp);
src=(char *)malloc(L/2);
src2=(char *)malloc(L/2);
memset(src,0,L/2);
memset(src2,0,L/2);
fseek(fp,L/2,SEEK_SET);
fread(src,L/2,1,fp);
Utf8ToGb2312(src,src2);
// printf("%s",src2);
//printf("\n\n\n\n");
while(i<strlen(src2))
{
if(src2[i]==m[j])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
if(j>=strlen(m))
{
k=i;
j=0;
int fl=0;
int fm=0,fa=0;
int num=0;
char geturl[100];
FILE *wr;
wr=fopen("E:\\test.txt","a");
memset(geturl,0,100);
while(1)
{
num++;
if(src2[k]=='h' && src2[k+1]=='t' && src2[k+2]=='t' && src2[k+3]=='p')
{
fl++;
}
if(src2[k]=='m' && src2[k+1]=='p' && src2[k+2]=='3')
{
fl++;
}
if(fl)
{
if(fl==1)
{
geturl[fa++]=src2[k];
}
if(fl==2)
{
geturl[fa++]='m';
geturl[fa++]='p';
geturl[fa++]='3';
geturl[fa++]='\n';
printf("%s",geturl);
fwrite(geturl,strlen(geturl),1,wr);
fm=1;
break;
}
if(num>200)
break;
}
k++;
}
fclose(wr);
if(fm)
break;
}
}
}
return 0;
}
int findstr(char *res,char *mode)//这里就不不罗嗦啦,就是一个简单的搜索算法,你用strstr()会更加简洁
{
//printf("%s",res);
int i=0,j=0,k=0,m=0;
int flag=0;
char p[200];
char buff[200];
memset(p,0,200);
memset(buff,0,200);
while(i<strlen(res))
{
if(res[i]==mode[j])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
if(j>=strlen(mode))
{
j=0;
flag=0;
k=0;
for(m=i-180;m<i;m++)
{
if(res[m]=='\'')
{
flag++;
}
if(flag==1&&res[m]!='\'')
{
p[k++]=res[m];
}
if(flag!=0&&flag!=1)
{
sprintf(buff,"http://music.yahoo.cn/%s",p);
GetWebSrcCode(buff);
geturl();
//printf("%s",p);
//printf("\n\n\n");
break;
}
}
}
}
return 0;
}
int main()
{
char *text;
char *t;
FILE *fp;
int l;
char f[]="爱情";
GetWebSrcCode("http://music.yahoo.cn/s?from=suggest&q=爱情");//大家可以根据自己的分析网页,这个事我分析雅虎搜索的
fp=fopen("E:\\test.html","r");
if(fp!=NULL)
{
fseek(fp,0,SEEK_END);
long len=ftell(fp);
text=(char *)malloc(len+1);
t=(char *)malloc(len+1);
memset(text,0,len+1);
fseek(fp,len*1/3,SEEK_SET);//这里是一次性程序,我就全部写入内存
fread(text,len,1,fp);
Utf8ToGb2312(text,t);
//其实这里不必这么写,就是把自己搜索的词组转换成uf-8,再到网页上搜索,这样会很快!这里主要是我要使用网页里面的数据
//用这则表达式匹配会简单一些,当然不想用,你嵌入lua脚本搜索也是很好的。我个人比较喜欢lua,因为小,而且效率很不错!
//printf("%s",t);
}
l=findstr(t,f);
return 0;
}
写的比较粗糙,,有事要做!
下下来记着,有时间了来整理!
- c写的获取音乐url
- c语言 写的播放音乐
- 在c语言写的cgi程序中如何获取URL传递的参数
- ruby写的音乐
- 获取qq音乐歌手的收听量(c#)
- php ajax获取路径的url怎么写
- 获取服务器的Url
- JSP的URL获取
- 获取iframe的url
- javascript写的关于静态页面获取URL传递参数的函数[原创]
- javascript写的关于静态页面获取URL传递参数的函数
- Request获取url信息的各种方法比较 ,写的很好
- WPF写的音乐播放器
- 一个VC写的音乐播放器
- 汇编写的音乐播放器
- [PyQt] PyQt4写的音乐播放器
- 用nim写的音乐播放程序
- 写的一个音乐播放器界面
- C#获取某一文件夹下所有文件
- 优秀APP挖掘
- 可恶的I/O-Bound工作
- 如何写Makefile文件
- Service实例应用之电话录音
- c写的获取音乐url
- android 制作9.png图片
- Joda-Time简介与简单使用例子
- Android启动过程之学习资料
- Glusterfs之小文件优化
- 《C++应用程序性能优化::第四章操作系统的内存管理》学习和理解
- CDN(内容分发网络)技术原理
- gwt download file
- zencart包包模板