О сервисе
Сервис для рендеринга html или url сайтов. Использует PhantomJS для рендеринга html.
Форматы входных и выходных
Поддерживается несколько источников данных для рендеринга:
- url
- custom html
- handlebars template
Результат может быть возвращен в форматах:
- HTML (например чтобы отработал angularjs шаблон)
- PNG / JPG
Запросы
Нужно сделать POST запрос на url http://apis.garpun.com/sitepreview/v1/render
Content-Type: application/json Тело запроса должно быть json формата
Для рендеринга url
{
"dataProvider": {
"type": "url",
"source": "http://ya.ru"
},
"timeout": 1000,
"format": "png",
"zoomFactor": 1,
"viewportSize": {
"width": 240,
"height": 400,
},
"clipRect": {
"left": 0,
"top": 0,
"width": 240,
"height": 400,
}
}
Для рендеринга html
{
"dataProvider": {
"type": "html",
"source": "<h1>My super HTML</h1>"
},
"timeout": 1000,
"format": "png",
"zoomFactor": 1,
"viewportSize": {
"width": 240,
"height": 400,
},
"clipRect": {
"left": 0,
"top": 0,
"width": 240,
"height": 400,
}
}
Для рендеринга template
{
"dataProvider": {
"type": "template",
"source": "<h1>{{my_var}} - {{first.test_passed}}</h1>",
"context": {
"my_var": "123",
"first": {
"test_passed": "Test Passed!"
}
}
},
"timeout": 1000,
"format": "png",
"zoomFactor": 1,
"viewportSize": {
"width": 240,
"height": 400,
},
"clipRect": {
"left": 0,
"top": 0,
"width": 240,
"height": 400,
}
}
Пример кода на Python3
import base64
import json
import os
import requests
dir_path = os.path.dirname(os.path.realpath(__file__)) + "/"
w = 240
h = 400
zoomFactor = 1
w *= zoomFactor
h *= zoomFactor
img_format = "png"
resp = requests.post('http://apis.garpun.com/sitepreview/v1/render', json.dumps({
"dataProvider": {
"type": "url",
"source": "http://ya.ru",
},
"timeout": 1000,
"format": img_format,
"zoomFactor": zoomFactor,
"viewportSize": {
"width": w,
"height": h,
},
"clipRect": {
"left": 0,
"top": 0,
"width": w,
"height": h,
}
}))
api_resp = resp.json()
for k, v in api_resp.items():
print("%s = %s" % (k, v))
load_success = api_resp['base64Content']
bytes_ = base64.b64decode(load_success)
f = open(dir_path + "load_success_output_img." + img_format, "wb")
f.write(bytes_)
f.close()