$release->{$key} ?? $default; $categoriesId = (int) $get('categories_id', 0); $guid = (string) $get('guid', ''); $base = [ 'title' => (string) $get('searchname', ''), 'details' => url('/details/'.$guid), 'url' => url('/getnzb').'?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 new self( ...$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 new self( ...$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 new self(...$base); } private static function nullIfZero(mixed $value): mixed { return ($value !== null && $value !== 0 && $value !== '' && $value !== '0') ? $value : null; } }