--- site: soundpark name: SoundPark description: "SoundPark Semi-Private RUSSIAN site dedicated to MUSIC." language: ru-ru type: semi-private encoding: UTF-8 links: - https://sound-park.world/ - https://soundpark-club.casa/ legacylinks: - https://soundpark-club.com/ caps: categories: "Music": Audio modes: search: [q] music-search: [q, album, artist, label, year] login: path: login method: form form: form[action="/login"] inputs: username: "{{ .Config.username }}" password: "{{ .Config.password }}" returnto: "" error: - selector: div.stdmsg_text test: path: / selector: a[href="/logout"] download: selector: a[href^="/album/download-torrent/"] search: paths: - path: "{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}search{{else}}music{{end}}" inputs: q: "{{if or (.Query.Album) (.Query.Artist) }}{{ or (.Query.Album) (.Query.Artist) }}{{else}}{{ .Keywords }}{{end}}" num: 50 rows: # first selector is for the music page (recent uploads) and the second selector is for the search page selector: div[itemscope] > table.browse_albums, div.div-rellist fields: title: selector: tr:nth-child(1) td:nth-child(1) h2 a, div h3 a details: selector: tr:nth-child(1) td:nth-child(1) h2 a, div h3 a attribute: href category: text: "Music" banner: selector: tr:nth-child(2) td:nth-child(1) a img, div i img attribute: src optional: true download: selector: tr:nth-child(1) td:nth-child(1) h2 a, div h3 a attribute: href # dates come in two flavours: # Russian, Spanish and English supported date: # fix for spanish yesterday, the time is not present text: now date: # Today at 22:28:10 # Yesterday at 10:18:40 # Вчера в 10:18:40 # Hoy a las 07:33:17 selector: tr:nth-child(1) > td:nth-child(2) > div.details > span:nth-child(1):contains(":"), div > span.edit:contains(":") optional: true filters: - name: replace args: [" at ", " "] - name: re_replace args: ["Ayer a las|Вчера в", "Yesterday"] - name: re_replace args: ["Hoy a las|Сегодня в", "Today"] date: # 3 april 2019 selector: tr:nth-child(1) > td:nth-child(2) > div.details > span:nth-child(1):not(:contains(":")), div > span.edit:not(:contains(":")) optional: true filters: - name: re_replace args: ["enero|января", "January"] - name: re_replace args: ["febrero|февраля", "February"] - name: re_replace args: ["marzo|марта ", "March"] - name: re_replace args: ["abril|апреля", "April"] - name: re_replace args: ["mayo|мая", "May"] - name: re_replace args: ["junio|июня", "June"] - name: re_replace args: ["julio|июля", "July"] - name: re_replace args: ["agosto|августа", "August"] - name: re_replace args: ["septiembre|сентября", "September"] - name: re_replace args: ["octubre|октября", "October"] - name: re_replace args: ["noviembre|ноября", "November"] - name: re_replace args: ["diciembre|декабря", "December"] - name: dateparse args: "2 January 2006" size: # search page does not have size. text: "500 MB" size: # but today's page can, if the content fixed-length string contains a title that is not too long. selector: tr:nth-child(2) td.descr meta attribute: content optional: true filters: - name: regexp args: "Size: (.*?)," seeders: text: 1 leechers: text: 1 downloadvolumefactor: text: 1 uploadvolumefactor: text: 1