Browse Source

don't NPE if package_release_date isn't in a datablob

gson is happy to push nulls into non-nullable fields because we're
handing it a ::class.java. package_release_date sometimes doesn't exist
when release_date still does, so make package_release_date properly
nullable and fall back to release_date.
master
Erin Moon 6 years ago
parent
commit
f47a6342fd
1 changed files with 4 additions and 3 deletions
  1. +4
    -3
      src/main/kotlin/bandcampcollectiondownloader/BandcampCollectionDownloader.kt

+ 4
- 3
src/main/kotlin/bandcampcollectiondownloader/BandcampCollectionDownloader.kt View File

@ -20,7 +20,8 @@ data class ParsedBandcampData(
data class DigitalItem( data class DigitalItem(
val downloads: Map<String, Map<String, String>>, val downloads: Map<String, Map<String, String>>,
val package_release_date: String,
val package_release_date: String?,
val release_date: String,
val title: String, val title: String,
val artist: String, val artist: String,
val download_type: String, val download_type: String,
@ -80,7 +81,7 @@ fun downloadAll(cookiesFile: Path?, bandcampUser: String, downloadFormat: String
val digitalItem = downloadPageJsonParsed.digital_items[0] val digitalItem = downloadPageJsonParsed.digital_items[0]
var albumtitle = digitalItem.title var albumtitle = digitalItem.title
var artist = digitalItem.artist var artist = digitalItem.artist
val releaseDate = digitalItem.package_release_date
val releaseDate = digitalItem.package_release_date ?: digitalItem.release_date
val releaseYear = releaseDate.subSequence(7, 11) val releaseYear = releaseDate.subSequence(7, 11)
val isSingleTrack: Boolean = digitalItem.download_type == "t" val isSingleTrack: Boolean = digitalItem.download_type == "t"
val url = digitalItem.downloads[downloadFormat]?.get("url").orEmpty() val url = digitalItem.downloads[downloadFormat]?.get("url").orEmpty()
@ -207,4 +208,4 @@ fun prepareDownload(albumtitle: String, url: String, cookies: Map<String, String
// Download content // Download content
return downloadFile(realDownloadURL, albumFolderPath, timeout = timeout) return downloadFile(realDownloadURL, albumFolderPath, timeout = timeout)
}
}

Loading…
Cancel
Save