Remove the Connect to iTunes function since Apple has removed that functionality from iTunes

This commit is contained in:
Kovid Goyal 2017-10-02 08:31:55 +05:30
parent 3db355746a
commit 1cd8dd33cc
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
8 changed files with 20 additions and 4052 deletions

View File

@ -173,8 +173,8 @@ What devices does calibre support?
calibre can directly connect to all the major (and most of the minor) e-book
reading devices, smarthphones, tablets, etc. In addition, using the
:guilabel:`Connect to folder` function you can use it with any e-book reader
that exports itself as a USB disk. You can even connect to Apple devices (via
iTunes), using the :guilabel:`Connect to iTunes` function.
that exports itself as a USB disk. Finally, you can connect wirelessly to any
device that has a web browser using the calibre Content server.
.. _devsupport:
@ -205,9 +205,10 @@ Follow these steps to find the problem:
* Make sure that you are connecting only a single device to your computer
at a time. Do not have another calibre supported device like an iPhone/iPad
etc. at the same time.
* If you are connecting an Apple iDevice (iPad, iPod Touch, iPhone), use
the 'Connect to iTunes' method in the 'Getting started' instructions in
`Calibre + Apple iDevices: Start here <https://www.mobileread.com/forums/showthread.php?t=118559>`_.
* If you are connecting an Apple iDevice (iPad, iPod Touch, iPhone), Apple
no longer allows third party software to conenct to their devices using a
USB cable. Instead use a wireless connection, via the calibre Content
server.
* Make sure you are running the latest version of calibre. The latest version
can always be downloaded from `the calibre website <https://calibre-ebook.com/download>`_.
You can tell what version of calibre you are currently running by looking
@ -306,9 +307,6 @@ simplest is to simply re-name the executable file that launches the library prog
How do I use calibre with my iPad/iPhone/iPod touch?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Over the air
^^^^^^^^^^^^^^
The easiest way to transfer books wirelessly to your Apple device (iPad/iPhone/iPod)
is to use the `Calibre Companion <http://www.multipie.co.uk/calibre-companion/>`_
iOS app. This app is maintained by a core calibre developer and allows
@ -331,35 +329,12 @@ over the net. First perform the following steps in calibre
and leave calibre running. You can also tell calibre to automatically start the
Content server via :guilabel:`Preferences->Sharing->Sharing over the net`.
There are many apps for your iDevice that can connect to the calibre Content
server.
One was mentioned above: Calibre Companion. Below we describe two more of them,
iBooks and Stanza.
The Content server allows you to read books directly in Safari itself. In
addition, there are many apps for your iDevice that can connect to the calibre
Content server. Examples include: Marvin, Mapleread and iBooks itself.
Using Stanza
***************
You should be able to access your books on your iPhone by opening Stanza. Go to
"Get books" and then click the "Shared" tab. Under Shared you will see an entry
"Books in calibre". If you don't, make sure your iPad/iPhone is connected using
the WiFi network in your house, not 3G. If the calibre catalog is still not
detected in Stanza, you can add it manually in Stanza. To do this, click the
"Shared" tab, then click the "Edit" button and then click "Add book source" to
add a new book source. In the Add Book Source screen enter whatever name you
like and in the URL field, enter the following::
http://192.168.1.2:8080/
Replace ``192.168.1.2`` with the local IP address of the computer running
calibre. See :doc:`server` for details on running the server and finding out the
right IP address to use.
If you get timeout errors while browsing the calibre catalog in Stanza, try
increasing the connection timeout value in the stanza settings. Go to
Info->Settings and increase the value of Download Timeout.
Using iBooks
**************
Using the Content server
*************************
Start the Safari browser and type in the IP address and port of the computer
running the calibre server, like this::
@ -370,20 +345,9 @@ Replace ``192.168.1.2`` with the local IP address of the computer running
calibre. See :doc:`server` for details on running the server and finding out the
right IP address to use.
You will see a list of books in Safari, just click on the epub link for
whichever book you want to read, Safari will then prompt you to open it with
iBooks.
With the USB cable + iTunes
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Use the 'Connect to iTunes' method in the 'Getting started' instructions in `Calibre + Apple iDevices: Start here <https://www.mobileread.com/forums/showthread.php?t=118559>`_.
This method only works on Windows Vista and higher, and macOS up to 10.8. Linux
is not supported (iTunes is not available in linux) and macOS newer than 10.8 is
not supported, as Apple removed the facility to use iTunes to manage books,
replacing it with iBooks.
You will see a list of books in Safari, tap on any book and you will be given
the option to either download it, or read it in the browser itself. If you
choose to download it, Safari will ask you if you want to open it with iBooks.
How do I use calibre with my Android phone/tablet or Kindle Fire HD?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -243,11 +243,9 @@ Connect/share
1. **Connect to folder**: Allows you to connect to any folder on your computer as though it were a device and use all the facilities calibre has for devices with that folder. Useful if your device cannot be supported by calibre but is available as a USB disk.
2. **Connect to iTunes**: Allows you to connect to your iTunes books database as though it were a device. Once the books are sent to iTunes, you can use iTunes to make them available to your various iDevices.
2. **Start Content server**: Starts calibre's built-in web server. When started, your calibre library will be accessible via a web browser from the Internet (if you choose). You can configure how the web server is accessed by setting preferences at :guilabel:`Preferences->Sharing->Sharing over the net`
3. **Start Content server**: Starts calibre's built-in web server. When started, your calibre library will be accessible via a web browser from the Internet (if you choose). You can configure how the web server is accessed by setting preferences at :guilabel:`Preferences->Sharing->Sharing over the net`
4. **Setup email based sharing of books**: Allows sharing of books and news feeds by email. After setting up email addresses for this option, calibre will send news updates and book updates to the entered email addresses. You can configure how calibre sends email by setting preferences at :guilabel:`Preferences->Sharing->Sharing books by email`. Once you have set up one or more email addresses, this menu entry will be replaced by menu entries to send books to the configured email addresses.
3. **Setup email based sharing of books**: Allows sharing of books and news feeds by email. After setting up email addresses for this option, calibre will send news updates and book updates to the entered email addresses. You can configure how calibre sends email by setting preferences at :guilabel:`Preferences->Sharing->Sharing books by email`. Once you have set up one or more email addresses, this menu entry will be replaced by menu entries to send books to the configured email addresses.
.. _remove_books:

View File

@ -709,7 +709,6 @@ from calibre.devices.jetbook.driver import (JETBOOK, MIBUK, JETBOOK_MINI,
JETBOOK_COLOR)
from calibre.devices.kindle.driver import (KINDLE, KINDLE2, KINDLE_DX,
KINDLE_FIRE)
from calibre.devices.apple.driver import ITUNES
from calibre.devices.nook.driver import NOOK, NOOK_COLOR
from calibre.devices.prs505.driver import PRS505
from calibre.devices.prst1.driver import PRST1
@ -801,7 +800,6 @@ plugins += [
NEXTBOOK,
ADAM,
MOOVYBOOK, COBY, EX124G, WAYTEQ, WOXTER, POCKETBOOK626, SONYDPTS1,
ITUNES,
BOEYE_BEX,
BOEYE_BDX,
MTP_DEVICE,
@ -949,7 +947,7 @@ class ActionSendToDevice(InterfaceActionBase):
class ActionConnectShare(InterfaceActionBase):
name = 'Connect Share'
actual_plugin = 'calibre.gui2.actions.device:ConnectShareAction'
description = _('Send books via email or the web. Also connect to iTunes or'
description = _('Send books via email or the web. Also connect to'
' folders on your computer as if they are devices')

View File

@ -1 +0,0 @@

File diff suppressed because it is too large Load Diff

View File

@ -1,280 +0,0 @@
version = 1.1
path = '/Applications/iTunes.app'
classes = \
[('print_settings', 'pset'),
('application', 'capp'),
('artwork', 'cArt'),
('audio_CD_playlist', 'cCDP'),
('audio_CD_track', 'cCDT'),
('browser_window', 'cBrW'),
('device_playlist', 'cDvP'),
('device_track', 'cDvT'),
('encoder', 'cEnc'),
('EQ_preset', 'cEQP'),
('EQ_window', 'cEQW'),
('file_track', 'cFlT'),
('folder_playlist', 'cFoP'),
('item', 'cobj'),
('library_playlist', 'cLiP'),
('playlist', 'cPly'),
('playlist_window', 'cPlW'),
('radio_tuner_playlist', 'cRTP'),
('shared_track', 'cShT'),
('source', 'cSrc'),
('track', 'cTrk'),
('URL_track', 'cURT'),
('user_playlist', 'cUsP'),
('visual', 'cVis'),
('window', 'cwin')]
enums = \
[('track_listing', 'kTrk'),
('album_listing', 'kAlb'),
('cd_insert', 'kCDi'),
('standard', 'lwst'),
('detailed', 'lwdt'),
('stopped', 'kPSS'),
('playing', 'kPSP'),
('paused', 'kPSp'),
('fast_forwarding', 'kPSF'),
('rewinding', 'kPSR'),
('off', 'kRpO'),
('one', 'kRp1'),
('all', 'kAll'),
('small', 'kVSS'),
('medium', 'kVSM'),
('large', 'kVSL'),
('library', 'kLib'),
('iPod', 'kPod'),
('audio_CD', 'kACD'),
('MP3_CD', 'kMCD'),
('device', 'kDev'),
('radio_tuner', 'kTun'),
('shared_library', 'kShd'),
('unknown', 'kUnk'),
('albums', 'kSrL'),
('artists', 'kSrR'),
('composers', 'kSrC'),
('displayed', 'kSrV'),
('songs', 'kSrS'),
('none', 'kNon'),
('Books', 'kSpA'),
('folder', 'kSpF'),
('Genius', 'kSpG'),
('iTunes_U', 'kSpU'),
('Library', 'kSpL'),
('Movies', 'kSpI'),
('Music', 'kSpZ'),
('Party_Shuffle', 'kSpS'),
('Podcasts', 'kSpP'),
('Purchased_Music', 'kSpM'),
('TV_Shows', 'kSpT'),
('movie', 'kVdM'),
('music_video', 'kVdV'),
('TV_show', 'kVdT'),
('user', 'kRtU'),
('computed', 'kRtC')]
properties = \
[('copies', 'lwcp'),
('collating', 'lwcl'),
('starting_page', 'lwfp'),
('ending_page', 'lwlp'),
('pages_across', 'lwla'),
('pages_down', 'lwld'),
('error_handling', 'lweh'),
('requested_print_time', 'lwqt'),
('printer_features', 'lwpf'),
('fax_number', 'faxn'),
('target_printer', 'trpr'),
('current_encoder', 'pEnc'),
('current_EQ_preset', 'pEQP'),
('current_playlist', 'pPla'),
('current_stream_title', 'pStT'),
('current_stream_URL', 'pStU'),
('current_track', 'pTrk'),
('current_visual', 'pVis'),
('EQ_enabled', 'pEQ '),
('fixed_indexing', 'pFix'),
('frontmost', 'pisf'),
('full_screen', 'pFSc'),
('name', 'pnam'),
('mute', 'pMut'),
('player_position', 'pPos'),
('player_state', 'pPlS'),
('selection', 'sele'),
('sound_volume', 'pVol'),
('version', 'vers'),
('visuals_enabled', 'pVsE'),
('visual_size', 'pVSz'),
('data', 'pPCT'),
('description', 'pDes'),
('downloaded', 'pDlA'),
('format', 'pFmt'),
('kind', 'pKnd'),
('raw_data', 'pRaw'),
('artist', 'pArt'),
('compilation', 'pAnt'),
('composer', 'pCmp'),
('disc_count', 'pDsC'),
('disc_number', 'pDsN'),
('genre', 'pGen'),
('year', 'pYr '),
('location', 'pLoc'),
('minimized', 'pMin'),
('view', 'pPly'),
('band_1', 'pEQ1'),
('band_2', 'pEQ2'),
('band_3', 'pEQ3'),
('band_4', 'pEQ4'),
('band_5', 'pEQ5'),
('band_6', 'pEQ6'),
('band_7', 'pEQ7'),
('band_8', 'pEQ8'),
('band_9', 'pEQ9'),
('band_10', 'pEQ0'),
('modifiable', 'pMod'),
('preamp', 'pEQA'),
('update_tracks', 'pUTC'),
('container', 'ctnr'),
('id', 'ID '),
('index', 'pidx'),
('persistent_ID', 'pPIS'),
('duration', 'pDur'),
('parent', 'pPlP'),
('shuffle', 'pShf'),
('size', 'pSiz'),
('song_repeat', 'pRpt'),
('special_kind', 'pSpK'),
('time', 'pTim'),
('visible', 'pvis'),
('capacity', 'capa'),
('free_space', 'frsp'),
('album', 'pAlb'),
('album_artist', 'pAlA'),
('album_rating', 'pAlR'),
('album_rating_kind', 'pARk'),
('bit_rate', 'pBRt'),
('bookmark', 'pBkt'),
('bookmarkable', 'pBkm'),
('bpm', 'pBPM'),
('category', 'pCat'),
('comment', 'pCmt'),
('database_ID', 'pDID'),
('date_added', 'pAdd'),
('enabled', 'enbl'),
('episode_ID', 'pEpD'),
('episode_number', 'pEpN'),
('EQ', 'pEQp'),
('finish', 'pStp'),
('gapless', 'pGpl'),
('grouping', 'pGrp'),
('long_description', 'pLds'),
('lyrics', 'pLyr'),
('modification_date', 'asmo'),
('played_count', 'pPlC'),
('played_date', 'pPlD'),
('podcast', 'pTPc'),
('rating', 'pRte'),
('rating_kind', 'pRtk'),
('release_date', 'pRlD'),
('sample_rate', 'pSRt'),
('season_number', 'pSeN'),
('shufflable', 'pSfa'),
('skipped_count', 'pSkC'),
('skipped_date', 'pSkD'),
('show', 'pShw'),
('sort_album', 'pSAl'),
('sort_artist', 'pSAr'),
('sort_album_artist', 'pSAA'),
('sort_name', 'pSNm'),
('sort_composer', 'pSCm'),
('sort_show', 'pSSN'),
('start', 'pStr'),
('track_count', 'pTrC'),
('track_number', 'pTrN'),
('unplayed', 'pUnp'),
('video_kind', 'pVdK'),
('volume_adjustment', 'pAdj'),
('address', 'pURL'),
('shared', 'pShr'),
('smart', 'pSmt'),
('bounds', 'pbnd'),
('closeable', 'hclb'),
('collapseable', 'pWSh'),
('collapsed', 'wshd'),
('position', 'ppos'),
('resizable', 'prsz'),
('zoomable', 'iszm'),
('zoomed', 'pzum')]
elements = \
[('artworks', 'cArt'),
('audio_CD_playlists', 'cCDP'),
('audio_CD_tracks', 'cCDT'),
('browser_windows', 'cBrW'),
('device_playlists', 'cDvP'),
('device_tracks', 'cDvT'),
('encoders', 'cEnc'),
('EQ_presets', 'cEQP'),
('EQ_windows', 'cEQW'),
('file_tracks', 'cFlT'),
('folder_playlists', 'cFoP'),
('items', 'cobj'),
('library_playlists', 'cLiP'),
('playlists', 'cPly'),
('playlist_windows', 'cPlW'),
('radio_tuner_playlists', 'cRTP'),
('shared_tracks', 'cShT'),
('sources', 'cSrc'),
('tracks', 'cTrk'),
('URL_tracks', 'cURT'),
('user_playlists', 'cUsP'),
('visuals', 'cVis'),
('windows', 'cwin'),
('application', 'capp'),
('print_settings', 'pset')]
commands = \
[('set', 'coresetd', [('to', 'data')]),
('exists', 'coredoex', []),
('move', 'coremove', [('to', 'insh')]),
('subscribe', 'hookpSub', []),
('playpause', 'hookPlPs', []),
('download', 'hookDwnl', []),
('close', 'coreclos', []),
('open', 'aevtodoc', []),
('open_location', 'GURLGURL', []),
('quit', 'aevtquit', []),
('pause', 'hookPaus', []),
('make',
'corecrel',
[('new', 'kocl'), ('at', 'insh'), ('with_properties', 'prdt')]),
('duplicate', 'coreclon', [('to', 'insh')]),
('print_',
'aevtpdoc',
[('print_dialog', 'pdlg'),
('with_properties', 'prdt'),
('kind', 'pKnd'),
('theme', 'pThm')]),
('add', 'hookAdd ', [('to', 'insh')]),
('rewind', 'hookRwnd', []),
('play', 'hookPlay', [('once', 'POne')]),
('run', 'aevtoapp', []),
('resume', 'hookResu', []),
('updatePodcast', 'hookUpd1', []),
('next_track', 'hookNext', []),
('stop', 'hookStop', []),
('search', 'hookSrch', [('for_', 'pTrm'), ('only', 'pAre')]),
('updateAllPodcasts', 'hookUpdp', []),
('update', 'hookUpdt', []),
('previous_track', 'hookPrev', []),
('fast_forward', 'hookFast', []),
('count', 'corecnte', [('each', 'kocl')]),
('reveal', 'hookRevl', []),
('convert', 'hookConv', []),
('eject', 'hookEjct', []),
('back_track', 'hookBack', []),
('refresh', 'hookRfrs', []),
('delete', 'coredelo', [])]

View File

@ -9,7 +9,6 @@ from functools import partial
from PyQt5.Qt import QIcon, QMenu, QTimer, QToolButton, pyqtSignal
from calibre.constants import get_osx_version, isosx, iswindows
from calibre.gui2 import info_dialog, question_dialog
from calibre.gui2.actions import InterfaceAction
from calibre.gui2.dialogs.smartdevice import SmartdeviceDialog
@ -20,7 +19,6 @@ from calibre.utils.smtp import config as email_config
class ShareConnMenu(QMenu): # {{{
connect_to_folder = pyqtSignal()
connect_to_itunes = pyqtSignal()
config_email = pyqtSignal()
toggle_server = pyqtSignal()
@ -38,13 +36,6 @@ class ShareConnMenu(QMenu): # {{{
mitem.setEnabled(True)
mitem.triggered.connect(lambda x : self.connect_to_folder.emit())
self.connect_to_folder_action = mitem
mitem = self.addAction(QIcon(I('devices/itunes.png')),
_('Connect to iTunes'))
mitem.setEnabled(True)
mitem.triggered.connect(lambda x : self.connect_to_itunes.emit())
self.connect_to_itunes_action = mitem
itunes_ok = iswindows or (isosx and get_osx_version() < (10, 9, 0))
mitem.setVisible(itunes_ok)
self.addSeparator()
self.toggle_server_action = \
@ -65,9 +56,7 @@ class ShareConnMenu(QMenu): # {{{
r = parent.keyboard.register_shortcut
prefix = 'Share/Connect Menu '
gr = ConnectShareAction.action_spec[0]
for attr in ('folder', 'itunes'):
if not (iswindows or isosx) and attr == 'itunes':
continue
for attr in ('folder', ):
ac = getattr(self, 'connect_to_%s_action'%attr)
r(prefix + attr, unicode(ac.text()), action=ac,
group=gr)
@ -161,7 +150,6 @@ class ShareConnMenu(QMenu): # {{{
def set_state(self, device_connected, device):
self.connect_to_folder_action.setEnabled(not device_connected)
self.connect_to_itunes_action.setEnabled(not device_connected)
# }}}
@ -202,7 +190,6 @@ class ConnectShareAction(InterfaceAction):
initial_plugin=('Sharing', 'Email')))
self.qaction.setMenu(self.share_conn_menu)
self.share_conn_menu.connect_to_folder.connect(self.gui.connect_to_folder)
self.share_conn_menu.connect_to_itunes.connect(self.gui.connect_to_itunes)
def location_selected(self, loc):
enabled = loc == 'library'

View File

@ -28,7 +28,6 @@ from calibre import preferred_encoding, prints, force_unicode, as_unicode, sanit
from calibre.utils.filenames import ascii_filename
from calibre.devices.errors import (FreeSpaceError, WrongDestinationError,
BlacklistedDevice)
from calibre.devices.apple.driver import ITUNES_ASYNC
from calibre.devices.folder_device.driver import FOLDER_DEVICE
from calibre.constants import DEBUG
from calibre.utils.config import tweaks, device_prefs
@ -335,7 +334,7 @@ class DeviceManager(Thread): # {{{
if e.show_me:
traceback.print_exc()
# Mount devices that don't use USB, such as the folder device and iTunes
# Mount devices that don't use USB, such as the folder device
# This will be called on the GUI thread. Because of this, we must store
# information that the scanner thread will use to do the real work.
def mount_device(self, kls, kind, path):
@ -953,10 +952,7 @@ class DeviceMixin(object): # {{{
if dir is not None:
self.device_manager.mount_device(kls=FOLDER_DEVICE, kind='folder', path=dir)
def connect_to_itunes(self):
self.device_manager.mount_device(kls=ITUNES_ASYNC, kind='itunes', path=None)
# disconnect from both folder and itunes devices
# disconnect from folder devices
def disconnect_mounted_device(self):
self.device_manager.umount_device()