git-svn-id: svn://192.168.0.12/source@347 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
@@ -22,7 +22,8 @@ SOURCES += main.cpp \
|
||||
seffectprocess.cpp \
|
||||
snaverblog.cpp \
|
||||
seffectstatistics.cpp \
|
||||
snaverblogprocess.cpp
|
||||
snaverblogprocess.cpp \
|
||||
snaverurlvalidator.cpp
|
||||
|
||||
HEADERS += \
|
||||
swebpage.h \
|
||||
@@ -32,4 +33,5 @@ HEADERS += \
|
||||
seffectprocess.h \
|
||||
seffectstatistics.h \
|
||||
snaverblog.h \
|
||||
snaverblogprocess.h
|
||||
snaverblogprocess.h \
|
||||
snaverurlvalidator.h
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 4.2.0, 2017-04-13T14:15:14. -->
|
||||
<!-- Written by QtCreator 4.2.0, 2017-05-22T18:05:04. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include "seffectprocess.h"
|
||||
#include "snaverblogprocess.h"
|
||||
#include <iostream>
|
||||
#include "sutilfunction.h"
|
||||
#include "snaverurlvalidator.h"
|
||||
|
||||
std::shared_ptr<SEffectProcess>
|
||||
getProcess(const QString& _platform_name, const QString& _platform_form,
|
||||
@@ -28,10 +30,24 @@ int main(int argc, char *argv[])
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::shared_ptr<SEffectProcess> process = getProcess(argv[1], argv[2], argv[3], argv[4], argv[5]);
|
||||
|
||||
process->run(argv[4]);
|
||||
QString platform_name = argv[1];
|
||||
QString platform_form = argv[2];
|
||||
QString event_code = argv[3];
|
||||
QString url = argv[4];
|
||||
QString date = argv[5];
|
||||
if (platform_name.trimmed() == "naver" && platform_form.trimmed() == "blog")
|
||||
{
|
||||
SNaverUrlValidator naverUrlValidator(url);
|
||||
url = naverUrlValidator.makeUrl();
|
||||
if (url == "")
|
||||
{
|
||||
std::cout << "x!@#!@#!@#e010!@#checkUrl";
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<SEffectProcess> process = getProcess(platform_name, platform_form, event_code, url, date);
|
||||
process->run(url);
|
||||
|
||||
return a.exec();
|
||||
}
|
||||
|
||||
@@ -49,12 +49,6 @@ QString getReplyBuzz(const EffectData& _data)
|
||||
QDate firstDate = QDateTime::fromString(_data.body.data[ARTICLE_DATE].trimmed().replace("T", " ").replace(".","-").replace("- "," "), "yyyy-MM-dd hh:mm:ss").date();
|
||||
QDate lastDate = QDate::currentDate();
|
||||
|
||||
|
||||
qDebug() << _data.body.data[ARTICLE_DATE];
|
||||
qDebug() << "firstDate:" << firstDate.toString("yyyy-MM-dd");
|
||||
qDebug() << "lastDate:" << lastDate.toString("yyyy-MM-dd");
|
||||
|
||||
|
||||
for (QDate date = firstDate; date <= lastDate; date = date.addDays(1))
|
||||
{
|
||||
mapDate.insert(date, 0);
|
||||
@@ -83,19 +77,13 @@ QString getReplyBuzz(const EffectData& _data)
|
||||
return result;
|
||||
}
|
||||
|
||||
QString getReplyBuzz(const EffectData& _data, const QString& _startdate)
|
||||
QJsonArray getReplyBuzz(const EffectData& _data, const QString& _startdate)
|
||||
{
|
||||
QMap<QDate, int> mapDate;
|
||||
|
||||
QDate firstDate = QDateTime::fromString(_startdate, "yyyy-MM-dd").date();
|
||||
QDate lastDate = QDate::currentDate();
|
||||
|
||||
|
||||
qDebug() << _data.body.data[ARTICLE_DATE];
|
||||
qDebug() << "firstDate:" << firstDate.toString("yyyy-MM-dd");
|
||||
qDebug() << "lastDate:" << lastDate.toString("yyyy-MM-dd");
|
||||
|
||||
|
||||
for (QDate date = firstDate; date <= lastDate; date = date.addDays(1))
|
||||
{
|
||||
mapDate.insert(date, 0);
|
||||
@@ -110,16 +98,77 @@ QString getReplyBuzz(const EffectData& _data, const QString& _startdate)
|
||||
continue;
|
||||
mapDate[date]++;
|
||||
}
|
||||
QJsonArray jArray;
|
||||
|
||||
QJsonArray jArray;
|
||||
int nAccReplyCount = 0;
|
||||
for (auto iter = mapDate.cbegin(); iter != mapDate.cend(); ++iter)
|
||||
{
|
||||
int nValue = iter.value();
|
||||
nAccReplyCount += nValue;
|
||||
|
||||
QJsonObject jObj;
|
||||
jObj["date"] = iter.key().toString("MM-dd-yyyy");
|
||||
jObj["value"] = iter.value();
|
||||
jObj["date"] = iter.key().toString("yyyyMMdd");
|
||||
jObj["reply_day"] = nValue;
|
||||
jObj["reply_acc"] = nAccReplyCount;
|
||||
jArray.append(jObj);
|
||||
}
|
||||
|
||||
return jArray;
|
||||
}
|
||||
|
||||
QJsonArray getLikeBuzz(const EffectData& _data, const QString& _startdate)
|
||||
{
|
||||
QMap<QString, int> mapDate;
|
||||
|
||||
QDate firstDate = QDateTime::fromString(_startdate, "yyyy-MM-dd").date();
|
||||
QDate lastDate = QDate::currentDate();
|
||||
|
||||
for (QDate date = firstDate; date <= lastDate; date = date.addDays(1))
|
||||
{
|
||||
mapDate.insert(date.toString("yyyyMMdd"), 0);
|
||||
}
|
||||
|
||||
QMapIterator<QString, int> iter(_data.like);
|
||||
while (iter.hasNext())
|
||||
{
|
||||
iter.next();
|
||||
QString date = iter.key();
|
||||
mapDate[date] = iter.value();
|
||||
}
|
||||
|
||||
QJsonArray jArray;
|
||||
int nAccLikeCount = 0;
|
||||
for (auto iter = mapDate.cbegin(); iter != mapDate.cend(); ++iter)
|
||||
{
|
||||
int nValue = iter.value();
|
||||
nAccLikeCount += nValue;
|
||||
|
||||
QJsonObject jObj;
|
||||
jObj["date"] = iter.key();
|
||||
jObj["like_day"] = nValue;
|
||||
jObj["like_acc"] = nAccLikeCount;
|
||||
jArray.append(jObj);
|
||||
}
|
||||
|
||||
return jArray;
|
||||
}
|
||||
|
||||
QString summaryLikeAndReply(QJsonArray _replyBuzz, QJsonArray _likeBuzz)
|
||||
{
|
||||
QJsonArray jArray;
|
||||
for (int i=0; i<_replyBuzz.count(); i++)
|
||||
{
|
||||
QJsonObject jObj;
|
||||
jObj["date"] = _replyBuzz.at(i).toObject()["date"];
|
||||
jObj["reply_day"] = _replyBuzz.at(i).toObject()["reply_day"];
|
||||
jObj["reply_acc"] = _replyBuzz.at(i).toObject()["reply_acc"];
|
||||
jObj["like_day"] = _likeBuzz.at(i).toObject()["like_day"];
|
||||
jObj["like_acc"] = _likeBuzz.at(i).toObject()["like_acc"];
|
||||
jArray.append(jObj);
|
||||
}
|
||||
|
||||
QJsonDocument jDoc(jArray);
|
||||
QString result = jDoc.toJson(QJsonDocument::Compact);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -20,7 +20,11 @@ QString getViewBuzz(const EffectData& _data);
|
||||
|
||||
QString getReplyBuzz(const EffectData& _data);
|
||||
|
||||
QString getReplyBuzz(const EffectData& _data, const QString& _startdate);
|
||||
QJsonArray getReplyBuzz(const EffectData& _data, const QString& _startdate);
|
||||
|
||||
QJsonArray getLikeBuzz(const EffectData& _data, const QString& _startdate);
|
||||
|
||||
QString summaryLikeAndReply(QJsonArray _replyBuzz, QJsonArray _likeBuzz);
|
||||
|
||||
|
||||
#endif // SEFFECTSTATISTICS
|
||||
|
||||
@@ -279,8 +279,38 @@ const QString SNaverBlog::scriptReply =
|
||||
" }"
|
||||
" return result;"
|
||||
"}"
|
||||
"getReply();"
|
||||
;
|
||||
"getReply();";
|
||||
|
||||
const QString SNaverBlog::scriptLike =
|
||||
"function getLike()"
|
||||
"{"
|
||||
" var result = [];"
|
||||
" var datemap = new Map();"
|
||||
" var likeTableBody = document.querySelector('#comment>table>tbody');"
|
||||
" var likeTrs = likeTableBody.querySelectorAll('tr');"
|
||||
" for (var i=0; i<likeTrs.length; i++)"
|
||||
" {"
|
||||
" var span = likeTrs[i].querySelector('th>span');"
|
||||
" var rawdate = span.textContent;"
|
||||
" var date = rawdate.split(' ')[0];"
|
||||
""
|
||||
" if (datemap.get(date) == undefined)"
|
||||
" {"
|
||||
" datemap.set(date, 1);"
|
||||
" }"
|
||||
" else"
|
||||
" {"
|
||||
" datemap.set(date, datemap.get(date)+1);"
|
||||
" }"
|
||||
" }"
|
||||
" datemap.forEach(function (item, key) {"
|
||||
" var datecount = [key, item];"
|
||||
" result.push(datecount);"
|
||||
" });"
|
||||
""
|
||||
" return result;"
|
||||
"}"
|
||||
"getLike();";
|
||||
|
||||
|
||||
QString GetSafeUtf(const QString& _strData)
|
||||
@@ -467,6 +497,12 @@ void SNaverBlog::slotLoadFinished(bool ok)
|
||||
*/
|
||||
break;
|
||||
}
|
||||
case E_CRAWL_MODE::LIKE:
|
||||
{
|
||||
m_pWebPage->runJavaScript(scriptLike, std::bind(&SNaverBlog::cbLike,this, _1));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
//emit signalDataOk(m_efData);
|
||||
}
|
||||
@@ -572,6 +608,24 @@ QString SNaverBlog::makeReplyUrl(const QString& _url)
|
||||
}
|
||||
|
||||
|
||||
QString SNaverBlog::makeLikeUrl(const QString& _url)
|
||||
{
|
||||
QStringList strList = _url.split("/");
|
||||
QString strOut = "";
|
||||
|
||||
if(strList.size() < 4)
|
||||
emit signalError(E_ERROR_CODE::OUT_DATED_CRAWLER, "Check Body and LikeUrl\n");
|
||||
|
||||
//url example : http://blog.naver.com/SympathyHistoryList.nhn?blogId=yewonerang&logNo=220984900374
|
||||
strOut += "http://blog.naver.com/SympathyHistoryList.nhn?blogId=";
|
||||
strOut += strList.at(3);
|
||||
strOut += "&logNo=";
|
||||
strOut += strList.at(4);
|
||||
|
||||
return strOut;
|
||||
}
|
||||
|
||||
|
||||
void SNaverBlog::cbBodyArticleDate(const QVariant& _result)
|
||||
{
|
||||
//qDebug() << "articledate";
|
||||
@@ -743,6 +797,19 @@ void SNaverBlog::goReplyUrl()
|
||||
go(makeReplyUrl(m_strUrl), E_CRAWL_MODE::REPLY);
|
||||
}
|
||||
|
||||
void SNaverBlog::goLikeUrl()
|
||||
{
|
||||
m_bBodyProcessed = true;
|
||||
|
||||
if (!check(m_efData.body))
|
||||
{
|
||||
emit signalError(E_ERROR_CODE::BLOCK_ERROR, "Block or Check naver");
|
||||
return;
|
||||
}
|
||||
|
||||
go(makeLikeUrl(m_strUrl), E_CRAWL_MODE::LIKE);
|
||||
}
|
||||
|
||||
void SNaverBlog::cbReply(const QVariant& _result)
|
||||
{
|
||||
//id, nickname, date, commment, order, strParent;
|
||||
@@ -770,6 +837,24 @@ void SNaverBlog::cbReply(const QVariant& _result)
|
||||
qDebug() << "cbReply";
|
||||
qDebug() << m_efData.reply.size();
|
||||
*/
|
||||
// emit signalDataOk(m_efData);
|
||||
goLikeUrl();
|
||||
}
|
||||
|
||||
void SNaverBlog::cbLike(const QVariant& _result)
|
||||
{
|
||||
if (_result.isValid() && !_result.isNull())
|
||||
{
|
||||
QList<QVariant> results = _result.toList();
|
||||
foreach (auto &result, results)
|
||||
{
|
||||
QStringList slResult = result.toStringList();
|
||||
QString date = ((QString)slResult.at(0)).replace(".", "");
|
||||
|
||||
m_efData.like[date] = ((QString)slResult.at(1)).toInt();
|
||||
}
|
||||
}
|
||||
|
||||
emit signalDataOk(m_efData);
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
enum class E_CRAWL_MODE
|
||||
{
|
||||
BODY = 0,
|
||||
REPLY
|
||||
REPLY,
|
||||
LIKE
|
||||
};
|
||||
|
||||
static const QString scriptArticleDate;
|
||||
@@ -42,11 +43,13 @@ public:
|
||||
|
||||
private:
|
||||
QString makeReplyUrl(const QString& _url);
|
||||
QString makeLikeUrl(const QString& _url);
|
||||
QString changeUrl(const QString& _url);
|
||||
void initConnect();
|
||||
bool check(const DataForm& _data);
|
||||
bool check(const QVector<DataForm>& _data);
|
||||
void goReplyUrl();
|
||||
void goLikeUrl();
|
||||
|
||||
/*
|
||||
DataForm getBody();
|
||||
@@ -73,6 +76,8 @@ private:
|
||||
void cbBodyArticleOrder(const QVariant& result);
|
||||
void cbBodyReplyUrl(const QVariant& _result);
|
||||
void cbBodyLikeCount(const QVariant& _result);
|
||||
void cbReply(const QVariant& _result);
|
||||
void cbLike(const QVariant& _result);
|
||||
bool doneBodyCrawler(E_FUNC _func_type);
|
||||
|
||||
|
||||
@@ -83,11 +88,10 @@ private:
|
||||
static const QString scriptLikeCount;
|
||||
static const QString scriptArticleNickname;
|
||||
static const QString scriptArticleOrder;
|
||||
bool m_abOk[E_FUNC_MAX];
|
||||
|
||||
void cbReply(const QVariant& _result);
|
||||
static const QString scriptReply;
|
||||
static const QString scriptLike;
|
||||
|
||||
bool m_abOk[E_FUNC_MAX];
|
||||
|
||||
private:
|
||||
std::shared_ptr<SWebPage> m_pWebPage;
|
||||
|
||||
@@ -15,8 +15,9 @@ State_s1_effect SNaverBlogProcess::processData(const EffectData& _data)
|
||||
|
||||
result.event_num = eventCode();
|
||||
result.likecount = getlikeCount(_data);
|
||||
//result.replybuzz = getReplyBuzz(_data);
|
||||
result.replybuzz = getReplyBuzz(_data, m_pParam[E_PARAM_START_DATE]);
|
||||
result.likebuzz = getLikeBuzz(_data, m_pParam[E_PARAM_START_DATE]);
|
||||
result.totalbuzz = summaryLikeAndReply(result.replybuzz, result.likebuzz);
|
||||
result.viewcount = getViewCount(_data);
|
||||
result.interactioncount = getInteractionCount(_data);
|
||||
result.replycount = getReplyCount(_data);
|
||||
|
||||
128
EffectProcess/snaverurlvalidator.cpp
Normal file
128
EffectProcess/snaverurlvalidator.cpp
Normal file
@@ -0,0 +1,128 @@
|
||||
#include "snaverurlvalidator.h"
|
||||
#include <QStringList>
|
||||
#include <QDebug>
|
||||
|
||||
const QString SNaverUrlValidator::m_strSubDomain = "www";
|
||||
const QString SNaverUrlValidator::m_strProtocol = "http";
|
||||
const QString SNaverUrlValidator::m_strBaseHost = "blog.naver.com";
|
||||
const QString SNaverUrlValidator::m_strSecondaryHost = "blog.me";
|
||||
|
||||
SNaverUrlValidator::SNaverUrlValidator(QString url) : m_isBaseHost(false), m_isSecondaryHost(false)
|
||||
{
|
||||
m_strUrl = url.trimmed();
|
||||
}
|
||||
|
||||
QString SNaverUrlValidator::makeUrl()
|
||||
{
|
||||
if (!validateUrl())
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
QString strUrl = m_strProtocol + "://" + m_strBaseHost + "/" + m_strUserId + "/" + m_strArticleNum;
|
||||
return strUrl;
|
||||
}
|
||||
|
||||
bool SNaverUrlValidator::validateUrl()
|
||||
{
|
||||
int nStartIndex = getHostStartPosition();
|
||||
if (nStartIndex < 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
nStartIndex = checkHost(nStartIndex);
|
||||
if (nStartIndex < 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (checkPath(nStartIndex) < 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int SNaverUrlValidator::getHostStartPosition()
|
||||
{
|
||||
int nHostStartPosition = m_strUrl.indexOf(':');
|
||||
if (nHostStartPosition == -1)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (m_strUrl.at(nHostStartPosition+1) != '/' || m_strUrl.at(nHostStartPosition+2) != '/')
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return nHostStartPosition + 3;
|
||||
}
|
||||
|
||||
int SNaverUrlValidator::checkHost(int _nHostStartPosition)
|
||||
{
|
||||
int nHostEndPosition = m_strUrl.indexOf('/', _nHostStartPosition) - 1;
|
||||
if (nHostEndPosition < 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
m_isBaseHost = m_strUrl.contains(m_strBaseHost);
|
||||
m_isSecondaryHost = m_strUrl.contains(m_strSecondaryHost);
|
||||
if ((m_isBaseHost == false) && (m_isSecondaryHost == false))
|
||||
{
|
||||
return -2;
|
||||
}
|
||||
|
||||
if (m_isSecondaryHost)
|
||||
{
|
||||
int nHostLength = nHostEndPosition - _nHostStartPosition + 1;
|
||||
QString strHost = m_strUrl.mid(_nHostStartPosition, nHostLength);
|
||||
QStringList listHostSplit = strHost.split('.');
|
||||
for (int i=0; i<listHostSplit.count(); i++)
|
||||
{
|
||||
QString strHostSplit = listHostSplit.at(i);
|
||||
|
||||
if (listHostSplit.at(i) == m_strSubDomain)
|
||||
continue;
|
||||
|
||||
m_strUserId = strHostSplit;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return nHostEndPosition + 2;
|
||||
}
|
||||
|
||||
int SNaverUrlValidator::checkPath(int _nHostStartPosition)
|
||||
{
|
||||
int nUrlLength = m_strUrl.length();
|
||||
int nPathLength = nUrlLength - _nHostStartPosition + 1;
|
||||
QString strPath = m_strUrl.mid(_nHostStartPosition, nPathLength);
|
||||
QStringList pathList = strPath.split('/');
|
||||
|
||||
if (m_isBaseHost)
|
||||
{
|
||||
if (pathList.size() < 2)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
m_strUserId = pathList[0];
|
||||
m_strArticleNum = pathList[1];
|
||||
}
|
||||
|
||||
if (m_isSecondaryHost)
|
||||
{
|
||||
if (pathList.size() < 1)
|
||||
{
|
||||
return -2;
|
||||
}
|
||||
|
||||
m_strArticleNum = pathList[0];
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
33
EffectProcess/snaverurlvalidator.h
Normal file
33
EffectProcess/snaverurlvalidator.h
Normal file
@@ -0,0 +1,33 @@
|
||||
#ifndef SNAVERURLVALIDATOR_H
|
||||
#define SNAVERURLVALIDATOR_H
|
||||
|
||||
#include <QString>
|
||||
|
||||
class SNaverUrlValidator
|
||||
{
|
||||
private:
|
||||
static const QString m_strSubDomain;
|
||||
static const QString m_strProtocol;
|
||||
static const QString m_strBaseHost;
|
||||
static const QString m_strSecondaryHost;
|
||||
|
||||
QString m_strUserId;
|
||||
QString m_strArticleNum;
|
||||
|
||||
QString m_strUrl;
|
||||
|
||||
bool m_isBaseHost;
|
||||
bool m_isSecondaryHost;
|
||||
|
||||
private:
|
||||
bool validateUrl();
|
||||
int getHostStartPosition();
|
||||
int checkHost(int _nHostStartPosition);
|
||||
int checkPath(int _nHostStartPosition);
|
||||
public:
|
||||
SNaverUrlValidator(QString url);
|
||||
QString makeUrl();
|
||||
};
|
||||
|
||||
|
||||
#endif // SNAVERURLVALIDATOR_H
|
||||
@@ -95,7 +95,8 @@ bool SResultSender::send(const State_s1_effect& _result)
|
||||
QSqlQuery query(db);
|
||||
query.prepare(strQuery);
|
||||
query.bindValue(":event_num", _result.event_num);
|
||||
query.bindValue(":replybuzz", _result.replybuzz);
|
||||
// query.bindValue(":replybuzz", _result.replybuzz);
|
||||
query.bindValue(":replybuzz", _result.totalbuzz);
|
||||
query.bindValue(":replycount", _result.replycount);
|
||||
query.bindValue(":likecount", _result.likecount);
|
||||
query.bindValue(":interactioncount", _result.interactioncount);
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <QDate>
|
||||
#include <QString>
|
||||
#include <memory>
|
||||
#include <QJsonArray>
|
||||
|
||||
class STableWidgetItem : public QTableWidgetItem
|
||||
{
|
||||
@@ -195,13 +196,16 @@ struct EffectData
|
||||
{
|
||||
DataForm body;
|
||||
QVector<DataForm> reply;
|
||||
QMap<QString, int> like;
|
||||
};
|
||||
|
||||
struct State_s1_effect
|
||||
{
|
||||
int event_num;
|
||||
QString view_buzz;
|
||||
QString replybuzz;
|
||||
QJsonArray replybuzz;
|
||||
QJsonArray likebuzz;
|
||||
QString totalbuzz;
|
||||
int replycount;
|
||||
int likecount;
|
||||
int viewcount;
|
||||
|
||||
@@ -67,5 +67,22 @@ QString EnumErrorCodetostrErrorCode(E_ERROR_CODE _code)
|
||||
static_cast<int>(_code) < static_cast<int>(E_ERROR_CODE::MAX))
|
||||
return ERROR_MESSAGE_CODE[static_cast<int>(_code)];
|
||||
else
|
||||
return ERROR_MESSAGE_CODE[static_cast<int>(E_ERROR_CODE::UNKNOWN_ERROR)];
|
||||
return ERROR_MESSAGE_CODE[static_cast<int>(E_ERROR_CODE::UNKNOWN_ERROR)];
|
||||
}
|
||||
|
||||
QString convertNaverBlogMeUrl(const QString& _str)
|
||||
{
|
||||
QStringList listSplitUrl = _str.split("/");
|
||||
if (listSplitUrl.count() != 4)
|
||||
return _str;
|
||||
|
||||
QString strPostNumber = listSplitUrl[3];
|
||||
QStringList listSplitHostUrl = listSplitUrl[2].split(".");
|
||||
if (listSplitHostUrl.count() != 3)
|
||||
return _str;
|
||||
|
||||
QString strUserId = listSplitHostUrl[0];
|
||||
QString strConvertedUrl = "http://blog.naver.com/" + strUserId + "/" + strPostNumber;
|
||||
|
||||
return strConvertedUrl;
|
||||
}
|
||||
|
||||
@@ -8,5 +8,6 @@ void messageBoxError(const QString& title, const QString &body);
|
||||
QString errorCodeToString(E_ERROR_CODE _error_code);
|
||||
E_ERROR_CODE strErrorCodeToEnumErrorCode(const QString& _str);
|
||||
QString EnumErrorCodetostrErrorCode(E_ERROR_CODE _code);
|
||||
QString convertNaverBlogMeUrl(const QString& _str);
|
||||
#endif // SUTILFUNCTION
|
||||
|
||||
|
||||
Reference in New Issue
Block a user