Skip to content

Instantly share code, notes, and snippets.

@jellyninjadev
Last active August 29, 2015 14:04
Show Gist options
  • Save jellyninjadev/4ddd4275fcac398844c1 to your computer and use it in GitHub Desktop.
Save jellyninjadev/4ddd4275fcac398844c1 to your computer and use it in GitHub Desktop.

API

Коды ошибок

Коды ошибок соответствуют стандарту RFC 7231 если не описаны иначе.

status_code: 200 – OK 400 – Bad request 404 – Not Found 500 - Internal server error

Сущности

Список произведений аудио или музыка или аудио и музыка

offset - смещение с начала массива композиций (offset=0 - начало) limit - количество передаваемых композиций type - тип, бывает 2 видов audio и music (можно комбинировать) на каждой странице iphone по 20 композий на каждой странице iPad по 56 композий

Для новых произведений

GET http://media.predanie.ru/api/mobile/v1/compositions/new/?type=audio,music&offset=20&limit=20

Для популярных произведений

GET http://media.predanie.ru/api/mobile/v1/compositions/popular/?type=audio,music&offset=20&limit=20

Для рекомендуемых произведений

GET http://media.predanie.ru/api/mobile/v1/compositions/favorites/?type=audio,music&offset=20&limit=20

Поисковый запрос по произведениям

GET http://media.predanie.ru/api/mobile/v1/compositions/?search=книга&offset=20&limit=20

При поиске выдаются только произведения содержащие аудио или музыку, треки и авторы не выдаются.

Список произведений по категории (категории описаны ниже)

GET http://media.predanie.ru/api/mobile/v1/compositions/?id_category=1234&offset=20&limit=20

Response

{
	"status_code" : 	200,								//код ошибки, желательно дублировать и здесь помимо средств http
	"count": 156,										//общее количество произведений запроса
	"compositions": [
		{
			"id" : "1001", 								//id произведения
			"name" : "Путь разума в поисках Истины", 	//имя произведения	
			"desc": "«Оливер!» — музыкальный художественный фильм...",
      	 	"author_name" : "Профессор А.И. Осипов",	//имя автора
    	 	"img_s"  : "http://dir/dir/img_s.jpeg"		//путь к уменьшенной картинке произведения
		},
		{
			"id" : "1002", 			
			"name" : "Основы Православной веры ",
			"desc": "«Оливер!» — музыкальный художественный фильм...", 		
      	 	"author_name" : "Николай Евграфович Пестов",	
    	 	"img_s": "http://dir/dir/img_s.jpeg"
		},
		 {...},
	]
}

пример ответа, когда offset >= count (определить на месте что испльзовать > или >=)

{
	"status_code" : 	404,			
	"message": "Compositions not found"
}

Получение баннера

Примечание для iOS разработчика

Баннер получается при каждом 5-м запросе на сервер, начиная с 1-го. Баннер отображается внизу экрана только на списках композиций. В приложении мы считаем количество всех запросов по спискам композиций (GET http://media.predanie.ru/api/mobile/v1/compositions/....)

GET http://media.predanie.ru/api/mobile/v1/banner/?type=iphone

GET http://media.predanie.ru/api/mobile/v1/banner/?type=ipad

параметр может быть iphone или ipad, т.е. мы можем запросить или баннер для iPhone или iPad (в дальнейшем возможно будут заправшиваться отдельные баннера для Android)

сервер случайным образом возвращает баннер из базы баннеров для мобильных приложений

Response

{
	 "url":"http://ya.ru/",			//путь по которому перейдёт пользователь кликнувший на баннер, открывается в браузере
	 "img": "http://ya.ru/1.png",	//путь к картинке баннера
	 "height": 100					//высота баннера в пикселях
}

Конкретное произведение

GET http://media.predanie.ru/api/mobile/v1/composition-single/?composition_id=1234

Response

{
  "respond" : {
    "error_code" : "200",
    "data" : {
    	"id":  1,							//id произведения
		"name":  "Догвилль",				//имя произведения
	 	"desc":  "Визуальный ряд...",		//описание произведения
		"author_id": 254,					//id автора
		"author_name": "Достоевский",		//название автора композиции
		"img_medium": "http://ya.ru/2.png",	//ссылка на среднее изображение произведения
		"img_big": "http://ya.ru/3.png",	//ссылка на большое изображение произведения
		"topics": [							//массив тем (категорий)
			{
	 			"topic_id": 13, 			//id темы
				"topic_name": "Кино"		//имя темы
			}, 
			{...}
		],			
		"forms": [							//массив форм
			{
	 			"form_id": 12, 				//id формы
				"form_name": "Лекции"		//имя формы 
			}, 
			{...}
		],				
		"genre": [							//массив жанров
			{
	 			"genre_id": 7, 				//id жанра
				"genre_name": "Лекции"		//имя жанра 
			}, 
			{...}
		],							
      "tracks" : [
        {
          "parent" : "t0003005_1",
          "id" : "t0003005_1_1",
          "name" : "Действие 1",
          "time" : 2178,
          "url" : "http:\/\/big.predanie.ru\/music\/Classical_music\/Rimskiy-Korsakov\/Skazanie_Kitezh_Fevronia\/kitezh01.mp3"
        },
        {
          "parent" : "t0003005_1",
          "id" : "t0003005_1_2",
          "name" : "Действие 2",
          "time" : 1813,
          "url" : "http:\/\/big.predanie.ru\/music\/Classical_music\/Rimskiy-Korsakov\/Skazanie_Kitezh_Fevronia\/kitezh02.mp3"
        },
        {
          "parent" : "t0003005_3",
          "id" : "t0003005_3_1",
          "name" : "Действие 3",
          "time" : 3789,
          "url" : "http:\/\/big.predanie.ru\/music\/Classical_music\/Rimskiy-Korsakov\/Skazanie_Kitezh_Fevronia\/kitezh03.mp3"
        },
        {
          "parent" : "t0003005_5",
          "id" : "t0003005_4_1",
          "name" : "Действие 4",
          "time" : 3423,
          "url" : "http:\/\/big.predanie.ru\/music\/Classical_music\/Rimskiy-Korsakov\/Skazanie_Kitezh_Fevronia\/kitezh04.mp3"
        }
      ],
      "parts" : [
        {
          "id" : "c0003005_1",
          "img" : "http:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/b\/b3\/Ivan_Bilibin_151.jpg\/220px-Ivan_Bilibin_151.jpg",
          "name" : "акт 1",
          "id_parent" : "0",
          "desc" : "Опера открывается увертюрой..."
        },
        {
          "id" : "c0003005_2",
          "img" : "http:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/b\/b3\/Ivan_Bilibin_151.jpg\/220px-Ivan_Bilibin_151.jpg",
          "name" : "акт 2",
          "id_parent" : "0",
          "desc" : "Акт 2 после антракта и горячего чая"
        },
        {
          "id" : "c0003005_3",
          "img" : "",
          "name" : "Действие 3",
          "id_parent" : "c0003005_2",
          "desc" : "В Великий Китеж приходит страшная весть ..."
        },
        {
          "id" : "c0003005_4",
          "img" : "http:\/\/predanie.ru\/download\/iblock\/a90\/Rimsk_Korsakov100x100.png",
          "name" : "Действие 4",
          "id_parent" : "c0003005_2",
          "desc" : "Гришка и Феврония идут по лесу..."
        }
      ],
    }
  }
}

Список авторов и поиск по авторам

GET http://media.predanie.ru/api/mobile/v1/author/?letter=А

возвращает всех авторов на данную букву

GET http://media.predanie.ru/api/mobile/v1/author/?search=Пушкин&offset=0&limit=100

если count>100 то при проматывании вниз пошлётся новый запрос с offset=100

при поиске выдаются только авторы

Response

{
	"status_code" : 	200,			
	"count": 100,									//количество найденных авторов
	"data": [
		{
			"id": "5001", 							//id автора
			"name" : "Пушкин Александр Сергеевич",	//имя автора
			"img":"http://ya.ru/pushkin_small.jpg"	//маленькая картинка автора (нигде не используем, на всякий случай), если её в БД нет, то не возвращать
		},
		{...}
	]
}

Конкретный автор

GET http://media.predanie.ru/api/mobile/v1/author/?author_id=5001

Response

{
	"status_code" : 	200,			
	"id" : "5001", 									//id автора	
	"name" : "Пушкин Александр Сергеевич",			//имя автора
	"years":  "1799 - 1837",						//годы жизни
	"img": "http://ya.ru/pushkin_medium.jpg", 		//средняя картинка автора
	"desc" : "Пушкин — один из самых популярных лекторов в последние двадцать лет.", //описание автора
	"compositions": [								//связанные с ним произведения
		{
			"id" : "1001", 								//id произведения
			"name" : "Путь разума в поисках Истины", 	//имя произведения	
      	 	"author_name" : "Профессор А.И. Осипов",	//имя автора (можно не отдавать - как будет удобнее) т.к. мы и так знаем его имя *прим. для серверного разработчика
    	 	"img_s"  : "http://dir/dir/img.jpeg",		//путь к уменьшенной картинке произведения
		},
		{
			"id" : "1002", 			
			"name" : "Основы Православной веры ", 		
      	 	"author_name" : "Николай Евграфович Пестов",	
    	 	"img_s": "http://dir/dir/img.jpeg",
		},
		{...}
	]
}

Каталоги

Уровень вложенности максимум одинарный

GET http://media.predanie.ru/api/mobile/v1/catalog/

Response

{
	"categories": [									//массив категорий
		{
			"id_category": 102,						//идентификатор категории
			"id_parent": 0,							//идентификатор родительской категории
			"name": "Жития святых, биографии",		//название категории
			"categories" : [						//вложенные подкатегории
				{
					"id_category": 256,				//идентификатор категории
					"name": "Патерики, сборники"	//название категории
				},
				{...}
			]
		},
		{...}
	]
}

размеры для произведения такие formats: tiny: { width: 105 , quality: 95 } middle: { width: 200 , quality: 95 } big: { width: 640 , quality: 95 } редактора стараются делать для произведения минимум 640х480 - не знаю насколько у них получается придерживаться этого правила

@igorRovenki
Copy link

"img": "http://ya.ru/pushkin_medium.jpg", //средняя картинка автора
у нас на данный момент есть только маленькая (width 100px) и большая (width 300px)
какую лучше?

@jellyninjadev
Copy link
Author

medium - 100px
big - 300px

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment