Browse Source

Add simple error management + manage invalid cookies file

Closes #2
master
Gwendal 7 years ago
parent
commit
a54654083c
2 changed files with 26 additions and 6 deletions
  1. +9
    -2
      src/main/kotlin/bandcampcollectiondownloader/BandcampCollectionDownloader.kt
  2. +17
    -4
      src/main/kotlin/bandcampcollectiondownloader/Main.kt

+ 9
- 2
src/main/kotlin/bandcampcollectiondownloader/BandcampCollectionDownloader.kt View File

@ -102,10 +102,13 @@ fun downloadFile(fileURL: String, saveDir: Path, optionalFileName: String = ""):
/**
* Core function called from the main
*/
fun downloadAll(cookiesFile: String, bandcampUser: String, downloadFormat: String, downloadFolder: Path) {
fun downloadAll(cookiesFile: Path, bandcampUser: String, downloadFormat: String, downloadFolder: Path) {
// Parse JSON cookies (obtained with "Cookie Quick Manager" Firefox addon)
val gson = Gson()
val jsonData = String(Files.readAllBytes(Paths.get(cookiesFile)))
if (!Files.exists(cookiesFile)) {
throw BandCampDownloaderError("Cookies file '$cookiesFile' cannot be found.")
}
val jsonData = String(Files.readAllBytes(cookiesFile))
val parsedCookies = gson.fromJson(jsonData, Array<ParsedCookie>::class.java)
val cookies = parsedCookiesToMap(parsedCookies)
@ -146,6 +149,10 @@ fun downloadAll(cookiesFile: String, bandcampUser: String, downloadFormat: Strin
}
}
class BandCampDownloaderError : Exception {
constructor(s: String) : super(s)
}
fun downloadAlbum(artistFolderPath: Path?, albumFolderPath: Path, albumtitle: String, url: String, cookies: Map<String, String>, gson: Gson, isSingleTrack: Boolean, artid: String) {
// If the artist folder does not exist, we create it
if (!Files.exists(artistFolderPath)) {


+ 17
- 4
src/main/kotlin/bandcampcollectiondownloader/Main.kt View File

@ -14,7 +14,7 @@ data class Args(
description = arrayOf("A JSON file with valid bandcamp credential cookies.",
""""Cookie Quick Manager" can be used to obtain this file after logging into bandcamp.""",
"(visit https://addons.mozilla.org/en-US/firefox/addon/cookie-quick-manager/)."))
var pathToCookiesFile: String? = null,
var pathToCookiesFile: Path? = null,
@CommandLine.Option(names = arrayOf("--audio-format", "-f"), required = false,
description = arrayOf("The chosen audio format of the files to download (default: \${DEFAULT-VALUE}).",
@ -40,19 +40,32 @@ fun main(args: Array<String>) {
val parsedArgs: Args =
try {
CommandLine.populateCommand<Args>(Args(), *args)
} catch (e: CommandLine.MissingParameterException) {
}
// If the wrong arguments are given, show help + error message
catch (e: CommandLine.MissingParameterException) {
CommandLine.usage(Args(), System.out)
System.err.println(e.message)
return
}
// If --help, then only show help and quit
if (parsedArgs.help) {
CommandLine.usage(Args(), System.out)
} else {
}
// Else, parse arguments and run
else {
val bandcampUser = parsedArgs.bandcampUser
val cookiesFile = parsedArgs.pathToCookiesFile!!
val downloadFormat = parsedArgs.audioFormat
val downloadFolder = parsedArgs.pathToDownloadFolder
downloadAll(cookiesFile, bandcampUser, downloadFormat, downloadFolder)
try {
downloadAll(cookiesFile, bandcampUser, downloadFormat, downloadFolder)
} catch (e : BandCampDownloaderError) {
System.err.println("ERROR: ${e.message}")
}
}
}

Loading…
Cancel
Save