trash_get_profile
Retrieve a specific TRaSH Guides quality profile with custom format scores, quality settings, and implementation details for Radarr or Sonarr media management.
Instructions
Get a specific TRaSH Guides quality profile with all custom format scores, quality settings, and implementation details
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | Which service | |
| profile | Yes | Profile name (e.g., 'remux-web-1080p', 'uhd-bluray-web', 'hd-bluray-web') |
Implementation Reference
- src/index.ts:615-631 (registration)Tool registration for trash_get_profile including name, description, and input schema.name: "trash_get_profile", description: "Get a specific TRaSH Guides quality profile with all custom format scores, quality settings, and implementation details", inputSchema: { type: "object" as const, properties: { service: { type: "string", enum: ["radarr", "sonarr"], description: "Which service", }, profile: { type: "string", description: "Profile name (e.g., 'remux-web-1080p', 'uhd-bluray-web', 'hd-bluray-web')", }, }, required: ["service", "profile"], },
- src/index.ts:1710-1749 (handler)Main handler for trash_get_profile: extracts arguments, calls trashClient.getProfile, handles errors, formats and returns profile data as JSON.case "trash_get_profile": { const { service, profile: profileName } = args as { service: TrashService; profile: string }; const profile = await trashClient.getProfile(service, profileName); if (!profile) { return { content: [{ type: "text", text: JSON.stringify({ error: `Profile '${profileName}' not found for ${service}`, hint: "Use trash_list_profiles to see available profiles", }, null, 2), }], isError: true, }; } return { content: [{ type: "text", text: JSON.stringify({ name: profile.name, description: profile.trash_description?.replace(/<br>/g, '\n'), trash_id: profile.trash_id, upgradeAllowed: profile.upgradeAllowed, cutoff: profile.cutoff, minFormatScore: profile.minFormatScore, cutoffFormatScore: profile.cutoffFormatScore, language: profile.language, qualities: profile.items.map(i => ({ name: i.name, allowed: i.allowed, items: i.items, })), customFormats: Object.entries(profile.formatItems || {}).map(([name, trashId]) => ({ name, trash_id: trashId, })), }, null, 2), }], }; }
- src/trash-client.ts:259-273 (helper)Core helper function getProfile in TrashClient: checks cache, fetches JSON from TRaSH GitHub repo if needed, caches result.async getProfile(service: TrashService, profileName: string): Promise<TrashQualityProfile | null> { const key = `${service}/${profileName}`; const cached = cache.getProfile(key); if (cached) return cached; try { const profile = await fetchJSON<TrashQualityProfile>( `${TRASH_BASE_URL}/${service}/quality-profiles/${profileName}.json` ); cache.setProfile(key, profile); return profile; } catch { return null; } }
- src/index.ts:31-32 (helper)Import of trashClient singleton and TrashService type used by the tool.import { trashClient, TrashService } from "./trash-client.js";
- src/trash-client.ts:31-48 (schema)TrashQualityProfile interface defining the structure of profile data returned by the tool.export interface TrashQualityProfile { trash_id: string; name: string; trash_description?: string; group?: number; upgradeAllowed: boolean; cutoff: string; minFormatScore: number; cutoffFormatScore: number; minUpgradeFormatScore: number; language: string; items: Array<{ name: string; allowed: boolean; items?: string[]; }>; formatItems: Record<string, string>; }