{
  "id": "get-iplayer",
  "name": "get_iplayer",
  "homepage": "https://github.com/get-iplayer/get_iplayer",
  "description": "A utility for downloading TV and radio programmes from BBC iPlayer.",
  "executables": [
    "get_iplayer"
  ],
  "dotfiles": {
    "paths": [
      "~/.get_iplayer/options",
      "%USERPROFILE%/.get_iplayer/options"
    ],
    "secret": []
  },
  "commands": {
    "format": 1,
    "label": "Search or record BBC programmes",
    "description": "Search the programme index, or record by index number. Unlisted options such as proxies, output directories and PVR presets are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": false,
      "short_bundles": false
    },
    "source": [
      {
        "id": "readme",
        "kind": "help",
        "url": "https://github.com/get-iplayer/get_iplayer#examples",
        "revision": "2026-10-27",
        "evidence": "get_iplayer --long \".*\"\nget_iplayer --type=radio \".*\"\nget_iplayer --type tv,radio \"doctor who\"\nget_iplayer --channel=\"BBC One\" \".*\"\nget_iplayer --get 208 --tv-quality=hd,sd,web,mobile\nget_iplayer --get 208 --subtitles\nget_iplayer --pid=b01sc0wf\n"
      }
    ],
    "field": [
      {
        "id": "type",
        "label": "Programme type",
        "description": "Comma-separated types, for example tv,radio. TV is the default.",
        "type": "string",
        "option": [
          "--type"
        ],
        "suggestions": [
          {
            "value": "tv",
            "label": "TV"
          },
          {
            "value": "radio",
            "label": "Radio"
          },
          {
            "value": "tv,radio",
            "label": "TV and radio"
          }
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "channel",
        "label": "Channel",
        "type": "string",
        "option": [
          "--channel"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "long",
        "label": "Long descriptions",
        "type": "boolean",
        "option": [
          "--long"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "get",
        "label": "Record the listed index numbers",
        "description": "Put the index numbers from a previous search in the terms field.",
        "type": "boolean",
        "option": [
          "--get"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "subtitles",
        "label": "Download subtitles",
        "type": "boolean",
        "option": [
          "--subtitles"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "tv_quality",
        "label": "TV quality order",
        "type": "string",
        "option": [
          "--tv-quality"
        ],
        "suggestions": [
          {
            "value": "hd,sd,web,mobile",
            "label": "HD with fallback"
          },
          {
            "value": "web",
            "label": "Web (lower resolution)"
          }
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "pid",
        "label": "Programme ID",
        "type": "string",
        "option": [
          "--pid"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "terms",
        "label": "Search terms or index numbers",
        "description": "Regular expression, such as .* for everything, or index numbers when recording.",
        "type": "string",
        "position": 0,
        "multiple": true,
        "sources": [
          "readme"
        ]
      }
    ],
    "task": [
      {
        "id": "search",
        "label": "Search programmes",
        "fields": [
          "terms",
          "type",
          "channel",
          "long"
        ],
        "required": [
          "terms"
        ]
      },
      {
        "id": "record",
        "label": "Record by index",
        "set": {
          "get": [
            true
          ]
        },
        "lock": [
          "get"
        ],
        "fields": [
          "terms",
          "get",
          "tv_quality",
          "subtitles"
        ],
        "required": [
          "terms"
        ]
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "terms",
          "type",
          "channel",
          "long",
          "get"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "subtitles",
          "tv_quality",
          "pid"
        ]
      }
    ]
  }
}
