script script   0   785
Python Script 1: Convert ebooks from epub to mobi format

We are starting a series of python scripts which we may use in our daily life to automate mundane task and save some time.

This is the first article in this series. Recently I bought Amazon's Ebook Reader, kindle paperwhite 3.

I purchased few books from kindle store and downloaded most of the books in Epub format. Now kindle doesn't support epub format. You need to convert them to either mobi or azw3 format.

Converting books one by one using some online tool is extremely time consuming and frustrating. Hence I searched for some tool which might perform bulk conversion. I found calibre. You may install and use it to convert books from one format to other in bulk.

But if you are more of a terminal guy then you need to read further. First install the calibre. Use the tool if you want to. Or use the below script to convert the books.

from os import listdir, rename
from os.path import isfile, join
import subprocess


# return name of file to be kept after conversion.
# we are just changing the extension. azw3 here.
def get_final_filename(f):
    f = f.split(".")
    filename = ".".join(f[0:-1])
    processed_file_name = filename+".azw3"
    return processed_file_name


# return file extension. pdf or epub or mobi
def get_file_extension(f):
    return f.split(".")[-1]


# list of extensions that needs to be ignored.
ignored_extensions = ["pdf"]

# here all the downloaded files are kept
mypath = "/home/user/Downloads/ebooks/"

# path where converted files are stored
mypath_converted = "/home/user/Downloads/ebooks/kindle/"

# path where processed files will be moved to, clearing the downloaded folder
mypath_processed = "/home/user/Downloads/ebooks/processed/"

raw_files = [f for f in listdir(mypath) if isfile(join(mypath, f))]
converted_files =  [f for f in listdir(mypath_converted) if isfile(join(mypath_converted, f))]

for f in raw_files:
    final_file_name = get_final_filename(f)
    extension = get_file_extension(f)
    if final_file_name not in converted_files and extension not in ignored_extensions:
        print("Converting : "+f)
        try:
            subprocess.call(["ebook-convert",mypath+f,mypath_converted+final_file_name]) 
            s = rename(mypath+f, mypath_processed+f)
            print(s)
        except Exception as e:
            print(e)
    else:
        print("Already exists : "+final_file_name)
 

I have a folder 'ebooks' which contains all the downloaded ebooks.

After files are converted to required format, they are stored in 'ebooks/kindle' directory and the original file is moved to 'ebooks/processed' directory.


Once calibre is installed, a command line utility 'ebook-convert' is made available which takes two command line arguments, name of file to be converted and name of output file. We will be calling this command line utility from our program, passing the file names one by one.


As of now we are ignoring pdf file as they take lot of time to convert and require some setting updates in calibre.

I will leave that up to you.


Kindle unlimited offer : Read over 1 million books.


script script   0   785

Related Articles:
Python Script 3: Validate, format and Beautify JSON string Using Python
Validating json using python code, format and beautify json file using python, validate json file using python, how to validate, format and beautify json...
Python Script 6: Wishing Merry Christmas using Python Turtle
Python script to wish merry Christmas using python turtle. Using Python Turtle module to wish merry Christmas to your friends....
Python Script 12: Drawing Indian National Flag Tricolor using Python Turtle
Drawing Indian National Flag Tricolor using Python Turtle, Creating In Indian flag using turtle code in python...
Python Script 11: Drawing Flag of United States of America using Python Turtle
Python turtle code to create United States of America flag. Drawing USA flag using turtle in python....

0 thoughts on 'Python Script 1: Convert Ebooks From Epub To Mobi Format'
Leave a comment:


*All Fields are mandatory. **Email Id will not be published publicly.


SUBSCRIBE
Please subscribe to get the latest articles in your mailbox.



Recent Posts:






© pythoncircle.com 2018-2019