The Instant View Editor uses a three-column layout, so you really want to use it on a desktop screen that's wide enough. Sorry for the inconvenience.

Back to the main page »

Original

Preview

Link Preview
MacTechNews.de
iBooks ade - wie von iBooks zu Calibre oder anderem ePub Programm
Bei dieser Newsmeldung (🔗) Anfang dieses Jahres, hatte ich kurz meine Erfahrung zu iBooks geschrieben.Eigentlich fand ich iBooks erträglich, abgesehen von der schlechten Meta Daten Bearbeitung war es ausreichend. Es diente aber auch nur als Sync Applikation zwischen meinem iPad und iPhone und der Library.Aber als ich dann auf Calibre umsteigen wollte wegen deren Server Funktionalität und auch den Sync Möglichkeiten war ich geschockt:Hier nochmal mein Kommentar:"Ein bisschen Off Topic es geht mehr um iBooks am Mac:Diese Applikation ist zwar nett zum lesen von eBooks aber zum reinen Verwalten von ePubs ist diese sehr gefährlich wenn man sich nicht vorsieht. Bevor es iBooks gab hatte ich schon alle ePubs in iTunes 10, war auch kein Problem mit dem Syncronisieren oder mal ein ePub aus der Library kopieren woanders hin etc. Dann wurde automatisch zu iBooks gewechselt mit Mavericks und alle ePubs wurden migriert und entpackt. Das ist mir erst vor knapp einem Monat wirklich aufgefallen und auch was die Folgen sind. Leider war ich ohne Backup. Sobald man also ein ePub in iBooks importiert wird es von iBooks entpackt (ePubs sind nur zip Dateien). Die Endung bleibt erhalten. Im Finder wird es immer noch als ePub angezeigt aber ich kann dieses ePub nicht mehr mit z.B. Calibre öffnen, da es ja nur noch ein Ordner ist. (ein ls -a im Terminal zeigt auch ein d für directory)Ziemlich ärgerlich wenn man mal auf die Idee kommt ein anderes Tool als iBooks zu benutzen.Ich hab dann ein Bash script geschrieben, damit alle ePubs wieder richtig gezippt werden sowie die Namen aus den Metadaten ausgelesen damit der Dateiname anders ist als 213489701234klöafsd.ePub.Es gibt bestimmt noch andere Anwendungen wo solche teilweise überaus ärgerlichen und fast unverschämte Probleme auftreten. Was sich Apple dabei gedacht hat, bzw. die Projektmanager und die Entwickler kann ich mir nicht erklären - außer abhängigkeit zu schaffen. Traurig. Werde bei Zeiten das Script zur Verfügung stellen falls es anderen ähnlich geht wie mir."Nachdem jetzt einige Zeit vergangen ist traue ich mich ein Skript zur freien Verfügung zu stellen. Ich übernehme keine Garantie aber hier bei mir läuft es ohne Probleme.Vielleicht hilft es dem ein oder anderen ja weiter.#!/bin/bash function describe {    echo "#########################################################"    echo Usage: $0 {1 2}    echo Usage: $0 {Exportfolder debug-log}    echo Usage: example $0 {$HOME/Documents/Exportfolder $HOME/Destktop/$0/debug.log}    echo " "    echo This script will read the iTunes books from $STARTFOLDER    echo "#########################################################"    }START_temp=$HOME/Library/Containers/com.apple.BKAgentService STARTFOLDER=$START_temp/Data/Documents/iBooks/Books       if [ -z "$1" ] || [ ! -d "$1" ]; then     echo >&2 "Error: You must supply the first argument as a directory!"    describe    exit 1elif [ -z "$2" ] || [  -d "$2" ]; then    echo >&2 "Error: You must supply the second argument as a filename, not directory!"    describe    exit 1fiEXPFOLDER=$1DEBUGLOG=$2TEMPDIR=$EXPFOLDER/tmp/ && mkdir -p $TEMPDIR# ************************************************************ ****# get file list of existing books/files in the startfolder for debugging only# ************************************************************ ****cd $STARTFOLDERFILES="`find . -type d -maxdepth 1`"   #$FILES is only for debuggingecho "Starting the program $0:" && echo "Starting the program $0 at `date`" > $DEBUGLOG # second part only for debuggingecho "Following files found:" >> $DEBUGLOG # only for debuggingecho $FILES >> $DEBUGLOG # only for debugging # ************************************************************ ******************************# exclude the root dir and ds store file in the start folder# for each book (actually folder in iTunes) process the following steps#     - remove iTunesMetadata#     - get the title of the book from the opf file#     - add mimetype file to epub zip#     - add iTunesArtwork file to epub zip#     - add META-INF folder to epub zip#     - add all other files to epub zip# ************************************************************ ******************************for f in ./* docd $STARTFOLDERif [ "$f" == "." ] || [ "$f" == ".." ] || [ "$f" == "./.DS_Store" ]  || [ ! -d "$f" ]   then     continuefi   cp -r "$f" "$TEMPDIR/"  cd "$TEMPDIR/$f"echo "Working now in following folder:" >> $DEBUGLOG #  - only for debugging    echo "$f" >> $DEBUGLOG #  - only for debugging    # ****************************************# remove iTunesMetadata# ****************************************  rm -rf iTunesMetadata*# ************************************************# get the title of the book from the opf file# ************************************************    value=`find . -type f -name "*.opf" -exec cat {} \;`    title=$( sed -n 's/.*<dc:title.*>\([^<]*\)<\/dc:title>.*/\1/p' <<< $value )    title=$( echo $title | cut -c 1-93 )    title=$( echo ${title/:/ } )    title=$( echo ${title/\//_} )    title=$( echo ${title/&amp;/&} )echo "The following book title was generated:" >> $DEBUGLOG # - only for debugging  echo "$title" >> $DEBUGLOG # - only for debugging  # ****************************************# add mimetype file to epub zip# ****************************************if [ -f ./mimetype ]thenecho "Add mimetypes to book $title" >> $DEBUGLOG # - only for debugging          zip -X0 "$EXPFOLDER/$title.epub" "mimetype" >> $DEBUGLOG    rm -rf mimetype    rm -rf ./.DS_Storeelse    echo the file "mimetype" does not exist, without that file you will not have a valid epub file    exit 1fi# ****************************************# add iTunesArtwork file to epub zip# ****************************************if [ -f ./iTunesArtwork ]then    cp ./iTunesArtwork ./cover.pngecho "Add iTunesArtwork to book $title" >> $DEBUGLOG # - only for debugging       zip -Xr "$EXPFOLDER/$title.epub" "iTunesArtwork" "cover.png" >> $DEBUGLOG    rm -rf ./iTunesArtwork    rm -rf ./cover.pngfi# ****************************************# add META-INF folder to epub zip# ****************************************if [ -d ./META-INF ]then    cc="${PWD##*/}" echo "Add META-INF to book $title" >> $DEBUGLOG # - only for debugging       zip -Xr "$EXPFOLDER/$title.epub" "META-INF" >> $DEBUGLOG    rm -rf ./META-INFfi# ****************************************# add all other files to epub zip# ****************************************cc="${PWD##*/}"FILESINDIR="./*"for g in $FILESINDIRdoecho "Add rest of the files to book $title" >> $DEBUGLOG # - only for debugging   zip -Xr "$EXPFOLDER/$title.epub" "$g" >> $DEBUGLOGdonedone# ****************************************# rename .ibooks into .epub files# ****************************************string='.ibooks'cd "$EXPFOLDER"for h in ./* doif [[ $h == *$string* ]]then  for h in * ; do mv "$h" "${h//.ibooks/.epub}" ; donefidone# ****************************************# Remove temporary work directory# ****************************************echo "Remove temporary directory" >> $DEBUGLOGrm -rf $TEMPDIR echo "finished" && echo "Finished at `date`" >> $DEBUGLOGecho "Please find the following files in $EXPFOLDER" echo " "echo `ls -a $EXPFOLDER`echo "Please find the log file here: $DEBUGLOG" exit 0Um es zu starten muss folgendes getan werden:- kopiere den Inhalt des Codes in eine Datei, am besten mit einem Editor oder auch Textedit.- Speichere die Datei mit einem beliebigen Namen (hier heißt es runEpub.sh)- erstelle einen leeren Ordner in dem die konvertierten Dateien landen sollen- öffne das Terminal- navigiere in den Ordner wo dieses Skript liegt ("cd OrdnerName" zum Ordner wechseln, "ls" zum Anschauen welche Ordner verfügbar sind, "pwd" um zu schauen wo man sich gerade auf der Festplatte befindet)- Führe das Skript dann z.B. so aus:bash runEpub.sh $HOME/Desktop/export $HOME/Desktop/runEpub.log- bash ist der Befehl mit dem ich das Skript starte- dann kommt der Name des Skripts- dann der ganze Pfad zu dem erstellten Export Ordner ($HOME steht für das User Verzeichnis des aktuellen Users)- dann der ganze Pfad in dem eine log Datei erstellt werden soll In der Log Datei sieht man dann grob was gemacht wurde.Die originalen Dateien werden nicht verändert.

Issue #8

Code pre formatting lost
Accepted by admin
Type of issue
IV page is missing essential content
Reported
Mar 5, 2019