Например sape
youporn

Реализация на языке python2.7

Python[2] (МФА: [ˈpʌɪθ(ə)n]; в русском языке распространено название пито́н[3]) — высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.

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

библиотеку для запросов grab - можно взять по адресу: http://grablib.org/

Постановка задания
 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
# -*- coding: utf-8 -*-

import simplejson ### Библиотека - обертка JSON для языка python2.7
import grab ### библиотека для запросов http://grablib.org/


"""
youporn

Версия API 2.0

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

id(Строка): ID, обязательный
url(ссылка): URL, обязательный

"""

### Создаем запрос
post = {
     'task' : 'youporn' ### Код обработчика для youporn
    ,'data': simplejson.dumps({
        'param': { ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере

        }
        ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи
        ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например
        ### ,'data_param' : {
        ###    'region': u'Москва'
        ### }
        ### Тогда этот параметр будет добавлен в каждый запрос
        ,'data':[ ### Задание - это список ассоциативных массивов Ключ-Значение
                [ {  'id' : u'ID',  'url' : u'URL',  } ]
               ,[ {  'id' : u'ID',  'url' : u'URL',  } ]
               ,[ {  'id' : u'ID',  'url' : u'URL',  } ]
        ]
    })
}

key = '[ВАШ КЛЮЧ]' ### его можно посмотреть на странице http://smartfetch.io/private/profile/
url = 'http://smartfetch.io/{0}/api2/'.format(key) ### Сайт для запроса

g = grab.Grab() ### Инициализация библиотеки

g.setup(post=post) ### Установка параметров
g.go(url) ### Запрос

result = simplejson.loads(g.response.body) ### Получение ответа от сервера
### success определяет успешно ли поставили задание в очередь
### при нехватке средств на аккаунте, задания все ровно будут приниматься, но не будут обрабатываться
if result['success']:
    print u'ok {0}'.format(result['hash']) ### параметр hash вы должны запомнить, так как по нему мы сможете получить результат
else:
    ### Если возникнет ошибка, то вы ее сможете увидеть в параметре message
    if 'message' in result:
        print u'error {0}'.format(result['message'])
    else:
        print u'error'
Получение задания
 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
# -*- coding: utf-8 -*-

try:
  from cStringIO import StringIO
except:
  from StringIO import StringIO

import zipfile ### Библиотека работы с zip файлами
import simplejson ### Библиотека - обертка JSON для языка python2.7
import grab ### библиотека для запросов http://grablib.org/

key = '[ВАШ КЛЮЧ]' ### его можно посмотреть на странице http://smartfetch.io/private/profile/
hash = 'xxxxxxxx' ### Идентификтаор, который вы получили при отправке задания
url = 'http://smartfetch.io/{0}/get/{1}'.format(key,hash) ### урл для получения задания


g = grab.Grab() ### Инициализация библиотеки
g.go(url) ### Запрос


if g.response.code == 200: ### Ответ 200 при успехе, если что-то пошло не так, то ответ будет не 200
    fp = StringIO(g.response.body) ### Контент ответа
    zfp = zipfile.ZipFile(fp, "r") ### расзиповываем результаты
    ### на выходе вы получаете файлы
    ### результаты заданий - файлы, название файлов с идентификаторами, которые вы задавали и с расширением json
    ### и файл column.txt в котором будет список наименований колонок в результатах, разделенный запятыми
    ### Пример:  id,  url, 
    name_list = zfp.namelist() ### Список файлов
    column_list_name = 'column.txt' ### наименование файла колонок
    column_list = zfp.read(column_list_name).split(',') ### получение колонок
    for once_file in name_list: ### последовательно идем по списку файлов
        if once_file != column_list_name:
            content = zfp.read(once_file) ### распаковываем
            decoded = simplejson.loads(content) ### получение результата - это будет список списков
            ### пример распакованого результата:
            ### [
            ###    [  id,  url, ]
            ###   ,[  id,  url, ]
            ###   ,[  id,  url, ]
            ### ]
else:
    ### Что-то пошло не так, показываем ошибку
    result = simplejson.loads(g.response.body)
    print u"Сообщение: {0}, код {1}".format(result['message'],result['code'])
Особенности запуска

библиотеку для запросов grab - можно взять по адресу: http://grablib.org/

Постановка задания
 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
# -*- coding: utf-8 -*-

import simplejson ### Библиотека - обертка JSON для языка python2.7
import grab ### библиотека для запросов http://grablib.org/


"""
youporn

Версия API 2.0

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

id(Строка): ID, обязательный
url(ссылка): URL, обязательный

"""

### Создаем запрос
post = {
     'task' : 'youporn' ### Код обработчика для youporn
    ,'data': simplejson.dumps({
        'param': { ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере

        }
        ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи
        ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например
        ### ,'data_param' : {
        ###    'region': u'Москва'
        ### }
        ### Тогда этот параметр будет добавлен в каждый запрос
        ,'data':[ ### Задание - это список ассоциативных массивов Ключ-Значение
                [ {  'id' : u'ID',  'url' : u'URL',  } ]
               ,[ {  'id' : u'ID',  'url' : u'URL',  } ]
               ,[ {  'id' : u'ID',  'url' : u'URL',  } ]
        ]
    })
}

key = '[ВАШ КЛЮЧ]' ### его можно посмотреть на странице http://smartfetch.io/private/profile/
url = 'http://smartfetch.io/{0}/api2/'.format(key) ### Сайт для запроса

g = grab.Grab() ### Инициализация библиотеки

g.setup(post=post) ### Установка параметров
g.go(url) ### Запрос

result = simplejson.loads(g.response.body) ### Получение ответа от сервера
### success определяет успешно ли поставили задание в очередь
### при нехватке средств на аккаунте, задания все ровно будут приниматься, но не будут обрабатываться
if result['success']:
    print u'ok {0}'.format(result['hash']) ### параметр hash вы должны запомнить, так как по нему мы сможете получить результат
else:
    ### Если возникнет ошибка, то вы ее сможете увидеть в параметре message
    if 'message' in result:
        print u'error {0}'.format(result['message'])
    else:
        print u'error'
Получение задания
 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
# -*- coding: utf-8 -*-

try:
  from cStringIO import StringIO
except:
  from StringIO import StringIO

import zipfile ### Библиотека работы с zip файлами
import simplejson ### Библиотека - обертка JSON для языка python2.7
import grab ### библиотека для запросов http://grablib.org/

key = '[ВАШ КЛЮЧ]' ### его можно посмотреть на странице http://smartfetch.io/private/profile/
hash = 'xxxxxxxx' ### Идентификтаор, который вы получили при отправке задания
url = 'http://smartfetch.io/{0}/get/{1}'.format(key,hash) ### урл для получения задания


g = grab.Grab() ### Инициализация библиотеки
g.go(url) ### Запрос


if g.response.code == 200: ### Ответ 200 при успехе, если что-то пошло не так, то ответ будет не 200
    fp = StringIO(g.response.body) ### Контент ответа
    zfp = zipfile.ZipFile(fp, "r") ### расзиповываем результаты
    ### на выходе вы получаете файлы
    ### результаты заданий - файлы, название файлов с идентификаторами, которые вы задавали и с расширением json
    ### и файл column.txt в котором будет список наименований колонок в результатах, разделенный запятыми
    ### Пример:  id,  url, 
    name_list = zfp.namelist() ### Список файлов
    column_list_name = 'column.txt' ### наименование файла колонок
    column_list = zfp.read(column_list_name).split(',') ### получение колонок
    for once_file in name_list: ### последовательно идем по списку файлов
        if once_file != column_list_name:
            content = zfp.read(once_file) ### распаковываем
            decoded = simplejson.loads(content) ### получение результата - это будет список списков
            ### пример распакованого результата:
            ### [
            ###    [  id,  url, ]
            ###   ,[  id,  url, ]
            ###   ,[  id,  url, ]
            ### ]
else:
    ### Что-то пошло не так, показываем ошибку
    result = simplejson.loads(g.response.body)
    print u"Сообщение: {0}, код {1}".format(result['message'],result['code'])
Особенности запуска

библиотеку для запросов grab - можно взять по адресу: http://grablib.org/

Постановка задания
 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
# -*- coding: utf-8 -*-

import simplejson ### Библиотека - обертка JSON для языка python2.7
import grab ### библиотека для запросов http://grablib.org/


"""
youporn

Версия API 2.0

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

id(Строка): ID, обязательный
url(ссылка): URL, обязательный

"""

### Создаем запрос
post = {
     'task' : 'youporn' ### Код обработчика для youporn
    ,'data': simplejson.dumps({
        'param': { ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере

        }
        ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи
        ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например
        ### ,'data_param' : {
        ###    'region': u'Москва'
        ### }
        ### Тогда этот параметр будет добавлен в каждый запрос
        ,'data':[ ### Задание - это список ассоциативных массивов Ключ-Значение
                [ {  'id' : u'ID',  'url' : u'URL',  } ]
               ,[ {  'id' : u'ID',  'url' : u'URL',  } ]
               ,[ {  'id' : u'ID',  'url' : u'URL',  } ]
        ]
    })
}

key = '[ВАШ КЛЮЧ]' ### его можно посмотреть на странице http://smartfetch.io/private/profile/
url = 'http://smartfetch.io/{0}/api2/'.format(key) ### Сайт для запроса

g = grab.Grab() ### Инициализация библиотеки

g.setup(post=post) ### Установка параметров
g.go(url) ### Запрос

result = simplejson.loads(g.response.body) ### Получение ответа от сервера
### success определяет успешно ли поставили задание в очередь
### при нехватке средств на аккаунте, задания все ровно будут приниматься, но не будут обрабатываться
if result['success']:
    print u'ok {0}'.format(result['hash']) ### параметр hash вы должны запомнить, так как по нему мы сможете получить результат
else:
    ### Если возникнет ошибка, то вы ее сможете увидеть в параметре message
    if 'message' in result:
        print u'error {0}'.format(result['message'])
    else:
        print u'error'
Получение задания
 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
# -*- coding: utf-8 -*-

try:
  from cStringIO import StringIO
except:
  from StringIO import StringIO

import zipfile ### Библиотека работы с zip файлами
import simplejson ### Библиотека - обертка JSON для языка python2.7
import grab ### библиотека для запросов http://grablib.org/

key = '[ВАШ КЛЮЧ]' ### его можно посмотреть на странице http://smartfetch.io/private/profile/
hash = 'xxxxxxxx' ### Идентификтаор, который вы получили при отправке задания
url = 'http://smartfetch.io/{0}/get/{1}'.format(key,hash) ### урл для получения задания


g = grab.Grab() ### Инициализация библиотеки
g.go(url) ### Запрос


if g.response.code == 200: ### Ответ 200 при успехе, если что-то пошло не так, то ответ будет не 200
    fp = StringIO(g.response.body) ### Контент ответа
    zfp = zipfile.ZipFile(fp, "r") ### расзиповываем результаты
    ### на выходе вы получаете файлы
    ### результаты заданий - файлы, название файлов с идентификаторами, которые вы задавали и с расширением json
    ### и файл column.txt в котором будет список наименований колонок в результатах, разделенный запятыми
    ### Пример:  id,  url, 
    name_list = zfp.namelist() ### Список файлов
    column_list_name = 'column.txt' ### наименование файла колонок
    column_list = zfp.read(column_list_name).split(',') ### получение колонок
    for once_file in name_list: ### последовательно идем по списку файлов
        if once_file != column_list_name:
            content = zfp.read(once_file) ### распаковываем
            decoded = simplejson.loads(content) ### получение результата - это будет список списков
            ### пример распакованого результата:
            ### [
            ###    [  id,  url, ]
            ###   ,[  id,  url, ]
            ###   ,[  id,  url, ]
            ### ]
else:
    ### Что-то пошло не так, показываем ошибку
    result = simplejson.loads(g.response.body)
    print u"Сообщение: {0}, код {1}".format(result['message'],result['code'])
Особенности запуска

библиотеку для запросов grab - можно взять по адресу: http://grablib.org/

Постановка задания
 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
# -*- coding: utf-8 -*-

import simplejson ### Библиотека - обертка JSON для языка python2.7
import grab ### библиотека для запросов http://grablib.org/


"""
youporn

Версия API 2.0

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

id(Строка): ID, обязательный
url(ссылка): URL, обязательный

"""

### Создаем запрос
post = {
     'task' : 'youporn' ### Код обработчика для youporn
    ,'data': simplejson.dumps({
        'param': { ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере

        }
        ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи
        ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например
        ### ,'data_param' : {
        ###    'region': u'Москва'
        ### }
        ### Тогда этот параметр будет добавлен в каждый запрос
        ,'data':[ ### Задание - это список ассоциативных массивов Ключ-Значение
                [ {  'id' : u'ID',  'url' : u'URL',  } ]
               ,[ {  'id' : u'ID',  'url' : u'URL',  } ]
               ,[ {  'id' : u'ID',  'url' : u'URL',  } ]
        ]
    })
}

key = '[ВАШ КЛЮЧ]' ### его можно посмотреть на странице http://smartfetch.io/private/profile/
url = 'http://smartfetch.io/{0}/api2/'.format(key) ### Сайт для запроса

g = grab.Grab() ### Инициализация библиотеки

g.setup(post=post) ### Установка параметров
g.go(url) ### Запрос

result = simplejson.loads(g.response.body) ### Получение ответа от сервера
### success определяет успешно ли поставили задание в очередь
### при нехватке средств на аккаунте, задания все ровно будут приниматься, но не будут обрабатываться
if result['success']:
    print u'ok {0}'.format(result['hash']) ### параметр hash вы должны запомнить, так как по нему мы сможете получить результат
else:
    ### Если возникнет ошибка, то вы ее сможете увидеть в параметре message
    if 'message' in result:
        print u'error {0}'.format(result['message'])
    else:
        print u'error'
Получение задания
 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
# -*- coding: utf-8 -*-

try:
  from cStringIO import StringIO
except:
  from StringIO import StringIO

import zipfile ### Библиотека работы с zip файлами
import simplejson ### Библиотека - обертка JSON для языка python2.7
import grab ### библиотека для запросов http://grablib.org/

key = '[ВАШ КЛЮЧ]' ### его можно посмотреть на странице http://smartfetch.io/private/profile/
hash = 'xxxxxxxx' ### Идентификтаор, который вы получили при отправке задания
url = 'http://smartfetch.io/{0}/get/{1}'.format(key,hash) ### урл для получения задания


g = grab.Grab() ### Инициализация библиотеки
g.go(url) ### Запрос


if g.response.code == 200: ### Ответ 200 при успехе, если что-то пошло не так, то ответ будет не 200
    fp = StringIO(g.response.body) ### Контент ответа
    zfp = zipfile.ZipFile(fp, "r") ### расзиповываем результаты
    ### на выходе вы получаете файлы
    ### результаты заданий - файлы, название файлов с идентификаторами, которые вы задавали и с расширением json
    ### и файл column.txt в котором будет список наименований колонок в результатах, разделенный запятыми
    ### Пример:  id,  url, 
    name_list = zfp.namelist() ### Список файлов
    column_list_name = 'column.txt' ### наименование файла колонок
    column_list = zfp.read(column_list_name).split(',') ### получение колонок
    for once_file in name_list: ### последовательно идем по списку файлов
        if once_file != column_list_name:
            content = zfp.read(once_file) ### распаковываем
            decoded = simplejson.loads(content) ### получение результата - это будет список списков
            ### пример распакованого результата:
            ### [
            ###    [  id,  url, ]
            ###   ,[  id,  url, ]
            ###   ,[  id,  url, ]
            ### ]
else:
    ### Что-то пошло не так, показываем ошибку
    result = simplejson.loads(g.response.body)
    print u"Сообщение: {0}, код {1}".format(result['message'],result['code'])
Особенности запуска

библиотеку для запросов grab - можно взять по адресу: http://grablib.org/

Постановка задания
 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
# -*- coding: utf-8 -*-

import simplejson ### Библиотека - обертка JSON для языка python2.7
import grab ### библиотека для запросов http://grablib.org/


"""
youporn

Версия API 2.0

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

id(Строка): ID, обязательный
url(ссылка): URL, обязательный

"""

### Создаем запрос
post = {
     'task' : 'youporn' ### Код обработчика для youporn
    ,'data': simplejson.dumps({
        'param': { ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере

        }
        ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи
        ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например
        ### ,'data_param' : {
        ###    'region': u'Москва'
        ### }
        ### Тогда этот параметр будет добавлен в каждый запрос
        ,'data':[ ### Задание - это список ассоциативных массивов Ключ-Значение
                [ {  'id' : u'ID',  'url' : u'URL',  } ]
               ,[ {  'id' : u'ID',  'url' : u'URL',  } ]
               ,[ {  'id' : u'ID',  'url' : u'URL',  } ]
        ]
    })
}

key = '[ВАШ КЛЮЧ]' ### его можно посмотреть на странице http://smartfetch.io/private/profile/
url = 'http://smartfetch.io/{0}/api2/'.format(key) ### Сайт для запроса

g = grab.Grab() ### Инициализация библиотеки

g.setup(post=post) ### Установка параметров
g.go(url) ### Запрос

result = simplejson.loads(g.response.body) ### Получение ответа от сервера
### success определяет успешно ли поставили задание в очередь
### при нехватке средств на аккаунте, задания все ровно будут приниматься, но не будут обрабатываться
if result['success']:
    print u'ok {0}'.format(result['hash']) ### параметр hash вы должны запомнить, так как по нему мы сможете получить результат
else:
    ### Если возникнет ошибка, то вы ее сможете увидеть в параметре message
    if 'message' in result:
        print u'error {0}'.format(result['message'])
    else:
        print u'error'
Получение задания
 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
# -*- coding: utf-8 -*-

try:
  from cStringIO import StringIO
except:
  from StringIO import StringIO

import zipfile ### Библиотека работы с zip файлами
import simplejson ### Библиотека - обертка JSON для языка python2.7
import grab ### библиотека для запросов http://grablib.org/

key = '[ВАШ КЛЮЧ]' ### его можно посмотреть на странице http://smartfetch.io/private/profile/
hash = 'xxxxxxxx' ### Идентификтаор, который вы получили при отправке задания
url = 'http://smartfetch.io/{0}/get/{1}'.format(key,hash) ### урл для получения задания


g = grab.Grab() ### Инициализация библиотеки
g.go(url) ### Запрос


if g.response.code == 200: ### Ответ 200 при успехе, если что-то пошло не так, то ответ будет не 200
    fp = StringIO(g.response.body) ### Контент ответа
    zfp = zipfile.ZipFile(fp, "r") ### расзиповываем результаты
    ### на выходе вы получаете файлы
    ### результаты заданий - файлы, название файлов с идентификаторами, которые вы задавали и с расширением json
    ### и файл column.txt в котором будет список наименований колонок в результатах, разделенный запятыми
    ### Пример:  id,  url, 
    name_list = zfp.namelist() ### Список файлов
    column_list_name = 'column.txt' ### наименование файла колонок
    column_list = zfp.read(column_list_name).split(',') ### получение колонок
    for once_file in name_list: ### последовательно идем по списку файлов
        if once_file != column_list_name:
            content = zfp.read(once_file) ### распаковываем
            decoded = simplejson.loads(content) ### получение результата - это будет список списков
            ### пример распакованого результата:
            ### [
            ###    [  id,  url, ]
            ###   ,[  id,  url, ]
            ###   ,[  id,  url, ]
            ### ]
else:
    ### Что-то пошло не так, показываем ошибку
    result = simplejson.loads(g.response.body)
    print u"Сообщение: {0}, код {1}".format(result['message'],result['code'])
Особенности запуска

библиотеку для запросов grab - можно взять по адресу: http://grablib.org/

Постановка задания
 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
# -*- coding: utf-8 -*-

import simplejson ### Библиотека - обертка JSON для языка python2.7
import grab ### библиотека для запросов http://grablib.org/


"""
youporn

Версия API 2.0

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

id(Строка): ID, обязательный
url(ссылка): URL, обязательный

"""

### Создаем запрос
post = {
     'task' : 'youporn' ### Код обработчика для youporn
    ,'data': simplejson.dumps({
        'param': { ### Общие параметры, их можно не передавать и оставить значение пустое, как в примере

        }
        ### Список колонок в задании, параметр id должен быть уникальным в рамках одной задачи
        ### Чтоб сократить объем передаваемых данных, вы можете добавить параметр data_param в data, например
        ### ,'data_param' : {
        ###    'region': u'Москва'
        ### }
        ### Тогда этот параметр будет добавлен в каждый запрос
        ,'data':[ ### Задание - это список ассоциативных массивов Ключ-Значение
                [ {  'id' : u'ID',  'url' : u'URL',  } ]
               ,[ {  'id' : u'ID',  'url' : u'URL',  } ]
               ,[ {  'id' : u'ID',  'url' : u'URL',  } ]
        ]
    })
}

key = '[ВАШ КЛЮЧ]' ### его можно посмотреть на странице http://smartfetch.io/private/profile/
url = 'http://smartfetch.io/{0}/api2/'.format(key) ### Сайт для запроса

g = grab.Grab() ### Инициализация библиотеки

g.setup(post=post) ### Установка параметров
g.go(url) ### Запрос

result = simplejson.loads(g.response.body) ### Получение ответа от сервера
### success определяет успешно ли поставили задание в очередь
### при нехватке средств на аккаунте, задания все ровно будут приниматься, но не будут обрабатываться
if result['success']:
    print u'ok {0}'.format(result['hash']) ### параметр hash вы должны запомнить, так как по нему мы сможете получить результат
else:
    ### Если возникнет ошибка, то вы ее сможете увидеть в параметре message
    if 'message' in result:
        print u'error {0}'.format(result['message'])
    else:
        print u'error'
Получение задания
 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
# -*- coding: utf-8 -*-

try:
  from cStringIO import StringIO
except:
  from StringIO import StringIO

import zipfile ### Библиотека работы с zip файлами
import simplejson ### Библиотека - обертка JSON для языка python2.7
import grab ### библиотека для запросов http://grablib.org/

key = '[ВАШ КЛЮЧ]' ### его можно посмотреть на странице http://smartfetch.io/private/profile/
hash = 'xxxxxxxx' ### Идентификтаор, который вы получили при отправке задания
url = 'http://smartfetch.io/{0}/get/{1}'.format(key,hash) ### урл для получения задания


g = grab.Grab() ### Инициализация библиотеки
g.go(url) ### Запрос


if g.response.code == 200: ### Ответ 200 при успехе, если что-то пошло не так, то ответ будет не 200
    fp = StringIO(g.response.body) ### Контент ответа
    zfp = zipfile.ZipFile(fp, "r") ### расзиповываем результаты
    ### на выходе вы получаете файлы
    ### результаты заданий - файлы, название файлов с идентификаторами, которые вы задавали и с расширением json
    ### и файл column.txt в котором будет список наименований колонок в результатах, разделенный запятыми
    ### Пример:  id,  url, 
    name_list = zfp.namelist() ### Список файлов
    column_list_name = 'column.txt' ### наименование файла колонок
    column_list = zfp.read(column_list_name).split(',') ### получение колонок
    for once_file in name_list: ### последовательно идем по списку файлов
        if once_file != column_list_name:
            content = zfp.read(once_file) ### распаковываем
            decoded = simplejson.loads(content) ### получение результата - это будет список списков
            ### пример распакованого результата:
            ### [
            ###    [  id,  url, ]
            ###   ,[  id,  url, ]
            ###   ,[  id,  url, ]
            ### ]
else:
    ### Что-то пошло не так, показываем ошибку
    result = simplejson.loads(g.response.body)
    print u"Сообщение: {0}, код {1}".format(result['message'],result['code'])