Введение

Для использования в API подходят:

  1. Готовые шаблоны из приложения Photo Lab (см. кладку Categories/Категории)
  2. Комбинации шаблонов (комбы) из приложения Photo Lab (см. кладку Feed/Лента)
  3. Совместное использование материалов из предыдущих пунктов

Для того, чтобы использовать готовый шаблон из приложения Photo Lab, выберите нужный шаблон в мобильном приложении и найдите его id в таблице по данной ссылке. Для применения шаблона см. следующий раздел .

Чтобы получить id необходимой комбинации, воспользуйтесь мобильным приложением. Пример показан в скринкасте ниже.

Для применения комбинации см.следующий раздел.

Для того, чтобы определить шаблоны, из которых состоит комбинация, обратитесь к разделу Получение списка шаблонов для комбинации.

Дополнительно API предоставляет списки самых популярных и набирающих популярность комбинацией, а также возможность поиска комбинаций по тэгам. Подробнее см. в разделе.

Для работы с API можно реализовать необходимую логику самостоятельно, опираясь на приведенную ниже документацию, либо использовать готовые библиотеки, которые можно взять здесь (реализована только часть функциональности, описанной на данной странице).

Найти ответы на часто задаваемые вопросы можно на этой странице.

Работа с API

Работа с API состоит из двух этапов.

  1. Загрузка фото на сервер с получением URLа.
  2. Запуск обработки данного URLа требуемым шаблоном или комбинацией.

Загрузка фото

Если ваше исходное фото уже доступно по URL-у, то можно пропустить этот шаг.

Чтобы загрузить фото на сервер и получить URL, следует использовать следующий запрос:

Пример curl запроса:

curl -v -X POST "http://upload-soft.photolab.me/upload.php" \
  -F file1=@./girl.jpg \
  -F no_resize=1

Пример ответа:

http://soft.photolab.me/samples/girl.jpg

Обработка фото существующим шаблоном

Чтобы обработать фото существующим шаблоном, требуется запустить обработку, передав в качестве template_name id шаблона, а также URL изображения. В ответ вы получите URL результата.

Пример curl запроса:

curl -v -X POST "http://api-soft.photolab.me/template_process.php" \
    -F image_url[1]=http://soft.photolab.me/samples/girl.jpg \
    -F rotate[1]=0 \
    -F flip[1]=0 \
    -F crop[1]=0,0,1,1 \
    -F template_name="2765"

Здесь 2765 - это ID шаблона с именем “A Purrrfect Hat”.

Пример ответа:

http://soft.photolab.me/samples/output/girl.jpg

Для обработки других фотографий достаточно менять значение поля image_url[1]

Для шаблонов, требующих несколько фото на вход, следует использовать параметры image_url[1], image_url[2] и т.д.

Примечание: Для анимированного шаблона дополнительно надо при обработке передать флаг animated="1".

curl -v -X POST "http://api-soft.photolab.me/template_process.php" \
    -F image_url[1]=http://soft.photolab.me/samples/girl.jpg \
    -F template_name="SOME_TEMPLATE_ID" -F animated="1"

Обработка фото существующей комбинацией

Чтобы обработать фото существующей комбинацией, требуется запустить обработку, передав id комбинации, а также URL изображения. В ответ вы получите URL результата. Получение id комбинации описано в начале страницы.

Пример curl запроса:

curl -F key=v6CbLECJv2CMnq5t -F id=14705089 \
-F url=http://soft.photolab.me/samples/girl.jpg -X POST \ https://photolab.me/api/create

Ключ доступа к API (параметр key) следует всегда указывать тот, который приведен в примере.

Если комбинация требует на вход 2 и более пользовательских фото, вместо параметра url следует передавать массив значений url[1], url[2] и т.д.

Пример запроса для двух фотографий (комбинация id=17646500)

curl -F key=v6CbLECJv2CMnq5t -F id=17646500 \
-F url[1]=http://soft.photolab.me/samples/girl.jpg \
-F url[2]=http://soft.photolab.me/samples/boy.jpg \
-X POST https://photolab.me/api/create

Пример ответа

{"result_img":"https://photolabme-images.ws.pho.to/h/r/6c23ecf382d5eb9e6a440c153d1afaa2b1327136.jpeg","result_url":"https://photolab.me/r/dWDVmO"}

Здесь:

  • result_img - ссылка на изображение с результатом
  • result_url - ссылка на страницу результата на сайте photolab.me

Также, при применении комбинации можно отправить на обработку файл изображения без предварительной его загрузки на сервер посредствам следующего запроса

curl -F key=v6CbLECJv2CMnq5t -F id=14705089 -F file=@{filename} -X POST https://photolab.me/api/create

где {filename} - путь к локальному файлу. Формат ответа аналогичный предыдущему примеру.

Если комбинация требует на вход 2 и более пользовательских фото, вместо параметра url следует передавать массив значений file[1], file[2] и т.д.

Получение списка шаблонов для комбинации

В случае, если возникнет потребность создать свою комбинацию на основе существующей, имеется возможность получить шагов, из которых состоит комбинация.

Для получения списка шаблонов, которые были использованы при создании комбинации, например https://photolab.me/d/3124589, нужно передать идентификатор комбинации 3124589. Вместе с идентификаторами шаблонов будут возвращены URL фотографий, используемых на соответствующем шагу комбинации совместно с пользовательской (фоны и т.п.).

Пример curl запроса:

curl -v -X POST "http://api-soft.photolab.me/photolab_steps_advanced.php" \
-F combo_id="3124589"

Пример json ответа:

{
    "steps": [{
        "id": 1978,
        "image_urls": ["", "https://storage.ws.pho.to/s2/92862842a56a288ea35c73f81fa8849bd84eed2b.jpeg"]
    }, {
        "id": 2218,
        "image_urls": []
    }, {
        "id": 2275,
        "image_urls": []
    }, {
        "id": 2174,
        "image_urls": []
    }]
}

Здесь:

  • steps - массив шагов.
  • id - идентификатор шаблона, использованного на данном шаге.
  • image_urls - если на данном шаге шаблон требует на вход N (N≥2) фото, то в этом поле указывается (N-1) адресов фото, которые следует использовать при обработке совместно с фото пользователя. Пустой элемент в массиве указывает позицию для фото пользователя. При создании комбинации эти URLы следует указать в параметре “Фиксированные фото” соответствующего шага комбинации.
  • Если шаблон требует на вход только одну фотографию, массив image_urls будет пустым.

Поиск по существующим комбинациям

Доступно получение следующих списков существующих комбинаций

  • лучшие
  • трендовые
  • поиск по тэгу с сортировкой по популярности
  • поиск по тэгу с сортировкой по времени добавления

Лучшие

Список самых популярных комбинаций доступен по URLу https://photolab.me/api/feed/best и может быть получен запросом.

 
curl -F key=v6CbLECJv2CMnq5t -X GET https://photolab.me/api/feed/best

Пример ответа:

[
   {
      "id":14512608,
      "user":{
         "uid":286008,
         "name":"Samuela Chiodetto",
         "first_name":"Samuela",
         "last_name":"Chiodetto",
         "profile_picture":"https://storage.ws.pho.to/photolab_user_pics/f_1792222821057355.jpeg",
         "me":{
            "is_owner":false,
            "is_following":false,
            "is_followed":false
         },
         "share_url":"https://photolab.me/u/286008?utm_source=app",
         "social":{
            "fb":{
               "id":"1792222821057355"
            }
         },
         "community_effects":false,
         "following":0,
         "followers":0,
         "likes":0
      },
      "created_at":"2020-05-23T12:07:48Z",
      "likes":1445076,
      "me":{
         "is_owner":false,
         "liked":false,
         "bookmarked":false
      },
      "content":[
         {
            "aspect":0.75,
            "crop":[
               0.031,
               0,
               0.969,
               1
            ],
            "fixed":false,
            "flip":0,
            "rotation":0,
            "url":"https://storage.ws.pho.to/s2/92e9433b03c9b8d7c10c4d670e92f2cd97023c92_m.jpeg",
            "original_size":{
               "width":640,
               "height":852
            },
            "original_url":"https://storage.ws.pho.to/s2/92e9433b03c9b8d7c10c4d670e92f2cd97023c92.jpeg"
         }
      ],
      "content_preview":{
         "aspect":0.75,
         "url":"https://storage.ws.pho.to/s2/92e9433b03c9b8d7c10c4d670e92f2cd97023c92_m.jpeg",
         "original_size":{
            "width":640,
            "height":852
         }
      },
      "steps":[
         {
            "type":"template",
            "id":3616
         },
         {
            "type":"template",
            "id":2176
         },
         {
            "type":"template",
            "id":1068
         },
         {
            "type":"template",
            "id":2275
         }
      ],
      "result_size":{
         "width":640,
         "height":853
      },
      "share_url":"https://photolab.me/d/14512608?utm_source=app",
      "children_url":"https://photolab.me/c/14512608?utm_source=app",
      "parent_id":0,
      "original_id":14512608,
      "amount_children":5723,
      "description":"#Samuela C.",
      "result_url":"https://storage.ws.pho.to/s2/41fbbd30d4ade4869e6b0b0ca26d2615155825e5_m.jpg",
      "amount_comments":199
   },
   {
      "id":6264403,
      "user":{
         "uid":416210,
         "name":"Silvia Mgar",
         "first_name":"Silvia",
         "last_name":"Mgar",
         "profile_picture":"https://storage.ws.pho.to/photolab_user_pics/f_10214080678155239.jpeg",
         "me":{
            "is_owner":false,
            "is_following":false,
            "is_followed":false
         },
         "share_url":"https://photolab.me/u/416210?utm_source=app",
         "social":{
            "fb":{
               "id":"10214080678155239"
            }
         },
         "community_effects":false,
         "following":14,
         "followers":12,
         "likes":0
      },
      "created_at":"2018-10-28T09:27:50Z",
      "likes":29232,
      "me":{
         "is_owner":false,
         "liked":false,
         "bookmarked":false
      },
      "content":[
         {
            "aspect":0.75,
            "crop":[
               0,
               0.055,
               1,
               0.946
            ],
            "fixed":false,
            "flip":0,
            "rotation":0,
            "url":"https://storage.ws.pho.to/s2/ab854aa1c81c1267d343b48fb99083965945d1b9_m.jpeg",
            "original_size":{
               "width":534,
               "height":712
            },
            "original_url":"https://storage.ws.pho.to/s2/ab854aa1c81c1267d343b48fb99083965945d1b9.jpeg"
         }
      ],
      "content_preview":{
         "aspect":0.75,
         "url":"https://storage.ws.pho.to/s2/ab854aa1c81c1267d343b48fb99083965945d1b9_m.jpeg",
         "original_size":{
            "width":534,
            "height":712
         }
      },
      "steps":[
         {
            "type":"template",
            "id":2254
         },
         {
            "type":"template",
            "id":1201
         },
         {
            "type":"template",
            "id":2306
         },
         {
            "type":"template",
            "id":2344
         },
         {
            "type":"text",
            "properties":{
               "color":"#B2979797",
               "style_id":1,
               "text":"SilVia M",
               "angle":0,
               "font":"Lovely Home",
               "rectangle":[
                  0.005639367,
                  0.97776467,
                  0.15383276,
                  0.9977646
               ]
            }
         }
      ],
      "result_size":{
         "width":534,
         "height":712
      },
      "share_url":"https://photolab.me/d/6264403?utm_source=app",
      "children_url":"https://photolab.me/c/6264403?utm_source=app",
      "parent_id":0,
      "original_id":6264403,
      "amount_children":134,
      "description":"#photolab#silviam#selfie#artistic#romantic#summer#flowers #makeup #beautiful #cooleffect#colourfull",
      "result_url":"https://storage.ws.pho.to/s2/fc0230e68f4a682c709e5ec9884e2753d2cdcc91_m.jpeg",
      "amount_comments":20
   }
]

Ответ представляет собой массив объектов. Каждый объект содержит информацию об одной комбинации. В частности, интерес представляют следующие поля

  • id - id комбинации
  • user - информация об авторе-создателе комбинации
    • uid - id пользователя
    • name - человекочитаемое полное имя пользователя
    • profile_picture - URL аватары пользователя.
  • created_at - дата и время создания комбинации
  • likes - количество лайков
  • content_preview / url - исходное фото, использованное для получения preview
  • result_url - результат работы комбинации на фото, указанном в content_preview / url
  • share_url - URL комбинации для расшаривания в соц. сетях.
  • description - описание комбинации
  • amount_comments - количество комментариев.

Трендовые

Список комбинаций, набирающих популярность в текущий момент времени, доступен по URLу https://photolab.me/api/feed/trending и может быть получен запросом.

curl -F key=v6CbLECJv2CMnq5t -X GET https://photolab.me/api/feed/trending

Формат ответа совпадает с форматом для выдачи “Лучшие”

Поиск популярных по тэгу

Для поиска самых популярных комбинаций по заданному тэгу, следует воспользоваться запросом вида

 
curl -F key=v6CbLECJv2CMnq5t -X \
GET https://photolab.me/api/search/feed/best?q={query}

где {query} - тэг для поиска

Формат ответа совпадает с форматом для выдачи “Лучшие”.

Поиск новых по тэгу

Для поиска самых новых комбинаций по заданному тэгу, следует воспользоваться запросом вида

curl -F key=v6CbLECJv2CMnq5t -X \
GET https://photolab.me/api/search/feed/recent?q={query}

где {query} - тэг для поиска

Формат ответа совпадает с форматом для выдачи “Лучшие”