Например 2gis
Yandex.Direct

Реализация на языке ruby

Ruby (англ. ruby — рубин, произносится ['ru:bɪ] — ру́би) — динамическийрефлективныйинтерпретируемый высокоуровневый язык программирования для быстрого и удобного[7][8] объектно-ориентированного программирования. Язык обладает независимой отоперационной системы реализацией многопоточности, строгой динамической типизациейсборщиком мусора и многими другими возможностями[⇨]. По особенностям синтаксиса он близок к языкам Perl и Eiffel, по объектно-ориентированному подходу — к Smalltalk. Также некоторые черты языка взяты из PythonLispDylan и Клу.

Кроссплатформенная реализация интерпретатора языка является полностью свободной[5].

Особенности запуска

для работы вам нужно поставить zip

gem install rubyzip

Постановка задания
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# encoding: utf-8
require 'net/http'
require 'json'

"" '
Yandex.Direct

Входяшие параметры:

phrase(Строка): Фраза, обязательный
region_id(Число): Регион(ID), обязательный
id(Строка): ID, обязательный, уникальный в рамках одного задания
type(Строка): Тип, обязательный,значение по умолчению 'direct'


' ""

### Создаем запрос
post = {
    'task' => 'yandexdirect', ### Код обработчика для google.ru
    'data' => {
        'param' =>  {
            ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере
        },
        ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи
        ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например
        ### ,'data_param' : {
        ###    'region': u'Москва'
        ### }
        ### Тогда этот параметр будет добавлен в каждый запрос

        'data' => [ ### Задание - это список ассоциативных массивов Ключ-Значение
          %w( 'phrase' => 'Фраза'  'region_id' => 'Регион(ID)'  'id' => 'ID'  'type' => 'Тип' )

        ]
    }.to_json
}

key = '[API КЛЮЧ]' # его можно посмотреть на странице http://smartfetch.io/private/profile/
url = 'http://smartfetch.io/%s/api2/' % key;    ### Сайт для запроса

### Получение ответа от сервера
postData = Net::HTTP.post_form(URI.parse(url), post);
jsonResponse = JSON.load postData.body;


### success определяет успешло ли поставили задание в очередь
### при нехватке средств на аккаунте, задания все ровно будут приниматся, но не будут обрабатываться
if jsonResponse['success']
  ### параметр hash вы должны запомнить, так как по нему мы сможете получить результат
  puts 'ok %s' % jsonResponse['hash'];
else
  ### Если возникнет ошибка, то вы ее сможете увидеть в параметре message
  if jsonResponse['message'] != NULL
    puts 'error %s' % jsonResponse['message'];
  else
    puts 'error';
  end
end
Получение задания
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# encoding: utf-8
require 'rubygems'
require 'zip'
require 'net/http'
require 'open-uri'
require 'json'
require 'fileutils'

key = '[API КЛЮЧ]' # его можно посмотреть на странице http://smartfetch.io/private/profile/
hash = Идентификатор # Идентификтаор, который вы получили при отправке задания
url = 'http://smartfetch.io/%s/get/%s/' % [key, hash] # урл для получения задания

open('temp.zip', 'wb') do |fo|
  fo.print open(url).read
end

Zip::File.open('temp.zip') do |zip_file|
  # Find specific entry
  entry = zip_file.glob('*.txt').first
  columns = entry.get_input_stream.read.split(',')

  zip_file.glob('*.json') do |data_file|
    content = data_file.get_input_stream.read
    decoded = JSON.load content
  end
end
Особенности запуска

для работы вам нужно поставить zip

gem install rubyzip

Постановка задания
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# encoding: utf-8
require 'net/http'
require 'json'

"" '
Yandex.Direct

Входяшие параметры:

phrase(Строка): Фраза, обязательный
region_id(Число): Регион(ID), обязательный
id(Строка): ID, обязательный, уникальный в рамках одного задания
type(Строка): Тип, обязательный,значение по умолчению 'direct'


' ""

### Создаем запрос
post = {
    'task' => 'yandexdirect', ### Код обработчика для google.ru
    'data' => {
        'param' =>  {
            ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере
        },
        ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи
        ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например
        ### ,'data_param' : {
        ###    'region': u'Москва'
        ### }
        ### Тогда этот параметр будет добавлен в каждый запрос

        'data' => [ ### Задание - это список ассоциативных массивов Ключ-Значение
          %w( 'phrase' => 'Фраза'  'region_id' => 'Регион(ID)'  'id' => 'ID'  'type' => 'Тип' )

        ]
    }.to_json
}

key = '[API КЛЮЧ]' # его можно посмотреть на странице http://smartfetch.io/private/profile/
url = 'http://smartfetch.io/%s/api2/' % key;    ### Сайт для запроса

### Получение ответа от сервера
postData = Net::HTTP.post_form(URI.parse(url), post);
jsonResponse = JSON.load postData.body;


### success определяет успешло ли поставили задание в очередь
### при нехватке средств на аккаунте, задания все ровно будут приниматся, но не будут обрабатываться
if jsonResponse['success']
  ### параметр hash вы должны запомнить, так как по нему мы сможете получить результат
  puts 'ok %s' % jsonResponse['hash'];
else
  ### Если возникнет ошибка, то вы ее сможете увидеть в параметре message
  if jsonResponse['message'] != NULL
    puts 'error %s' % jsonResponse['message'];
  else
    puts 'error';
  end
end
Получение задания
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# encoding: utf-8
require 'rubygems'
require 'zip'
require 'net/http'
require 'open-uri'
require 'json'
require 'fileutils'

key = '[API КЛЮЧ]' # его можно посмотреть на странице http://smartfetch.io/private/profile/
hash = Идентификатор # Идентификтаор, который вы получили при отправке задания
url = 'http://smartfetch.io/%s/get/%s/' % [key, hash] # урл для получения задания

open('temp.zip', 'wb') do |fo|
  fo.print open(url).read
end

Zip::File.open('temp.zip') do |zip_file|
  # Find specific entry
  entry = zip_file.glob('*.txt').first
  columns = entry.get_input_stream.read.split(',')

  zip_file.glob('*.json') do |data_file|
    content = data_file.get_input_stream.read
    decoded = JSON.load content
  end
end
Особенности запуска

для работы вам нужно поставить zip

gem install rubyzip

Постановка задания
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# encoding: utf-8
require 'net/http'
require 'json'

"" '
Yandex.Direct

Входяшие параметры:

phrase(Строка): Фраза, обязательный
region_id(Число): Регион(ID), обязательный
id(Строка): ID, обязательный, уникальный в рамках одного задания
type(Строка): Тип, обязательный,значение по умолчению 'direct'


' ""

### Создаем запрос
post = {
    'task' => 'yandexdirect', ### Код обработчика для google.ru
    'data' => {
        'param' =>  {
            ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере
        },
        ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи
        ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например
        ### ,'data_param' : {
        ###    'region': u'Москва'
        ### }
        ### Тогда этот параметр будет добавлен в каждый запрос

        'data' => [ ### Задание - это список ассоциативных массивов Ключ-Значение
          %w( 'phrase' => 'Фраза'  'region_id' => 'Регион(ID)'  'id' => 'ID'  'type' => 'Тип' )

        ]
    }.to_json
}

key = '[API КЛЮЧ]' # его можно посмотреть на странице http://smartfetch.io/private/profile/
url = 'http://smartfetch.io/%s/api2/' % key;    ### Сайт для запроса

### Получение ответа от сервера
postData = Net::HTTP.post_form(URI.parse(url), post);
jsonResponse = JSON.load postData.body;


### success определяет успешло ли поставили задание в очередь
### при нехватке средств на аккаунте, задания все ровно будут приниматся, но не будут обрабатываться
if jsonResponse['success']
  ### параметр hash вы должны запомнить, так как по нему мы сможете получить результат
  puts 'ok %s' % jsonResponse['hash'];
else
  ### Если возникнет ошибка, то вы ее сможете увидеть в параметре message
  if jsonResponse['message'] != NULL
    puts 'error %s' % jsonResponse['message'];
  else
    puts 'error';
  end
end
Получение задания
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# encoding: utf-8
require 'rubygems'
require 'zip'
require 'net/http'
require 'open-uri'
require 'json'
require 'fileutils'

key = '[API КЛЮЧ]' # его можно посмотреть на странице http://smartfetch.io/private/profile/
hash = Идентификатор # Идентификтаор, который вы получили при отправке задания
url = 'http://smartfetch.io/%s/get/%s/' % [key, hash] # урл для получения задания

open('temp.zip', 'wb') do |fo|
  fo.print open(url).read
end

Zip::File.open('temp.zip') do |zip_file|
  # Find specific entry
  entry = zip_file.glob('*.txt').first
  columns = entry.get_input_stream.read.split(',')

  zip_file.glob('*.json') do |data_file|
    content = data_file.get_input_stream.read
    decoded = JSON.load content
  end
end
Особенности запуска

для работы вам нужно поставить zip

gem install rubyzip

Постановка задания
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# encoding: utf-8
require 'net/http'
require 'json'

"" '
Yandex.Direct

Входяшие параметры:

phrase(Строка): Фраза, обязательный
region_id(Число): Регион(ID), обязательный
id(Строка): ID, обязательный, уникальный в рамках одного задания
type(Строка): Тип, обязательный,значение по умолчению 'direct'


' ""

### Создаем запрос
post = {
    'task' => 'yandexdirect', ### Код обработчика для google.ru
    'data' => {
        'param' =>  {
            ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере
        },
        ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи
        ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например
        ### ,'data_param' : {
        ###    'region': u'Москва'
        ### }
        ### Тогда этот параметр будет добавлен в каждый запрос

        'data' => [ ### Задание - это список ассоциативных массивов Ключ-Значение
          %w( 'phrase' => 'Фраза'  'region_id' => 'Регион(ID)'  'id' => 'ID'  'type' => 'Тип' )

        ]
    }.to_json
}

key = '[API КЛЮЧ]' # его можно посмотреть на странице http://smartfetch.io/private/profile/
url = 'http://smartfetch.io/%s/api2/' % key;    ### Сайт для запроса

### Получение ответа от сервера
postData = Net::HTTP.post_form(URI.parse(url), post);
jsonResponse = JSON.load postData.body;


### success определяет успешло ли поставили задание в очередь
### при нехватке средств на аккаунте, задания все ровно будут приниматся, но не будут обрабатываться
if jsonResponse['success']
  ### параметр hash вы должны запомнить, так как по нему мы сможете получить результат
  puts 'ok %s' % jsonResponse['hash'];
else
  ### Если возникнет ошибка, то вы ее сможете увидеть в параметре message
  if jsonResponse['message'] != NULL
    puts 'error %s' % jsonResponse['message'];
  else
    puts 'error';
  end
end
Получение задания
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# encoding: utf-8
require 'rubygems'
require 'zip'
require 'net/http'
require 'open-uri'
require 'json'
require 'fileutils'

key = '[API КЛЮЧ]' # его можно посмотреть на странице http://smartfetch.io/private/profile/
hash = Идентификатор # Идентификтаор, который вы получили при отправке задания
url = 'http://smartfetch.io/%s/get/%s/' % [key, hash] # урл для получения задания

open('temp.zip', 'wb') do |fo|
  fo.print open(url).read
end

Zip::File.open('temp.zip') do |zip_file|
  # Find specific entry
  entry = zip_file.glob('*.txt').first
  columns = entry.get_input_stream.read.split(',')

  zip_file.glob('*.json') do |data_file|
    content = data_file.get_input_stream.read
    decoded = JSON.load content
  end
end
Особенности запуска

для работы вам нужно поставить zip

gem install rubyzip

Постановка задания
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# encoding: utf-8
require 'net/http'
require 'json'

"" '
Yandex.Direct

Входяшие параметры:

phrase(Строка): Фраза, обязательный
region_id(Число): Регион(ID), обязательный
id(Строка): ID, обязательный, уникальный в рамках одного задания
type(Строка): Тип, обязательный,значение по умолчению 'direct'


' ""

### Создаем запрос
post = {
    'task' => 'yandexdirect', ### Код обработчика для google.ru
    'data' => {
        'param' =>  {
            ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере
        },
        ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи
        ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например
        ### ,'data_param' : {
        ###    'region': u'Москва'
        ### }
        ### Тогда этот параметр будет добавлен в каждый запрос

        'data' => [ ### Задание - это список ассоциативных массивов Ключ-Значение
          %w( 'phrase' => 'Фраза'  'region_id' => 'Регион(ID)'  'id' => 'ID'  'type' => 'Тип' )

        ]
    }.to_json
}

key = '[API КЛЮЧ]' # его можно посмотреть на странице http://smartfetch.io/private/profile/
url = 'http://smartfetch.io/%s/api2/' % key;    ### Сайт для запроса

### Получение ответа от сервера
postData = Net::HTTP.post_form(URI.parse(url), post);
jsonResponse = JSON.load postData.body;


### success определяет успешло ли поставили задание в очередь
### при нехватке средств на аккаунте, задания все ровно будут приниматся, но не будут обрабатываться
if jsonResponse['success']
  ### параметр hash вы должны запомнить, так как по нему мы сможете получить результат
  puts 'ok %s' % jsonResponse['hash'];
else
  ### Если возникнет ошибка, то вы ее сможете увидеть в параметре message
  if jsonResponse['message'] != NULL
    puts 'error %s' % jsonResponse['message'];
  else
    puts 'error';
  end
end
Получение задания
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# encoding: utf-8
require 'rubygems'
require 'zip'
require 'net/http'
require 'open-uri'
require 'json'
require 'fileutils'

key = '[API КЛЮЧ]' # его можно посмотреть на странице http://smartfetch.io/private/profile/
hash = Идентификатор # Идентификтаор, который вы получили при отправке задания
url = 'http://smartfetch.io/%s/get/%s/' % [key, hash] # урл для получения задания

open('temp.zip', 'wb') do |fo|
  fo.print open(url).read
end

Zip::File.open('temp.zip') do |zip_file|
  # Find specific entry
  entry = zip_file.glob('*.txt').first
  columns = entry.get_input_stream.read.split(',')

  zip_file.glob('*.json') do |data_file|
    content = data_file.get_input_stream.read
    decoded = JSON.load content
  end
end
Особенности запуска

для работы вам нужно поставить zip

gem install rubyzip

Постановка задания
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# encoding: utf-8
require 'net/http'
require 'json'

"" '
Yandex.Direct

Входяшие параметры:

phrase(Строка): Фраза, обязательный
region_id(Число): Регион(ID), обязательный
id(Строка): ID, обязательный, уникальный в рамках одного задания
type(Строка): Тип, обязательный,значение по умолчению 'direct'


' ""

### Создаем запрос
post = {
    'task' => 'yandexdirect', ### Код обработчика для google.ru
    'data' => {
        'param' =>  {
            ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере
        },
        ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи
        ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например
        ### ,'data_param' : {
        ###    'region': u'Москва'
        ### }
        ### Тогда этот параметр будет добавлен в каждый запрос

        'data' => [ ### Задание - это список ассоциативных массивов Ключ-Значение
          %w( 'phrase' => 'Фраза'  'region_id' => 'Регион(ID)'  'id' => 'ID'  'type' => 'Тип' )

        ]
    }.to_json
}

key = '[API КЛЮЧ]' # его можно посмотреть на странице http://smartfetch.io/private/profile/
url = 'http://smartfetch.io/%s/api2/' % key;    ### Сайт для запроса

### Получение ответа от сервера
postData = Net::HTTP.post_form(URI.parse(url), post);
jsonResponse = JSON.load postData.body;


### success определяет успешло ли поставили задание в очередь
### при нехватке средств на аккаунте, задания все ровно будут приниматся, но не будут обрабатываться
if jsonResponse['success']
  ### параметр hash вы должны запомнить, так как по нему мы сможете получить результат
  puts 'ok %s' % jsonResponse['hash'];
else
  ### Если возникнет ошибка, то вы ее сможете увидеть в параметре message
  if jsonResponse['message'] != NULL
    puts 'error %s' % jsonResponse['message'];
  else
    puts 'error';
  end
end
Получение задания
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# encoding: utf-8
require 'rubygems'
require 'zip'
require 'net/http'
require 'open-uri'
require 'json'
require 'fileutils'

key = '[API КЛЮЧ]' # его можно посмотреть на странице http://smartfetch.io/private/profile/
hash = Идентификатор # Идентификтаор, который вы получили при отправке задания
url = 'http://smartfetch.io/%s/get/%s/' % [key, hash] # урл для получения задания

open('temp.zip', 'wb') do |fo|
  fo.print open(url).read
end

Zip::File.open('temp.zip') do |zip_file|
  # Find specific entry
  entry = zip_file.glob('*.txt').first
  columns = entry.get_input_stream.read.split(',')

  zip_file.glob('*.json') do |data_file|
    content = data_file.get_input_stream.read
    decoded = JSON.load content
  end
end