ČNB Downloader Kurzů Měn

  1. /***
  2.  * (c)2017 Ladislav Foxy Alexa - WLEZLEY.EU Simulation Software <ladislav.alexa(at)gmail.com>
  3.  */
  4.  
  5. #define _CRT_SECURE_NO_WARNINGS
  6.  
  7. #include <string>
  8. #include <sstream>
  9. #include <iostream>
  10.  
  11. #include <time.h>
  12. #include <windows.h>
  13.  
  14. using namespace std;
  15.  
  16. #define UNIX_TIME_START         662688000   // 01.01.1991
  17. #define COUNT_OF_DAY_SECONDS    86400
  18. #define OUTPUT_DIRECTORY        "output"
  19.  
  20. enum COUNTER_TYPES
  21. {
  22.     CT_OK       = 0,
  23.     CT_SKIPPED  = 1,
  24.     CT_ERROR    = 2,
  25.     CT_MAX      = 3
  26. };
  27.  
  28. int main(int argc, char* argv[])
  29. {
  30.     int iCounters[CT_MAX] = {0, 0, 0};
  31.  
  32.     if(CreateDirectory(OUTPUT_DIRECTORY, NULL) || GetLastError() == ERROR_ALREADY_EXISTS)
  33.     {
  34.         for(time_t i = UNIX_TIME_START; ; i += COUNT_OF_DAY_SECONDS)
  35.         {
  36.             tm * linkTime;
  37.             linkTime = localtime(&i);
  38.             if(linkTime->tm_year+1900 >= 2017 && linkTime->tm_mon+1 >= 4 && linkTime->tm_mday >= 7)
  39.             {
  40.                 cout << "DONE" << endl;
  41.                 break;
  42.             }
  43.  
  44.             stringstream sURL;
  45.             sURL << "http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt?date=" << linkTime->tm_mday << "." << linkTime->tm_mon+1 << "." << linkTime->tm_year+1900;
  46.  
  47.             stringstream sFile;
  48.             sFile << OUTPUT_DIRECTORY << "\\cnb-" << linkTime->tm_year+1900 << "-"
  49.                   << (linkTime->tm_mon+1 < 10 ? "0" : "") << linkTime->tm_mon+1 << "-"
  50.                   << (linkTime->tm_mday  < 10 ? "0" : "") << linkTime->tm_mday  << ".txt";
  51.  
  52.             cout << sFile.str().c_str();
  53.             URLDownloadToFile(NULL, sURL.str().c_str(), sFile.str().c_str(), NULL, NULL);
  54.             Sleep(123);
  55.  
  56.             FILE *fParsed = fopen(sFile.str().c_str(), "rt");
  57.             if(fParsed)
  58.             {
  59.                 char buffer[16];
  60.                 fgets(buffer, 16, fParsed);
  61.                 string sDateFromFile(buffer);
  62.                 fclose(fParsed);
  63.  
  64.                 stringstream sDate;
  65.                 sDate << (linkTime->tm_mday  < 10 ? "0" : "") << linkTime->tm_mday << "."
  66.                       << (linkTime->tm_mon+1 < 10 ? "0" : "") << linkTime->tm_mon+1 << "."
  67.                       << linkTime->tm_year+1900;
  68.  
  69.                 if(sDateFromFile.find(sDate.str()) == string::npos)
  70.                 {
  71.                     // delete
  72.                     DeleteFile(sFile.str().c_str());
  73.                     cout << " SKIPPED: " << sDate.str().c_str() << " != " << string(sDateFromFile, 0, 10) << endl;
  74.                     ++iCounters[CT_SKIPPED];
  75.                 }
  76.                 else
  77.                 {
  78.                     cout << " OK" << endl;
  79.                     ++iCounters[CT_OK];
  80.                 }
  81.             }
  82.             else
  83.             {
  84.                 cout << " ERROR! For continue, please press any key..." << endl;
  85.                 system("pause > nul");
  86.                 ++iCounters[CT_ERROR];
  87.             }
  88.         }
  89.     }
  90.     else
  91.     {
  92.          cout << "Failed to create directory " << OUTPUT_DIRECTORY << endl;
  93.     }
  94.  
  95.     cout << "[REPORT] OK: " << iCounters[CT_OK] << " SKIPPED: " << iCounters[CT_SKIPPED] << " ERROR: " << iCounters[CT_ERROR] << endl;
  96.     system("pause");
  97.     return 0;
  98. }
  99.  

Odpověď na kód "ČNB Downloader Kurzů Měn"

Zde můžete upravit/odpovědět na tento kód (touto akcí vložíte další kód, neupravíte stávající)