Meows.app — клиент для Apple Music

Сначала я радовался Apple Music, потом пользовался по привычке — и в какой-то момент он меня начал раздражать. Нормальный человек воспользовался бы другим сервисом или просто смирился, но я — программист. Так на свет родилась идея написать свой клиент для Apple Music, в результате появился Meows.app.

В закладки
Аудио
Meows.app

Вступление

Самое главное ожидание от Apple Music — это возможность послушать новую музыку, хорошую новую музыку. Эту самую новую музыку я искал и в рекомендациях, и в топовых плейлистах и просил друзей расшарить мне что-нибудь новенькое.

Главные проблемы и задачи на старте работы

Три основных плейлиста рекомендаций — «Новая музыка», «Мои любимые треки», «Чилаут-микс» — обновляются один раз в неделю в разные дни, причём музыка там чаще всего была не очень для меня.

Логика подсказывала мне, что для улучшения рекомендаций мне надо активнее «лайкать» (Love) и «дизлайкать» (Dislike) песни, но Apple сделала это действие совсем не простым, а ещё я постоянно вынужден слушать песни, которые дизлайкнул. Показывать статус песни (Love, Dislike) Apple тоже не стремится.

Для изменения рейтинга нажать на три точки

С рекомендациями не повезло, но ведь есть ещё популярные плейлисты, скажете вы и будете отчасти правы, но есть два момента:

  • Эти плейлисты не так просто найти.
  • Российский топ — это очень своеобразный для меня список песен, а сменить страну Apple не позволяет.

В Apple Music сложно искать новую музыку.

На компьютере спасала возможность запустить скрипт пролистывания Dislike-песен, но поиску новых это не помогало, да и кнопки рейтинга запрятаны так же далеко.

Мотивация

Это далеко не первый проект, который я начал делать с пламенем в глазах, но один из немногих доведённых до релиза. Если честно — аж второй! Чтобы повысить шансы на успех, я поставил перед собой цель, вызов, челлендж — создать ИТ-продукт с помощью ежедневной работы: я каждый день делаю что-то «полезное» и пишу о проделанном.

Сразу я писал в Telegram, затем перешёл на Medium — 18 января 2019 года был написан первый отчёт, 19 января я купил доменное имя Meows.app, публичное бета-тестирование запустил 15 февраля. И 26 июля 2019 года я наконец-то опубликовал первую релизную версию приложения.

Техническая часть

Я вообще ни разу не мобильный разработчик, но так получилось, что примерно в это же время был релиз Flutter и я уже три-четыре месяца ковырял «Hello world» на нём, технология мне нравилась, так что писать новый плеер для Apple Music решил на Flutter.

Технические детали проекта:

  • Код на GitLab.
  • Kubernetes-кластер.
  • Оркестрация: Rancher 2.
  • Бэк: .Net Core.
  • Фронт: Angular Universal (восьмой версии).
  • База: MongoDB в кластере replicaset.
  • Мобильный клиент: Flutter (сейчас только iOS).

Самые долгие технические проблемы были с переходом на Kubernetes для серверов и выбором State Management (управление состоянием) для Flutter — выбор пал на BLoC . Для ускорения работы с кодом я написал плагин для VsCode, который теперь экономит мне (и, надеюсь, не только мне) много времени и сил, хотя процесс развития кода стандартного шаблона страницы приложения идёт постоянно.

Создать ИТ-продукт с помощью ежедневной работы.

Самое главное и достаточно сложное — это очертить для себя рамки минимальной версии приложения. Поиск золотой середины между стабильностью, функциональностью и временем — кошмар! Постоянно хочется добавить новых возможностей, приходится буквально бить себя по рукам и вовремя останавливаться — и договариваться, что это будет сделано в рамках обновления уже после релиза.

Бесконечный список уступок самому себе. Для борьбы с откладыванием запуска мне хорошо помогает привлечение пользователей — отдаёшь на тестирование, тебе приходят отзывы, предложения, баги, и просыпается жажда — побыстрее выпустить релиз!

Результаты

У меня ещё много идей, но уже сейчас я горжусь результатом работы и пользуюсь Meows.app постоянно. Несмотря на то, что большая часть кода написана мной, огромный вклад в приложение, генерацию идей, переводы, разработку сайта, тестирование и работу с UI/UX — всё это заслуга моей любимой жены — так что наша команда состоит из двух человек!

Чуть не забыл. Ещё я задолбал всех своих друзей: у кого есть iPhone — просил установить бета-версию, а у кого нет — показывал на своём и просил дать обратную связь по работе в приложении. А если серьёзно — они очень помогли, особенно люди не из ИТ, благодаря им приложение стало гораздо дружелюбнее к людям.

Apple Music не отдаёт все плейлисты, даже через API, но я смог вытащить более восьми тысяч уникальных плейлистов, думаю, в скором времени их будет ещё больше. На основе этого списка построен первый экран приложения «Все плейлисты», по ним есть поиск и очень-очень классная кнопка Dice — игральные кости или рандом, она выбирает случайный плейлист из отфильтрованных, в выбранном плейлисте можно ещё раз нажать кнопку Dice для повторного испытания своей удачи.

Ищем рок и включаем рандом!

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

Рекомендации в Apple Music

Именно поэтому в Meows.app есть плейлист «Все рекомендации» и сделан более «обозримый» вариант просмотра плейлистов. Мой плейлист «Все рекомендации» сегодня состоял из 1929 песен.

Рекомендации на одном экране

Кнопки Love и Dislike спрятаны от пользователя, и почти никто их не нажимает или делает это очень редко, так как это совсем неудобно. Соответственно, Apple Music делает рекомендации в основном на основе прослушивания песен — это «подкидывание монетки для решения интегрального уравнения», и результаты оставляют желать лучшего.

Чтобы дать Apple Music больше информации о предпочтениях пользователя, кнопки Love и Dislike вынесены мной на экран проигрывания песни, и теперь Apple гораздо чаще рекомендует мне хорошие песни.

Я даже не догадывался, насколько много плейлистов в Apple Music.

Песни, отмеченные Dislike, будут автоматически исключены из списка воспроизведения — меня это очень спасает в русском «Хиты сегодня», а на основе Love Apple Music обучает свои нейронные сети предлагать вам более приятные для вас треки.

В приложении Meows.app можно выбрать страну для получения песен из плейлистов, собранных для каждой страны отдельно. Большинство таких плейлистов, находится в разделе «Популярные плейлисты». В плейлистах США — много рэпа, японские удивляют иероглифами, а чаще всего я включаю Филиппины.

Популярные плейлисты разных стран

Когда всё надоело и хочу просто приятную музыку — я включаю любимые песни. К сожалению, Apple не отдаёт списки песен пользователя, поэтому чем больше вы пользуетесь Meows.app — тем больше песен с рейтингом мы узнаем.

Любимые и нелюбимые песни

Рейтинги песен в Apple Music — очень интересная тема. Рейтинг песни привязан к SongId, но одна и та же песня может иметь десятки SongId и, соответственно, различных рейтингов, поэтому буквально перед релизом мне пришлось переписать всю работу с рейтингами, теперь песни и рейтинги привязаны к ISRC.

Например, при получении всех рекомендаций бывает около 2000 уникальных песен, на которые приходится около 5000–6000 SongId, по которым необходимо получить рейтинги (ограничение на запрос в 100 id), провести анализ результатов и установить или удалить рейтинги (если на одну песню (ISRC) есть Love и Dislike).

Кстати, нужно ли делать импорт или экспорт данных пользователя? Возможно Spotify, Last.fm или другие сервисы принимают или отдают списки песен?

Попробуйте Meows.app — найдите новую классную музыку для себя и напишите в комментарии своё мнение и идеи.

Спасибо, что дочитали!

P.S. баги и предложения на @gorniv (например, https://t.me/gorniv) или на почту gornivv@gmail.com

не работает iOS13, в новой версии( которая на review) я добавил нормальную обработку ошибки, но реальность такова - Apple сломали авторизацию в бете. Причем у меня даже Shazam на iOS13 не мог подключиться к Apple Music, а он принадлежит Apple... ждем обновления беты. Я, к сожалению, ничего не могу сделать.

UPDATE: в iOS13 beta 5 починили авторизацию, но проигрывание песен все еще глючит, сижу, пытаюсь завести. Может к версии 1.0.1 будут правки)

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Игорь Кравченко", "author_type": "self", "tags": [], "comments": 77, "likes": 48, "favorites": 57, "is_advertisement": false, "subsite_label": "tribuna", "id": 74562, "is_wide": false, "is_ugc": true, "date": "Mon, 29 Jul 2019 07:01:50 +0300" }
{"average":27557,"one":95,"ten":75}
Сколько денег вы откладываете в месяц?
Ответьте и узнаете, сколько копят другие.
0 ₽
70 000+ ₽
0 ₽
{ "id": 74562, "author_id": 113225, "diff_limit": 1000, "urls": {"diff":"\/comments\/74562\/get","add":"\/comments\/74562\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/74562"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199116, "last_count_and_date": null }
77 комментариев

Популярные

По порядку

Написать комментарий...
6

Очень не хватает больше отступов везде. Возможно я просто привык к большим экранам. Но не смотря на это очень хорошее приложение, но ui можно бы довести до дизайна 19 года. Посмотрите dribbble

Ответить
1

Спасибо, дизайн не моя сильная сторона:( я смотрел дизайн на dribbble и на https://www.uplabs.com/ . В основном старался поработать над UX - очень помогли в этом друзья) буду рад любым преложениям - пишити сюда или в личку @gorniv (у меня почти везде такой ник)

Ответить
2

За стек отдельный респект, наконец-то хоть кто-то использовал .net core в "стартапе на коленке")

Ответить
1

.net core прекрасен) огромное комьюнити, множество библиотек, изумительный синтаксис и в «core» хорошая производительность с возможностью засунуть все в docker

Ответить
2

Хотелось попробовать, но к сожалению на iOS 13 бесконечная загрузка при открытии приложения. «Подключите Apple Music для воспроизведения песен и откройте для себя Meows.app»

Ответить
1

Да, есть такая проблема с iOS13, в новой версии( которая на review) я добавил нормальную обработку ошибки, но реальность такова - Apple сломали авторизацию в бете. Причем у меня даже Shazam на iOS13 не мог подключиться к Apple Music, а он принадлежит Apple... ждем обновления беты. Я, к сожалению, ничего не могу сделать.

Ответить
0

в iOS13 beta 5 починили авторизацию, но проигрывание песен все еще глючит, сижу, пытаюсь завести. Может к версии 1.0.1 будут правки)

Ответить
0

в бете https://testflight.apple.com/join/vc45oJWq сделал небольшой фикс для стабилизации проигрывания, но еще подглючтвает - иногда играет всю библиотеку, а не плейлист, иногда перестает вообще играть. К сожалению это проблема именно беты ios13 - ждем фикс)

Ответить
2

Эти задачи для меня решает Soundcloud. Я тону в новой музыке, которая супер как по вкусу. Без российской попсы, боже упаси.

Ответить
0

Soundcloud нацелен на электронику же? А как быть, например, с роком и альтернативой?)

Ответить
0

Не знаю. Да, я любитель Future Bass)

Ответить
2

Самый главный вопрос, работает ли ваше приложение в apple carplay?

Ответить
0

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

Ответить
1

К сожалению, не работает, и это печально. Потому что я (как, скорее всего, и автор предыдущего коммента) музыку с телефону слушаю в основном в машине.

Ответить
2

С одной стороны труд автора достоин уважения. С другой я так и не понял из статьи зачем все это? Если уж не удовлетворены рекомендациями эппл, то не проще ли добавить синхронизацию с ласт.фм и искать новую музыку через них? А кроме того, что будет с прилагой, если эппл в какой то момент поменяет протокол?

Ответить
0

Хотелось нативного решения в Apple. Сначала родилась идея сделать просто кнопки love\dislike, а потом втянулся) Есть надежда, что Apple не будет менять API быстро и внезапно,и в целом с учетом привязки в ISRC я могу перейти на использованием того же Spotify - но там стандартный клиент(как я понимаю) не вызывает боли как у Apple. Apple в ближайший год плеер врятли поменяет, а в iOS13 он стал только хуже - лайк и дизлайк там теперь еще внизу списка(приходиться листать, то есть в три действия)

Ответить
0

Не знал что их порядок можно менять, а по-умолчанию они внизу - спасибо за информацию. Ну и в два действия все таки, без изменения статуса песни(пока не тапнешь на три точки- не знаешь лайкал или нет). Ну и пропуск Dislike песен это почти основная функция, которая мне нужна)

Ответить
2

Автор в любом случае молодец, руки не из жопы растут. Я сам разработчик, но мне и в голову не пришла мысль, что можно улучшить стандартное приложение. К сожалению сейчас не попробую (бета айос 13), но как выйдет фикс с исправлением, поюзаю обязательно. Сам иногда ловлю себя на мысли "что бы послушать нового", но спасаюсь радио )))

Ответить
1

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

Как же тогда их приложение работает?

Я разбирал протоколы я.радио и я.музыки,там более чем прилично и возможностей больше, чем надо.

Ответить
2

у них не весь API открыт =( они даже картинку артиста не отдают...

Ответить
2

Как это по-яблоковски, да и MS тоже так делал.

Ответить
0

Так оф. приложению ведь все открыто, разве нет?
Реверс, mitm - и вперед.

У авито вообще официальное апи это совсем не то апи, по которому общается приложение. Но это не мешает вообще ничему.

Ответить
3

использование закрытых частей api apple грозит баном, так что я не стал встраивать это в приложение, ну а плейлисты я через снифер и получил, у них достаточно жестокие запросы и их безопасность, так что приятного там мало.

Ответить
1

а вариант поиска через iTunes? API iTunes отдает обложки и те же данные, даже айдишники совпадают

Ответить
0

Возможно я что-то пропустил, но я там не нашел возможности получения всех плейлистов, а через поиск надо еще правильные поисковые слова подобрать, хотя я подумаю над этим вариантом, спасибо. Использую https://developer.apple.com/musickit/

Ответить
1

"они даже картинку артиста не отдают.." - я к этому про API написал. Там это точно есть

Ответить
1

"...а потом он узнал что есть Spotify"

Ответить
1

он официально не доступен в России, но я собираюсь его поставить и перетянуть лучшее к себе) Может подскажите, что нравится в Spotify?

Ответить
5

Все. В основном рекомендации. Лучшие из всех сераисов

Ответить
2

Примерно по пол года пользовался Яндекс музыкой, Deezer, Эппл музыкой и Spotify в итоге остановился на Спотифае. Рекомендации субъективно самые лучшие. Эргономика самого приложения наиболее удобна и интуитивна (Не идеальна но в трёх других приложениях было гораздо больше вещей, которые меня раздражали). Яндекс одно время нагло сдирал спотифаевский дизайн, и даже жаль, что не всё лучшее содрал.

Ответить
0

обещаю постараться содрать лучшее) в ближайшее время займусь.

Ответить
1

Приветственная страница огорчила, не понимаю, по какой причине такая ошибка. Дизайн простой, есть над чем работать, но smooth and clean. Поиск из меню по свайпу работает, а поиск с главной — нет. Планируется функцию фидбэка прикрутить?

Ответить
1

над дизайном еще работать и работать) про свайп не очень понял :(
Функция фидбэка будет и думаю скоро. Идей и задач море, просто хотелось уже как-то зафиксировать результат.
Возможность ошибки понимаю, хотя на повтор должна отработать - там отдается статика из трех датацентров в разных точках мира. И цвета странные, окно ввода не должно так выделяться. У меня сейчас отработало :( Подскажите, пожалуйста, телефон и какие настройки (особенные, если есть)?

Ответить
1

У меня после неоднократного рефреша остаётся ошибка на главной странице.
IPhone 6s iOS 12.4 (16G5077a) (бета), vpn не подключён в данный момент, страну я выбрал UK.

Ответить
0

остальное работает? вкладки "Недавние(Recent)" и любимые(Love) работают?

Ответить
0

Работают вкладки Recent, Current, Top Playlists и Recommendations, остальное http error и exception пишет :(

Ответить
0

я там немного сервера улучшил и перегрузил, попробуйте сейчас, пожалуйста.

Ответить
1

К сожалению, без изменений пока.
Буду периодически тестить.

Ответить
0

Всё летает 👌🏻

Ответить
1

Пожалуйста, не выводите скриншоты в ленту, они выглядит слишком тяжеловесно

Ответить
1

Сори) я думал, это я чот-то не-то нажал) В свою защиту - я все скрины специально пережимал через https://tinypng.com/

Ответить
0

если у вас Mac, могу скинуть скрипт для Automator для этих целей)

Ответить
0

mac, было бы здорово.

Ответить
1

https://yadi.sk/d/xPptUjx05iAbpw
Скрипт ресайзит до нужного размера > переводит в .jpg > делает его прогрессивным

Работает с помощью ImageMagick, поэтому сначала надо установить через порты это расширение и после сама задача будет работать без проблем.
https://imagemagick.org/script/download.php#macosx

Ответить
1

Текст на лэндинге звучит читается сложно и местами неправильно:

We have collected more than eight thousands of playlists on one screen, so you can quickly find the right or to try their luck and to listen to a random playlist from the filtered

We've collected more than eight thousand playlists on one screen. Quickly find the right one or to try your luck with a random playlist (from the filtered(???))

We created a separate playlist only 'Love' songs, for your convenience

We've created a separate playlist just with 'Love' songs. For your convenience 😉

You can listen to popular playlists from any of the countries in which is available Apple Music: Australia, Asia, America, Africa, Europe - we need only change the country settings

You can listen to popular playlists from any place where Apple Music is available: Australia, Asia, America, Africa, Europe - just change the country settings

Ответить
1

спасибо большое, займусь вычеткой, последнюю неделю у меня настоящий дурдом. Я уже запутался, где тексты вычитвывали, а где просто через переводчик, так как в самом приложении 18 языков и 14 переводов для App Store =(

Ответить
1

красава 💪

Ответить
1

Более 2к рекомендаций 😊

Ответить
1

Поставил, попробую.

Ответить
1

Будет на андроид ?

Ответить
0

Будет! Apple выпустили официальный SDK - там конечно жесть, документации почти нет, для работы требуется Apple Music на андройд, но будет) Я уже смотрел и даже немного прикручивал, но там есть проблемы со сборкой проекта под Android при подключенном SDK

Ответить
1

За новой музыкой - welcome на SoundCloud

Ответить
1

Явно не хватает дизайнера, чтоб сделать красиво и по гайдлайну

Ответить
0

это MVP, еще доведем до ума)

Ответить
1

Да, не хватает нормального дизайна. Дизайн дает первое впечатление, и потом позволяет временно закрыть глаза на недочеты и ошибки. Но 5 звёзд поставил.

Ответить
0

спасибо, над дизайном будем работать)

Ответить
0

Я только и того что прошёл курс по питону на степике, но даже мне ума хватило разобраться в том, что яндекс музыка будет получше, в плане ранжирования, хоть и не живет в экосистеме апл. яндекс в этом сегменте тащит. Прошу не воспринимать, как рекламу это мнение субъективно и не претендует на общественное.

Ответить
0

к сожалению у Yandex есть не все песни, если мы берем зарубежную музыку - то Apple лидер по количеству доступных песен. Ну и как я написал в самом начале: "Нормальный человек воспользовался бы другим сервисом или просто смирился, но я — программист" :D + я живу в экосистеме Apple и хочешь сделать хорошо - сделай это сам)

Ответить
0

👨🏻‍💻да уж эта экосистема... она настолько хороша, что и переписать представление об эпл Мьюзик не грех 💁‍♀️

Ответить
0

К сожалению, с сайта не могу даже перейти в стор. У меня одной такие проблемы?

Ответить
0

у себя проверил - работает. Внизу статьи есть прямая ссылка на App Store (https://apps.apple.com/ru/app/id1447818958 ). Спасибо.

Ответить
1

Прошу прощения, айпад, видимо, немного глючит:)
Спасибо

Ответить
0

Интерфейс жесть, смысл было юзать флаттер, если подобное приложение на том же свифте запилить было бы не так уж сложно, но зато интерфейс был бы нативный, причем без какой либо кастомизации, а так андроид элементы на iOS, ну оно такое +, судя по всему, в лайаут гайды флаттерн не умеет, отсюда на монобровых все выглядит совсем уж криво.

Ответить
0

Flutter мне удобнее чем тот же swift, и там есть потрясная функция hotreload... Задачи делать нативный интерфейс у меня не было, основной смысл не в дизайне, а в функциональности. Merial вполне нормален, а позже что-нибудь решу, это все такие проект в первую очередь для себя и для получения реального опыта. У меня нет иллюзий, что это супер пупер или я на этом заработаю :D К тому же в этом году Apple выпустили официальный SDK для Android - так что я еще запущу Android версию, просто руки нативную часть не дошли написать (авторизация и плеер)
Монобровь буду смотреть - но вроде бы там нормально смотрелось.

Ответить
1

Merial вполне нормален

Очень странно слышать такое от человека с iOS устройством) Ну да фломастеры разные)
На счет монобрового, отступы снизу + белая полоса в списках. Списки, кстати, тоже подлагивает на XR, походу как то связано с анимацией проявления картинки.

Ответить
0

Насчет подлагивания - там возможно мой косяк, в следующей версии надеюсь будет норм(уже на review). Контрол картинки планирую переписать с оптимизациями, но руки еще не дошли(
Отступы проверю(сам с 8 plus хожу, так что или имулятор или друзья)
Спасибо

Ответить
0

зачем изобретать колесо, если есть Spotify?

Ответить
0

ну вот поставить другую страну в Apple Store - это так себе история. Официально они у нас не работают, а потом я втянулся)

Ответить

Комментарий удален

0

С чем связано, что не подгружает Meows.app?

Ответить
0

если у вас iOS13 - то там сейчас проблема в бете(добавил информацию в статью), если нет, то напишите подробности в почту или личные сообщения(телеграмм, фейсбук, вконтакте) Спасибо.

Ответить
0

Заче чинить эплл музыку, если есть спотифай? Сервис с лучшей системой рекомендаций

Ответить
0

1) Не хочу менять страну App Store(официально нет в России).
2) Аудиторий Apple Music более 50 млн. человек, есть ощущение что не один я так страдал...
3) Почему бы нет?

Ответить
–1

Хосподи, ну и говнище, будто Симбиан возродили 🤦🏻‍♂️

Ответить
0

P. S. Отступы, размеры шрифта, положение текста в некоторых местах, цвета, свечения, тени, иконки 🤦🏻‍♂️🤦🏻‍♂️🤦🏻‍♂️

Ответить
0

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

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Голосовой помощник выкупил
компанию-создателя
Подписаться на push-уведомления
{ "page_type": "default" }