From 2973faaf390189209ce9ff5e9f4f1abf69733dff Mon Sep 17 00:00:00 2001 From: mjjo Date: Thu, 27 Jul 2017 17:34:50 +0900 Subject: [PATCH] =?UTF-8?q?-=20compile=20=ED=99=98=EA=B2=BD=20=EA=B5=AC?= =?UTF-8?q?=EC=B6=95=20-=20=EB=A6=AC=EB=88=85=EC=8A=A4=EC=97=90=EC=84=9C?= =?UTF-8?q?=20=EC=BB=B4=ED=8C=8C=EC=9D=BC=20=EC=95=88=EB=90=98=EB=8A=94=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95=20-=20binary=20packagin?= =?UTF-8?q?g=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + Filter/widget.cpp | 5 +- Filter/widget.cpp.bak | 812 +++++++++++++++++++++++++++++++ FilterProcess/sdatagroup.cpp | 2 +- FilterProcess/sinfluencer.cpp | 68 +-- FilterProcess/sinfluencer.h | 20 +- FilterProcess/sinitializer.cpp | 2 +- WebBasedCrawler/requirements.txt | 4 + compile.sh | 4 +- package-clients.bat | 41 ++ package-clients.sh | 38 ++ 11 files changed, 949 insertions(+), 49 deletions(-) create mode 100644 Filter/widget.cpp.bak create mode 100644 package-clients.bat create mode 100644 package-clients.sh diff --git a/.gitignore b/.gitignore index 4401fea..1a8398e 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ *.user **/build-*/ WebBasedCrawler/proxy.txt +clients-win/ +clients-linux/ diff --git a/Filter/widget.cpp b/Filter/widget.cpp index a5e1076..705c9e4 100644 --- a/Filter/widget.cpp +++ b/Filter/widget.cpp @@ -338,7 +338,7 @@ void Widget::CompanyItemChanged(QListWidgetItem* _current,QListWidgetItem*) } m_plw[E_LIST_CATALOG].clear(); - int nServiceCnt[E_SERVICE_MAX] = {0}; + //int nServiceCnt[E_SERVICE_MAX] = {0}; QSqlQuery query("select num,name,servicenum FROM category where company_num = '" +_current->data(Qt::UserRole).toString()+ "' order by servicenum asc, num asc"); while(query.next()) @@ -788,6 +788,9 @@ void Widget::time_execute() { case QProcess::NotRunning: m_aProcess[i].start(); break; + + default: + break; } } diff --git a/Filter/widget.cpp.bak b/Filter/widget.cpp.bak new file mode 100644 index 0000000..9936960 --- /dev/null +++ b/Filter/widget.cpp.bak @@ -0,0 +1,812 @@ +#include "widget.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../Json/sjson.h" +#include "../common.h" +#define MINUTE 60000 +Widget::Widget(QWidget *parent) : + QWidget(parent) +{ + QVBoxLayout *vMainLayout = new QVBoxLayout; + { + { + QHBoxLayout *hLayout = new QHBoxLayout; + QStringList strList; + strList << "Data" << "Filter Group" << "Company" << "Category"; + m_plw = new QListWidget[E_LIST_MAX]; + int i = 0; + foreach(QString str , strList) + { + QVBoxLayout *vLayout = new QVBoxLayout; + vLayout->addWidget(new QLabel(str)); + vLayout->addWidget(&m_plw[i++]); + hLayout->addLayout(vLayout); + } + connect(&m_plw[E_LIST_COMPANY],SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this,SLOT(CompanyItemChanged(QListWidgetItem*,QListWidgetItem*))); + vMainLayout->addLayout(hLayout); + } + { + QHBoxLayout *hLayout = new QHBoxLayout; + { + QVBoxLayout *vLayout = new QVBoxLayout; + { + QHBoxLayout *h_0_Layout = new QHBoxLayout; + { + QVBoxLayout *v_0_Layout = new QVBoxLayout; + v_0_Layout->addWidget(new QLabel("Filter Process Group")); + m_plwFilterProcessGroup = new QListWidget; + connect(m_plwFilterProcessGroup,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(FilterProcessGroupClicked(QListWidgetItem*))); + v_0_Layout->addWidget(m_plwFilterProcessGroup); + m_pleFilterProcessGroup = new QLineEdit; + v_0_Layout->addWidget(m_pleFilterProcessGroup); + { + QHBoxLayout *hSubLayout = new QHBoxLayout; + QPushButton *ppbInsert = new QPushButton("Insert"); + connect(ppbInsert, SIGNAL(released()),this, SLOT(on_filter_process_group_insert())); + hSubLayout->addWidget(ppbInsert); + QPushButton *ppbDelete = new QPushButton("Delete"); + connect(ppbDelete, SIGNAL(released()),this, SLOT(on_filter_process_group_delete())); + hSubLayout->addWidget(ppbDelete); + QPushButton *ppbModify = new QPushButton("Modify"); + connect(ppbModify, SIGNAL(released()),this, SLOT(on_filter_process_group_modify())); + hSubLayout->addWidget(ppbModify); + v_0_Layout->addLayout(hSubLayout); + } + h_0_Layout->addLayout(v_0_Layout); + } + + { + QVBoxLayout *v_0_Layout = new QVBoxLayout; + v_0_Layout->addWidget(new QLabel("Process List")); + m_plwProcess = new QListWidget; + v_0_Layout->addWidget(m_plwProcess); + { + QHBoxLayout *hSubLayout = new QHBoxLayout; + hSubLayout->addWidget(new QLabel("Timer(Minute): ")); + m_pleExcutionTime = new QLineEdit; + m_pleExcutionTime->setValidator( new QIntValidator(1, 100000, this)); + m_pleExcutionTime->setText("60"); + m_pleExcutionTime->setFixedWidth(50); + hSubLayout->addWidget(m_pleExcutionTime); + + hSubLayout->addWidget(new QLabel("Influencer Limit: ")); + m_pleInfluencerLimitFrom = new QLineEdit; + m_pleInfluencerLimitFrom->setValidator( new QIntValidator(1, 100000, this)); + m_pleInfluencerLimitFrom->setText("1"); + m_pleInfluencerLimitFrom->setFixedWidth(40); + m_pleInfluencerLimitTo = new QLineEdit; + m_pleInfluencerLimitTo->setValidator( new QIntValidator(1, 100000, this)); + m_pleInfluencerLimitTo->setText("500"); + m_pleInfluencerLimitTo->setFixedWidth(40); + + hSubLayout->addWidget(m_pleInfluencerLimitFrom); + hSubLayout->addWidget(m_pleInfluencerLimitTo); + + v_0_Layout->addLayout(hSubLayout); + } + + { + QHBoxLayout *hSubLayout = new QHBoxLayout; + QPushButton *ppbInsert = new QPushButton("Insert"); + connect(ppbInsert, SIGNAL(released()),this, SLOT(on_process_insert())); + hSubLayout->addWidget(ppbInsert); + QPushButton *ppbDelete = new QPushButton("Delete"); + connect(ppbDelete, SIGNAL(released()),this, SLOT(on_process_delete())); + hSubLayout->addWidget(ppbDelete); + QPushButton *ppbStart = new QPushButton("Start"); + connect(ppbStart, SIGNAL(released()),this, SLOT(on_process_start())); + hSubLayout->addWidget(ppbStart); + QPushButton *ppbStop = new QPushButton("Stop"); + connect(ppbStop, SIGNAL(released()),this, SLOT(on_process_stop())); + hSubLayout->addWidget(ppbStop); + + v_0_Layout->addLayout(hSubLayout); + } + h_0_Layout->addLayout(v_0_Layout); + } + vLayout->addLayout(h_0_Layout); + + { + vLayout->addWidget(new QLabel("Filter Process")); + m_plwFilterProcess = new QListWidget; + vLayout->addWidget(m_plwFilterProcess); + } + } + { + QHBoxLayout *hLayoutEdit = new QHBoxLayout; + { + QPushButton *ppbLoad = new QPushButton("Load"); + connect(ppbLoad, SIGNAL(released()),this, SLOT(on_load())); + hLayoutEdit->addWidget(ppbLoad); + } + { + QPushButton *ppbCategory = new QPushButton("Category Make"); + connect(ppbCategory, SIGNAL(released()),this, SLOT(on_category())); + hLayoutEdit->addWidget(ppbCategory); + } + { + QPushButton *ppbSend = new QPushButton("Send"); + connect(ppbSend, SIGNAL(released()),this, SLOT(on_send())); + hLayoutEdit->addWidget(ppbSend); + } + /* + { + QPushButton *ppbCount = new QPushButton("Influence Count"); + connect(ppbCount, SIGNAL(released()),this, SLOT(on_influence_count())); + hLayoutEdit->addWidget(ppbCount); + } + { + QPushButton *ppbCount = new QPushButton("Spammers Count"); + connect(ppbCount, SIGNAL(released()),this, SLOT(on_spammers_count())); + hLayoutEdit->addWidget(ppbCount); + } + { + QPushButton *ppbCount = new QPushButton("Power Cafe Count"); + connect(ppbCount, SIGNAL(released()),this, SLOT(on_power_cafe_count())); + hLayoutEdit->addWidget(ppbCount); + } + { + //QPushButton *ppbCount = new QPushButton("Consumer Supervison Count"); + //connect(ppbCount, SIGNAL(released()),this, SLOT(on_consumer_supervison_count())); + //hLayoutEdit->addWidget(ppbCount); + } + */ + { + QPushButton *ppbDelete = new QPushButton("Delete"); + connect(ppbDelete, SIGNAL(released()),this, SLOT(on_delete())); + hLayoutEdit->addWidget(ppbDelete); + } + vLayout->addLayout(hLayoutEdit); + } + hLayout->addLayout(vLayout); + } + + { + QVBoxLayout *vLayout = new QVBoxLayout; + vLayout->addWidget(new QLabel("Log")); + m_plwLog = new QListWidget; + vLayout->addWidget(m_plwLog); + hLayout->addLayout(vLayout); + } + vMainLayout->addLayout(hLayout); + } + QPushButton *ppbRefresh = new QPushButton("Refresh"); + connect(ppbRefresh, SIGNAL(released()),this, SLOT(on_refresh())); + vMainLayout->addWidget(ppbRefresh); + } + /* + QPushButton *ppbSend = new QPushButton("Send"); + vMainLayout->addWidget(ppbSend); + connect(ppbSend, SIGNAL(released()),this, SLOT(on_send())); + */ + connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(time_update())); + connect(&m_executionTimer, SIGNAL(timeout()), this, SLOT(time_execute())); + //m_pThread = new SGetThread; + setLayout(vMainLayout); + //m_pPutThread = new SPutThread[QThread::idealThreadCount()]; + if (ReloadSetup() == false) + { + InsertLog("setup.ini don't find"); + } + m_db = QSqlDatabase::addDatabase("QMYSQL"); + //m_statusTimer.start(5000); + Refresh(); + for(int i = 0; i < D_PROCESS_MAX ;i++) + { + connect(&m_aProcess[i],SIGNAL(readyReadStandardOutput()),SLOT(process_output())); + } +} + +Widget::~Widget() +{ + for (int i = 0; i < D_PROCESS_MAX;i++) + Kill(i); + exit(0); +} + +void Widget::InsertLog(QString str) +{ + if(str[str.length()-1] == QChar('\n')) + str = str.mid(0, str.length()-1); + + QTime time = QTime::currentTime(); + QString strOut = time.toString("[hh:mm:ss] ") + str; + m_plwLog->addItem(strOut); + + if (m_plwLog->count() > 1024) + { + m_plwLog->removeItemWidget(m_plwLog->item(0)); + QListWidgetItem* item = m_plwLog->takeItem(0); + delete item; + } + m_plwLog->setCurrentRow( m_plwLog->count() - 1 ); + m_plwLog->repaint(); +} + +bool Widget::ReloadSetup() +{ + QSettings settings(QString("setup.ini"), QSettings::IniFormat); + settings.setIniCodec("UTF-8"); + settings.beginGroup(QString("database")); + if (settings.childKeys().size() == 0) return false; + m_strWebDataBaseHost = settings.value("host").toString(); + m_strWebDataBaseUser = settings.value("user").toString(); + m_strWebDataBasePass = settings.value("pass").toString(); + m_strWebDataBaseName = settings.value("name").toString(); + settings.endGroup(); + return true; +} + + +void Widget::Refresh() +{ + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) + { + InsertLog(m_db.lastError().text()); + return; + } + + for (int i = 0; i < E_LIST_MAX ; i++) + m_plw[i].clear(); + + { + QSqlQuery query("select id,name,locked from filtergroup"); + while (query.next()) + { + QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString() + + ((query.value(2).toInt() == 0)? "" : " (Locked)") + ,&m_plw[E_LIST_FILTER]); + pItem->setData(Qt::UserRole, QVariant(query.value(0))); + } + } + + { + QSqlQuery query("select id,name FROM datagroup"); + while(query.next()) + { + QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString() + QString("(") + query.value(0).toString() + QString(")") ,&m_plw[E_LIST_DATA]); + pItem->setData(Qt::UserRole, QVariant(query.value(0))); + } + } + { + m_plwFilterProcessGroup->clear(); + QSqlQuery query("select id,name,state from filterprocessgroup"); + while (query.next()) + { + QString str; + str = query.value(1).toString(); + /*switch(query.value(2).toInt()) + { + case 0:str += " (idle)";break; + case 1:str += " (warking)";break; + } + */ + QListWidgetItem *pItem = new QListWidgetItem(str,m_plwFilterProcessGroup); + pItem->setData(Qt::UserRole, QVariant(query.value(0))); + } + } + m_db.close(); + FilterProcssRefresh("-1"); + + m_db.setHostName(m_strWebDataBaseHost); + m_db.setUserName(m_strWebDataBaseUser); + m_db.setPassword(m_strWebDataBasePass); + m_db.setDatabaseName(m_strWebDataBaseName); + + if (m_db.open() == false) + { + InsertLog(m_db.lastError().text()); + return; + } + + { + QSqlQuery query("select num,name FROM company"); + while(query.next()) + { + QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString(),&m_plw[E_LIST_COMPANY]); + pItem->setData(Qt::UserRole, QVariant(query.value(0))); + } + } + m_db.close(); +} + +void Widget::CompanyItemChanged(QListWidgetItem* _current,QListWidgetItem*) +{ + if (_current == 0) return; + m_db.setHostName(m_strWebDataBaseHost); + m_db.setUserName(m_strWebDataBaseUser); + m_db.setPassword(m_strWebDataBasePass); + m_db.setDatabaseName(m_strWebDataBaseName); + if (m_db.open() == false) + { + InsertLog(m_db.lastError().text()); + return; + } + m_plw[E_LIST_CATALOG].clear(); + + int nServiceCnt[E_SERVICE_MAX] = {0}; + + QSqlQuery query("select num,name,servicenum FROM category where company_num = '" +_current->data(Qt::UserRole).toString()+ "' order by servicenum asc, num asc"); + while(query.next()) + { + int num = query.value(0).toInt(); + int servicenum = query.value(2).toInt(); + QString name = query.value(1).toString(); + QString strService; + + + switch (servicenum - 1) + { + case E_SERVICE_INFLUENCER: + { + /* + if (0 == nServiceCnt[E_SERVICE_INFLUENCER]++) + continue; + */ + strService = "[Influencer]"; + break; + } + case E_SERVICE_CONSUMER: + { + /* + if (0 == nServiceCnt[E_SERVICE_CONSUMER]++) + continue; + */ + strService = "[Consumer]"; + break; + } + case E_SERVICE_SPAMMER: + { + /* + if (0 == nServiceCnt[E_SERVICE_SPAMMER]++) + continue; + */ + strService = "[Spammer]"; + break; + } + case E_SERVICE_POWERCAFE: + { + /* + if (0 == nServiceCnt[E_SERVICE_POWERCAFE]++) + continue; + */ + strService = "[Powercafe]"; + break; + } + default: + { + continue; + } + } + + QListWidgetItem *pItem = new QListWidgetItem(strService + ":" + name ,&m_plw[E_LIST_CATALOG]); + + QList qlist; + qlist.append(QVariant(num)); + qlist.append(QVariant(servicenum)); + pItem->setData(Qt::UserRole, QVariant(qlist)); + } + m_db.close(); +} + +void Widget::on_filter_process_group_insert() +{ + if (m_pleFilterProcessGroup->text().trimmed().isEmpty()) return; + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) InsertLog(m_db.lastError().text()); + QSqlQuery query; + QString strQuery; + strQuery = "insert into filterprocessgroup (name) value ('" + m_pleFilterProcessGroup->text() + "')"; + if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());} + m_db.close(); + + Refresh(); +} + +void Widget::on_filter_process_group_delete() +{ + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) InsertLog(m_db.lastError().text()); + + foreach (QListWidgetItem *item,m_plwFilterProcessGroup->selectedItems()) + { + QSqlQuery query; + QString strQuery; + strQuery = "delete from filterprocessgroup where id = " + item->data(Qt::UserRole).toString(); + if(query.exec(strQuery.toUtf8()) == false) {qDebug() << strQuery ; InsertLog(query.lastError().text());} + strQuery = "delete from filterprocess where filterprocessgroup_id = " + item->data(Qt::UserRole).toString(); + if(query.exec(strQuery.toUtf8()) == false) {qDebug() << strQuery ; InsertLog(query.lastError().text());} + } + m_db.close(); + Refresh(); +} + +void Widget::on_filter_process_group_modify() +{ + if (m_pleFilterProcessGroup->text().trimmed().isEmpty()) return; + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) InsertLog(m_db.lastError().text()); + + foreach (QListWidgetItem *item,m_plwFilterProcessGroup->selectedItems()) + { + QSqlQuery query; + QString strQuery; + strQuery = "update filterprocessgroup set name = '" + m_pleFilterProcessGroup->text().trimmed() + "' where id = " + item->data(Qt::UserRole).toString(); + if(query.exec(strQuery.toUtf8()) == false) {qDebug() << strQuery ; InsertLog(query.lastError().text());} + } + m_db.close(); + Refresh(); +} + +void Widget::FilterProcessGroupClicked(QListWidgetItem* _item) +{ + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) + { + InsertLog(m_db.lastError().text()); + return; + } + m_pleFilterProcessGroup->setText(_item->text()); + FilterProcssRefresh(_item->data(Qt::UserRole).toString()); + m_db.close(); +} + +struct SFilterProcess +{ + QString m_strID; + QString m_strName; +}; + +void Widget::InsertFilterProcess(int _nProcessType) +{ + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + + if (m_db.open() == false) + { + InsertLog(m_db.lastError().text()); + return; + } + SFilterProcess astProcessFilter[E_LIST_MAX] = {{"datagroup_id","datagroup_name"}, + {"filtergroup_id","filtergroup_name"}, + {"company_num","company_name"}, + {"category_num","category_name"}}; + QSqlQuery query; + QString strSelect; + foreach (QListWidgetItem *itemProcessGroup,m_plwFilterProcessGroup->selectedItems()) + { + QString strQuery = "insert into filterprocess set "; + strQuery += "filterprocess_type = " + QString::number(_nProcessType) + ","; + strSelect = itemProcessGroup->data(Qt::UserRole).toString(); + strQuery += "filterprocessgroup_id = " + strSelect + ","; + for(int i = 0; i < E_LIST_MAX; i++) + { + foreach (QListWidgetItem *item,m_plw[i].selectedItems()) + { + if (i == E_LIST_CATALOG) + { + QList qlist = item->data(Qt::UserRole).toList(); + int nCategory = qlist.at(0).toInt(); + int nService = qlist.at(1).toInt(); + strQuery += astProcessFilter[i].m_strID + "="; + strQuery += QString::number(nCategory) + ","; + strQuery += astProcessFilter[i].m_strName + "='"; + strQuery += item->text() + "',"; + strQuery += "service_num = " + QString::number(nService) + ","; + } + else + { + strQuery += astProcessFilter[i].m_strID + "="; + strQuery += item->data(Qt::UserRole).toString() + ","; + strQuery += astProcessFilter[i].m_strName + "='"; + strQuery += item->text() + "',"; + } + + } + } + strQuery = strQuery.left(strQuery.size()-1); + if(query.exec(strQuery.toUtf8()) == false) + { + InsertLog(query.lastError().text()); + qDebug() << strQuery; + } + } + m_db.close(); + if (strSelect.isEmpty() == false) + FilterProcssRefresh(strSelect); +} + +void Widget::on_load() +{ + InsertFilterProcess(E_PROCSS_TYPE_LOAD); +} + +void Widget::on_send() +{ + InsertFilterProcess(E_PROCSS_TYPE_SEND); +} + +void Widget::on_category() +{ + InsertFilterProcess(E_PROCSS_TYPE_CATEGORY_MAKE); +} + +void Widget::on_influence_count() +{ + InsertFilterProcess(E_PROCSS_TYPE_INFLUENCE_COUNT); +} + +void Widget::on_spammers_count() +{ + InsertFilterProcess(E_PROCSS_TYPE_SPAMMERS_COUNT); +} + +void Widget::on_power_cafe_count() +{ + InsertFilterProcess(E_PROCSS_TYPE_POWER_CAFE_COUNT); +} + +void Widget::on_consumer_supervison_count() +{ + //ConsumerSupervisionCount(); +} + +void Widget::on_delete() +{ + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) + { + InsertLog(m_db.lastError().text()); + return; + } + foreach (QListWidgetItem *item,m_plwFilterProcess->selectedItems()) + { + QSqlQuery query; + QString sql("delete from filterprocess where id = " + item->data(Qt::UserRole).toString()); + if(query.exec(sql) == false) + { + InsertLog(query.lastError().text()); + } + } + m_db.close(); + + foreach (QListWidgetItem *itemProcessGroup,m_plwFilterProcessGroup->selectedItems()) + FilterProcssRefresh(itemProcessGroup->data(Qt::UserRole).toString()); +} + +void Widget::FilterProcssRefresh(QString _strGroupID) +{ + qDebug() << __FILE__ << __LINE__; + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) + { + InsertLog(m_db.lastError().text()); + return; + } + QString sql("select id,filterprocess_type,filterprocess_order,datagroup_id,datagroup_name,filtergroup_name,company_name,category_name from filterprocess where filterprocessgroup_id = " + _strGroupID); + QSqlQuery query; + if(query.exec(sql) == false) + { + InsertLog(query.lastError().text()); + } + m_plwFilterProcess->clear(); + while(query.next()) + { + QString str; + switch(query.value(1).toInt()) + { + case E_PROCSS_TYPE_LOAD: + str += "Loading : Data ["; + str += query.value(4).toString(); + str += "]"; + break; + case E_PROCSS_TYPE_CATEGORY_MAKE: + str += "Category filter ["; + str += query.value(5).toString(); + str += "] Make Category ["; + str += query.value(7).toString(); + str += "]"; + break; + case E_PROCSS_TYPE_SEND: + str += "Send : Company ["; + str += query.value(6).toString(); + str += "]"; + break; + case E_PROCSS_TYPE_INFLUENCE_COUNT: + str += "Influence Count filter [" ; + str += query.value(5).toString(); + str += "] and Send : Company ["; + str += query.value(6).toString(); + str += "]"; + break; + case E_PROCSS_TYPE_SPAMMERS_COUNT: + str += "Spammers Count filter [" ; + str += query.value(5).toString(); + str += "] and Send : Company ["; + str += query.value(6).toString(); + str += "]"; + break; + case E_PROCSS_TYPE_POWER_CAFE_COUNT: + str += "Power Cafe Count filter [" ; + str += query.value(5).toString(); + str += "] and Send : Company ["; + str += query.value(6).toString(); + str += "]"; + break; + } + QListWidgetItem *pItem = new QListWidgetItem(str,m_plwFilterProcess); + pItem->setData(Qt::UserRole, QVariant(query.value(0))); + } + m_db.close(); +} + +void Widget::on_refresh() +{ + Refresh(); +} + +void Widget::time_update() +{ + process_refresh(); +} + +void Widget::process_refresh() +{ + m_plwProcess->clear(); + for(int i = 0; i < D_PROCESS_MAX; i++) + { + if (m_aProcess[i].arguments().size() == 0) continue; + QString str = m_aProcess[i].arguments().at(1); + str += "["+m_aProcess[i].arguments().at(2)+"] "; + + switch(m_aProcess[i].state()) + { + case QProcess::NotRunning:str += "(Wait)";break; + case QProcess::Running:str += "(Run)";break; + case QProcess::Starting:str += "(Start)";break; + } + QListWidgetItem *pItem = new QListWidgetItem(str,m_plwProcess); + pItem->setData(Qt::UserRole, QVariant(m_aProcess[i].arguments().at(0))); + } + +} + +void Widget::on_process_insert() +{ + foreach(QListWidgetItem *item,m_plwFilterProcessGroup->selectedItems()) + { + QStringList strlist; + strlist.append(item->data(Qt::UserRole).toString()); + strlist.append(item->text().trimmed()); + strlist.append(m_pleInfluencerLimitFrom->text() + "~" + m_pleInfluencerLimitTo->text()); + for (int i = 0; i < D_PROCESS_MAX;i++) + { + if (m_aProcess[i].arguments().size() == 0) + { + +#if defined(Q_OS_WIN32) + m_aProcess[i].setProgram("FilterProcess.exe"); + +#else + m_aProcess[i].setProgram("./FilterProcess"); + +#endif + m_aProcess[i].setArguments(strlist); + break; + } + } + } + process_refresh(); +} + +void Widget::on_process_start() +{ + bool ok; + int time = m_pleExcutionTime->text().toInt(&ok); + if(!ok) + return; + + if (m_statusTimer.isActive() == false) + m_statusTimer.start(5000); + + if (m_executionTimer.isActive() == false) + m_executionTimer.start(time*MINUTE); + + time_update(); + time_execute(); +} + +void Widget::on_process_stop() +{ + if (m_statusTimer.isActive() == true) + m_statusTimer.stop(); + if (m_executionTimer.isActive() == true) + m_executionTimer.stop(); + + process_refresh(); +} + +void Widget::on_process_delete() +{ + foreach(QListWidgetItem *item,m_plwProcess->selectedItems()) + { + for (int i = 0; i < D_PROCESS_MAX;i++) + { + if (m_aProcess[i].arguments().size() > 0 && m_aProcess[i].arguments().at(0) == item->data(Qt::UserRole).toString()) + { + Kill(i); + m_aProcess[i].setArguments(QStringList()); + process_refresh(); + return; + } + } + } +} + + +void Widget::time_execute() +{ + for(int i = 0; i < D_PROCESS_MAX; i++) + { + if (m_aProcess[i].arguments().size() == 0) continue; + + switch(m_aProcess[i].state()) + { + case QProcess::NotRunning: m_aProcess[i].start(); + break; + } + } + + process_refresh(); +} + +void Widget::process_output() +{ + QProcess *pPro = (QProcess*)sender(); + QString str = pPro->readAllStandardOutput(); + InsertLog(str); +} + +void Widget::Kill(int _nProcess) +{ + if (m_aProcess[_nProcess].state() == QProcess::Running) + { + m_aProcess[_nProcess].kill(); + m_aProcess[_nProcess].waitForFinished(); + m_aProcess[_nProcess].setArguments(QStringList()); + } +} diff --git a/FilterProcess/sdatagroup.cpp b/FilterProcess/sdatagroup.cpp index 39f9f6e..7247169 100644 --- a/FilterProcess/sdatagroup.cpp +++ b/FilterProcess/sdatagroup.cpp @@ -617,7 +617,7 @@ void SDatagroup::makeBodyCountOfPlatform() void SDatagroup::makeUserCountOfPlatform() { - QMap> mapUserIdsOfPlatform; + QMap > mapUserIdsOfPlatform; const int *anColumn = m_pSInitializer->getColumnIntArray(); QMapIterator iter(m_mapBody); while (iter.hasNext()) diff --git a/FilterProcess/sinfluencer.cpp b/FilterProcess/sinfluencer.cpp index bf84b5a..a167ca8 100644 --- a/FilterProcess/sinfluencer.cpp +++ b/FilterProcess/sinfluencer.cpp @@ -247,12 +247,12 @@ bool SInfluencer::STInfluencer::SaveDataFile(int _companyNum) stream.setAutoDetectUnicode(true); stream << "Category," << "ID," << "Nick," << "Title," << "Url," << "Like," << "Share," << "Body," << "Reply," << "Value" << "\n"; - QMapIterator>> iter(m_mapInfluencerOfGroup); + QMapIterator > > iter(m_mapInfluencerOfGroup); while (iter.hasNext()) { iter.next(); - QMapIterator> iter2(iter.value()); + QMapIterator > iter2(iter.value()); while (iter2.hasNext()) { iter2.next(); @@ -455,7 +455,7 @@ m_pSInitializer->insertLog("influencer_" + QString::number(_nCompany) + " rename int SInfluencer::STInfluencer::getInfluencerGroupNum(int _nCategoryNum) { - QMapIterator> iter(m_mapInfluencerGroupInfo); + QMapIterator > iter(m_mapInfluencerGroupInfo); while (iter.hasNext()) { iter.next(); @@ -475,13 +475,13 @@ int SInfluencer::STInfluencer::getInfluencerGroupNum(int _nCategoryNum) void SInfluencer::STInfluencer::setInfluencerValueWeight() { - QMutableMapIterator>> iter(m_mapInfluencerOfGroup); + QMutableMapIterator > > iter(m_mapInfluencerOfGroup); while (iter.hasNext()) { iter.next(); SInfluencerWeight influencerWeight; - QMutableMapIterator> iter2(iter.value()); + QMutableMapIterator > iter2(iter.value()); while (iter2.hasNext()) { QList &listInfluencer = iter2.next().value(); @@ -509,12 +509,12 @@ void SInfluencer::STInfluencer::setInfluencerValueWeight() //{ // QMap mapCountOfGroupDuplicatedId; -// QMutableMapIterator>> iter(m_mapInfluencerOfGroup); +// QMutableMapIterator > > iter(m_mapInfluencerOfGroup); // while (iter.hasNext()) // { // iter.next(); -// QMutableMapIterator> iter2(iter.value()); +// QMutableMapIterator > iter2(iter.value()); // while (iter2.hasNext()) // { // QList &listInfluencer = iter2.next().value(); @@ -536,12 +536,12 @@ QMap SInfluencer::STInfluencer::makeCountOfGroupDuplicatedId() { QMap mapCountOfGroupDuplicatedId; - QMutableMapIterator>> iter(m_mapInfluencerOfGroup); + QMutableMapIterator > > iter(m_mapInfluencerOfGroup); while (iter.hasNext()) { iter.next(); - QMutableMapIterator> iter2(iter.value()); + QMutableMapIterator > iter2(iter.value()); while (iter2.hasNext()) { QList &listInfluencer = iter2.next().value(); @@ -558,12 +558,12 @@ QMap SInfluencer::STInfluencer::makeCountOfGroupDuplicatedId() void SInfluencer::STInfluencer::setGroupDuplicatedInfluencerFlag(QMap &_mapCountOfGroupDuplicatedId) { - QMutableMapIterator>> iter(m_mapInfluencerOfGroup); + QMutableMapIterator > > iter(m_mapInfluencerOfGroup); while (iter.hasNext()) { iter.next(); - QMutableMapIterator> iter2(iter.value()); + QMutableMapIterator > iter2(iter.value()); while (iter2.hasNext()) { QList &listInfluencer = iter2.next().value(); @@ -581,13 +581,13 @@ void SInfluencer::STInfluencer::setGroupDuplicatedInfluencerFlag(QMap>> iter(m_mapInfluencerOfGroup); + QMutableMapIterator > > iter(m_mapInfluencerOfGroup); while (iter.hasNext()) { iter.next(); - QMap> mapInfluencerValuesOfId = makeInfluencerValuesOfId(iter.value()); - QMap> mapFilteredInfluencerValuesOfId = filterInfluencerValuesOfId(mapInfluencerValuesOfId); + QMap > mapInfluencerValuesOfId = makeInfluencerValuesOfId(iter.value()); + QMap > mapFilteredInfluencerValuesOfId = filterInfluencerValuesOfId(mapInfluencerValuesOfId); sortInfluencerValuesOfId(mapFilteredInfluencerValuesOfId); setDuplicatedInfluencerFlag(iter.value(), mapFilteredInfluencerValuesOfId); @@ -597,11 +597,11 @@ void SInfluencer::STInfluencer::processDuplicatedInfluencer() setGroupDuplicatedInfluencerFlag(mapCountOfGroupDuplicatedId); } -QMap> SInfluencer::STInfluencer::makeInfluencerValuesOfId(QMap> &_mapInfluencersOfCategory) +QMap > SInfluencer::STInfluencer::makeInfluencerValuesOfId(QMap > &_mapInfluencersOfCategory) { - QMap> mapInfluencerValuesOfId; + QMap > mapInfluencerValuesOfId; - QMutableMapIterator> iter(_mapInfluencersOfCategory); + QMutableMapIterator > iter(_mapInfluencersOfCategory); while (iter.hasNext()) { iter.next(); @@ -616,11 +616,11 @@ QMap> SInfluencer::STInfluencer::makeInfluencerValuesOfId return mapInfluencerValuesOfId; } -QMap> SInfluencer::STInfluencer::filterInfluencerValuesOfId(QMap> &_mapInfluencerValuesOfId) +QMap > SInfluencer::STInfluencer::filterInfluencerValuesOfId(QMap > &_mapInfluencerValuesOfId) { - QMap> mapFilteredInfluencerValuesOfId; + QMap > mapFilteredInfluencerValuesOfId; - QMutableMapIterator> iter(_mapInfluencerValuesOfId); + QMutableMapIterator > iter(_mapInfluencerValuesOfId); while (iter.hasNext()) { iter.next(); @@ -636,9 +636,9 @@ QMap> SInfluencer::STInfluencer::filterInfluencerValuesOf return mapFilteredInfluencerValuesOfId; } -void SInfluencer::STInfluencer::sortInfluencerValuesOfId(QMap> &_mapInfluencerValuesOfId) +void SInfluencer::STInfluencer::sortInfluencerValuesOfId(QMap > &_mapInfluencerValuesOfId) { - QMutableMapIterator> iter(_mapInfluencerValuesOfId); + QMutableMapIterator > iter(_mapInfluencerValuesOfId); while (iter.hasNext()) { iter.next(); @@ -652,14 +652,14 @@ void SInfluencer::STInfluencer::copyInfluencerFromGroupToList() { m_listMap.clear(); - QMapIterator>> iter(m_mapInfluencerOfGroup); + QMapIterator > > iter(m_mapInfluencerOfGroup); int nInfluencerLimitFrom = m_pSInitializer->getInfluencerLimitFrom().toInt(); int nInfluencerLimitTo = m_pSInitializer->getInfluencerLimitTo().toInt(); while (iter.hasNext()) { iter.next(); - QMapIterator> iter2(iter.value()); + QMapIterator > iter2(iter.value()); while (iter2.hasNext()) { iter2.next(); @@ -681,12 +681,12 @@ void SInfluencer::STInfluencer::copyInfluencerFromGroupToList() void SInfluencer::STInfluencer::sortInfluencerByValue() { - QMutableMapIterator>> iter(m_mapInfluencerOfGroup); + QMutableMapIterator > > iter(m_mapInfluencerOfGroup); while (iter.hasNext()) { iter.next(); - QMutableMapIterator> iter2(iter.value()); + QMutableMapIterator > iter2(iter.value()); while (iter2.hasNext()) { iter2.next(); @@ -701,12 +701,12 @@ void SInfluencer::STInfluencer::setInfluecnerRank() { sortInfluencerByValue(); - QMutableMapIterator>> iter(m_mapInfluencerOfGroup); + QMutableMapIterator > > iter(m_mapInfluencerOfGroup); while (iter.hasNext()) { iter.next(); - QMutableMapIterator> iter2(iter.value()); + QMutableMapIterator > iter2(iter.value()); while (iter2.hasNext()) { QList &listInfluencer = iter2.next().value(); @@ -720,9 +720,9 @@ void SInfluencer::STInfluencer::setInfluecnerRank() } } -void SInfluencer::STInfluencer::setDuplicatedInfluencerFlag(QMap> &_mapInfluencersOfCategory, QMap> &_mapInfluencerValuesOfId) +void SInfluencer::STInfluencer::setDuplicatedInfluencerFlag(QMap > &_mapInfluencersOfCategory, QMap > &_mapInfluencerValuesOfId) { - QMutableMapIterator> iter(_mapInfluencersOfCategory); + QMutableMapIterator > iter(_mapInfluencersOfCategory); while (iter.hasNext()) { iter.next(); @@ -1548,8 +1548,8 @@ bool SInfluencer::SStatsJson::uploadData(QSqlDatabase &_db, const int &_nCompany void SInfluencer::SIdrankbyinteraction::makeInteractorsJson(const SInfluencer::stInfluencer& _val) { - QMap> mapInteractions = _val.interactions; - for (QMap>::const_iterator iterPos = mapInteractions.constBegin(); iterPos != mapInteractions.constEnd(); iterPos++) + QMap > mapInteractions = _val.interactions; + for (QMap >::const_iterator iterPos = mapInteractions.constBegin(); iterPos != mapInteractions.constEnd(); iterPos++) { QJsonObject interactionJson; QList listReplys = iterPos.value(); @@ -1680,7 +1680,7 @@ int SInfluencer::SPlatformStatistics::getTotalUserCount() void SInfluencer::SGroupStatistics::calculateUserCount() { - for (QMap>::const_iterator iter = m_mapCategorysOfGroup.constBegin(); iter != m_mapCategorysOfGroup.constEnd(); iter++) + for (QMap >::const_iterator iter = m_mapCategorysOfGroup.constBegin(); iter != m_mapCategorysOfGroup.constEnd(); iter++) { QList listCategory = iter.value(); @@ -1697,7 +1697,7 @@ void SInfluencer::SGroupStatistics::calculateUserCount() void SInfluencer::SGroupStatistics::calculatePlatform() { - for (QMap>::const_iterator iter = m_mapCategorysOfGroup.constBegin(); iter != m_mapCategorysOfGroup.constEnd(); iter++) + for (QMap >::const_iterator iter = m_mapCategorysOfGroup.constBegin(); iter != m_mapCategorysOfGroup.constEnd(); iter++) { QList listCategory = iter.value(); diff --git a/FilterProcess/sinfluencer.h b/FilterProcess/sinfluencer.h index af33471..48e708f 100644 --- a/FilterProcess/sinfluencer.h +++ b/FilterProcess/sinfluencer.h @@ -42,7 +42,7 @@ public: int likecount; QString interactionrank; QString isSelected; - QMap> interactions; + QMap > interactions; int interactionsTotalReplyCount; int interactionsTotalCount; @@ -118,9 +118,9 @@ QString isSelected; private: SInitializer *m_pSInitializer; QList m_listMap; - QMap> m_mapInfluencerOfCategory; -QMap> m_mapInfluencerGroupInfo; -QMap>> m_mapInfluencerOfGroup; + QMap > m_mapInfluencerOfCategory; + QMap > m_mapInfluencerGroupInfo; + QMap > > m_mapInfluencerOfGroup; public: void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); @@ -134,13 +134,13 @@ QMap>> m_mapInfluencerOfGroup; int getInfluencerGroupNum(int _nCategoryNum); void setInfluencerValueWeight(); void processDuplicatedInfluencer(); -QMap> makeInfluencerValuesOfId(QMap> &_mapInfluencersOfCategory); -QMap> filterInfluencerValuesOfId(QMap> &_mapInfluencerValuesOfId); -void sortInfluencerValuesOfId(QMap> &_mapInfluencerValuesOfId); +QMap > makeInfluencerValuesOfId(QMap > &_mapInfluencersOfCategory); +QMap > filterInfluencerValuesOfId(QMap > &_mapInfluencerValuesOfId); +void sortInfluencerValuesOfId(QMap > &_mapInfluencerValuesOfId); void copyInfluencerFromGroupToList(); void sortInfluencerByValue(); void setInfluecnerRank(); -void setDuplicatedInfluencerFlag(QMap> &_mapInfluencersOfCategory, QMap> &_mapInfluencerValuesOfId); +void setDuplicatedInfluencerFlag(QMap > &_mapInfluencersOfCategory, QMap > &_mapInfluencerValuesOfId); void setGroupDuplicatedInfluencerFlag(QMap &_mapCountOfGroupDuplicatedId); QMap makeCountOfGroupDuplicatedId(); }; @@ -235,7 +235,7 @@ QMap makeCountOfGroupDuplicatedId(); private: QMap m_mapUserCountOfGroup; QMap m_mapPlatformOfGroup; - const QMap> m_mapCategorysOfGroup; + const QMap > m_mapCategorysOfGroup; const QList& m_listInfluencer; private: @@ -243,7 +243,7 @@ QMap makeCountOfGroupDuplicatedId(); void calculatePlatform(); QString getMaxBodyCountPlatform(QMap _mapBodyCountOfPlatform); public: - SGroupStatistics(QMap> _mapCategorysOfGroup, QList& _listInfluencer) : + SGroupStatistics(QMap > _mapCategorysOfGroup, QList& _listInfluencer) : m_mapCategorysOfGroup(_mapCategorysOfGroup), m_listInfluencer(_listInfluencer) {} void calculateGroupStatistics(); QString getPlatform(int _nGroupNum); diff --git a/FilterProcess/sinitializer.cpp b/FilterProcess/sinitializer.cpp index 7e090cd..ea40502 100644 --- a/FilterProcess/sinitializer.cpp +++ b/FilterProcess/sinitializer.cpp @@ -941,7 +941,7 @@ int SInitializer::getAllCategoryNum(int _nService) return m_anAllCategory[_nService]; } -QMap> SInitializer::getInfluencerGroup() +QMap > SInitializer::getInfluencerGroup() { return m_mapInfluencerGroup; } diff --git a/WebBasedCrawler/requirements.txt b/WebBasedCrawler/requirements.txt index 1d6caf7..2d69340 100644 --- a/WebBasedCrawler/requirements.txt +++ b/WebBasedCrawler/requirements.txt @@ -1,3 +1,7 @@ +psutil +pymysql +selenium +eventlet requests bs4 pytz diff --git a/compile.sh b/compile.sh index 63fa4f3..0618ac4 100644 --- a/compile.sh +++ b/compile.sh @@ -1,9 +1,9 @@ #!/bin/bash WORKING_DIRECTORY=$(pwd) -PATH_SOURCE="$WORKING_DIRECTORY/source" +PATH_SOURCE="$WORKING_DIRECTORY" PATH_COMPILE_PREFIX="$PATH_SOURCE/build-" PATH_COMPILE_SUFFIX="-Desktop_Qt_5_4_0_GCC_64bit-Release" -QT_QMAKE_PATH="/home/testdb/Qt5.4.0/5.4/gcc_64/bin" +QT_QMAKE_PATH="/home/concepters/Qt/5.4/gcc_64/bin" QMAKE="$QT_QMAKE_PATH/qmake" MAKE_CLEAN= usage() diff --git a/package-clients.bat b/package-clients.bat new file mode 100644 index 0000000..d8dd343 --- /dev/null +++ b/package-clients.bat @@ -0,0 +1,41 @@ +@echo off + +SET CUR_PATH=%cd% +SET DEPLOY_PATH=%CUR_PATH%\clients-win + +SET BUILD_PATH_PREFIX=%CUR_PATH%\build- +SET BUILD_PATH_POSTFIX=-Desktop_Qt_5_4_2_MSVC2013_64bit +SET CONFIGURE=release + +SET GROUPMANAGER_PATH=%BUILD_PATH_PREFIX%GroupManager%BUILD_PATH_POSTFIX%\%CONFIGURE% +SET CRAWLER_LIST_PATH=%BUILD_PATH_PREFIX%CrawlerList%BUILD_PATH_POSTFIX%\%CONFIGURE% +SET CRAWLER_PROCESS_PATH=%BUILD_PATH_PREFIX%CrawlerProcess%BUILD_PATH_POSTFIX%\%CONFIGURE% +SET FILTER_PATH=%BUILD_PATH_PREFIX%Filter%BUILD_PATH_POSTFIX%\%CONFIGURE% +SET FILTER_PROCESS_PATH=%BUILD_PATH_PREFIX%FilterProcess%BUILD_PATH_POSTFIX%\%CONFIGURE% + +SET QT_PATH=C:\Qt\Qt5.4.2\5.4\msvc2013_64\bin +SET MYSQL_PATH=C:\Data\Project\temp\libmysql\64bit + +SET PYTHONCRAWLER_PATH=C:\Data\Project\clients\WebBasedCrawler + +mkdir %DEPLOY_PATH% + +copy %GROUPMANAGER_PATH%\*.exe %DEPLOY_PATH% +copy %CRAWLER_LIST_PATH%\*.exe %DEPLOY_PATH% +copy %CRAWLER_PROCESS_PATH%\*.exe %DEPLOY_PATH% +copy %FILTER_PATH%\*.exe %DEPLOY_PATH% +copy %FILTER_PROCESS_PATH%\*.exe %DEPLOY_PATH% + +call %QT_PATH%\qtenv2.bat +cd %CUR_PATH% +%QT_PATH%\windeployqt.exe %DEPLOY_PATH%\GroupManager.exe +%QT_PATH%\windeployqt.exe %DEPLOY_PATH%\CrawlerProcess.exe +%QT_PATH%\windeployqt.exe %DEPLOY_PATH%\CrawlerList.exe +%QT_PATH%\windeployqt.exe %DEPLOY_PATH%\Filter.exe +%QT_PATH%\windeployqt.exe %DEPLOY_PATH%\FilterProcess.exe +copy %MYSQL_PATH%\libmysql.dll %DEPLOY_PATH% + +xcopy %PYTHONCRAWLER_PATH%\*.py %DEPLOY_PATH%\ /c /d /s /y +xcopy %PYTHONCRAWLER_PATH%\*.txt %DEPLOY_PATH%\ /c /d /s /y + +del %DEPLOY_PATH%\*.qm diff --git a/package-clients.sh b/package-clients.sh new file mode 100644 index 0000000..08038a9 --- /dev/null +++ b/package-clients.sh @@ -0,0 +1,38 @@ +#!/bin/bash + + +PROJECT_PATH=. + +PREFIX=${PROJECT_PATH}/build- +POSTFIX=-Desktop_Qt_5_4_0_GCC_64bit-Release + +GROUP_MANAGER_PATH=${PREFIX}GroupManager${POSTFIX} +CRAWLER_PATH=${PREFIX}CrawlerList${POSTFIX} +CRAWLER_LIST_PATH=${PREFIX}CrawlerProcess${POSTFIX} +FILTER_PATH=${PREFIX}Filter${POSTFIX} +FILTER_PROCESS_PATH=${PREFIX}FilterProcess${POSTFIX} + +PACKAGE_PATH=${PROJECT_PATH}/clients-linux + + +mkdir ${PACKAGE_PATH} + +find ${GROUP_MANAGER_PATH} -perm /a+x -exec cp {} ${PACKAGE_PATH} \; +find ${CRAWLER_PATH} -perm /a+x -exec cp {} ${PACKAGE_PATH} \; +find ${CRAWLER_LIST_PATH} -perm /a+x -exec cp {} ${PACKAGE_PATH} \; +find ${FILTER_PATH} -perm /a+x -exec cp {} ${PACKAGE_PATH} \; +find ${FILTER_PROCESS_PATH} -perm /a+x -exec cp {} ${PACKAGE_PATH} \; + +linuxdeployqt ${PACKAGE_PATH}/GroupManager +linuxdeployqt ${PACKAGE_PATH}/CrawlerList +linuxdeployqt ${PACKAGE_PATH}/CrawlerProcess +linuxdeployqt ${PACKAGE_PATH}/Filter +linuxdeployqt ${PACKAGE_PATH}/FilterProcess + +cp -r ${PROJECT_PATH}/WebBasedCrawler/*.py ${PACKAGE_PATH} +cp -r ${PROJECT_PATH}/WebBasedCrawler/*.txt ${PACKAGE_PATH} +cp -r ${PROJECT_PATH}/WebBasedCrawler/*/ ${PACKAGE_PATH} + +rm ${PACKAGE_PATH}/AppRun +rm ${PACKAGE_PATH}/qt.conf +rm -r ${PACKAGE_PATH}/translations