*/ public static function toArrayFromRelease( Release|\stdClass $release, User $user, ?string $detailsBaseUrl = null, ?string $getNzbBaseUrl = null ): array { $get = static fn (string $key, mixed $default = null): mixed => $release->{$key} ?? $default; $categoriesId = (int) $get('categories_id', 0); $guid = (string) $get('guid', ''); $detailsBaseUrl ??= url('/details').'/'; $getNzbBaseUrl ??= url('/getnzb'); $base = [ 'title' => (string) $get('searchname', ''), 'details' => $detailsBaseUrl.$guid, 'url' => $getNzbBaseUrl.'?id='.$guid.'.nzb&r='.$user->api_token, 'category' => $categoriesId, 'category_name' => $get('category_name'), 'added' => Carbon::parse($get('adddate'))->toRssString(), 'size' => $get('size'), 'files' => $get('totalpart'), 'grabs' => self::nullIfZero($get('grabs')), 'comments' => self::nullIfZero($get('comments')), 'password' => $get('passwordstatus'), 'usenetdate' => Carbon::parse($get('postdate'))->toRssString(), ]; if (in_array($categoriesId, Category::MOVIES_GROUP, true)) { return $base + [ 'imdbid' => self::nullIfZero($get('imdbid')), 'tmdbid' => self::nullIfZero($get('tmdbid')), 'traktid' => self::nullIfZero($get('traktid')), ]; } if (in_array($categoriesId, Category::TV_GROUP, true)) { return $base + [ 'imdbid' => self::nullIfZero($get('imdb')), 'tmdbid' => self::nullIfZero($get('tmdb')), 'traktid' => self::nullIfZero($get('trakt')), 'episode_title' => $get('title'), 'season' => $get('series'), 'episode' => $get('episode'), 'tvairdate' => $get('firstaired'), 'tvdbid' => self::nullIfZero($get('tvdb')), 'tvrageid' => self::nullIfZero($get('tvrage')), 'tvmazeid' => self::nullIfZero($get('tvmaze')), ]; } return $base; } private static function nullIfZero(mixed $value): mixed { return ($value !== null && $value !== 0 && $value !== '' && $value !== '0') ? $value : null; } }