Реализация на языке ruby
Ruby (англ. ruby — рубин, произносится ['ru:bɪ] — ру́би) — динамический, рефлективный, интерпретируемый высокоуровневый язык программирования для быстрого и удобного[7][8] объектно-ориентированного программирования. Язык обладает независимой отоперационной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями[⇨]. По особенностям синтаксиса он близок к языкам Perl и Eiffel, по объектно-ориентированному подходу — к Smalltalk. Также некоторые черты языка взяты из Python, Lisp, Dylan и Клу.
Кроссплатформенная реализация интерпретатора языка является полностью свободной[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 | # encoding: utf-8 require 'net/http' require 'json' "" ' google.mobile Входяшие параметры: ' "" ### Создаем запрос post = { 'task' => 'googlemobile', ### Код обработчика для google.ru 'data' => { 'param' => { ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере }, ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например ### ,'data_param' : { ### 'region': u'Москва' ### } ### Тогда этот параметр будет добавлен в каждый запрос 'data' => [ ### Задание - это список ассоциативных массивов Ключ-Значение %w() ] }.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 | # encoding: utf-8 require 'net/http' require 'json' "" ' google.mobile Входяшие параметры: ' "" ### Создаем запрос post = { 'task' => 'googlemobile', ### Код обработчика для google.ru 'data' => { 'param' => { ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере }, ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например ### ,'data_param' : { ### 'region': u'Москва' ### } ### Тогда этот параметр будет добавлен в каждый запрос 'data' => [ ### Задание - это список ассоциативных массивов Ключ-Значение %w() ] }.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 | # encoding: utf-8 require 'net/http' require 'json' "" ' google.mobile Входяшие параметры: ' "" ### Создаем запрос post = { 'task' => 'googlemobile', ### Код обработчика для google.ru 'data' => { 'param' => { ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере }, ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например ### ,'data_param' : { ### 'region': u'Москва' ### } ### Тогда этот параметр будет добавлен в каждый запрос 'data' => [ ### Задание - это список ассоциативных массивов Ключ-Значение %w() ] }.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 | # encoding: utf-8 require 'net/http' require 'json' "" ' google.mobile Входяшие параметры: ' "" ### Создаем запрос post = { 'task' => 'googlemobile', ### Код обработчика для google.ru 'data' => { 'param' => { ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере }, ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например ### ,'data_param' : { ### 'region': u'Москва' ### } ### Тогда этот параметр будет добавлен в каждый запрос 'data' => [ ### Задание - это список ассоциативных массивов Ключ-Значение %w() ] }.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 | # encoding: utf-8 require 'net/http' require 'json' "" ' google.mobile Входяшие параметры: ' "" ### Создаем запрос post = { 'task' => 'googlemobile', ### Код обработчика для google.ru 'data' => { 'param' => { ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере }, ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например ### ,'data_param' : { ### 'region': u'Москва' ### } ### Тогда этот параметр будет добавлен в каждый запрос 'data' => [ ### Задание - это список ассоциативных массивов Ключ-Значение %w() ] }.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 | # encoding: utf-8 require 'net/http' require 'json' "" ' google.mobile Входяшие параметры: ' "" ### Создаем запрос post = { 'task' => 'googlemobile', ### Код обработчика для google.ru 'data' => { 'param' => { ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере }, ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например ### ,'data_param' : { ### 'region': u'Москва' ### } ### Тогда этот параметр будет добавлен в каждый запрос 'data' => [ ### Задание - это список ассоциативных массивов Ключ-Значение %w() ] }.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 |