Merge from trunk

This commit is contained in:
Charles Haley 2012-10-06 08:52:40 +02:00
commit 3ffd06ced8
8 changed files with 70 additions and 7 deletions

View File

@ -49,9 +49,9 @@ Add books
1. **Add books from a single directory**: Opens a file chooser dialog and allows you to specify which books in a directory should be added. This action is *context sensitive*, i.e. it depends on which :ref:`catalog <catalogs>` you have selected. If you have selected the :guilabel:`Library`, books will be added to the library. If you have selected the ebook reader device, the books will be uploaded to the device, and so on. 1. **Add books from a single directory**: Opens a file chooser dialog and allows you to specify which books in a directory should be added. This action is *context sensitive*, i.e. it depends on which :ref:`catalog <catalogs>` you have selected. If you have selected the :guilabel:`Library`, books will be added to the library. If you have selected the ebook reader device, the books will be uploaded to the device, and so on.
2. **Add books from directories, including sub-directories (One book per directory, assumes every ebook file is the same book in a different format)**: Allows you to choose a directory. The directory and all its sub-directories are scanned recursively, and any ebooks found are added to the library. |app| assumes that each directory contains a single book. All ebook files in a directory are assumed to be the same book in different formats. This action is the inverse of the :ref:`Save to disk <save_to_disk_multiple>` action, i.e. you can :guilabel:`Save to disk`, delete the books and re-add them with no lost information except for the date. 2. **Add books from directories, including sub-directories (One book per directory, assumes every ebook file is the same book in a different format)**: Allows you to choose a directory. The directory and all its sub-directories are scanned recursively, and any ebooks found are added to the library. |app| assumes that each directory contains a single book. All ebook files in a directory are assumed to be the same book in different formats. This action is the inverse of the :ref:`Save to disk <save_to_disk_multiple>` action, i.e. you can :guilabel:`Save to disk`, delete the books and re-add them with no lost information except for the date (this assumes you have not changed any of the setting for the Save to disk action).
3. **Add books from directories, including sub-directories (Multiple books per directory, assumes every ebook file is a different book)**: Allows you to choose a directory. The directory and all its sub-directories are scanned recursively and any ebooks found are added to the library. |app| assumes that each directory contains many books. All ebook files with the same name in a directory are assumed to be the same book in different formats. Ebooks with different names are added as different books. This action is the inverse of the :ref:`Save to disk <save_to_disk_single>` action, i.e. you can :guilabel:`Save to disk`, delete the books and re-add them with no lost information except for the date. 3. **Add books from directories, including sub-directories (Multiple books per directory, assumes every ebook file is a different book)**: Allows you to choose a directory. The directory and all its sub-directories are scanned recursively and any ebooks found are added to the library. |app| assumes that each directory contains many books. All ebook files with the same name in a directory are assumed to be the same book in different formats. Ebooks with different names are added as different books.
4. **Add empty book. (Book Entry with no formats)**: Allows you to create a blank book record. This can be used to then manually fill out the information about a book that you may not have yet in your collection. 4. **Add empty book. (Book Entry with no formats)**: Allows you to create a blank book record. This can be used to then manually fill out the information about a book that you may not have yet in your collection.

View File

@ -0,0 +1,21 @@
from calibre.web.feeds.news import BasicNewsRecipe
class HindustanTimes(BasicNewsRecipe):
title = u'Mobile Nations'
language = 'en'
__author__ = 'Krittika Goyal'
oldest_article = 1 #days
max_articles_per_feed = 25
#encoding = 'cp1252'
use_embedded_content = False
no_stylesheets = True
auto_cleanup = True
#auto_cleanup_keep = '//div[@class="story-image shadowbox entry-content-asset"]'
feeds = [
('News',
'http://www.mobilenations.com/rss/mb.xml'),
]

View File

@ -0,0 +1,21 @@
from calibre.web.feeds.news import BasicNewsRecipe
class HindustanTimes(BasicNewsRecipe):
title = u'Television Without Pity'
language = 'en'
__author__ = 'Krittika Goyal'
oldest_article = 1 #days
max_articles_per_feed = 25
#encoding = 'cp1252'
use_embedded_content = False
no_stylesheets = True
auto_cleanup = True
#auto_cleanup_keep = '//div[@class="float_right"]'
feeds = [
('News',
'http://www.televisionwithoutpity.com/rss.xml'),
]

21
recipes/the_verge.recipe Normal file
View File

@ -0,0 +1,21 @@
from calibre.web.feeds.news import BasicNewsRecipe
class HindustanTimes(BasicNewsRecipe):
title = u'The Verge'
language = 'en'
__author__ = 'Krittika Goyal'
oldest_article = 1 #days
max_articles_per_feed = 25
#encoding = 'cp1252'
use_embedded_content = False
no_stylesheets = True
auto_cleanup = True
auto_cleanup_keep = '//div[@class="story-image shadowbox entry-content-asset"]'
feeds = [
('News',
'http://www.theverge.com/rss/index.xml'),
]

View File

@ -106,7 +106,7 @@ class KF8Writer(object):
not used for fonts. ''' not used for fonts. '''
def pointer(item, oref): def pointer(item, oref):
ref = item.abshref(oref) ref = urlnormalize(item.abshref(oref))
idx = self.resources.item_map.get(ref, None) idx = self.resources.item_map.get(ref, None)
if idx is not None: if idx is not None:
is_image = self.resources.records[idx-1][:4] not in {b'FONT'} is_image = self.resources.records[idx-1][:4] not in {b'FONT'}

View File

@ -146,7 +146,7 @@ class SendToConfig(QWidget): # {{{
def browse(self): def browse(self):
b = Browser(self.device.filesystem_cache, show_files=False, b = Browser(self.device.filesystem_cache, show_files=False,
parent=self) parent=self)
if b.exec_() == b.Accepted: if b.exec_() == b.Accepted and b.current_item is not None:
sid, path = b.current_item sid, path = b.current_item
self.t.setText('/'.join(path[1:])) self.t.setText('/'.join(path[1:]))
@ -250,7 +250,7 @@ class Rule(QWidget):
def browse(self): def browse(self):
b = Browser(self.device.filesystem_cache, show_files=False, b = Browser(self.device.filesystem_cache, show_files=False,
parent=self) parent=self)
if b.exec_() == b.Accepted: if b.exec_() == b.Accepted and b.current_item is not None:
sid, path = b.current_item sid, path = b.current_item
self.folder.setText('/'.join(path[1:])) self.folder.setText('/'.join(path[1:]))

View File

@ -3664,7 +3664,7 @@ books_series_link feeds
if not ext: if not ext:
continue continue
ext = ext[1:].lower() ext = ext[1:].lower()
if ext not in BOOK_EXTENSIONS: if ext not in BOOK_EXTENSIONS and ext != 'opf':
continue continue
key = os.path.splitext(path)[0] key = os.path.splitext(path)[0]