SportsEvents - Modelling, Best Practices and Sample Feed

Определение

SportsEvent – это тип объекта, представляющий спортивную игру или ее полную запись.

Какие события можно размечать как SportsEvent? Спортивная игра
Что нельзя размечать как SportsEvent?

Короткие видео, клипы и дополнительный контент. Вот список:

  • Случайные повторы или короткие клипы
  • Предварительные версии игры
  • Лучшие моменты игры
  • Ляпы в играх
  • Фрагменты интервью с игроками
  • Закулисные видео
  • Обзоры игр (созданные пользователями или иные).
  • Случайные короткие клипы из игры

Как работать с дополнительным контентом?

Примеры использования разметки SportsEvent

S.No. Описание Обязательные объекты
Пример 1

Мне нужно смоделировать SportsEvent, который входит в мой каталог телеканалов и транслируется онлайн.

Игра транслируется через интернет и не привязана к какому-либо каналу.

SportsEvent, представляющий игру.

BroadcastEvent, представляющий трансляцию игры.

Пример 2 Мне нужно смоделировать SportsEvent, который входит в мой каталог онлайн-телевидения и транслируется онлайн на канале.

SportsEvent, представляющий игру.

BroadcastEvent, представляющий трансляцию игры.

BroadcastService, Organization, TelevisionChannel, CableOrSatelliteService – объекты, представляющие канал и линейку.

Пример 3 Комбинации двух предыдущих случаев. Если вы объединяете описанные выше варианты использования, укажите все типы объектов, перечисленные в соответствующем столбце "Обязательные объекты".

Рекомендации и информация о некоторых проверках, которые мы выполняем

Ниже приведены рекомендации и проверки качества, которые применяются при моделировании спортивных событий и их трансляций.

Применяйте следующие правила ко всем интеграциям SportsEvent:

  • Размещайте все ссылки на контент в приложении, связанные со спортом, в объектах SportsEvent.potentialAction. Ссылки на контент в приложении на уровне игры (WatchAction) – как для прямых трансляций без каналов, так и для повторов видео по запросу – должны находиться исключительно в объекте SportsEvent (SportsEvent.potentialAction). Никогда не размещайте potentialAction в объекте BroadcastEvent, который ссылается на SportsEvent. BroadcastService.potentialActionЕсли у игры несколько трансляций (например, региональные, домашние или выездные, на разных языках или отдельные URL для прямых трансляций и видео по запросу), укажите массив объектов WatchAction в SportsEvent.potentialAction.
  • Период до начала трансляции (availabilityStarts). Установите значение SportsEvent.potentialAction.actionAccessibilityRequirement.availabilityStarts не менее 14 дней до SportsEvent.startDate (availabilityStarts <= SportsEvent.startDate - 14 days), чтобы карточки предстоящих игр и уведомления о начале трансляции появлялись заранее. Объект фида не нужно отправлять за 14 дней. Данные о событии можно передать ближе к дате игры, если временная метка availabilityStarts установлена не позднее чем за 14 дней до SportsEvent.startDate.
  • Буфер на случай дополнительного времени (availabilityEnds). Установите значение SportsEvent.potentialAction.actionAccessibilityRequirement.availabilityEnds после SportsEvent.endDate с буфером не менее 2–3 часов (availabilityEnds >= SportsEvent.endDate + 2 to 3 hours или до конца окна повтора видео по запросу), чтобы ссылка на контент не перестала работать во время дополнительного времени или послематчевого освещения.
  • Требования к @id и url:
    • Используйте разные значения @id. Значение BroadcastEvent.@id должно отличаться от SportsEvent.@id.
    • Не указывайте свойство url. Не добавляйте свойство url в объекты BroadcastEvent или SportsEvent.
S.No. Обязательные объекты Правила
Пример 1

Мне нужно смоделировать SportsEvent, который входит в мой каталог телеканалов и транслируется онлайн.

Игра транслируется через интернет и не привязана к какому-либо каналу.

Обязательные объекты

  • SportsEvent, представляющий игру
  • BroadcastEvent, представляющий трансляцию игры

Рекомендации по моделированию

Вариант 1. Игра доступна только в прямом эфире (и не входит в каталог видео по запросу)

  • Добавьте объект BroadcastEvent, чтобы указать расписание трансляции. При этом сошлитесь на игру с помощью BroadcastEvent.broadcastOfEvent и укажите страну трансляции в BroadcastEvent.location.
  • Укажите ссылку на контент в объекте SportsEvent, используя свойство SportsEvent.potentialAction (с настроенным 14-дневным периодом до начала трансляции availabilityStarts и буфером на случай задержки 2–3 часа availabilityEnds).
  • Не указывайте BroadcastEvent.potentialAction, BroadcastEvent.url или SportsEvent.url.
  • Не указывайте BroadcastEvent.publishedOn, если игра транслируется онлайн без линейного канала.

Вариант 2. Игра доступна в прямом эфире и в каталоге видео по запросу (например, когда полные записи игр остаются доступными по запросу)

  • Добавьте объект BroadcastEvent, чтобы указать расписание каждой трансляции (со ссылкой на BroadcastEvent.broadcastOfEvent и указанием BroadcastEvent.location).
  • Объедините воспроизведение трансляции и видео по запросу в одном объекте SportsEvent.potentialAction. Для этого можно продлить период availabilityEnds до конца периода видео по запросу, если URL и права доступа совпадают, или указать несколько объектов WatchAction в объекте SportsEvent.potentialAction с соответствующими периодами actionAccessibilityRequirement.
  • Не указывайте свойства BroadcastEvent.potentialAction, BroadcastEvent.url, SportsEvent.url и BroadcastEvent.publishedOn.

Проверка качества

  • Задайте для свойства BroadcastEvent.isLiveBroadcast логическое значение true (без кавычек), если игра транслируется в прямом эфире. Для запланированной трансляции повтора укажите значение false.
  • Для объектов типа BroadcastEvent, которые не опубликованы, значение BroadcastEvent.startDate не должно быть раньше SportsEvent.startDate.
  • Добавьте свойство parentOrganization (с URL sameAs из Википедии) в оба типа: homeTeam и awayTeam.
Пример 2

Мне нужно смоделировать SportsEvent, который входит в мой каталог онлайн-телевидения и транслируется на канале.

Обязательные объекты

  • SportsEvent, представляющая игру.
  • BroadcastEvent, представляющий трансляцию игры.
  • BroadcastService, Organization, TelevisionChannel, CableOrSatelliteService объекты, представляющие канал и линейку.

Рекомендации по моделированию

Вариант 1. Игра доступна только в прямом эфире на телеканале (и не входит в каталог видео по запросу)

  • Добавьте объект BroadcastEvent, чтобы указать расписание трансляции. При этом свойство BroadcastEvent.publishedOn должно указывать на объект BroadcastService, свойство BroadcastEvent.broadcastOfEvent – на объект SportsEvent, а свойство BroadcastEvent.location – на страну трансляции.
  • Предоставьте объекты BroadcastService, Organization, TelevisionChannel и CableOrSatelliteService, чтобы представить канал и линейку, со ссылкой на контент канала в BroadcastService.potentialAction.
  • Никогда не указывайте BroadcastEvent.potentialAction, BroadcastEvent.url или SportsEvent.url.
  • Если вы также поддерживаете прямую ссылку на контент для определенной игры, укажите ее в свойстве SportsEvent.potentialAction. Если воспроизведение доступно только по ссылке на контент для линейного канала в свойстве BroadcastService.potentialAction, опустите свойство SportsEvent.potentialAction.

Вариант 2. Игра доступна в прямом эфире на канале и в каталоге видео по запросу

  • Чтобы поделиться расписанием трансляций канала, укажите объект BroadcastEvent (со свойствами publishedOn, broadcastOfEvent и location).
  • Укажите объекты BroadcastService, Organization, TelevisionChannel и CableOrSatelliteService, а также ссылку на контент в приложении в свойстве BroadcastService.potentialAction.
  • Никогда не указывайте BroadcastEvent.potentialAction, BroadcastEvent.url или SportsEvent.url.
  • Укажите SportsEvent.potentialAction в объекте SportsEvent для окна воспроизведения на уровне события или видео по запросу.

Проверка качества

  • Установите для BroadcastEvent.isLiveBroadcast логическое значение true (без кавычек), если игра транслируется в прямом эфире, и false, если это повтор.
  • Для объектов типа BroadcastEvent, которые не опубликованы, значение BroadcastEvent.startDate не должно быть раньше SportsEvent.startDate.
  • Добавьте свойство parentOrganization (с URL sameAs из Википедии) в оба типа: homeTeam и awayTeam.

Примеры

Пример 1. Спортивное мероприятие, которое входит в каталог онлайн-телевидения и транслируется в интернете

Трансляция мероприятия

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "BroadcastEvent",
  "@id": "http://example.com/live_event/basketball/professional/final_game_6",
  "name": "2019 Professional Basketball Finals, Game 6: Team A at Team B",
  "description": "Game 6 of the 2019 Professional Basketball Finals. Team A leads the series 3-2 against Team B.",
  "startDate": "2019-09-16T10:00-08:00",
  "endDate": "2019-09-16T13:00-08:00",
  "videoFormat": "HD",
  "isLiveBroadcast": true,
  "broadcastOfEvent": {
    "@type": "SportsEvent",
    "@id": "http://example.com/basketball/professional/final_game_6"
  },
  "location": {
    "@type": "Country",
    "name": "US"
  }
}

Спортивное мероприятие

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "SportsEvent",
  "@id": "http://example.com/basketball/professional/final_game_6",
  "name": "2019 Professional Basketball Finals, Game 6: Team A at Team B",
  "sport": "https://en.wikipedia.org/wiki/Basketball",
  "description": {
    "@language": "en",
    "@value": "Game 6 of the 2019 Professional Basketball Finals. Team A leads the series 3-2 against Team B."
  },
  "startDate": "2019-09-16T10:00-08:00",
  "endDate": "2019-09-16T13:00-08:00",
  "homeTeam": {
    "@type": "SportsTeam",
    "name": "Team B",
    "sport": "https://en.wikipedia.org/wiki/Basketball",
    "parentOrganization": {
      "@type": "SportsOrganization",
      "name": "Professional Basketball League",
      "sameAs": "https://en.wikipedia.org/wiki/Professional_Basketball_League"
    },
    "athlete": [
      {
        "@type": "Person",
        "name": "John Doe"
      }
    ]
  },
  "awayTeam": {
    "@type": "SportsTeam",
    "name": "Team A",
    "sport": "https://en.wikipedia.org/wiki/Basketball",
    "parentOrganization": {
      "@type": "SportsOrganization",
      "name": "Professional Basketball League",
      "sameAs": "https://en.wikipedia.org/wiki/Professional_Basketball_League"
    },
    "athlete": [
      {
        "@type": "Person",
        "name": "Jane Doe"
      }
    ]
  },
  "location": {
    "@type": "Place",
    "name": "Example Stadium",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "1600 Amphitheatre Pkwy",
      "addressLocality": "Mountain View",
      "addressRegion": "CA",
      "postalCode": "94043",
      "addressCountry": "US"
    }
  },
  "identifier": [
    {
      "@type": "PropertyValue",
      "propertyID": "TMS_ID",
      "value": "EP000194303282"
    }
  ],
  "potentialAction": {
    "@type": "WatchAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "http://www.example.com/pbl_finals_game_6?autoplay=true",
      "inLanguage": "en",
      "actionPlatform": [
        "http://schema.org/DesktopWebPlatform",
        "http://schema.org/MobileWebPlatform",
        "http://schema.org/AndroidPlatform",
        "http://schema.org/AndroidTVPlatform",
        "http://schema.org/IOSPlatform",
        "http://schema.googleapis.com/GoogleVideoCast"
      ]
    },
    "actionAccessibilityRequirement": {
      "@type": "ActionAccessSpecification",
      "category": "subscription",
      "availabilityStarts": "2019-09-01T10:00-08:00",
      "availabilityEnds": "2019-09-16T16:00-08:00",
      "requiresSubscription": {
        "@type": "MediaSubscription",
        "name": "Example Package",
        "commonTier": true,
        "@id": "http://www.example.com/example_package"
      },
      "eligibleRegion": [
        {
          "@type": "Country",
          "name": "US"
        }
      ]
    }
  }
}

Пример 2. Спортивное мероприятие, которое входит в каталог онлайн-телевидения и транслируется на канале.

Трансляция мероприятия

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "BroadcastEvent",
  "@id": "http://example.com/live_event/basketball/professional/final_game_6",
  "name": "2019 Professional Basketball Finals, Game 6: Team A at Team B",
  "description": "Game 6 of the 2019 Professional Basketball Finals. Team A leads the series 3-2 against Team B.",
  "startDate": "2019-09-16T10:00-08:00",
  "endDate": "2019-09-16T13:00-08:00",
  "videoFormat": "HD",
  "isLiveBroadcast": true,
  "publishedOn": {
    "@type": "BroadcastService",
    "@id": "http://example.com/stations/example_tv"
  },
  "broadcastOfEvent": {
    "@type": "SportsEvent",
    "@id": "http://example.com/basketball/professional/final_game_6"
  },
  "location": {
    "@type": "Country",
    "name": "US"
  }
}

Спортивное мероприятие

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "SportsEvent",
  "@id": "http://example.com/basketball/professional/final_game_6",
  "name": "2019 Professional Basketball Finals, Game 6: Team A at Team B",
  "sport": "https://en.wikipedia.org/wiki/Basketball",
  "description": {
    "@language": "en",
    "@value": "Game 6 of the 2019 Professional Basketball Finals. Team A leads the series 3-2 against Team B."
  },
  "startDate": "2019-09-16T10:00-08:00",
  "endDate": "2019-09-16T13:00-08:00",
  "homeTeam": {
    "@type": "SportsTeam",
    "name": "Team B",
    "sport": "https://en.wikipedia.org/wiki/Basketball",
    "parentOrganization": {
      "@type": "SportsOrganization",
      "name": "Professional Basketball League",
      "sameAs": "https://en.wikipedia.org/wiki/Professional_Basketball_League"
    },
    "athlete": [
      {
        "@type": "Person",
        "name": "John Doe"
      }
    ]
  },
  "awayTeam": {
    "@type": "SportsTeam",
    "name": "Team A",
    "sport": "https://en.wikipedia.org/wiki/Basketball",
    "parentOrganization": {
      "@type": "SportsOrganization",
      "name": "Professional Basketball League",
      "sameAs": "https://en.wikipedia.org/wiki/Professional_Basketball_League"
    },
    "athlete": [
      {
        "@type": "Person",
        "name": "Jane Doe"
      }
    ]
  },
  "location": {
    "@type": "Place",
    "name": "Example Stadium",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "1600 Amphitheatre Pkwy",
      "addressLocality": "Mountain View",
      "addressRegion": "CA",
      "postalCode": "94043",
      "addressCountry": "US"
    }
  },
  "identifier": [
    {
      "@type": "PropertyValue",
      "propertyID": "TMS_ID",
      "value": "EP000194303282"
    }
  ]
}

Объекты BroadcastService, CableOrSatelliteService, TelevisionChannel и Organization, как описано в разделе Онлайн-телеканал в разделе «Основные понятия».

Как работать с дополнительным контентом?

Что такое дополнительный контент?
  • Случайные повторы или короткие клипы
  • Предварительные версии игры
  • Лучшие моменты игры
  • Ляпы в играх
  • Фрагменты интервью с игроками
  • Закулисные видео
  • Обзоры игр (созданные пользователями или иные).
  • Другие короткие клипы из игры.
S.No. Пример использования Рекомендации по моделированию
Пример 1 В моем каталоге видео по запросу есть дополнительный контент.
  • Такие настройки не поддерживаются и не могут быть указаны в фиде.
  • ViTA. Чтобы узнать больше о ViTA, обратитесь к представителю Google.
Пример 2 В моем каталоге есть дополнительный контент

Вариант 1. Контент доступен для прямой трансляции в интернете

  • Укажите объект BroadcastEvent, чтобы сообщить расписание трансляции.
  • Укажите ссылку на контент в приложении для дополнительного контента, используя свойство BroadcastEvent.potentialAction (это исключение применяется только к отдельному дополнительному контенту, так как в фиде нет объекта SportsEvent).
  • Добавьте метаданные, связанные с клипом, непосредственно в BroadcastEvent . Например, изображения можно добавить с помощью свойства BroadcastEvent.image . Возрастные ограничения можно добавить с помощью свойства BroadcastEvent.contentRating .
  • Поскольку этот тип контента не является SportsEvent, фид не должен содержать объект SportsEvent. Поэтому свойство broadcastOfEvent в объекте BroadcastEvent указывать не нужно.
  • Поскольку он не связан с каналом, не указывайте свойство publishedOn в объекте BroadcastEvent.

Вариант 2. Контент доступен для прямой трансляции в интернете на канале

  • Чтобы поделиться расписанием трансляции, необходимо указать объект BroadcastEvent.
  • Для представления канала и линейки поставщика необходимо указать объекты BroadcastService, Organization, TelevisionChannel , CableOrSatelliteService.
  • Ссылка на контент в игре должна быть ссылкой на контент BroadcastService , представленной свойством BroadcastService.potentialAction , которое необходимо указать.
  • Свойство BroadcastEvent.potentialAction указывать не нужно.
  • Все метаданные, связанные с клипом, должны быть добавлены непосредственно в BroadcastEvent. Например, изображения можно добавить с помощью свойства BroadcastEvent.image. Возрастные ограничения можно добавить с помощью свойства BroadcastEvent.contentRating.
  • Поскольку этот тип контента не является SportsEvent, фид не должен содержать объект SportsEvent. Поэтому свойство broadcastOfEvent в объекте BroadcastEvent указывать не нужно.
  • Поскольку он связан с каналом, укажите свойство publishedOn в BroadcastEvent.
Пример 3 В моем каталоге есть дополнительный контент, доступный как в формате видео по запросу, так и в виде онлайн-телевидения.

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

Часто задаваемые вопросы

Где найти спецификации для упомянутых выше объектов?

Ознакомиться с требованиями можно здесь.

Общая документация Ссылка
SportsEvent Ссылка
BroadcastService, Organization, TelevisionChannel , CableOrSatelliteService Ссылка
BroadcastEvent Ссылка

Есть ли более подробный документ, в котором объясняется, как моделировать онлайн-телеканалы и сетки вещания?

Да. Подробную информацию вы найдете в разделе Канал онлайн-телевидения в разделе «Основные понятия». Если у вас нет доступа к документу, запросите его.

Поддерживает ли ViTA полные трансляции и записи игр?

ViTA поддерживает метаданные для полных прямых трансляций и записей игр, проводимых в рамках лиг, а также для некоторых дополнительных материалов.

  • Если у вас уже есть фид медиадействий, который вы используете в Google, или вы предлагаете видео по запросу или онлайн-телевидение, вам нужно расширить фид и включить в него поддерживаемые типы SportsEvent.

    • В краткосрочной перспективе партнеры могут использовать ViTA для загрузки дополнительного контента. Поддержка всех типов контента в фиде будет реализована в долгосрочной перспективе.
  • Если у вас нет видео по запросу или онлайн-телевидения, а есть только спортивные трансляции и связанный с ними дополнительный контент, ViTA – отличный вариант для начала. Чтобы узнать больше о ViTA, обратитесь к представителю Google.