From 53e4b39ebf07e4706759512acab8c19cb2d799dc Mon Sep 17 00:00:00 2001 From: Sqozz Date: Sun, 9 Oct 2016 22:00:47 +0200 Subject: [PATCH] first implementation of discid and musicbrainz --- .gitignore | 3 +++ ripbot.py | 58 ++++++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 51 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index da0c346..332a0e7 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,6 @@ target/ # Vim *.swp + +# Misc +*.wav diff --git a/ripbot.py b/ripbot.py index 8741c54..863bed0 100755 --- a/ripbot.py +++ b/ripbot.py @@ -1,14 +1,52 @@ #!/usr/bin/env python3 import subprocess import sys +import discid +import musicbrainzngs as mb -process = subprocess.Popen(["cdparanoia", "-B", "--stderr-progress"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) -for line in process.stderr: - out = line - if "outputting to" in out.decode(): - print(out.decode().strip()) - elif "##" == out.decode()[:2]: - print(out.decode().strip(), end="\r") - sys.stdout.write("\r") - else: - print(out.decode().strip()) +def getTitleAmount(): + process = subprocess.Popen(["cdparanoia", "-Q", "--stderr-progress", "--"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + startCount = False + trackCount = 0 + for line in process.stderr: + out = line.decode() + + if startCount == True and not "TOTAL" in out: + trackCount += 1 + + if "===========================================================" in out: + startCount = True + elif "TOTAL" in out: + startCount = False + return trackCount + +def getMBbyDisc(): + disc = discid.read("/dev/cdrom") + mb.set_useragent("ripbot", "0.01", "https://git.geekify.de/sqozz/ripbot") + releases = mb.get_releases_by_discid(disc.id) + if len(releases["disc"]["release-list"]) > 1: + print("Found {0} relases by discid {1}".format(releases["disc"]["release-count"], releases["disc"]["id"])) + + + +def ripTitles(): + process = subprocess.Popen(["cdparanoia", "-B", "-l", "--stderr-progress", "--", "\"1-2\""], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + currentTitle = 0 + for line in process.stderr: + out = line.decode() + if "outputting to" in out: + currentTitle += 1 + print("Ripping title {0}".format(currentTitle)) + elif "##" == out[:2]: + print(out.strip(), end="\r") + sys.stdout.write("\r") + #else: + #print(out.strip()) + +titleAmount = getTitleAmount() +print("Found {0} titles".format(titleAmount)) +getMBbyDisc() +print("Start ripping") +#ripTitles() + +# vim:ts=2 sts=2 sw=2 noexpandtab: