ProfessionKey
Документация по professionkey. Часть API wrapper для КиноПоиска.
Enum профессий персоны в фильме.
Описание
ProfessionKey представляет различные профессии, которые может иметь персона в фильме согласно Kinopoisk API.
API Endpoint: /api/v1/persons/{id}
Значения enum
Основные профессии
ACTOR- АктерDIRECTOR- РежиссерWRITER- СценаристPRODUCER- ПродюсерPRODUCER_USSR- Продюсер (СССР)COMPOSER- КомпозиторOPERATOR- ОператорEDITOR- МонтажерDESIGN- ХудожникTRANSLATOR- ПереводчикVOICE_DIRECTOR- Режиссер дубляжа
Специальные роли
HIMSELF- В роли самого себяHERSELF- В роли самой себяHRONO_TITR_MALE- За кадром (мужской голос)HRONO_TITR_FEMALE- За кадром (женский голос)UNKNOWN- Неизвестно
Методы
isActor()
Проверяет, является ли профессия актерской.
public function isActor(): boolВозвращаемое значение
bool-trueесли актер,falseв противном случае
Пример использования
if (ProfessionKey::ACTOR->isActor()) {
echo "Актерская роль";
}isDirector()
Проверяет, является ли профессия режиссерской.
public function isDirector(): boolВозвращаемое значение
bool-trueесли режиссер,falseв противном случае
Пример использования
if (ProfessionKey::DIRECTOR->isDirector()) {
echo "Режиссерская работа";
}isWriter()
Проверяет, является ли профессия сценарной.
public function isWriter(): boolВозвращаемое значение
bool-trueесли сценарист,falseв противном случае
Пример использования
if (ProfessionKey::WRITER->isWriter()) {
echo "Сценарная работа";
}isVoiceDirector()
Проверяет, является ли роль режиссёром озвучивания.
public function isVoiceDirector(): boolВозвращаемое значение
bool-trueесли режиссёр озвучивания,falseв противном случае
Описание
Определяет, соответствует ли текущий экземпляр enum константе VOICE_DIRECTOR. Используется для фильтрации персонала по специфической роли в озвучивании фильмов и сериалов.
Пример использования
if ($role->isVoiceDirector()) {
echo 'Это режиссёр озвучивания';
}isComposer()
Проверяет, является ли роль композитором.
public function isComposer(): boolВозвращаемое значение
bool-trueесли композитор,falseв противном случае
Описание
Определяет, соответствует ли текущий экземпляр enum константе COMPOSER. Используется для идентификации людей, ответственных за музыкальное сопровождение фильма или сериала.
Пример использования
if ($role->isComposer()) {
echo 'Этот человек создал музыку к фильму';
}isEditor()
Проверяет, является ли роль редактором.
public function isEditor(): boolВозвращаемое значение
bool-trueесли редактор,falseв противном случае
Описание
Определяет, соответствует ли текущий экземпляр enum константе EDITOR. Используется для определения людей, занимавшихся монтажом и редактированием материала фильма или сериала.
Пример использования
if ($role->isEditor()) {
echo 'Этот человек занимался монтажом';
}isDesigner()
Проверяет, является ли роль дизайнером.
public function isDesigner(): boolВозвращаемое значение
bool-trueесли дизайнер,falseв противном случае
Описание
Определяет, соответствует ли текущий экземпляр enum константе DESIGN. Используется для идентификации специалистов по визуальному оформлению, художников-постановщиков и дизайнеров костюмов.
Пример использования
if ($role->isDesigner()) {
echo 'Этот человек работал над визуальным оформлением';
}isTranslator()
Проверяет, является ли роль переводчиком.
public function isTranslator(): boolВозвращаемое значение
bool-trueесли переводчик,falseв противном случае
Описание
Определяет, соответствует ли текущий экземпляр enum константе TRANSLATOR. Используется для определения людей, ответственных за перевод диалогов и локализацию контента на другие языки.
Пример использования
if ($role->isTranslator()) {
echo 'Этот человек занимался переводом';
}isProducer()
Проверяет, является ли профессия продюсерской.
public function isProducer(): boolВозвращаемое значение
bool-trueесли продюсер,falseв противном случае
Пример использования
if (ProfessionKey::PRODUCER->isProducer()) {
echo "Продюсерская работа";
}getShortName()
Получает краткое название профессии.
public function getShortName(): stringВозвращаемое значение
string- Краткое название профессии
Описание
Возвращает краткое название без дополнительных пояснений.
Пример использования
echo ProfessionKey::HRONO_TITR_MALE->getShortName(); // "За кадром"
echo ProfessionKey::HIMSELF->getShortName(); // "В роли самого себя"getDisplayName()
Получает отображаемое название профессии на русском языке.
public function getDisplayName(): stringВозвращаемое значение
string- Отображаемое название профессии
Описание
Возвращает человекочитаемое название профессии для отображения пользователю.
Пример использования
echo ProfessionKey::ACTOR->getDisplayName(); // "Актер"
echo ProfessionKey::DIRECTOR->getDisplayName(); // "Режиссер"getCategory()
Получает категорию профессии.
public function getCategory(): stringВозвращаемое значение
string- Категория профессии
Описание
Возвращает категорию, к которой относится профессия.
Пример использования
echo ProfessionKey::ACTOR->getCategory(); // "Творческая"
echo ProfessionKey::PRODUCER->getCategory(); // "Управленческая"isCreative()
Проверяет, является ли профессия творческой.
public function isCreative(): boolВозвращаемое значение
bool-trueесли творческая профессия,falseв противном случае
Описание
К творческим профессиям относятся актер, режиссер, сценарист, композитор.
Пример использования
if (ProfessionKey::ACTOR->isCreative()) {
echo "Творческая профессия";
}isManagement()
Проверяет, является ли профессия управленческой.
public function isManagement(): boolВозвращаемое значение
bool-trueесли управленческая профессия,falseв противном случае
Описание
К управленческим профессиям относятся продюсеры.
Пример использования
if (ProfessionKey::PRODUCER->isManagement()) {
echo "Управленческая профессия";
}isTechnical()
Проверяет, является ли профессия технической.
public function isTechnical(): boolВозвращаемое значение
bool-trueесли техническая профессия,falseв противном случае
Описание
К техническим профессиям относятся оператор, монтажер, художник.
Пример использования
if (ProfessionKey::OPERATOR->isTechnical()) {
echo "Техническая профессия";
}isSpecial()
Проверяет, является ли профессия специальной.
public function isSpecial(): boolВозвращаемое значение
bool-trueесли специальная профессия,falseв противном случае
Описание
К специальным профессиям относятся роли самого себя, за кадром, переводчик.
Пример использования
if (ProfessionKey::HIMSELF->isSpecial()) {
echo "Специальная роль";
}Полный пример использования
<?php
require_once 'vendor/autoload.php';
use NotKinopoisk\Client;
use NotKinopoisk\Enums\ProfessionKey;
// Создание клиента
$client = new Client('your-api-key');
// Получение персонала фильма
$personService = $client->persons;
$staff = $personService->getFilmStaff(301); // Матрица
echo "=== Анализ персонала фильма 'Матрица' ===\n";
// Группировка по категориям
$categories = [
'Творческая' => [],
'Управленческая' => [],
'Техническая' => [],
'Специальная' => []
];
foreach ($staff as $member) {
$category = $member->professionKey->getCategory();
if (isset($categories[$category])) {
$categories[$category][] = $member;
}
}
// Вывод статистики по категориям
foreach ($categories as $category => $members) {
if (!empty($members)) {
echo "\n📁 {$category} (" . count($members) . " человек):\n";
// Группировка по профессиям внутри категории
$professions = [];
foreach ($members as $member) {
$profession = $member->professionKey->getDisplayName();
if (!isset($professions[$profession])) {
$professions[$profession] = 0;
}
$professions[$profession]++;
}
foreach ($professions as $profession => $count) {
echo " - {$profession}: {$count}\n";
}
}
}
// Поиск конкретных профессий
echo "\n🔍 Поиск конкретных профессий:\n";
$actors = array_filter($staff, fn($member) => $member->professionKey->isActor());
$directors = array_filter($staff, fn($member) => $member->professionKey->isDirector());
$writers = array_filter($staff, fn($member) => $member->professionKey->isWriter());
$composers = array_filter($staff, fn($member) => $member->professionKey->isComposer());
echo "Актеров: " . count($actors) . "\n";
echo "Режиссеров: " . count($directors) . "\n";
echo "Сценаристов: " . count($writers) . "\n";
echo "Композиторов: " . count($composers) . "\n";Работа с профессиями
// Функция для получения персонала по профессии
function getStaffByProfession(array $staff, ProfessionKey $profession): array {
return array_filter($staff, fn($member) => $member->professionKey === $profession);
}
// Функция для получения персонала по категории
function getStaffByCategory(array $staff, string $category): array {
return array_filter($staff, function($member) use ($category) {
return $member->professionKey->getCategory() === $category;
});
}
// Функция для анализа профессий
function analyzeProfessions(array $staff): array {
$analysis = [
'total' => count($staff),
'categories' => [],
'professions' => [],
'creative' => 0,
'management' => 0,
'technical' => 0,
'special' => 0
];
foreach ($staff as $member) {
$profession = $member->professionKey;
// Подсчет по категориям
$category = $profession->getCategory();
if (!isset($analysis['categories'][$category])) {
$analysis['categories'][$category] = 0;
}
$analysis['categories'][$category]++;
// Подсчет по профессиям
$professionName = $profession->getDisplayName();
if (!isset($analysis['professions'][$professionName])) {
$analysis['professions'][$professionName] = 0;
}
$analysis['professions'][$professionName]++;
// Подсчет по типам
if ($profession->isCreative()) $analysis['creative']++;
if ($profession->isManagement()) $analysis['management']++;
if ($profession->isTechnical()) $analysis['technical']++;
if ($profession->isSpecial()) $analysis['special']++;
}
return $analysis;
}
// Использование
$staff = $personService->getFilmStaff(301);
$analysis = analyzeProfessions($staff);
echo "=== Анализ профессий ===\n";
echo "Всего участников: {$analysis['total']}\n";
echo "Творческих: {$analysis['creative']}\n";
echo "Управленческих: {$analysis['management']}\n";
echo "Технических: {$analysis['technical']}\n";
echo "Специальных: {$analysis['special']}\n";
echo "\nПо категориям:\n";
foreach ($analysis['categories'] as $category => $count) {
echo "- {$category}: {$count}\n";
}Создание отчета о персонале
function createStaffReport(array $staff): string {
$report = "=== ОТЧЕТ О ПЕРСОНАЛЕ ФИЛЬМА ===\n\n";
// Основные творческие роли
$mainRoles = [
ProfessionKey::DIRECTOR => 'Режиссер',
ProfessionKey::WRITER => 'Сценарист',
ProfessionKey::COMPOSER => 'Композитор'
];
foreach ($mainRoles as $profession => $title) {
$members = getStaffByProfession($staff, $profession);
if (!empty($members)) {
$report .= "🎬 {$title}:\n";
foreach ($members as $member) {
$report .= " - {$member->getDisplayName()}\n";
}
$report .= "\n";
}
}
// Актеры
$actors = getStaffByProfession($staff, ProfessionKey::ACTOR);
if (!empty($actors)) {
$report .= "🎭 Актеры (" . count($actors) . "):\n";
foreach (array_slice($actors, 0, 10) as $actor) {
$report .= " - {$actor->getDisplayName()}";
if ($actor->description) {
$report .= " ({$actor->description})";
}
$report .= "\n";
}
if (count($actors) > 10) {
$report .= " ... и еще " . (count($actors) - 10) . " актеров\n";
}
$report .= "\n";
}
// Технический персонал
$technical = getStaffByCategory($staff, 'Техническая');
if (!empty($technical)) {
$report .= "🔧 Технический персонал (" . count($technical) . "):\n";
$techProfessions = [];
foreach ($technical as $member) {
$profession = $member->professionKey->getDisplayName();
if (!isset($techProfessions[$profession])) {
$techProfessions[$profession] = [];
}
$techProfessions[$profession][] = $member;
}
foreach ($techProfessions as $profession => $members) {
$report .= " {$profession} (" . count($members) . "):\n";
foreach (array_slice($members, 0, 3) as $member) {
$report .= " - {$member->getDisplayName()}\n";
}
if (count($members) > 3) {
$report .= " ... и еще " . (count($members) - 3) . "\n";
}
}
}
return $report;
}
// Использование
$staff = $personService->getFilmStaff(301);
$report = createStaffReport($staff);
echo $report;Связанные классы
Staff- Модель персоналаPersonFilm- Фильм в фильмографии персоныPersonService- Сервис для работы с персонами