updates
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
from pydub import AudioSegment
|
from pydub import AudioSegment
|
||||||
|
from config import annex,circulation,archive
|
||||||
|
|
||||||
AudioSegment.converter = "/opt/homebrew/Cellar/ffmpeg/5.1.2_3/bin/ffmpeg"
|
AudioSegment.converter = "/opt/homebrew/Cellar/ffmpeg/5.1.2_3/bin/ffmpeg"
|
||||||
AudioSegment.ffmpeg = "/opt/homebrew/Cellar/ffmpeg/5.1.2_3/bin/ffmpeg"
|
AudioSegment.ffmpeg = "/opt/homebrew/Cellar/ffmpeg/5.1.2_3/bin/ffmpeg"
|
||||||
@@ -13,7 +14,7 @@ def export_audio_file(start, end, name):
|
|||||||
end_ms = int(end)
|
end_ms = int(end)
|
||||||
export = combined[start_ms:end_ms]
|
export = combined[start_ms:end_ms]
|
||||||
folder_name = folder.split(" - ")[-1].strip()
|
folder_name = folder.split(" - ")[-1].strip()
|
||||||
destination_path = '/Users/jonas/Documents/SERVER/BOOKS/01_LABELED AUDIO'
|
destination_path = circulation
|
||||||
author_name = folder.split(" - ")[0].strip()
|
author_name = folder.split(" - ")[0].strip()
|
||||||
export_folder = os.path.join(destination_path, author_name, folder_name)
|
export_folder = os.path.join(destination_path, author_name, folder_name)
|
||||||
author_folder = os.path.join(destination_path, author_name)
|
author_folder = os.path.join(destination_path, author_name)
|
||||||
@@ -33,7 +34,7 @@ def export_audio_file(start, end, name):
|
|||||||
shutil.copy(album_art, export_folder)
|
shutil.copy(album_art, export_folder)
|
||||||
shutil.copy(metadata_file, export_folder)
|
shutil.copy(metadata_file, export_folder)
|
||||||
|
|
||||||
main_directory = "/Users/jonas/Documents/SERVER/BOOKS/TEST"
|
main_directory = annex
|
||||||
|
|
||||||
for folder in sorted(os.listdir(main_directory)):
|
for folder in sorted(os.listdir(main_directory)):
|
||||||
folder_path = os.path.join(main_directory, folder)
|
folder_path = os.path.join(main_directory, folder)
|
||||||
@@ -80,4 +81,4 @@ for folder in sorted(os.listdir(main_directory)):
|
|||||||
|
|
||||||
#Archive everything except chapters_list.py
|
#Archive everything except chapters_list.py
|
||||||
if folder_path != "chapters_list.py":
|
if folder_path != "chapters_list.py":
|
||||||
shutil.move(folder_path, '/Users/jonas/Documents/SERVER/BOOKS/00_ARCHIVE/' + folder)
|
shutil.move(folder_path, archive + folder)
|
||||||
+2
-1
@@ -3,6 +3,7 @@
|
|||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
from config import annex
|
||||||
|
|
||||||
def duration_to_milliseconds(duration):
|
def duration_to_milliseconds(duration):
|
||||||
hours, minutes, seconds = duration.split(':')
|
hours, minutes, seconds = duration.split(':')
|
||||||
@@ -10,7 +11,7 @@ def duration_to_milliseconds(duration):
|
|||||||
return int(seconds * 1000)
|
return int(seconds * 1000)
|
||||||
|
|
||||||
# path to directory containing the files
|
# path to directory containing the files
|
||||||
directory = '/Users/jonas/Documents/SERVER/BOOKS/TEST'
|
directory = annex
|
||||||
|
|
||||||
# loop through all files in directory tree
|
# loop through all files in directory tree
|
||||||
for dirpath, dirnames, filenames in os.walk(directory):
|
for dirpath, dirnames, filenames in os.walk(directory):
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Define directories
|
||||||
|
# I like having multiple folders so as to visualize each step happening
|
||||||
|
# but you could easily adjust the setup to fit your preferences
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Where you will be downloading your .odm's to, we're writing this one
|
||||||
|
# as an environment for the bash to reference
|
||||||
|
os.environ["queue"] = "/Users/jonas/Documents/SERVER/QUEUE"
|
||||||
|
|
||||||
|
# Where the unpackaged odm mp3s will get moved
|
||||||
|
# First for the bash
|
||||||
|
os.environ["annex"] = "/Users/jonas/Documents/SERVER/BOOKS/01_ANNEX"
|
||||||
|
# Then for python
|
||||||
|
annex="/Users/jonas/Documents/SERVER/BOOKS/01_ANNEX"
|
||||||
|
|
||||||
|
# Where chapterized and labeled mp3s will be stored
|
||||||
|
circulation="/Users/jonas/Documents/SERVER/BOOKS/02_CIRCULATION"
|
||||||
|
|
||||||
|
# Where the final finished product will land
|
||||||
|
bookshelf="/Users/jonas/Documents/SERVER/BOOKS/03_READY_FOR_PLEX"
|
||||||
|
|
||||||
|
# Where the scraps go
|
||||||
|
archive="/Users/jonas/Documents/SERVER/BOOKS/00_ARCHIVE"
|
||||||
+3
-1
@@ -1,8 +1,10 @@
|
|||||||
#Confirmed working as of 1/22/23
|
#Confirmed working as of 1/22/23
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
from config import annex
|
||||||
|
|
||||||
|
root_dir = annex
|
||||||
|
|
||||||
root_dir = '/Users/jonas/Documents/SERVER/BOOKS/TEST'
|
|
||||||
for subdir, dirs, files in os.walk(root_dir):
|
for subdir, dirs, files in os.walk(root_dir):
|
||||||
for file in files:
|
for file in files:
|
||||||
file_path = os.path.join(subdir, file)
|
file_path = os.path.join(subdir, file)
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import shutil
|
|||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
from mutagen.id3 import ID3, APIC, TIT2, TPE1, TCOM, TCON, TSOA, TRCK, TIT3, TALB, COMM
|
from mutagen.id3 import ID3, APIC, TIT2, TPE1, TCOM, TCON, TSOA, TRCK, TIT3, TALB, COMM
|
||||||
|
from config import circulation,bookshelf
|
||||||
|
|
||||||
def traverse_directory(directory):
|
def traverse_directory(directory):
|
||||||
# Iterate through all subfolders and files
|
# Iterate through all subfolders and files
|
||||||
@@ -65,7 +66,7 @@ def add_metadata(directory):
|
|||||||
audio.save()
|
audio.save()
|
||||||
|
|
||||||
# Point the script at a directory
|
# Point the script at a directory
|
||||||
directory = "/Users/jonas/Documents/SERVER/BOOKS/01_LABELED AUDIO"
|
directory = circulation
|
||||||
|
|
||||||
# Traverse the directory and apply the metadata to the mp3 files
|
# Traverse the directory and apply the metadata to the mp3 files
|
||||||
traverse_directory(directory)
|
traverse_directory(directory)
|
||||||
@@ -75,4 +76,4 @@ for root, dirs, files in os.walk(directory):
|
|||||||
subfolder_path = os.path.join(root, dir)
|
subfolder_path = os.path.join(root, dir)
|
||||||
parent_folder = os.path.dirname(subfolder_path)
|
parent_folder = os.path.dirname(subfolder_path)
|
||||||
if parent_folder == directory:
|
if parent_folder == directory:
|
||||||
shutil.move(subfolder_path, "/Users/jonas/Documents/SERVER/BOOKS/02_READY FOR PLEX")
|
shutil.move(subfolder_path, bookshelf)
|
||||||
+2
-1
@@ -2,8 +2,9 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
from config import annex
|
||||||
|
|
||||||
root_dir = '/Users/jonas/Documents/SERVER/BOOKS/TEST'
|
root_dir = annex
|
||||||
|
|
||||||
for subdir, dirs, files in os.walk(root_dir):
|
for subdir, dirs, files in os.walk(root_dir):
|
||||||
for file in files:
|
for file in files:
|
||||||
|
|||||||
+5
-5
@@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
#download odm's to chosen directory
|
#download odm's to chosen directory
|
||||||
|
|
||||||
#navigate to folder where scripts are located
|
# configure variables
|
||||||
|
python3.10 config.py
|
||||||
cd /Users/jonas/Documents/code/overdrive-plex
|
|
||||||
|
|
||||||
# unpack odm's
|
# unpack odm's
|
||||||
bash overdrivedelete.sh
|
bash overdrivedelete.sh
|
||||||
|
|
||||||
# extract chapters
|
# extract chapters, specify folder holding the unpackaged overdrive mp3's
|
||||||
python3.10 extract_overdrive_chapters.py /Users/jonas/Documents/SERVER/BOOKS/01_ANNEX
|
source config.env
|
||||||
|
python3.10 extract_overdrive_chapters.py $annex
|
||||||
|
|
||||||
# clean metadata
|
# clean metadata
|
||||||
python3.10 metadatatoxml.py
|
python3.10 metadatatoxml.py
|
||||||
|
|||||||
+10
-2
@@ -1,7 +1,15 @@
|
|||||||
#This officially works for the full ODM extraction as of 1/21/23 at 9:54pm
|
#This officially works for the full ODM extraction as of 1/21/23 at 9:54pm
|
||||||
|
|
||||||
input_folder="/Users/jonas/Documents/SERVER/QUEUE"
|
# Define the directories
|
||||||
output_folder="/Users/jonas/Documents/SERVER/BOOKS/01_ANNEX"
|
source config.env
|
||||||
|
input_folder=$queue
|
||||||
|
output_folder=$annex
|
||||||
|
|
||||||
|
shopt -s nullglob
|
||||||
|
if [ -z "$(find $input_folder -type f -name '*.odm')" ]; then
|
||||||
|
echo "No .odm files found in $input_folder, exiting."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
# Open ODM's in temporary directory and export contents
|
# Open ODM's in temporary directory and export contents
|
||||||
for file in $input_folder/*.odm
|
for file in $input_folder/*.odm
|
||||||
|
|||||||
+2
-1
@@ -3,6 +3,7 @@
|
|||||||
import os
|
import os
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
import json
|
import json
|
||||||
|
from config import annex
|
||||||
|
|
||||||
def extract_metadata(xml_file):
|
def extract_metadata(xml_file):
|
||||||
tree = ET.parse(xml_file)
|
tree = ET.parse(xml_file)
|
||||||
@@ -35,5 +36,5 @@ def process_folder(folder_path):
|
|||||||
json.dump(metadata, f)
|
json.dump(metadata, f)
|
||||||
print(f"Processed {xml_file}, output saved to {cleaned_file}")
|
print(f"Processed {xml_file}, output saved to {cleaned_file}")
|
||||||
|
|
||||||
folder_path = "/Users/jonas/Documents/SERVER/BOOKS/TEST"
|
folder_path = annex
|
||||||
process_folder(folder_path)
|
process_folder(folder_path)
|
||||||
Reference in New Issue
Block a user