SkyDriver是微软推出的网盘,免费容量最高25G,这个大小在国内并不算大。但是只需一点特殊就能让人对它欲罢不能:SkyDriver网盘支持图片和音乐的直接外链。把SkyDriver作为图床:把图片上传到SkyDriver,然后把链接贴到网站、博客、QQ空间、论坛等地方。音乐也是一样的。SkyDriver永远不会改变图片链接,流量也是几乎无限的。我要的就是这个功能,其他什么网盘的云同步功能,都是渣渣。
唯一的缺点是获取链接地址比较麻烦,一个一个点击,获取原始地址。现在我做了一款自动解析所有图片地址的工具。且支持递归查询子目录。
1.程序界面
2.使用方法
->直接拷贝网址输入到软件的“SkyDriver资源页面URL”栏
->点击确定
程序会自动递归查询所有图片
(如果图片较多,建议先在SkyDriver中分出子目录,然后获取子目录的所有图片,不然时间会很长)
获取到目录后拷贝出图片的链接。插入到博客,QQ空间,论坛等地方。
也能很好的支持Windows Live Write:
3.核心源代码
MFC程序散乱,只贴出核心部分。
代码片段
void CgetskydriverlinksDlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
// OnOK();
UpdateData(TRUE);
#define MAX_LEN 1024*20
CString itemlink = "http://storage.live.com/items/";
char *ch;
CString temp;
CString dat;
CString enter = "\r\n";
Cfolderlinks *pHead = NULL;
// 校?验?URL
int n = m_URL.Find("&id=");
if ( n>0 )
{
for(int m = n ; m>0 ; ) //单?独?获?取?子?目?录?
{
n = m; //保?存?靠?后?的?值?
m = m_URL.Find("&id=",m+4);
}
m_Links.Format("URL正?确?...\n正?在?下?载?...\n");
}
else
{
m_Links.Format("URL错?误?!?!?!?");
goto over;
}
pHead = new Cfolderlinks;
pHead->ID = m_URL.Mid(n+4);
m_Links.Empty();
do
{
temp = itemlink + pHead->ID ;
// 下?载?错?误?自?动?忽?略?
download ( (LPSTR)(LPCTSTR)( temp ) , "data.xml" );
// 从?待?下?链?表?中?删?除?
Cfolderlinks *p = pHead->pNext;
free(pHead);
pHead = p;
// 文?本?格?式?读?取?数?据?
FILE * pf = fopen("data.xml","r");
if( pf != NULL )
ch = (char *)malloc(MAX_LEN);
memset(ch,0,MAX_LEN);
int nLen = fread(ch,1,MAX_LEN,pf);
if( nLen > 0 )
dat = ch;
free(ch);
fclose(pf);
// 查?找?当?前?目?录?下?有?无?子?目?录?
int n = 0;
Folderloop:
n = dat.Find("<ItemType>Folder</ItemType>",n+100);
if (n>0)
{
// 如?果?有?子?目?录?
Cfolderlinks *ptemp = new Cfolderlinks;
ptemp->ID = dat.Mid(n+46,21); //获?取?目?录?ID
//添?加?到?链?表?末?尾?
Cfolderlinks **p = &pHead;
for ( ; NULL != *p ; p= &((*p)->pNext) );
*p = ptemp;
goto Folderloop;
}
// 查?找?所?有?图?片?
n = 0;
//(*pLinks).Empty();
Photoloop:
n = dat.Find("<ItemType>Photo</ItemType>",n+100);
if (n>0)
{
m_Links += itemlink;
m_Links += dat.Mid(n+45,21);
m_Links += "?";
int m = dat.Find("</RelationshipName>",n);
m_Links += dat.Mid(n+104,m-(n+104)); //文?件?名?
m_Links += enter;
goto Photoloop;
}
} while (pHead != NULL);
m_URL.Empty();
//<ItemType>Photo</ItemType>
//<ItemType>Folder</ItemType>
over: UpdateData(FALSE);
}
0 评论:
发表评论