int main(int argc, char *argv[]) { CURL *conn = NULL; CURLcode code; std::string title; // Ensure one argument is given if (argc != 2) { fprintf(stderr, "Usage: %s <url>\n", argv[0]); exit(EXIT_FAILURE); } curl_global_init(CURL_GLOBAL_DEFAULT); // Initialize CURL connection if (!init(conn, argv[1])) { fprintf(stderr, "Connection initializion failed\n"); exit(EXIT_FAILURE); } // Retrieve content for the URL code = curl_easy_perform(conn); curl_easy_cleanup(conn); if (code != CURLE_OK) { fprintf(stderr, "Failed to get '%s' [%s]\n", argv[1], errorBuffer); exit(EXIT_FAILURE); } // Parse the (assumed) HTML code parseHtml(buffer, title); // Display the extracted title printf("Title: %s\n", title.c_str()); return EXIT_SUCCESS; }
HttpPullData::HttpPullData():buffer_offset(0){ CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer); res = initLocServer(); if (res != CURLE_OK) { fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res)); } parseHtml(buffer,0,GET_OPTIONS); } }
AddFilm::AddFilm(QWidget *pwgt): QWidget(pwgt) { titleLine = new QLineEdit; yearLine = new QLineEdit; directorLine = new QLineEdit; genreLine = new QLineEdit; timeLine = new QLineEdit; linkLine = new QLineEdit; urlLine = new QLineEdit; descriptionText = new QTextEdit; buttonAdd = new QPushButton(tr("Добавить")); downloadButton = new QPushButton(tr("Загрузить")); downloadHtmlButton = new QPushButton(tr("Получить информацию")); checkTitleButton = new QPushButton(tr("Проверить")); manager = new QNetworkAccessManager(this); QGridLayout *lay = new QGridLayout; lay->addWidget(new QLabel(tr("Ссылка на страницу")), 0, 0); lay->addWidget(urlLine, 0, 1); lay->addWidget(downloadHtmlButton, 0, 2); lay->addWidget(new QLabel(tr("Название")), 1, 0); lay->addWidget(titleLine, 1, 1); lay->addWidget(new QLabel(tr("Год")), 2, 0); lay->addWidget(yearLine, 2, 1); lay->addWidget(new QLabel(tr("Режиссер")), 3, 0); lay->addWidget(directorLine, 3, 1); lay->addWidget(new QLabel(tr("Жанр")), 4, 0); lay->addWidget(genreLine, 4, 1); lay->addWidget(new QLabel(tr("Продолжительность")), 5, 0); lay->addWidget(timeLine, 5, 1); lay->addWidget(new QLabel(tr("Ссылка на постер")), 6, 0); lay->addWidget(linkLine, 6, 1); lay->addWidget(downloadButton, 6, 2); lay->addWidget(new QLabel(tr("Описание")), 7, 0); lay->addWidget(descriptionText, 7, 1); lay->addWidget(buttonAdd, 8, 0, 1, 3); connect(buttonAdd, SIGNAL(clicked()), this, SLOT(slotAddFilm())); connect(downloadButton, SIGNAL(clicked()), this, SLOT(download())); connect(downloadHtmlButton, SIGNAL(clicked()), this, SLOT(parseHtml())); this->setLayout(lay); }
CURLcode HttpPullData::retrieveLoc(const char* townName){ char* escTownName=(char *)curl_escape(townName,0); char postThis[POST_LEN]; buffer.clear(); initLocServer(); buffer_offset=0; buffer.clear(); sprintf(postThis,LOC_POST_STR,escTownName); curl_easy_setopt(curl, CURLOPT_URL, LOC_POST_URL); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postThis); curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(postThis)); CURLcode res=curl_easy_perform(curl); if (res != CURLE_OK) { fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res)); return res; } parseHtml(buffer,0,GET_LOCATION); return res; }
CURLcode HttpPullData::retrieveAerosol(const char* townName,const char* startYear,const char* startMonth,const char* startDay,PARSE_ACTION action){ char* escTownName=(char *)curl_escape(townName,0); char* escStartYear=(char *)curl_escape(startYear,0); char* escStartMonth=(char *)curl_escape(startMonth,0); char* escStartDay=(char *)curl_escape(startDay,0); const char* freqRange= (action==GET_AEROSOL_UV)?"UVRSR":"MFRSR"; char postThis[POST_LEN]; buffer.clear(); initAerosolServer(); buffer.clear(); sprintf(postThis,AEROSOL_POST_STR,escTownName,freqRange,escStartYear,escStartMonth,escStartDay); curl_easy_setopt(curl, CURLOPT_URL, AEROSOL_POST_URL); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postThis); curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(postThis)); CURLcode res=curl_easy_perform(curl); if (res != CURLE_OK) { fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res)); return res; } int pos=buffer.find("</HTML>")+strlen("</HTML>"); buffer="<HTML><BODY>"+buffer.substr(pos,buffer.length()); parseHtml(buffer,0,action); return res; }
CURLcode HttpPullData::retrieveOzone(const char* townName,const char* startYear,const char* startMonth,const char* startDay){ char* escTownName=(char *)curl_escape(townName,0); char* escStartYear=(char *)curl_escape(startYear,0); char* escStartMonth=(char *)curl_escape(startMonth,0); char* escStartDay=(char *)curl_escape(startDay,0); char postThis[POST_LEN]; buffer.clear(); initOzoneServer(); buffer_offset=buffer.length(); buffer.clear(); sprintf(postThis,OZONE_POST_STR,escTownName,escStartYear,escStartMonth,escStartDay); curl_easy_setopt(curl, CURLOPT_URL, OZONE_POST_URL); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postThis); curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(postThis)); CURLcode res=curl_easy_perform(curl); if (res != CURLE_OK) { fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res)); return res; } int pos=buffer.find("</HTML>")+strlen("</HTML>"); buffer="<HTML><BODY>"+buffer.substr(pos,buffer.length()); parseHtml(buffer,0,GET_OZONE); return res; }