Started moving to a python script
This commit is contained in:
parent
9f34fe4a8a
commit
a35f9d05d4
34
audible-converter.py
Normal file
34
audible-converter.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import os
|
||||||
|
import json
|
||||||
|
import sys
|
||||||
|
|
||||||
|
class AudibleBook(object):
|
||||||
|
|
||||||
|
def __init__(self, filePath):
|
||||||
|
self.filePath = filePath
|
||||||
|
self.metadata = json.loads(os.popen('ffprobe -i {} -show_format \
|
||||||
|
-print_format json'.format(filePath)).read())['format']['tags']
|
||||||
|
self.chapters = json.loads(os.popen('ffprobe -i {} -print_format json \
|
||||||
|
-show_chapters -loglevel error -sexagesimal'.format(self.filePath))
|
||||||
|
.read())['chapters']
|
||||||
|
|
||||||
|
# getMetadata() returns audio metadata for a given filepath.
|
||||||
|
def getMetadata(self):
|
||||||
|
return self.metadata
|
||||||
|
|
||||||
|
# getChapters() returns chapter metadata for a given filepath.
|
||||||
|
def getChapters(self):
|
||||||
|
return self.chapters
|
||||||
|
|
||||||
|
filePath=''
|
||||||
|
book = AudibleBook(sys.argv[1])
|
||||||
|
|
||||||
|
for c in book.getChapters():
|
||||||
|
start=c['start']
|
||||||
|
end=c['end']
|
||||||
|
title=c['tags']['title']
|
||||||
|
print(start, end, title)
|
||||||
|
#os.system('ffmpeg -i {} -acodec copy -vcodec copy -ss {} -t {} OUTFILE-{}.m4a'.format(filePath, start, end, title))
|
||||||
|
|
||||||
|
|
||||||
|
print(book.getMetadata())
|
@ -31,11 +31,11 @@ function checkAudibleFile() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function removeDRM() {
|
function removeDRM() {
|
||||||
ffmpeg -activation_bytes ${2} -i ${1} -c copy "$(basename ${1} | cut -f 1 -d '.').m4b"
|
ffmpeg -activation_bytes ${2} -i ${1} -c copy "${3}.m4b"
|
||||||
}
|
}
|
||||||
|
|
||||||
function getChapterJSON() {
|
function getChapterJSON() {
|
||||||
echo $(ffprobe -i ${1} -print_format json -show_chapters -loglevel error -sexagesimal)
|
echo $(ffprobe -i ${1} -print_format json -show_chapters -loglevel error -sexagesimal | jq '.chapters')
|
||||||
}
|
}
|
||||||
|
|
||||||
function getMetadataJSON() {
|
function getMetadataJSON() {
|
||||||
@ -46,6 +46,10 @@ function getTitle() {
|
|||||||
echo $(echo ${1} | jq '.title' | cleanString)
|
echo $(echo ${1} | jq '.title' | cleanString)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function fileSafe() {
|
||||||
|
sed -e 's/[^A-Za-z0-9._-]/-/g' | tr '[:upper:]' '[:lower:]' | sed -e 's/--/-/g'
|
||||||
|
}
|
||||||
|
|
||||||
settingsFile='./settings.conf'
|
settingsFile='./settings.conf'
|
||||||
|
|
||||||
audibleFile=${1}
|
audibleFile=${1}
|
||||||
@ -61,9 +65,18 @@ fi
|
|||||||
. $settingsFile
|
. $settingsFile
|
||||||
|
|
||||||
metadataJSON=$(getMetadataJSON $audibleFile)
|
metadataJSON=$(getMetadataJSON $audibleFile)
|
||||||
json=$(getMetadataJSON $audibleFile)
|
chapterJSON=$(getChapterJSON $audibleFile)
|
||||||
getTitle "${json}"
|
name=$(getTitle "${metadataJSON}" | fileSafe)
|
||||||
|
|
||||||
if [ ! -f "$(basename ${audibleFile} | cut -f 1 -d '.').m4b" ]; then
|
if [ ! -f "${name}.m4b" ]; then
|
||||||
removeDRM $audibleFile $activationBytes
|
removeDRM $audibleFile $activationBytes $name
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
mkdir -p $name
|
||||||
|
|
||||||
|
data=$(echo "${chapterJSON}" | jq '.[] | "\(.start),\(.end),\(.tags.title)"')
|
||||||
|
echo $data
|
||||||
|
IFS=' ' read -r -a array <<< "$data"
|
||||||
|
|
||||||
|
|
||||||
|
echo $(echo "${chapterJSON}" | jq '.[] | .start,.end,.tags.title')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user