Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Praktika.cpp: определяет точку входа для консольного приложения.
- #include "stdafx.h" //для VS2010
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- #include<map>
- #include<queue>
- #include<stack>
- #include<cmath>
- #include<cctype>
- #include<ctime>
- #include<cstdlib>
- #include<string>
- #include<vector>
- #include<set>
- #include<bitset>
- #include<fstream>
- #include<sstream>
- #include"curl/curl.h"
- #pragma comment(lib , "curllib.lib")
- #define INF 1000010000
- #define nl '\n'
- #define pb push_back
- #define ppb pop_back
- #define mp make_pair
- #define fi first
- #define se second
- #define pii pair<int,int>
- #define pdd pair<double,double>
- #define all(c) (c).begin(), (c).end()
- #define SORT(c) sort(all(c))
- #define sz(c) (c).size()
- #define rep(i,n) for( int i = 0; i < n; ++i )
- #define repi(i,n) for( int i = 1 ; i <= n; ++i )
- #define repn(i,n) for( int i = n - 1 ; i >= 0 ; --i )
- #define repf(j,i,n) for( int j = i ; j < n ; ++j )
- #define die(s) {std::cout << s << nl;}
- #define dier(s) {std::cout << s; return 0;}
- #define vi vector<int>
- typedef long long ll;
- using namespace std;
- const string KEY = "dd5f5efe-af4e-4edd-b106-a16382946610";
- inline size_t write_response_data(char *ptr , size_t size , size_t nmemb , void *userdata){
- stringstream* s = (stringstream*)userdata;
- size_t n = size * nmemb;
- s -> write(ptr, n);
- return n;
- }
- inline size_t read_request_data(char *ptr, size_t size, size_t nmemb, void *userdata){
- ifstream* f = (ifstream*)userdata;
- size_t n = size * nmemb;
- f -> read(ptr, n);
- size_t result = f -> gcount();
- return result;
- }
- string FILE_PATH = "C:\\Users\\Max\\Documents\\Visual Studio 2010\\Projects\\Praktika\\Praktika\\123.wav";
- string Alpha = "";
- inline void InitAlpha(){
- if(Alpha.size())return;
- for(char ch = '0' ; ch <= '9' ; ++ch) Alpha += ch;
- for(char ch = 'a' ; ch <= 'f' ; ++ch) Alpha += ch;
- }
- inline string GenUUID(){
- if(Alpha.size() == 0)InitAlpha();
- string ret = "";
- for(int i = 0 ; i < 32 ; ++i){
- int t = rand() % Alpha.size();
- ret += Alpha[t];
- }
- return ret;
- }
- int main(){
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- cout.precision(0);
- setlocale(LC_ALL , NULL);
- CURL *curl = NULL;
- curl = curl_easy_init();
- if(curl){
- curl_easy_setopt(curl , CURLOPT_HEADER , 1);
- curl_easy_setopt(curl , CURLOPT_POST , 1);
- curl_easy_setopt(curl , CURLOPT_VERBOSE , 1);
- curl_easy_setopt(curl , CURLOPT_IPRESOLVE , CURL_IPRESOLVE_V4);
- struct curl_slist *headers = NULL;
- headers = curl_slist_append(headers , "Content-Type: audio/x-wav");
- curl_easy_setopt(curl , CURLOPT_HTTPHEADER , headers);
- curl_easy_setopt(curl , CURLOPT_USERAGENT , "Dalvik/1.2.0 (Linux; U; Android 2.2.2; LG-P990 Build/FRG83G");
- curl_easy_setopt(curl , CURLOPT_URL , "asr.yandex.net/asr_xml?key=" + KEY + "&uuid=" + GenUUID() + "&topic=notes&lang=ru-RU");
- ifstream fileStream(FILE_PATH , ifstream::binary);
- fileStream.seekg(0 , fileStream.end);
- int length = fileStream.tellg();
- fileStream.seekg(0 , fileStream.beg);
- curl_easy_setopt(curl , CURLOPT_READFUNCTION , &read_request_data);
- curl_easy_setopt(curl , CURLOPT_POSTFIELDSIZE , length);
- curl_easy_setopt(curl , CURLOPT_READDATA , &fileStream);
- stringstream contentStream;
- curl_easy_setopt(curl , CURLOPT_WRITEFUNCTION , &write_response_data);
- curl_easy_setopt(curl , CURLOPT_WRITEDATA , &contentStream);
- CURLcode code = curl_easy_perform(curl);
- unsigned httpCode;
- curl_easy_getinfo(curl , CURLINFO_HTTP_CODE , &httpCode);
- stringstream msg;
- msg << "Http code is " << httpCode;
- cout << contentStream.str();
- ofstream fout("output.txt");
- fout << contentStream.str();
- fout.close();
- curl_free(headers);
- curl_easy_cleanup(curl);
- }
- system("Pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement