diff -Nur calibre-2.45.0.orig/resources/images.qrc calibre-2.45.0/resources/images.qrc
--- calibre-2.45.0.orig/resources/images.qrc	2015-10-26 15:40:08.000000000 -0300
+++ calibre-2.45.0/resources/images.qrc	2015-11-27 13:00:44.758902890 -0300
@@ -196,8 +196,6 @@
 <file>images/mimetypes/svg.png</file>
 <file>images/mimetypes/odt.png</file>
 <file>images/mimetypes/epub.png</file>
-<file>images/mimetypes/cbr.png</file>
-<file>images/mimetypes/rar.png</file>
 <file>images/mimetypes/tpz.png</file>
 <file>images/mimetypes/djvu.png</file>
 <file>images/mimetypes/computer.png</file>
@@ -217,4 +215,4 @@
 <file>images/mimetypes/html.png</file>
 <file>images/mimetypes/lrx.png</file>
 </qresource>
-</RCC>
\ No newline at end of file
+</RCC>
diff -Nur calibre-2.34.0.orig/resources/mime.types calibre-2.34.0/resources/mime.types
--- calibre-2.34.0.orig/resources/mime.types	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/resources/mime.types	2015-08-11 16:40:39.532800843 -0300
@@ -138,7 +138,6 @@
 application/prs.nprend
 application/prs.plucker
 application/qsig
-application/rar				rar
 application/rdf+xml				rdf
 application/reginfo+xml				rif
 application/relax-ng-compact-syntax				rnc
@@ -849,7 +848,6 @@
 application/x-pkcs7-crl				crl
 application/x-python-code				pyc pyo
 application/x-quicktimeplayer				qtl
-application/x-rar-compressed				rar
 application/x-redhat-package-manager				rpm
 application/x-sh				sh
 application/x-shar				shar
@@ -1372,7 +1370,6 @@
 application/x-kindle-application           azw2
 application/x-mobi8-ebook                  azw3
 application/x-cbz                          cbz
-application/x-cbr                          cbr
 application/x-cb7                          cb7
 application/x-cbc                          cbc
 application/x-koboreader-ebook             kobo
diff -Nur calibre-2.34.0.orig/session.vim calibre-2.34.0/session.vim
--- calibre-2.34.0.orig/session.vim	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/session.vim	2015-08-11 16:40:39.532800843 -0300
@@ -11,7 +11,6 @@
             \'/usr/include/freetype2',
             \'/usr/include/fontconfig',
             \'src/qtcurve/common', 'src/qtcurve',
-            \'src/unrar',
             \'src/qt-harfbuzz/src',
             \'/usr/include/ImageMagick',
             \]
diff -Nur calibre-2.45.0.orig/setup/extensions.py calibre-2.45.0/setup/extensions.py
--- calibre-2.45.0.orig/setup/extensions.py	2015-11-27 00:22:13.000000000 -0300
+++ calibre-2.45.0/setup/extensions.py	2015-11-27 13:00:44.758902890 -0300
@@ -249,24 +249,6 @@
                 sip_files=['calibre/ebooks/pdf/render/qt_hack.sip']
                 ),
 
-    Extension('unrar',
-              ['unrar/%s.cpp'%(x.partition('.')[0]) for x in '''
-               rar.o strlist.o strfn.o pathfn.o savepos.o smallfn.o global.o file.o
-               filefn.o filcreat.o archive.o arcread.o unicode.o system.o
-               isnt.o crypt.o crc.o rawread.o encname.o resource.o match.o
-               timefn.o rdwrfn.o consio.o options.o ulinks.o errhnd.o rarvm.o
-               secpassword.o rijndael.o getbits.o sha1.o extinfo.o extract.o
-               volume.o list.o find.o unpack.o cmddata.o filestr.o scantree.o
-               '''.split()] + ['calibre/utils/unrar.cpp'],
-              inc_dirs=['unrar'],
-              cflags=[('/' if iswindows else '-') + x for x in (
-                  'DSILENT', 'DRARDLL', 'DUNRAR')] + (
-                  [] if iswindows else ['-D_FILE_OFFSET_BITS=64',
-                                        '-D_LARGEFILE_SOURCE']),
-              optimize_level=2,
-              libraries=['User32', 'Advapi32', 'kernel32', 'Shell32'] if iswindows else []
-              ),
-
     ]
 
 
diff -Nur calibre-2.34.0.orig/setup/installer/windows/freeze.py calibre-2.34.0/setup/installer/windows/freeze.py
--- calibre-2.34.0.orig/setup/installer/windows/freeze.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/setup/installer/windows/freeze.py	2015-08-11 16:40:39.532800843 -0300
@@ -672,7 +672,7 @@
                         # Because of https://github.com/fancycode/MemoryModule/issues/4
                         # any extensions that use C++ exceptions must be loaded
                         # from files
-                        'unrar.pyd', 'wpd.pyd', 'podofo.pyd',
+                        'wpd.pyd', 'podofo.pyd',
                         'progress_indicator.pyd', 'hunspell.pyd',
                         # As per this https://bugs.launchpad.net/bugs/1087816
                         # on some systems magick.pyd fails to load from memory
diff -Nur calibre-2.34.0.orig/setup/resources.py calibre-2.34.0/setup/resources.py
--- calibre-2.34.0.orig/setup/resources.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/setup/resources.py	2015-08-11 16:40:39.532800843 -0300
@@ -285,7 +285,7 @@
             log = Log()
             # log.outputs = []
             for inf in supported_input_formats():
-                if inf in ('zip', 'rar', 'oebzip'):
+                if inf in ('zip', 'oebzip'):
                     continue
                 for ouf in available_output_formats():
                     of = ouf if ouf == 'oeb' else 'dummy.'+ouf
diff -Nur calibre-2.34.0.orig/src/calibre/__init__.py calibre-2.34.0/src/calibre/__init__.py
--- calibre-2.34.0.orig/src/calibre/__init__.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/src/calibre/__init__.py	2015-08-11 16:40:39.533800794 -0300
@@ -273,10 +273,7 @@
     # First use the file header to identify its type
     with open(path, 'rb') as f:
         id_ = f.read(3)
-    if id_ == b'Rar':
-        from calibre.utils.unrar import extract as rarextract
-        extractor = rarextract
-    elif id_.startswith(b'PK'):
+    if id_.startswith(b'PK'):
         from calibre.libunzip import extract as zipextract
         extractor = zipextract
     if extractor is None:
@@ -285,9 +282,6 @@
         if ext in ['zip', 'cbz', 'epub', 'oebzip']:
             from calibre.libunzip import extract as zipextract
             extractor = zipextract
-        elif ext in ['cbr', 'rar']:
-            from calibre.utils.unrar import extract as rarextract
-            extractor = rarextract
     if extractor is None:
         raise Exception('Unknown archive type')
     extractor(path, dir)
diff -Nur calibre-2.45.0.orig/src/calibre/constants.py calibre-2.45.0/src/calibre/constants.py
--- calibre-2.45.0.orig/src/calibre/constants.py	2015-11-27 00:22:13.000000000 -0300
+++ calibre-2.45.0/src/calibre/constants.py	2015-11-27 13:00:44.758902890 -0300
@@ -142,7 +142,6 @@
                 'zlib2',
                 'html',
                 'freetype',
-                'unrar',
                 'qt_hack',
                 '_regex',
                 'hunspell',
diff -Nur calibre-2.34.0.orig/src/calibre/customize/builtins.py calibre-2.34.0/src/calibre/customize/builtins.py
--- calibre-2.34.0.orig/src/calibre/customize/builtins.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/src/calibre/customize/builtins.py	2015-08-11 16:40:39.533800794 -0300
@@ -127,7 +127,7 @@
 class ComicMetadataReader(MetadataReaderPlugin):
 
     name = 'Read comic metadata'
-    file_types = set(['cbr', 'cbz'])
+    file_types = set(['cbz'])
     description = _('Extract cover from comic files')
 
     def customization_help(self, gui=False):
@@ -138,14 +138,8 @@
             pos = stream.tell()
             id_ = stream.read(3)
             stream.seek(pos)
-            if id_ == b'Rar':
-                ftype = 'cbr'
-            elif id_.startswith(b'PK'):
+            if id_.startswith(b'PK'):
                 ftype = 'cbz'
-        if ftype == 'cbr':
-            from calibre.utils.unrar import extract_first_alphabetically as extract_first
-            extract_first
-        else:
             from calibre.libunzip import extract_member
             extract_first = functools.partial(extract_member,
                     sort_alphabetically=True)
@@ -153,7 +147,7 @@
         ret = extract_first(stream)
         mi = MetaInformation(None, None)
         stream.seek(0)
-        if ftype in {'cbr', 'cbz'}:
+        if ftype in {'cbz'}:
             series_index = self.site_customization
             if series_index not in {'volume', 'issue'}:
                 series_index = 'volume'
@@ -336,16 +330,6 @@
         from calibre.ebooks.metadata.pml import get_metadata
         return get_metadata(stream)
 
-class RARMetadataReader(MetadataReaderPlugin):
-
-    name = 'Read RAR metadata'
-    file_types = set(['rar'])
-    description = _('Read metadata from ebooks in RAR archives')
-
-    def get_metadata(self, stream, ftype):
-        from calibre.ebooks.metadata.rar import get_metadata
-        return get_metadata(stream)
-
 class RBMetadataReader(MetadataReaderPlugin):
 
     name        = 'Read RB metadata'
diff -Nur calibre-2.34.0.orig/src/calibre/customize/ui.py calibre-2.34.0/src/calibre/customize/ui.py
--- calibre-2.34.0.orig/src/calibre/customize/ui.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/src/calibre/customize/ui.py	2015-08-11 16:40:39.534800746 -0300
@@ -449,7 +449,7 @@
         if not is_disabled(plugin):
             for format in plugin.file_types:
                 formats.add(format)
-    formats.add('zip'), formats.add('rar')
+    formats.add('zip')
     return formats
 
 
diff -Nur calibre-2.34.0.orig/src/calibre/devices/kobo/driver.py calibre-2.34.0/src/calibre/devices/kobo/driver.py
--- calibre-2.34.0.orig/src/calibre/devices/kobo/driver.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/src/calibre/devices/kobo/driver.py	2015-08-11 16:40:39.534800746 -0300
@@ -77,7 +77,7 @@
     book_class = Book
 
     # Ordered list of supported formats
-    FORMATS     = ['kepub', 'epub', 'pdf', 'txt', 'cbz', 'cbr']
+    FORMATS     = ['kepub', 'epub', 'pdf', 'txt', 'cbz']
     CAN_SET_METADATA = ['collections']
 
     VENDOR_ID           = [0x2237]
diff -Nur calibre-2.34.0.orig/src/calibre/devices/mtp/filesystem_cache.py calibre-2.34.0/src/calibre/devices/mtp/filesystem_cache.py
--- calibre-2.34.0.orig/src/calibre/devices/mtp/filesystem_cache.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/src/calibre/devices/mtp/filesystem_cache.py	2015-08-11 16:40:39.535800698 -0300
@@ -18,7 +18,7 @@
 from calibre.utils.icu import sort_key, lower
 from calibre.ebooks import BOOK_EXTENSIONS
 
-bexts = frozenset(BOOK_EXTENSIONS) - {'mbp', 'tan', 'rar', 'zip', 'xml'}
+bexts = frozenset(BOOK_EXTENSIONS) - {'mbp', 'tan', 'zip', 'xml'}
 
 class FileOrFolder(object):
 
diff -Nur calibre-2.34.0.orig/src/calibre/ebooks/__init__.py calibre-2.34.0/src/calibre/ebooks/__init__.py
--- calibre-2.34.0.orig/src/calibre/ebooks/__init__.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/src/calibre/ebooks/__init__.py	2015-08-11 16:40:39.535800698 -0300
@@ -25,9 +25,9 @@
 class ParserError(ValueError):
     pass
 
-BOOK_EXTENSIONS = ['lrf', 'rar', 'zip', 'rtf', 'lit', 'txt', 'txtz', 'text', 'htm', 'xhtm',
+BOOK_EXTENSIONS = ['lrf', 'zip', 'rtf', 'lit', 'txt', 'txtz', 'text', 'htm', 'xhtm',
                    'html', 'htmlz', 'xhtml', 'pdf', 'pdb', 'updb', 'pdr', 'prc', 'mobi', 'azw', 'doc',
-                   'epub', 'fb2', 'djv', 'djvu', 'lrx', 'cbr', 'cbz', 'cbc', 'oebzip',
+                   'epub', 'fb2', 'djv', 'djvu', 'lrx', 'cbz', 'cbc', 'oebzip',
                    'rb', 'imp', 'odt', 'chm', 'tpz', 'azw1', 'pml', 'pmlz', 'mbp', 'tan', 'snb',
                    'xps', 'oxps', 'azw4', 'book', 'zbf', 'pobi', 'docx', 'docm', 'md',
                    'textile', 'markdown', 'ibook', 'ibooks', 'iba', 'azw3', 'ps', 'kepub']
diff -Nur calibre-2.34.0.orig/src/calibre/ebooks/conversion/plugins/comic_input.py calibre-2.34.0/src/calibre/ebooks/conversion/plugins/comic_input.py
--- calibre-2.34.0.orig/src/calibre/ebooks/conversion/plugins/comic_input.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/src/calibre/ebooks/conversion/plugins/comic_input.py	2015-08-11 16:40:39.535800698 -0300
@@ -17,8 +17,8 @@
 
     name        = 'Comic Input'
     author      = 'Kovid Goyal'
-    description = 'Optimize comic files (.cbz, .cbr, .cbc) for viewing on portable devices'
-    file_types  = set(['cbz', 'cbr', 'cbc'])
+    description = 'Optimize comic files (.cbz, .cbc) for viewing on portable devices'
+    file_types  = set(['cbz', 'cbc'])
     is_image_collection = True
     core_usage = -1
 
diff -Nur calibre-2.34.0.orig/src/calibre/ebooks/conversion/plumber.py calibre-2.34.0/src/calibre/ebooks/conversion/plumber.py
--- calibre-2.34.0.orig/src/calibre/ebooks/conversion/plumber.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/src/calibre/ebooks/conversion/plumber.py	2015-08-11 16:40:39.536800650 -0300
@@ -42,7 +42,7 @@
 
 def supported_input_formats():
     fmts = available_input_formats()
-    for x in ('zip', 'rar', 'oebzip'):
+    for x in ('zip', 'oebzip'):
         fmts.add(x)
     return fmts
 
@@ -60,7 +60,7 @@
                 (self.global_max - self.global_min)
         self.global_reporter(global_frac, msg)
 
-ARCHIVE_FMTS = ('zip', 'rar', 'oebzip')
+ARCHIVE_FMTS = ('zip', 'oebzip')
 
 class Plumber(object):
 
diff -Nur calibre-2.45.0.orig/src/calibre/ebooks/metadata/archive.py calibre-2.45.0/src/calibre/ebooks/metadata/archive.py
--- calibre-2.45.0.orig/src/calibre/ebooks/metadata/archive.py	2015-11-27 00:22:13.000000000 -0300
+++ calibre-2.45.0/src/calibre/ebooks/metadata/archive.py	2015-11-27 13:00:44.762236057 -0300
@@ -27,8 +27,6 @@
     ans = None
     if id_ == stringFileHeader:
         ans = 'zip'
-    elif id_.startswith('Rar'):
-        ans = 'rar'
     try:
         stream.seek(pos)
     except:
@@ -40,25 +38,16 @@
     name = 'Archive Extract'
     author = 'Kovid Goyal'
     description = _('Extract common e-book formats from archives '
-        '(zip/rar) files. Also try to autodetect if they are actually '
-        'cbz/cbr files.')
-    file_types = set(['zip', 'rar'])
+        'zip files. Also try to autodetect if they are actually '
+        'cbz files.')
+    file_types = set(['zip'])
     supported_platforms = ['windows', 'osx', 'linux']
     on_import = True
 
     def run(self, archive):
         from calibre.utils.zipfile import ZipFile
-        is_rar = archive.lower().endswith('.rar')
-        if is_rar:
-            from calibre.utils.unrar import extract_member, names
-        else:
-            zf = ZipFile(archive, 'r')
-
-        if is_rar:
-            with open(archive, 'rb') as rf:
-                fnames = list(names(rf))
-        else:
-            fnames = zf.namelist()
+        zf = ZipFile(archive, 'r')
+        fnames = zf.namelist()
 
         def fname_ok(fname):
             bn = os.path.basename(fname).lower()
@@ -74,7 +63,7 @@
 
         fnames = list(filter(fname_ok, fnames))
         if is_comic(fnames):
-            ext = '.cbr' if is_rar else '.cbz'
+            ext = '.cbz'
             of = self.temporary_file('_archive_extract'+ext)
             with open(archive, 'rb') as f:
                 of.write(f.read())
@@ -91,12 +80,7 @@
 
         of = self.temporary_file('_archive_extract.'+ext)
         with closing(of):
-            if is_rar:
-                with open(archive, 'rb') as f:
-                    data = extract_member(f, match=None, name=fname)[1]
-                of.write(data)
-            else:
-                of.write(zf.read(fname))
+            of.write(zf.read(fname))
         return of.name
 
 def get_comic_book_info(d, mi, series_index='volume'):
@@ -157,10 +141,6 @@
         from calibre.utils.zipfile import ZipFile
         zf = ZipFile(stream)
         comment = zf.comment
-    elif stream_type == 'cbr':
-        from calibre.utils.unrar import RARFile
-        f = RARFile(stream, get_comment=True)
-        comment = f.comment
 
     if comment:
         import json
diff -Nur calibre-2.45.0.orig/src/calibre/ebooks/oeb/iterator/book.py calibre-2.45.0/src/calibre/ebooks/oeb/iterator/book.py
--- calibre-2.45.0.orig/src/calibre/ebooks/oeb/iterator/book.py	2015-11-27 00:22:13.000000000 -0300
+++ calibre-2.45.0/src/calibre/ebooks/oeb/iterator/book.py	2015-11-27 13:00:44.762236057 -0300
@@ -140,7 +140,7 @@
         self.spine = []
         Spiny = partial(SpineItem, read_anchor_map=read_anchor_map, read_links=read_links,
                 run_char_count=run_char_count, from_epub=self.book_format == 'EPUB')
-        is_comic = plumber.input_fmt.lower() in {'cbc', 'cbz', 'cbr', 'cb7'}
+        is_comic = plumber.input_fmt.lower() in {'cbc', 'cbz', 'cb7'}
         for i in ordered:
             spath = i.path
             mt = None
diff -Nur calibre-2.45.0.orig/src/calibre/gui2/actions/add.py calibre-2.45.0/src/calibre/gui2/actions/add.py
--- calibre-2.45.0.orig/src/calibre/gui2/actions/add.py	2015-11-27 00:22:13.000000000 -0300
+++ calibre-2.45.0/src/calibre/gui2/actions/add.py	2015-11-27 13:00:44.762236057 -0300
@@ -38,8 +38,8 @@
             (_('Text books'), ['txt', 'text', 'rtf']),
             (_('PDF Books'), ['pdf', 'azw4']),
             (_('SNB Books'), ['snb']),
-            (_('Comics'), ['cbz', 'cbr', 'cbc']),
-            (_('Archives'), ['zip', 'rar']),
+            (_('Comics'), ['cbz', 'cbc']),
+            (_('Archives'), ['zip']),
             (_('Wordprocessor files'), ['odt', 'doc', 'docx']),
     ]
 
@@ -66,7 +66,7 @@
             'sub-directories (Multiple books per directory, assumes every '
             'ebook file is a different book)')).triggered.connect(
                     self.add_recursive_multiple)
-        arm = self.add_archive_menu = self.add_menu.addMenu(_('Add multiple books from archive (ZIP/RAR)'))
+        arm = self.add_archive_menu = self.add_menu.addMenu(_('Add multiple books from archive (ZIP)'))
         self.create_menu_action(arm, 'recursive-single-archive', _(
             'One book per directory in the archive')).triggered.connect(partial(self.add_archive, True))
         self.create_menu_action(arm, 'recursive-multiple-archive', _(
@@ -199,7 +199,7 @@
     def add_archive(self, single):
         paths = choose_files(
             self.gui, 'recursive-archive-add', _('Choose archive file'),
-            filters=[(_('Archives'), ('zip', 'rar'))], all_files=False, select_only_single_file=False)
+            filters=[(_('Archives'), ('zip'))], all_files=False, select_only_single_file=False)
         if paths:
             self.do_add_recursive(paths, single, list_of_archives=True)
 
diff -Nur calibre-2.34.0.orig/src/calibre/gui2/add.py calibre-2.34.0/src/calibre/gui2/add.py
--- calibre-2.34.0.orig/src/calibre/gui2/add.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/src/calibre/gui2/add.py	2015-08-11 16:40:39.537800601 -0300
@@ -137,9 +137,6 @@
                     prints('Corrupt ZIP file, trying to use local headers')
                     from calibre.utils.localunzip import extractall
                     extractall(source, tdir)
-            elif source.lower().endswith('.rar'):
-                from calibre.utils.unrar import extract
-                extract(source, tdir)
             return tdir
 
         try:
diff -Nur calibre-2.34.0.orig/src/calibre/library/server/opds.py calibre-2.34.0/src/calibre/library/server/opds.py
--- calibre-2.34.0.orig/src/calibre/library/server/opds.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/src/calibre/library/server/opds.py	2015-08-11 16:40:39.537800601 -0300
@@ -29,7 +29,7 @@
         1 : '/opds',
 }
 
-STANZA_FORMATS = frozenset(['epub', 'pdb', 'pdf', 'cbr', 'cbz', 'djvu'])
+STANZA_FORMATS = frozenset(['epub', 'pdb', 'pdf', 'cbz', 'djvu'])
 
 def url_for(name, version, **kwargs):
     if not name.endswith('_'):
diff -Nur calibre-2.34.0.orig/src/calibre/linux.py calibre-2.34.0/src/calibre/linux.py
--- calibre-2.34.0.orig/src/calibre/linux.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/src/calibre/linux.py	2015-08-11 16:40:39.537800601 -0300
@@ -312,7 +312,7 @@
         ):
             for fmt in fmts:
                 is_input = group_title == input_group
-                if is_input and fmt in {'rar', 'zip', 'oebzip'}:
+                if is_input and fmt in {'zip', 'oebzip'}:
                     continue
                 p = (get_parser(input_fmt=fmt) if is_input
                      else get_parser(output_fmt=fmt))
diff -Nur calibre-2.45.0.orig/src/calibre/test_build.py calibre-2.45.0/src/calibre/test_build.py
--- calibre-2.45.0.orig/src/calibre/test_build.py	2015-11-27 00:22:13.000000000 -0300
+++ calibre-2.45.0/src/calibre/test_build.py	2015-11-27 13:00:44.762236057 -0300
@@ -162,11 +162,6 @@
         raise RuntimeError('PIL choked!')
     print ('PIL OK!')
 
-def test_unrar():
-    from calibre.utils.unrar import test_basic
-    test_basic()
-    print ('Unrar OK!')
-
 def test_ssl():
     import ssl
     ssl
@@ -251,7 +246,6 @@
     test_sqlite()
     test_apsw()
     test_imaging()
-    test_unrar()
     test_certgen()
     test_icu()
     test_qt()
diff -Nur calibre-2.34.0.orig/src/calibre/utils/search_query_parser.py calibre-2.34.0/src/calibre/utils/search_query_parser.py
--- calibre-2.34.0.orig/src/calibre/utils/search_query_parser.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/src/calibre/utils/search_query_parser.py	2015-08-11 16:40:39.538800552 -0300
@@ -445,16 +445,16 @@
      u'Tor Books',
      u'lrf'],
  8: [u'Stalky and Co.', u'Rudyard Kipling', u'manybooks.net', u'lrf'],
- 9: [u'A Game of Thrones', u'George R. R. Martin', None, u'lrf,rar'],
- 10: [u'A Clash of Kings', u'George R. R. Martin', None, u'lrf,rar'],
- 11: [u'A Storm of Swords', u'George R. R. Martin', None, u'lrf,rar'],
+ 9: [u'A Game of Thrones', u'George R. R. Martin', None, u'lrf'],
+ 10: [u'A Clash of Kings', u'George R. R. Martin', None, u'lrf'],
+ 11: [u'A Storm of Swords', u'George R. R. Martin', None, u'lrf'],
  12: [u'Biggles - Pioneer Air Fighter', u'W. E. Johns', None, u'lrf,rtf'],
  13: [u'Biggles of the Camel Squadron',
       u'W. E. Johns',
       u'London:Thames, (1977)',
       u'lrf,rtf'],
- 14: [u'A Feast for Crows', u'George R. R. Martin', None, u'lrf,rar'],
- 15: [u'Cryptonomicon', u'Neal Stephenson', None, u'lrf,rar'],
+ 14: [u'A Feast for Crows', u'George R. R. Martin', None, u'lrf'],
+ 15: [u'Cryptonomicon', u'Neal Stephenson', None, u'lrf'],
  16: [u'Quicksilver', u'Neal Stephenson', None, u'lrf,zip'],
  17: [u'The Comedies of William Shakespeare',
       u'William Shakespeare',
@@ -469,15 +469,15 @@
       None,
       u'lrf'],
  20: [u'An Ideal Husband', u'Oscar Wilde', u'manybooks.net', u'lrf'],
- 21: [u'Flight of the Nighthawks', u'Raymond E. Feist', None, u'lrf,rar'],
- 22: [u'Into a Dark Realm', u'Raymond E. Feist', None, u'lrf,rar'],
- 23: [u'The Sundering', u'Walter Jon Williams', None, u'lrf,rar'],
- 24: [u'The Praxis', u'Walter Jon Williams', None, u'lrf,rar'],
- 25: [u'Conventions of War', u'Walter Jon Williams', None, u'lrf,rar'],
- 26: [u'Banewreaker', u'Jacqueline Carey', None, u'lrf,rar'],
- 27: [u'Godslayer', u'Jacqueline Carey', None, u'lrf,rar'],
- 28: [u"Kushiel's Scion", u'Jacqueline Carey', None, u'lrf,rar'],
- 29: [u'Underworld', u'Don DeLillo', None, u'lrf,rar'],
+ 21: [u'Flight of the Nighthawks', u'Raymond E. Feist', None, u'lrf'],
+ 22: [u'Into a Dark Realm', u'Raymond E. Feist', None, u'lrf'],
+ 23: [u'The Sundering', u'Walter Jon Williams', None, u'lrf'],
+ 24: [u'The Praxis', u'Walter Jon Williams', None, u'lrf'],
+ 25: [u'Conventions of War', u'Walter Jon Williams', None, u'lrf'],
+ 26: [u'Banewreaker', u'Jacqueline Carey', None, u'lrf'],
+ 27: [u'Godslayer', u'Jacqueline Carey', None, u'lrf'],
+ 28: [u"Kushiel's Scion", u'Jacqueline Carey', None, u'lrf'],
+ 29: [u'Underworld', u'Don DeLillo', None, u'lrf'],
  30: [u'Genghis Khan and The Making of the Modern World',
       u'Jack Weatherford Orc',
       u'Three Rivers Press',
@@ -488,9 +488,9 @@
       u'lrf,zip'],
  32: [u'The Killer Angels', u'Michael Shaara', None, u'html,lrf'],
  33: [u'Band Of Brothers', u'Stephen E Ambrose', None, u'lrf,txt'],
- 34: [u'The Gates of Rome', u'Conn Iggulden', None, u'lrf,rar'],
+ 34: [u'The Gates of Rome', u'Conn Iggulden', None, u'lrf'],
  35: [u'The Death of Kings', u'Conn Iggulden', u'Bantam Dell', u'lit,lrf'],
- 36: [u'The Field of Swords', u'Conn Iggulden', None, u'lrf,rar'],
+ 36: [u'The Field of Swords', u'Conn Iggulden', None, u'lrf'],
  37: [u'Masterman Ready', u'Marryat, Captain Frederick', None, u'lrf'],
  38: [u'With the Lightnings',
       u'David Drake',
@@ -503,16 +503,16 @@
  40: [u'The Far Side of The Stars',
       u'David Drake',
       u'Baen Publishing Enterprises',
-      u'lrf,rar'],
+      u'lrf'],
  41: [u'The Way to Glory',
       u'David Drake',
       u'Baen Publishing Enterprises',
-      u'lrf,rar'],
- 42: [u'Some Golden Harbor', u'David Drake', u'Baen Books', u'lrf,rar'],
+      u'lrf'],
+ 42: [u'Some Golden Harbor', u'David Drake', u'Baen Books', u'lrf'],
  43: [u'Harry Potter And The Half-Blood Prince',
       u'J. K. Rowling',
       None,
-      u'lrf,rar'],
+      u'lrf'],
  44: [u'Harry Potter and the Order of the Phoenix',
       u'J. K. Rowling',
       None,
@@ -521,12 +521,12 @@
  46: [u'The Stars at War II',
       u'Steve White',
       u'Baen Publishing Enterprises',
-      u'lrf,rar'],
- 47: [u'Exodus', u'Steve White,Shirley Meier', u'Baen Books', u'lrf,rar'],
+      u'lrf'],
+ 47: [u'Exodus', u'Steve White,Shirley Meier', u'Baen Books', u'lrf'],
  48: [u'Harry Potter and the Goblet of Fire',
       u'J. K. Rowling',
       None,
-      u'lrf,rar'],
+      u'lrf'],
  49: [u'Harry Potter and the Prisoner of Azkaban',
       u'J. K. Rowling',
       None,
@@ -539,20 +539,20 @@
       u'J.K. Rowling',
       None,
       u'lit,lrf,pdf'],
- 52: [u"His Majesty's Dragon", u'Naomi Novik', None, u'lrf,rar'],
+ 52: [u"His Majesty's Dragon", u'Naomi Novik', None, u'lrf'],
  53: [u'Throne of Jade', u'Naomi Novik', u'Del Rey', u'lit,lrf'],
- 54: [u'Black Powder War', u'Naomi Novik', u'Del Rey', u'lrf,rar'],
+ 54: [u'Black Powder War', u'Naomi Novik', u'Del Rey', u'lrf'],
  55: [u'War and Peace', u'Leo Tolstoy', u'gutenberg.org', u'lrf,txt'],
  56: [u'Anna Karenina', u'Leo Tolstoy', u'gutenberg.org', u'lrf,txt'],
  57: [u'A Shorter History of Rome',
       u'Eugene Lawrence,Sir William Smith',
       u'gutenberg.org',
       u'lrf,zip'],
- 58: [u'The Name of the Rose', u'Umberto Eco', None, u'lrf,rar'],
+ 58: [u'The Name of the Rose', u'Umberto Eco', None, u'lrf'],
  71: [u"Wind Rider's Oath", u'David Weber', u'Baen', u'lrf'],
  74: [u'Rally Cry', u'William R Forstchen', None, u'htm,lrf'],
- 86: [u'Empire of Ivory', u'Naomi Novik', None, u'lrf,rar'],
- 87: [u"Renegade's Magic", u'Robin Hobb', None, u'lrf,rar'],
+ 86: [u'Empire of Ivory', u'Naomi Novik', None, u'lrf'],
+ 87: [u"Renegade's Magic", u'Robin Hobb', None, u'lrf'],
  89: [u'Master and commander',
       u"Patrick O'Brian",
       u'Fontana,\n1971',
@@ -560,7 +560,7 @@
  91: [u'A Companion to Wolves',
       u'Sarah Monette,Elizabeth Beär',
       None,
-      u'lrf,rar'],
+      u'lrf'],
  92: [u'The Lions of al-Rassan', u'Guy Gavriel Kay', u'Eos', u'lit,lrf'],
  93: [u'Gardens of the Moon', u'Steven Erikson', u'Tor Fantasy', u'lit,lrf'],
  95: [u'The Master and Margarita',
@@ -584,7 +584,7 @@
  144: [u'Atonement',
        u'Ian McEwan',
        u'New York : Nan A. Talese/Doubleday, 2002.',
-       u'lrf,rar'],
+       u'lrf'],
  146: [u'1632', u'Eric Flint', u'Baen Books', u'lit,lrf'],
  147: [u'1633', u'David Weber,Eric Flint,Dru Blair', u'Baen', u'lit,lrf'],
  148: [u'1634: The Baltic War',
@@ -637,7 +637,7 @@
  253: [u"Hunter's Run",
        u'George R. R. Martin,Gardner Dozois,Daniel Abraham',
        u'Eos',
-       u'lrf,rar'],
+       u'lrf'],
  257: [u'Knife of Dreams', u'Robert Jordan', None, u'lit,lrf'],
  258: [u'Saturday',
        u'Ian McEwan',
@@ -657,7 +657,7 @@
        u'New York : Random House, 2005.',
        u'lit,lrf'],
  269: [u'Reap the Whirlwind', u'David Mack', u'Star Trek', u'lit,lrf'],
- 272: [u'Mistborn', u'Brandon Sanderson', u'Tor Fantasy', u'lrf,rar'],
+ 272: [u'Mistborn', u'Brandon Sanderson', u'Tor Fantasy', u'lrf'],
  273: [u'The Thousandfold Thought',
        u'R. Scott Bakker',
        u'Overlook TP',
@@ -665,17 +665,17 @@
  276: [u'Elantris',
        u'Brandon Sanderson',
        u'New York : Tor, 2005.',
-       u'lrf,rar'],
+       u'lrf'],
  291: [u'Sundiver',
        u'David Brin',
        u'New York : Bantam Books, 1995.',
        u'lit,lrf'],
- 299: [u'Imperium', u'Robert Harris', u'Arrow', u'lrf,rar'],
+ 299: [u'Imperium', u'Robert Harris', u'Arrow', u'lrf'],
  300: [u'Startide Rising', u'David Brin', u'Bantam', u'htm,lrf'],
  301: [u'The Uplift War', u'David Brin', u'Spectra', u'lit,lrf'],
- 304: [u'Brightness Reef', u'David Brin', u'Orbit', u'lrf,rar'],
+ 304: [u'Brightness Reef', u'David Brin', u'Orbit', u'lrf'],
  305: [u"Infinity's Shore", u'David Brin', u'Spectra', u'txt'],
- 306: [u"Heaven's Reach", u'David Brin', u'Spectra', u'lrf,rar'],
+ 306: [u"Heaven's Reach", u'David Brin', u'Spectra', u'lrf'],
  325: [u"Foundation's Triumph", u'David Brin', u'Easton Press', u'lit,lrf'],
  327: [u'I am Charlotte Simmons', u'Tom Wolfe', u'Vintage', u'htm,lrf'],
  335: [u'The Currents of Space', u'Isaac Asimov', None, u'lit,lrf'],
@@ -705,15 +705,15 @@
        u'Aspect',
        u'lit,lrf'],
  356: [u'The Naked God', u'Peter F. Hamilton', u'Aspect', u'lit,lrf'],
- 421: [u'A Shadow in Summer', u'Daniel Abraham', u'Tor Fantasy', u'lrf,rar'],
+ 421: [u'A Shadow in Summer', u'Daniel Abraham', u'Tor Fantasy', u'lrf'],
  427: [u'Lonesome Dove', u'Larry M\\cMurtry', None, u'lit,lrf'],
  440: [u'Ghost', u'John Ringo', u'Baen', u'lit,lrf'],
  441: [u'Kildar', u'John Ringo', u'Baen', u'lit,lrf'],
- 443: [u'Hidden Empire ', u'Kevin J. Anderson', u'Aspect', u'lrf,rar'],
+ 443: [u'Hidden Empire ', u'Kevin J. Anderson', u'Aspect', u'lrf'],
  444: [u'The Gun Seller',
        u'Hugh Laurie',
        u'Washington Square Press',
-       u'lrf,rar']
+       u'lrf']
  }
 
     tests = {
diff -Nur calibre-2.34.0.orig/src/calibre/web/feeds/feedparser.py calibre-2.34.0/src/calibre/web/feeds/feedparser.py
--- calibre-2.34.0.orig/src/calibre/web/feeds/feedparser.py	2015-08-07 01:09:19.000000000 -0300
+++ calibre-2.34.0/src/calibre/web/feeds/feedparser.py	2015-08-11 16:40:39.539800504 -0300
@@ -2081,7 +2081,7 @@
     EMAIL = 5
 
     known_xfn_relationships = set(['contact', 'acquaintance', 'friend', 'met', 'co-worker', 'coworker', 'colleague', 'co-resident', 'coresident', 'neighbor', 'child', 'parent', 'sibling', 'brother', 'sister', 'spouse', 'wife', 'husband', 'kin', 'relative', 'muse', 'crush', 'date', 'sweetheart', 'me'])
-    known_binary_extensions =  set(['zip','rar','exe','gz','tar','tgz','tbz2','bz2','z','7z','dmg','img','sit','sitx','hqx','deb','rpm','bz2','jar','rar','iso','bin','msi','mp2','mp3','ogg','ogm','mp4','m4v','m4a','avi','wma','wmv'])
+    known_binary_extensions =  set(['zip','exe','gz','tar','tgz','tbz2','bz2','z','7z','dmg','img','sit','sitx','hqx','deb','rpm','bz2','jar','iso','bin','msi','mp2','mp3','ogg','ogm','mp4','m4v','m4a','avi','wma','wmv'])
 
     def __init__(self, data, baseuri, encoding):
         self.document = BeautifulSoup.BeautifulSoup(data)
diff -Nur calibre-2.45.0.orig/translations/calibre/main.pot calibre-2.45.0/translations/calibre/main.pot
--- calibre-2.45.0.orig/translations/calibre/main.pot	2015-11-27 00:29:42.000000000 -0300
+++ calibre-2.45.0/translations/calibre/main.pot	2015-11-27 13:00:44.768902392 -0300
@@ -4148,7 +4148,7 @@
 msgstr ""
 
 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/archive.py:42
-msgid "Extract common e-book formats from archives (zip/rar) files. Also try to autodetect if they are actually cbz/cbr files."
+msgid "Extract common e-book formats from archives (zip) files. Also try to autodetect if they are actually cbz files."
 msgstr ""
 
 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:652
@@ -12030,7 +12030,7 @@
 msgstr ""
 
 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:33
-msgid "Set defaults for conversion of comics (CBR/CBZ files)"
+msgid "Set defaults for conversion of comics (CBZ files)"
 msgstr ""
 
 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48