{
  "description": "Search NetEase Cloud Music, fetch songs, lyrics, artists, albums, playlists, all charts and comments. No login or proxy setup required.",
  "properties": {
    "albumUrls": {
      "default": [],
      "description": "music.163.com album URLs or bare album IDs.",
      "editor": "stringList",
      "prefill": [],
      "title": "Album URLs or IDs (mode=byAlbum)",
      "type": "array"
    },
    "artistIds": {
      "default": [],
      "description": "Artist IDs, music.163.com artist URLs, or exact artist names.",
      "editor": "stringList",
      "prefill": [],
      "title": "Artist IDs, URLs or names (mode=byArtist / byArtistAlbums)",
      "type": "array"
    },
    "artistOrder": {
      "default": "hot",
      "description": "Order the artist's song catalogue by popularity or release time (mode=byArtist).",
      "editor": "select",
      "enum": [
        "hot",
        "time"
      ],
      "enumTitles": [
        "Most popular",
        "Newest release"
      ],
      "prefill": "hot",
      "title": "Artist song order",
      "type": "string"
    },
    "commentOrder": {
      "default": "recommended",
      "description": "Recommended comments or NetEase's hot-comment selection (mode=comments).",
      "editor": "select",
      "enum": [
        "recommended",
        "hot"
      ],
      "enumTitles": [
        "Recommended",
        "Hot comments"
      ],
      "prefill": "recommended",
      "title": "Comment order",
      "type": "string"
    },
    "commentUrls": {
      "default": [],
      "description": "Song, album, playlist or chart URLs/IDs. A bare ID is treated as a song; use `album:123`, `playlist:123` or `chart:123` to be explicit.",
      "editor": "stringList",
      "prefill": [],
      "title": "Comment targets (mode=comments)",
      "type": "array"
    },
    "containsKeyword": {
      "description": "Keep only records whose name contains this text (case-insensitive). Applies to songs, albums, artists, playlists and charts.",
      "editor": "textfield",
      "title": "Contains keyword",
      "type": "string"
    },
    "includeAlbumTracks": {
      "default": true,
      "description": "Emit each album's tracks as song records (mode=byAlbum).",
      "prefill": true,
      "title": "Include album tracks",
      "type": "boolean"
    },
    "includeArtistProfile": {
      "default": false,
      "description": "Emit one artist profile record with bio, images, sizes, rank, identities and fan count (mode=byArtist / byArtistAlbums).",
      "prefill": false,
      "title": "Include artist profile",
      "type": "boolean"
    },
    "includeLyrics": {
      "default": false,
      "description": "Attach full LRC lyrics plus translation, romanization and word-by-word lyrics when NetEase has them (every song mode).",
      "prefill": false,
      "title": "Include lyrics",
      "type": "boolean"
    },
    "includePlaylistTracks": {
      "default": true,
      "description": "Emit the playlist's full tracklist as song records (mode=byPlaylistUrl).",
      "prefill": true,
      "title": "Include playlist tracks",
      "type": "boolean"
    },
    "includeReplies": {
      "default": false,
      "description": "Fetch the reply floor for comments that have replies (mode=comments).",
      "prefill": false,
      "title": "Include comment replies",
      "type": "boolean"
    },
    "includeToplistInfo": {
      "default": true,
      "description": "Emit a chart summary record before each chart's tracks (mode=byToplist).",
      "prefill": true,
      "title": "Include chart summary",
      "type": "boolean"
    },
    "maxCommentsPerItem": {
      "default": 100,
      "description": "Maximum top-level comments read per song, album, playlist or chart (mode=comments). NetEase stops anonymous pagination around 1,100.",
      "maximum": 1100,
      "minimum": 1,
      "prefill": 100,
      "title": "Max comments per resource",
      "type": "integer"
    },
    "maxDurationSec": {
      "description": "Skip song records longer than this. Album, artist, playlist and chart metadata are unaffected.",
      "maximum": 86400,
      "minimum": 0,
      "title": "Max song duration (seconds)",
      "type": "integer"
    },
    "maxItems": {
      "default": 100,
      "description": "Hard cap on total dataset records for the run, including error records.",
      "maximum": 100000,
      "minimum": 1,
      "prefill": 3,
      "title": "Max items",
      "type": "integer"
    },
    "maxRepliesPerComment": {
      "default": 20,
      "description": "How many replies to read for each comment when replies are enabled (mode=comments).",
      "maximum": 100,
      "minimum": 1,
      "prefill": 20,
      "title": "Max replies per comment",
      "type": "integer"
    },
    "maxTracksPerChart": {
      "default": 0,
      "description": "Limit tracks read from each chart before the global max items cap (mode=byToplist). 0 reads every track.",
      "maximum": 1000,
      "minimum": 0,
      "prefill": 0,
      "title": "Max tracks per chart",
      "type": "integer"
    },
    "minDurationSec": {
      "description": "Skip song records shorter than this. Album, artist, playlist and chart metadata are unaffected.",
      "maximum": 86400,
      "minimum": 0,
      "title": "Min song duration (seconds)",
      "type": "integer"
    },
    "minPlayCount": {
      "description": "Skip browsed playlists with fewer plays (mode=byPlaylist).",
      "maximum": 1000000000000,
      "minimum": 0,
      "title": "Min playlist plays",
      "type": "integer"
    },
    "minPopularity": {
      "description": "Skip song records below this NetEase popularity score (0-100). Metadata records are unaffected.",
      "maximum": 100,
      "minimum": 0,
      "title": "Min song popularity",
      "type": "integer"
    },
    "minTrackCount": {
      "description": "Skip browsed playlists with fewer tracks (mode=byPlaylist).",
      "maximum": 1000000000,
      "minimum": 0,
      "title": "Min playlist tracks",
      "type": "integer"
    },
    "mode": {
      "default": "search",
      "description": "What to fetch. Each mode reads its own list field.",
      "editor": "select",
      "enum": [
        "search",
        "bySongUrl",
        "byArtist",
        "byArtistAlbums",
        "byAlbum",
        "byPlaylist",
        "byPlaylistUrl",
        "byToplist",
        "toplists",
        "comments"
      ],
      "enumTitles": [
        "Search songs, albums, artists or playlists",
        "Song details by URL or ID (with lyrics)",
        "Artist full song catalogue",
        "Artist album discography",
        "Album details and tracks",
        "Browse playlists by category",
        "Playlist details and full tracklist",
        "One or more charts (or all charts)",
        "Chart catalogue",
        "Comments and replies"
      ],
      "prefill": "search",
      "title": "Mode",
      "type": "string"
    },
    "playlistCat": {
      "default": "华语",
      "description": "NetEase playlist genre, scene or mood to browse (mode=byPlaylist).",
      "editor": "select",
      "enum": [
        "全部",
        "综艺",
        "流行",
        "怀旧",
        "清晨",
        "华语",
        "影视原声",
        "摇滚",
        "夜晚",
        "清新",
        "欧美",
        "ACG",
        "民谣",
        "学习",
        "浪漫",
        "儿童",
        "日语",
        "工作",
        "校园",
        "电子",
        "韩语",
        "游戏",
        "午休",
        "粤语",
        "伤感",
        "舞曲",
        "治愈",
        "下午茶",
        "说唱",
        "70后",
        "地铁",
        "轻音乐",
        "放松",
        "80后",
        "驾车",
        "爵士",
        "孤独",
        "90后",
        "乡村",
        "感动",
        "运动",
        "网络歌曲",
        "旅行",
        "兴奋",
        "R&B/Soul",
        "KTV",
        "古典",
        "快乐",
        "经典",
        "散步",
        "翻唱",
        "民族",
        "酒吧",
        "安静",
        "英伦",
        "思念",
        "吉他",
        "金属",
        "钢琴",
        "朋克",
        "器乐",
        "蓝调",
        "榜单",
        "雷鬼",
        "00后",
        "世界音乐",
        "拉丁",
        "New Age",
        "古风",
        "后摇",
        "Bossa Nova"
      ],
      "enumTitles": [
        "全部",
        "综艺",
        "流行",
        "怀旧",
        "清晨",
        "华语",
        "影视原声",
        "摇滚",
        "夜晚",
        "清新",
        "欧美",
        "ACG",
        "民谣",
        "学习",
        "浪漫",
        "儿童",
        "日语",
        "工作",
        "校园",
        "电子",
        "韩语",
        "游戏",
        "午休",
        "粤语",
        "伤感",
        "舞曲",
        "治愈",
        "下午茶",
        "说唱",
        "70后",
        "地铁",
        "轻音乐",
        "放松",
        "80后",
        "驾车",
        "爵士",
        "孤独",
        "90后",
        "乡村",
        "感动",
        "运动",
        "网络歌曲",
        "旅行",
        "兴奋",
        "R&B/Soul",
        "KTV",
        "古典",
        "快乐",
        "经典",
        "散步",
        "翻唱",
        "民族",
        "酒吧",
        "安静",
        "英伦",
        "思念",
        "吉他",
        "金属",
        "钢琴",
        "朋克",
        "器乐",
        "蓝调",
        "榜单",
        "雷鬼",
        "00后",
        "世界音乐",
        "拉丁",
        "New Age",
        "古风",
        "后摇",
        "Bossa Nova"
      ],
      "prefill": "华语",
      "title": "Playlist category",
      "type": "string"
    },
    "playlistUrls": {
      "default": [],
      "description": "music.163.com playlist URLs or bare playlist IDs. Full tracklists are read.",
      "editor": "stringList",
      "prefill": [],
      "title": "Playlist URLs or IDs (mode=byPlaylistUrl)",
      "type": "array"
    },
    "searchQueries": {
      "default": [
        "周杰伦"
      ],
      "description": "Free-text queries (mode=search). One or more artist, song, album or playlist names.",
      "editor": "stringList",
      "prefill": [
        "周杰伦"
      ],
      "title": "Search queries",
      "type": "array"
    },
    "searchType": {
      "default": "song",
      "description": "Which catalog entity to search for (mode=search).",
      "editor": "select",
      "enum": [
        "song",
        "album",
        "artist",
        "playlist"
      ],
      "enumTitles": [
        "Songs",
        "Albums",
        "Artists",
        "Playlists"
      ],
      "prefill": "song",
      "title": "Search result type",
      "type": "string"
    },
    "songUrls": {
      "default": [],
      "description": "music.163.com song URLs or bare song IDs, e.g. 186016.",
      "editor": "stringList",
      "prefill": [],
      "title": "Song URLs or IDs (mode=bySongUrl)",
      "type": "array"
    },
    "toplistIds": {
      "default": [],
      "description": "Chart IDs, music.163.com toplist URLs, or Chinese/English chart names. Use `all` or leave empty for every current chart.",
      "editor": "stringList",
      "prefill": [],
      "title": "Chart IDs, names or URLs (mode=byToplist)",
      "type": "array"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "NetEase Cloud Music Scraper Input",
  "type": "object"
}
