/**
*
* EPUB2XLS
*
* @version 1.0.0 vom 07.12.2013
* @author Daniel Ruf
*/
import java.io.File;
import java.io.OutputStreamWriter;
import java.io.FileFilter;
import java.io.FileWriter;
import java.io.Writer;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.List;
import nl.siegmann.epublib.domain.Author;
import nl.siegmann.epublib.epub.EpubReader;
import nl.siegmann.epublib.domain.Book;
import org.apache.commons.lang3.StringEscapeUtils;
public class epub2xls {
public static void main(String[] args) throws Exception {
String path2 = ".";
File directory = new File(path2);
File[] epub_files;
File[] epub_files_local;
File[] directories;
String version = "1.0.0";
String program = "EPUB2XLS";
System.out.println(program + " " + version );
String excel_sheet ="";
InputStream header = epub2xls.class.getResourceAsStream("jar_files/header.xml");
String header_string = convertStreamToString(header);
excel_sheet = header_string;
epub_files_local=directory.listFiles(new FileFilter() {
public boolean accept(File dir) {
return dir.getName().toString().toLowerCase().endsWith(".epub") && dir.isFile();
}
});
for (int m = 0; m < epub_files_local.length; m++)
{
int epub_file_number_local = m+1;
System.out.print("\rProcessing file " + epub_file_number_local + " of " + epub_files_local.length+" ");
File epub_local=epub_files_local[m];
String dir_name_local = directory.getName();
String epub_name_local = epub_local.getName();
EpubReader epubReader_local = new EpubReader();
try {
Book book_local = epubReader_local.readEpub(new FileInputStream(epub_local));
List<Author> authors_local = book_local.getMetadata().getAuthors();
StringBuilder sb_local = new StringBuilder();
for(Author s: authors_local) {
sb_local.append(s.getFirstname() + " " + s.getLastname()).append(',');
}
if (sb_local.length()>0) {
sb_local.deleteCharAt(sb_local.length()-1);
} // end of if
String title_local = book_local.getMetadata().getFirstTitle();
String authors_string_local = sb_local.toString();
String file_path_local = dir_name_local + "/" + epub_name_local;
InputStream row_local = epub2xls.class.getResourceAsStream("jar_files/row.xml");
String row_string_local = convertStreamToString(row_local);
row_string_local = row_string_local.replace("#path#", StringEscapeUtils.escapeHtml4(file_path_local));
row_string_local = row_string_local.replace("#author#", StringEscapeUtils.escapeHtml4(authors_string_local));
row_string_local = row_string_local.replace("#title#", StringEscapeUtils.escapeHtml4(title_local));
excel_sheet += row_string_local;
} catch(Exception x) {
} finally {
} // end of try
}
if (epub_files_local.length>0) {
System.out.println("");
} // end of if
directories=directory.listFiles(new FileFilter() {
public boolean accept(File dir) {
return /*dir.getName().toString().toLowerCase().length() == 1 &&*/ dir.isDirectory();
}
});
System.out.println(directories.length + " directories found");
for (int j = 0; j < directories.length; j++)
{
int file_number = j+1;
System.out.print("\rProcessing directory " + file_number + " of " + directories.length);
File path=directories[j];
epub_files=path.listFiles(new FileFilter() {
public boolean accept(File dir) {
return dir.getName().toString().toLowerCase().endsWith(".epub") && dir.isFile();
}
});
for (int k = 0; k < epub_files.length; k++)
{
int epub_file_number = k+1;
System.out.print("\rProcessing file " + epub_file_number + " of " + epub_files.length+" ");
File epub=epub_files[k];
String dir_name = path.getName();
String epub_name = epub.getName();
EpubReader epubReader = new EpubReader();
try {
Book book = epubReader.readEpub(new FileInputStream(epub));
List<Author> authors = book.getMetadata().getAuthors();
StringBuilder sb = new StringBuilder();
for(Author s: authors) {
sb.append(s.getFirstname() + " " + s.getLastname()).append(',');
}
if (sb.length()>0) {
sb.deleteCharAt(sb.length()-1);
} // end of if
String title = book.getMetadata().getFirstTitle();
String authors_string = sb.toString();
String file_path = dir_name + "/" + epub_name;
InputStream row = epub2xls.class.getResourceAsStream("jar_files/row.xml");
String row_string = convertStreamToString(row);
row_string = row_string.replace("#path#", StringEscapeUtils.escapeHtml4(file_path));
row_string = row_string.replace("#author#", StringEscapeUtils.escapeHtml4(authors_string));
row_string = row_string.replace("#title#", StringEscapeUtils.escapeHtml4(title));
excel_sheet += row_string;
} catch(Exception x) {
} finally {
} // end of try
}
}
InputStream footer = epub2xls.class.getResourceAsStream("jar_files/footer.xml");
String footer_string = convertStreamToString(footer);
excel_sheet += footer_string;
FileWriter fileWriter = new FileWriter ("ebooks.xls");
BufferedWriter bufferedWriter = new BufferedWriter (fileWriter);
bufferedWriter.write (excel_sheet);
bufferedWriter.close ();
System.out.println("");
System.out.println("Done");
} // end of main
public static String convertStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
} // end of class epub2xls