-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpicdownloader.cpp
More file actions
82 lines (75 loc) · 1.99 KB
/
picdownloader.cpp
File metadata and controls
82 lines (75 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "picdownloader.h"
#include <QString>
picDownloader::picDownloader(QObject *parent) : QObject(parent)
{
d=new downloader();
connect(d,SIGNAL(finished()),this,SLOT(onePicDownloaded()));
connect(d,SIGNAL(downloadError(QString)),this,SLOT(downloadError()));
connect(d,SIGNAL(redirected(QString)),this,SLOT(redirected(QString)));
}
void picDownloader::doJob(QStringList inPicLinkList,QString inReferer)
{
redirectFlag=false;
picFileList.clear();
picLinkList.clear();
num=0;
picLinkList=inPicLinkList;
if(inReferer!="")
d->setReferer(inReferer);
d->setUserAgent(UA);
if(picLinkList.count()==0)
{
emit finished(0,picFileList);
return;
}else
{
QString tmp=picLinkList.at(0);
currentFileName=QString(TMPPICDIR)+QString("/")+QString::number(num)+tmp.split("/").last();
d->init(tmp,currentFileName);
d->doGet();
}
}
//部分图链接有重定向到其他图床的情况
void picDownloader::redirected(QString inRedirectUrl)
{
if(redirectFlag)
{
downloadError();
}
else
{
redirectFlag=true;
d->init(inRedirectUrl,currentFileName);
d->doGet();
}
}
void picDownloader::onePicDownloaded()
{
redirectFlag=false;
num++;
picFileList.append(currentFileName);
picLinkList.removeAt(0);
if(picLinkList.count()>0)
{
QString tmp=picLinkList.at(0);
currentFileName=QString(TMPPICDIR)+QString("/")+QString::number(num)+tmp.split("/").last();
d->init(tmp,currentFileName);
d->doGet();
}
else{
emit finished(num,picFileList);
}
}
void picDownloader::downloadError()
{
picLinkList.removeAt(0);
if(picLinkList.count()>0)
{
QString tmp=picLinkList.at(0);
d->init(tmp,QString(TMPPICDIR)+tmp.split("/").last());
d->doGet();
}
else{
emit finished(num,picFileList);
}
}