For a book reader to be useful, it must have books to read. For most users, books will either be downloaded from a Internet browser or some form of shared Internet access. We'll start with a simple example.
There are a lot of ways to install books. This is a long section to give guidance on many of those ways; much of it is intended as reference, not tutorial. It's unlikely you'll use more than one or two of the available ways. We suggest reading the examples, and if they do not fit your circumstances using the section titles to find a solution that will.
(This material would get really tedious if it said "technical support person or caregiver" a lot. Thus it uses "you", and you can take the meaning that's appropriate to your circumstances.)
We'll use the example in
Getting Started.
If you haven't done it, it's the best way to become familiar with the process.
(If you're trying to skip doing a download on your device, we'll get to that in Example 2.)
Three things happened in the example:
In a bit more detail (and there's more detail in Terms and Concepts):
AudioBooks
directories (folders) on your device.
There usually will be
Android 11 introduced additional security rules that makes this more complicated.
The Alternate Directories section below has more details.
more than one;
see Directory Selection
for how these are used.
Aesop will automatically create any directories it needs when it first runs,
but if something goes wrong, you need to be sure it's there.
After you've read your books, and want some new ones, you may find either that having the old ones around makes it hard to find your new books, or that you've run out of space on the device. (Or, likely, both.) It's fairly easy to clean up, but you have to remove some books "the same way" you added them. Go to Settings and then click on "Inventory" (the Aesop icon) at the bottom of the screen. It will look something like this. This will list all your books. Check the checkbox for the ones you no longer want to read, then the "delete" (trash can, #6 in the graphic) button at the upper right, and they will be deleted. (Be sure to scroll all the way to the bottom.)
Some books may be marked with a "padlock" icon. Those cannot be removed this way due to Android constraints; these are the ones you have to remove "the same way" you added them. See Example 2 below for more on that.
You probably noted that some books were already checked. If you look closely, on the right, the word "Completed" will appear for those books. It will also give the total time, current position in the book, and percent completed. You can check books you didn't want to finish, and uncheck books that you want to reread before clicking delete. You can use the "All" button to check (or uncheck) all the books if that makes things easier. Just don't click the Delete button until you're sure all the checks are correct, because the books will be completely removed and you'll have to reload them from wherever you got them to get them back.
If you check closely, if a completed book has been replayed more than a minute, it's likely that it's being reread. Those aren't automatically suggested for deletion.
Here's another example, chosen to be different in most ways from the previous one, but it's also likely to be a common way of getting books. After this example we'll explain the pieces separately in more detail, and you can fit them together to match your needs.
This example uses a PC (or Mac) to do most of the work.
This is actually not very difficult, but if the steps aren't clear, you may want to have a friend who
is familiar with devices and PCs help you the first time.
There's a lot of variation in Android devices, so you'll need to adapt to what happens with your device.
Some of the variation shows up in the way the PC acts.
If you're using a
Mac, you may need the
Android file transfer tool.
Phone
in the File Manager's window for the device, then on AudioBooks
.
librivox.org
found here.
(We've chosen the first of several performances.)
We'll assume that it ends up in the PC browser's
On a Windows PC, this is Downloads
with an s
(as opposed to without on Android), and case does not matter.
(That's historical and we just must live with it.)
Downloads
directory, which is the default.
Downloads
and find the book.
The name of the book will probably be a single word (no spaces) that contains elements
of the actual title separated by underscores.
(In our case, hound_baskervilles_librivox_64kb_mp3.zip
.)
.zip
.
.mp3
files, one for each
Note how the individual files are named with leading zeros in the chapter numbers.
chapter.
Chapter titles may be shown.
AudioBooks
directory
on the device.
This will copy the directory (leaving the original behind, since it's a different file system.)
.zip
file are no longer needed and can be deleted.
.zip
format to a directory of .mp3
files.
AudioBooks
There were many more intermediate steps, and for books from Internet sources like these, it's not necessary
to involve a PC, but some of the other sources of books will require a PC (and more steps) prior to
moving the folder to AudioBooks
.
Note on Cleaning Up: We used the directory AudioBooks
in this example.
Starting with the release of Android 11, and due to the way the Android ecosystem works on older
devices as well, the AudioBooks directory
cannot be written by most applications (including Aesop).
If the tools you are using allow you to install a book, they will also allow you to delete it, but you
may not be able to delete it with Aesop directly.
Thus, if you add a book using the process above, delete it in the same way when you are done with it.
Aesop will discover that the book is gone when you remove it.
See
Alternate Directories for more on this topic if you want to mix-and-match techniques.
There are several terms and concepts that make explaining the pieces of the process of getting books easier.
It's time to deal with those.
Many, but far from all, audio books include metadata. Metadata is additional information about the book beyond the basic audio. Audio files can contain metadata directly, and some Audio Books contain additional files of metadata. The items of interest in the audio file are the book title, author, and the individual chapter titles. The Aesop Player will make the best use it can of that information if it is present.
The fields found in audio file metadata have standard names. The Album Title and Contributing Artists are combined to form the book title. The Title (that's the song title for music) is treated as the chapter title. If the metadata is absent the player makes educated guesses from file names. There's more on handling books without metadata here.
If the directory name of the book contains at least one space,
Aesop will assume that the title it should use for display and for speech is that directory name.
Typically the directory name, as downloaded (usually in a .zip
file) does not have spaces and is not very user friendly.
The policy of looking for a space avoids forcing you to rename all directories,
but allows a simple rename if the metadata is absent or otherwise unhelpful.
Most books on CD (and all on tape) do not have metadata. The directory name is the best choice for providing a title. It would be possible to create your own metadata in those cases, but that topic is outside the scope of this document.
A book for Aesop consists of a collection of chapters (usually a convenient size) organized in a container called a directory (or "folder").
The Aesop player can play chapters that are recorded in the
.mp3
, .m4a
, .m4b
and .ogg
"audio file" formats,
which covers most of the books that are available online.
If you find a book in some other format, it usually can be transformed
with applications found on the Internet that you can run on a PC.
The chapters are collected into a directory. For anything found on the Internet, the chapters are carefully named so that when sorted by the device they will be played in the proper order. Other sources, not always. Some book formats consist not only of the audio chapters but other metadata, including the book content as text, indexing information, and sometimes covers or other graphics. Aesop quietly ignores (but preserves) that additional information.
For a short story, there might be only one "chapter", and thus it might come to you without a directory. For a very long book the chapters may be organized into sub-directories which then appear in a containing directory. (Some versions of War and Peace have a directory for each of the author's "Books", which are then collected into a parent directory for the whole of the book.) Aesop requires that each book is in its own directory (so short stories may be a directory with a single audio file). Directories may be nested to any depth; it will play the chapters in the order specified by the sub-directory and chapter names (in the usual order).
The book title is arrived at as described in metadata.
If the title derived from the metadata is acceptable, the name of the directory can be anything that doesn't contain a space,
and frequently it's the name of the .zip
file it was delivered in.
If you want to control the title explicitly, any name with at least one space will be treated as the title.
If there is no metadata, the title will be the directory name. That can be ugly or hard to listen to; the fix is to change the title.
Many (most?) online books are kept as a .zip
file.
A zip file is a representation of a directory and its contents packed tightly together, and are much easier to handle on the Internet.
But they need to be unpacked to be played.
The installer takes care of that… usually.
There are a number of zip file formats, and Aesop can handle most of them, but new ones appear periodically.
Should that happen you'll have to unpack it yourself.
(Do let us know about the problem.)
The installer will convert a single audio file into a directory containing an Audio file, and knows how to handle directories of any depth.
This is an advanced topic, you can ignore it until you need it. See the box about terminology on Android here for some clarifying notes.
Historically Aesop found books in the
AudioBooks
On Android these names are case sensitive: audiobooks
and AudioBooks
are different things.
directory in the
root
Pedantically, this is not actually the root directory, but that is all that is made available
by Windows File Explorer. If you already know this, you probably can figure this all out for yourself.
directory on the built-in storage of the device, as seen by
the Windows File Explorer. (We'll call that the "short" name.)
Starting in Android 11, this directory became unwritable by applications, although they can read it.
Android now expects applications like Aesop to use a directory with a long and easily forgotten name.
For Aesop:
Android/data/
.
Aesop uses the long name by default for anything it writes/copies, such as samples and downloaded books
it installs, but it also looks in the short name directory and will play books it finds there as well.
However, it is not supposed to be able to remove anything from the short name directory,
so if you put a book in (short) AudioBooks
using File Explorer (or any other tool)
you must remove it using the same sort of tool.
On older devices, there may not be much space available on the root drive. Both the short and long directory names usually share the same storage on the root drive. Some devices have the ability to add a "SD" (Secure Digital) card to add more storage.
In addition to the usual places, Aesop will also look for, and play, books found in the AudioBooks
directory in the root of any SD card it discovers.
The AudioBooks
directory at the root of an SD card (if it even exists)
may or may not be writable (or even accessible) by Aesop.
Aesop will use it if it can, and use it in managing books if it can,
but more often than not Aesop will be unable to write (or change) anything in that directory.
It will frequently be the case that you can create and add (or delete) books in the AudioBooks
directory at the root of an SD card from your PC
connected by a cable to the device, and if you remove the SD card and plug it into your PC
(appropriate adapters are available),
it should always be possible.
The rules (whatever they may be) that apply to Aesop apply to most other applications,
although there are some (vendor-supplied) file managers that have special permissions
and can modify SD root AudioBooks
(if your device is new enough).
This doesn't mean you can't use the space on the SD card for your books, it just means you can't put your books in (the root) AudioBooks
.
Aesop can also use the directory
The name Android/media/
follows some 'magic' rules defined for Android and cannot be changed by the application.
Android/media/
(note: "media", not "data").
(Where Android
is at the root of the SD card or root file system.)
All the managing books stuff will "just work" on this directory.
The downside of this is that no other app can get to these books (but again, you can get to them using a PC).
Either of the AudioBooks
directories on the SD card works out of the same physical storage, so there's no space advantage one over the other.
The directory
Android/media/
on the built-in storage will be used if you create it.
This would only be useful if you have a device where Android/… files are put on physically different storage.
This is theoretically possible but rare.
The directory (and content of)
Android/media/
on either the built-in storage or SD card
will be deleted if you uninstall Aesop Player.
So will Android/data/
.
The AudioBooks
at the root of the device or a SD card will not be deleted.
(This is Android policy, not anything we control.)
When installing books, Aesop first installs them in the long-name AudioBooks
directory until it is 90% or more full, then
Android/media/
on the device root, if it exists, and there's space.
Then it will then use AudioBooks
on the SD card, if it exists, until it is 90% or more full, then
Android/media/
on the SD card, if it exists and there's space.
It will use additional SD cards if it finds them and the directories exist and there's space.
It will always install "whole" books in a single directory. If something goes wrong (out of space is most likely) an error log will be popped up with details showing what it did and what failed.
This is a good place to remind you that many books are copyrighted, and that you should respect the rights of the copyright owners. Most Internet sites have some statement of copyright, or you will encounter one in the process of gaining access. Take a moment to read it. The free Internet sites usually have very permissive copyrights, the paid ones (and usually public libraries) have limitations, but frequently copying on to a player like Aesop (for a limited duration) is allowed. Other media may have other constraints.
Some book sources, such as Audible, use DRM (Digital Rights Management) to protect their books. Aesop (being free) doesn't have DRM support and thus cannot be used on those books.
The simplest case is that you have found a Internet site that allows you to download books as you did in the Examples.
Usually, just do as you did in Example 1, or if you don't want to use the Internet from the device, follow Example 2. There are too many Internet Sites many to go into depth on them here, but the Internet sites want you to download; it's supposed to be obvious. The books from these sites typically have metadata, so titles won't usually be a problem. If the book title and such don't look right, you can fix that here.
When working directly on the device, typically you'd do a bunch of downloads as in the first part of Example 1,
and when they all complete, do the INSTALL step in
"New Books", item 7
all at once.
(Just because that would be fewer clicks.)
If your Internet browser makes it easy, you can do some simultaneous downloads.
Don't start a lot simultaneously, but 2 or 3 could go at once without interfering with each other too much.
(Advanced) Or use a download manager application to manage a queue of downloads.
There are several to choose from in the store.
Once the downloads are completed (which takes time depending on the book length and your Internet speed),
you use Aesop's built in managing books tools to reformat (depending on the file type), Normalize Names, and install the books.
It will automatically handle books already in the Aesop book format described above, .zip
files
that yield the same format, and single audio files.
From "New Books" click the check boxes for the books you want (scroll to see if there are more),
then the "INSTALL" button.
It will figure out how to reformat the book, handle the metadata and install it where you can play it.
It will move (not copy) the book from Download
to the library -
it does it that way to save space and clear up clutter in Download
.
See
Copy vs. Delete
for more on that.
If you have books on your device that don't happen to be in Download
,
you can direct the installer to get books from where they are instead.
The most common reasons are that you are using Cloud storage (more on that
here),
or you are using physically external storage (see
here).
To select a new place to load books from, simply click on the
name of the current directory (item 5)
on the upper part of the Add Books screen.
You will see a popup window titled "Set Source Directory"; click SELECT NEW and a new screen will be displayed.
Use that to find the directory you want (the one containing the books, not a specific book),
select "Confirm" or "Select" and it will return you to the Add Books screen,
with the new list of books displayed.
You can then proceed as you previously have.
Once you have selected a new source directory, the Aesop Player will remember the prior directories you have used to install books from. If you click on the name of the current download directory again, it will list the remembered ones, and you can click on the saved name to go back to it. (Some names get quite long!) Clicking on the red "X" will delete the entry.
Normally the player deletes the source book as it moves them to AudioBooks
because they are so large.
You can have it retain them instead by clicking on the
three vertical dots (item 8)
on the upper right of the screen
(⋮)(called "More" in Android-speak)
and clicking on Retain after copy".
See below.
The terminology used for different types of storage varies with the Android revision and is quite confusing due to history. We'll always refer to addable (and thus removable) storage as "removable storage". If we're referring specifically to SD cards, we'll use "removable SD cards". In Android literature, "external" storage frequently does NOT refer to anything removable or physically external to the device.
Also due to history, the locations that can be modified on the SD cards (removable or not) are messy and confusing. We'll try to keep it simple, a consequence of which is that it can appear unreasonably arbitrary. Since we want Aesop to run on older devices that have been retired as phones, we can't use some of the newer possible solutions.
The large variety of Android manufacturers combined with the many Android revisions is a source of inconsistency in this area. You may end up with a device that doesn't work exactly as described. There's probably a way to make it work, but it may take a couple of tries.
The same tools to select a directory to copy from apply to removable physical storage.
Click on the current Downloads directory to use the "Set Source Directory" screen to select a directory on removable storage. The exact selection process varies depending on the Android version: on some devices the Sometimes it shows the root of the non-removable storage as well. You man need to click on that and then move down to access other directories in non-removable storage. removable storage is visible as a panel on the screen, on some you may have to move upward through the directory hierarchy and then back down to the storage device. It can't hurt to simply try experiment if it isn't obvious, just don't click Select or Confirm until you see your new books.
External physical storage can also be a USB drive ("stick", "thumb drive") that is connected to the device using an
"On The Go" cable.
This is useful because you can load the USB drive on a PC, and then install books when you have the player in hand,
frequently at a location without either a computer or Internet connection.
Just plug the USB drive into the device using the cable,
then click the current Download directory and use the "Set Source Directory" screen
to find the (possibly remembered) drive.
When done, you can unplug the USB drive and the player will detect that and revert to Download
.
Support for USB drives is spotty on older (particularly Android 4) devices.
You should test it if you will want to use it.
The same idea applies to easily physically removable SD cards, but these are very rare - it usually requires powering down the device to change SD cards.
Some Android file manager applications may take over from Aesop if you plug in a USB drive. That's a "feature" of the file manager you may want to disable.
In the case of Cloud storage, it's mostly a matter of selecting a directory (as for the cases above) on your device. One that is maintained by the Cloud, once you have it set up. However, getting Cloud storage set up to do what you want can be tricky. Here are some tips.
Putting books on to the Cloud and having them automatically downloaded (ready to install) is particularly convenient when dealing
with a remotely administered book reader.
Technically… If they're already in Aesop Book format,
they can be put directly into AudioBooks
— Aesop will handle that correctly.
However, depending on the specific Cloud provider, you might find that books appear and disappear unexpectedly,
and if you try to play an incomplete download it may yield confusing results.
(It could also upload an unintended book to the cloud.)
Your tradeoff: convenience vs. consistent behavior.
There are actually a fairly large number (at least 100) of "Clouds" out there, and they're all subtly different. And frequently access to the Cloud from a PC and from an Android device are inconsistent. You may want to spend some time considering your choice of Cloud provider. We can't cover all the cases, but here are some things to consider.
Again, a reminder about honoring copyright.
Audio books are also available on CDs and (historically) tape. These can be converted to a form Aesop can handle, but it's technically more difficult.
All books on CD share the common CD audio format, and many PCs that have a CD (usually also DVD and BluRay) drive have an application that can "rip" the CD into a directory on disk. And there is quite a selection of similar tools on the Internet. Actually, most books on CD take a number of disks (at least two or three, and frequently many more). Once the data has been ripped, it needs to be reformatted to some degree or other, because the format you get varies widely from book to book. See Aesop Book Format as discussed above.
In the ideal case, the CD contains book and chapter titles, and file names, and the result is something already in the required format. This seems to be rare.
Slightly more commonly, the metadata is found on the Internet. For music titles, this is very common, but it seems to be rare for books. Many ripping applications will automatically make the Internet search, although not all the applications apply the names well. (One, unnamed here, applies the names (if it finds any) to all except the first track on the disk.)
More frequently there will be no metadata available, and the ripping application will "make up" names
from the sequence of tracks on the CD, the current date, and other information it thinks relevant.
In the process of doing so, it's likely to include something like
Track 1
in the title for the first track,
Track 2
for the second track, etc.
That works fine until you get to Track 10
,
which according to computer sorting rules sorts right next to Track 1,
which doesn't work out well for an audio book.
You want the track numbers to be the first thing that's different in each file name,
and to be numbered 01
... 09
10
11
etc.
so they'll sort correctly.
If you use Aesop's New Books install screen to do the final installation, it will use
Name Normalization
to convert short (without zeros) numbers it finds to longer ones (with zeros as needed),
which fixes both the track number problem and any one-digit date or time information the ripping tool
Most ripping tools do insert the track number as metadata in a way that can be sorted correctly (but Aesop uses file names!)
Downloaded books rely on titles, not embedded track numbers for proper ordering, and may not even have the track number metadata filled in.
might have used.
Ripping tools don't do a very good job of recognizing "albums" of more than one CD, treating each disk individually.
You'll need to rip each disk separately, and it's easier to put each CD's content in it's own directory.
Name Normalization will help if you are using a ripping tool that uses the start-time of the rip as the directory name.
Otherwise, naming each directory as something like Disc01
Disc02
will give correct results.
(Be sure to use two (or three) digit numbers with leading zeros.)
As a warning, many of the CD books we have looked at, if they have any metadata at all, are inconsistent across the length of the book as to how it is applied. The pattern frequently varies from one physical disc to the next. It's best to look at what you get after ripping. If your PC treats the books as a music directory it will show track numbers (if present) and you can make sure that the order of the individual files matches the track numbers.
The fre:ac PC application available for download can be configured to use the date and time you start the rip of the disk to create the file names. Unlike many other ripping tools, it will both auto-start and auto-eject the disk when there is no metadata when it is using date, time, and 2-digit track number for file names. Using a CD drive with a tray that ejects the media (that is, typically not one in a laptop) it is possible to simply change the CDs (without any clicks on the PC) in order, and the result is a collection of directories that will work with Aesop without having to rename any files except the top level directory to provide the book title.
As for books on tape (or records!): it's certainly possible to capture the audio stream from a tape, digitize it, split it into comfortable-sized chapters using an audio editor, and then provide titles and other metadata, but it's a significant effort for an expert with the right equipment and software.
Assuming the book as you get it has metadata, the odds are that the player will figure out a perfectly adequate title. However, if the metadata is absent, or (particularly with very old recordings) the metadata is unhelpful, you can easily fix an ugly book title. (Occasionally a title is inconveniently long when spoken; fix that the same way.)
On either the Book Inventory screen (item 2) or New Books screen (item 3), click on the book title (the text). The player will enter a new screen. The top line, in white, is what it will use for the title. You can click on that to bring up a keyboard and edit it in the usual way. Further down the screen (below the buttons) up to three additional bits of text are presented that might be a start on a better choice. You can click on those if they look better to you, and they will replace the current text.
If you change the The title created in this way is the directory name. If you are creating books from another computer, you can simply change the directory name to control the title. As long as there's a space somewhere in the name, it will be used as the title. title in the New Books screen, it will be applied when the book is actually installed, which will make the name change permanent. Leaving and returning to the New Books screen prior to doing an install will undo that You can also change the audio file metadata from a computer. We won't go into that here. title change.
Normally, completely deleting books you no longer want is the best solution, but on occasion keeping them is useful.
If you click the three vertical dots (⋮) ("More")
(#8 on Book Inventory), you can select Archive,
and it will put any books you delete in the directory
If you have more than one AudioBooks
directory, it will create an AudioBooks.old
for each writable
one, as needed. See Alternate Directories above.
AudioBooks.old
adjacent to the AudioBooks
directory they were previously contained in.
You can then copy or move them from there to meet your needs.
Generally this is not recommended since you want the space they occupy for new books, but is available if needed.
The delete icon changes from "Delete Permanently" (with an "X" over the trash can) to just "Delete" (no "X").
The next several topics are a collection of things you can do if simply getting books from the Internet, reading, and deleting them doesn't meet your needs completely. Pick and choose what's helpful to you. Don't attach much meaning to the order of things below, because everyone's needs are different.
Sometimes a book is too big to fit into a single downloadable piece conveniently. War and Peace is a typical example.
Some book providers offer book downloads by individual chapters, rather than providing the whole book. (Some provide both, so if you want a whole book be sure to look deeper in the website to see if that's available.)
If you have a situation where you have a collection of downloaded files that you want to play as a single book, that can be fixed without using a PC. The Aesop player allows you to group a collection of candidate books (in the New Books screen) into a single entry that when installed will be treated as a single book.
Now click the "More" button (#8 on Inventory Screen) and then Group Selected Books. Aesop Player will ask for confirmation, and then combine the checked books into a single new book.
The title will come from the (alphabetically) first book in the group. You can now install (or change the title of) the result just like any other book.
The only thing you need to be careful about is that the book titles need to have the proper alphabetical order before grouping them, because that's the order they will be played in. (If you need numbers, be sure that they have leading zeros if needed.) In most cases the defaults will be fine, but if they aren't, you can change the titles to fix that. Aesop Player will maintain any file extensions.
Mistakes do happen, so it is possible to ungroup a grouped book back to the individual books by clicking Ungroup one book under "More". Only one book can be ungrouped at a time. Doing this into a download directory with no other books in it is helpful, but not required. The pieces each become a separate book with the usual properties, and those could be restored into a group later.
Advanced: file names for audio and zip files have any blanks in their names removed when they are grouped.
Advanced: If you have installed a grouped book and need to do something to it, you can go to the Current Books screen, select "More"->Archive, and then delete the book from Current Books. That will put it into AudioBooks.old which you can then select as the download directory, and ungroup it there, fix it, and then reinstall it. (After you're done, be sure to reset the download directory, and Archive mode if you aren't otherwise using it!)
This is an advanced topic, and requires (minor) use of a PC or file manager application. It's best to come back to this should you find you need extra space for your books.
First, review Alternate Directories discussion above. Given that, if you want to use an SD card for additional book storage, you must decide if allowing other applications to read your books is more important than using the built-in tools for managing books:
Android/media/github.io.donnKey.aesopPlayer/AudioBooks
on the SD card, and proceed using the built-in tools.
AudioBooks
at the root of the SD card.
You (probably) won't be able to use the managing books tools, but will rather have to maintain the content using a PC.
Be sure to test that this works as expected (there's a lot of variation between devices here).
Nothing prevents you from using both AudioBooks
directories on the SD card,
although it's likely to be confusing to do so.
Books that cannot be deleted using the book inventory screen will be shown with a red "padlock" icon, and attempts to delete (or archive) them will be ignored.
Download
directory,
and moving things out of the Download
directory is usually the intent.
There is an option to change that behavior under More (⋮),
and if the directory you are copying from is read-only it will just copy rather than move.
The copy versus move status is reflected in the icon for "INSTALL".
The download icon will have a line above it (mnemonically, the book left in place) when a copy rather than move will occur.
The player keeps some information about progress reading a book: the current position (which it needs for restarting after a pause), whether the book has been read to the end, the stop points, and the maximum position read so far. The progress shows up as a time and percentage on the player screen and on the book inventory screen, and the word "Completed" is shown in both places when the book has been read to the end.
Occasionally a book may be left playing accidentally and the stop points feature is not useful for some reason, or you need to move from one device to another. Should that happen, you can click on the time displayed in the book inventory (#9 on Book Inventory), and enter a new position. That can be in minutes (even more than an hours worth) or hours and minutes (as hh:mm)). Setting the time to zero rewinds the book completely. Changing the time this way also resets the "Completed" flag. The window for setting the time also shows the stop points and (after the "-") the maximum position, again as hh:mm. That may be hidden behind the virtual keyboard on some devices: you can close the keyboard ("done") and then restore it by clicking on the new time field.
You can also reset any books to the beginning by checking them in the book inventory screen and then clicking the "Reset" button at the upper right (#7 on Book Inventory). (Check "All" if you want to reset everything.) This also resets the "Completed" flag. (This is particularly useful if you are using the player as a "library book" shared between users.)
The Aesop Player supports book installation by either email or a shared file (or both). This is a fairly advanced topic, and one you can completely ignore if you don't need it. The expected use is to simplify adding and removing books on a device you cannot easily touch Or in these days of COVID-19, do not want to expose anyone. once you have done the initial setup.
The general idea is that you send the device a small file (a "request") describing the actions you want done. (Mostly adding and removing books.) After a while, Aesop replies with the results from that request. There's no server involved (beyond the mail or shared file server), and the information you use remains either on the device, or in the mail or shared file server, nowhere else.
This can usually be done while the user is listening to a book. On a very slow device it might make the audio glitch; you can experiment with that on your device. There are also facilities to run the requests at a convenient time if that works better.
Since the typical configuration for devices you cannot touch is a dedicated player configuration, it's assumed to be insecure. See here. Thus you should not use your usual mail account (with all your private business) to update the device.
First, decide what sort of dedicated player configuration is appropriate, and set that up. It will need to be one with networking (probably WiFi) working to have remote access.
Although not strictly required, setting the device up to use one of the Remote Control applications will let you adjust settings and fix any problems that might develop that this process cannot handle. (Any which work for you should be fine) (Yes, you can do everything this does via such an app, but that is often tedious to do, and with this you can do it without having to disturb the user.)
We'll first discuss using eMail. The shared file alternative is conceptually very similar, using shared files rather than mail as a transport.
For Mail, your next step is to create a mail account The mail account can be used to maintain several Aesop devices if that's helpful to you. just for maintaining the device. We've tested this using GMail. You can try it on other mail servers, but since it's a completely new mail account, it doesn't really matter whether you are otherwise a GMail user.
First, create a new GMail account. (Just go to www.gmail.com.) Be sure to create it in a way that Google does not associate it with any existing mail accounts. This may require using incognito browsing or using a different browser, because Google's default is to recognize you're logged in to your browser and assume you want a new address associated with your current account. Once it's created this way, you can use it like any other mail account.
Next, you must mark the account (if it's a GMail account) as a
less-secure
This is a technical requirement.
For good reasons, Google wants you to use a high-security/high-privacy interface for
all your personal information.
Reading and writing mail without human approval each time is insecure,
but for Aesop to read and write mail without the user being involved to approve it,
the account must be marked "less-secure".
That doesn't make it insecure by any means, but it isn't as secure as Google's own solution.
Since this likely is a dedicated player, which must be insecure as described in the
Dedicated Player
section, a mail account dedicated to this purpose is sensible.
account. While logged in to the new mail account, go to
https://myaccount.google.com/lesssecureapps
and change that setting.
Other mail services may have similar features and require similar configuration changes.
It might be helpful to name the mail account with something that reminds you that it's less-secure.
Something like MyName.ls
.
There's no functional difference visible to you when you've done this, but Google will remind you in various
ways that the account is less-secure... you'll have to ignore that.
Google has been known to force password changes or
reset the setting
We've seen it reset in as little as a few months of disuse.
If it does get reset, be sure to switch to the less-secure account before reenabling the feature.
on such accounts.
They also monitor for logins on new devices, so you may need to OK the login if you start using a new device.
The next step is on the device; you need to provide it with the information about the mail account, so it
can both send and receive mail.
Go to Settings->Remote Book Settings (it's near the bottom of the main settings screen).
You'll see two switches, both off.
Turn on the Use Mail For Remote switch.
Four new fields will appear.
The first is the mail host. Fill that in with the mailer service, e.g. gmail.com
.
The second is the email address you just set up, like MyName.ls
(no '@' and comain).
The third is the password you established while setting up the account.
The fourth is optional: it's the device name that the mail reader will
look for in the subject line of the mail. If you provide one, only mail with
that device name in the subject line will be read.
If you don't provide a device name it will simply not check for that.
Something like Granny_reader
would work.
Technical details.
This is useful when you use a single mail account to maintain more than one device.
You can put more than one device name on the subject line of the message;
only the devices with a matching name will act on the request.
Devices with no device name will only act on requests with no device name in the subject.
Some mail services do not support the features necessary for sending to multiple devices reliably.
You will get a warning message if that is the case.
You can either use another mail service or never send to multiple devices.
The settings screen will not allow you to leave the screen until you have entered a valid hostname, login, and password (or turn off the feature completely — it won't forget your incomplete work). Once it has the required three, it will check that they work and tell you what's wrong The mail service doesn't distinguish between an invalid eMail address and a bad password, so we can't tell which of those is wrong if there's a problem. if it doesn't. The line under Use Mail For Remote will say "Validated" when everything is set up correctly. (The Validated message may take a little while to come up, depending on the speed of your network connection.) If you send a mail message like the below, you should get a reply within a few minutes. Note that the subject line must contain "Aesop request". You can send from the same account you've just set up.
To: MyName.ls@gmail.com Subject: Aesop request Granny_reader // Tell me about the currently installed books books:books exit: // optional, stops parsing
Some mailers append some "advertising" after your message.
You can either delete it before you send, include an exit:
to stop parsing,
or simply ignore the errors about things it didn't understand.
A backup copy of the body of the reply is put in the same place that it's put in the shared file case below, whether or not shared files are enabled.
You can use your usual mail interface to remove mail (including the inevitable junk mail) at any time, and you can send (insecure) mail from it as well. Aesop will ignore all messages except those with "Aesop request" in the subject line, and will delete those requests it has completed. (It also doesn't see messages that have been read.)
Having a lot of clutter in the mailbox makes it inefficient: be sure to delete old requests and replies when you are done with them. Look at Sent Mail as well.
The shared file option is conceptually similar, except that you send and receive the files
as shared ("In the cloud") files.
If you set up the file sharing as described section
...from the Cloud
section above (with two-way syncing), you can simply write the same text as for mail (just the mail body)
into
Android/data/
,
and the results will be posted to
Android/data/
,
after the Cloud delivers the files.
The (long) path to those files a location that should always work.
You can change it when setting this up, but be sure to test that you can actually read and write the
files at that location with whatever file sharing mechanism you use.
Each time you change .../AesopScript.txt
, it will be treated as a new request.
Go to Settings->Remote Book Settings (it's near the bottom of the main settings screen), and this time turn on Use File for Remote. There's just one option, the directory to use. The path must be a valid, writable, directory, and should point to wherever your Cloud settings put the shared files. An attempt to set it to empty will cause the default (long) value to be filled in.
You can use both eMail and shared files. They will be processed in the order Aesop sees them, which may vary depending on how the network is performing.
The request is simply a sequence of lines in the body of your mail message or in the shared file.
Each command is exactly one line.
Blank lines in the message are ignored.
All characters after // are ignored (treated as
comments
Technically, comments are lines starting with //, or anything after <space>//; the "//" in "https://" doesn't begin
a comment.
.)
The command syntax is chosen to be what you'd get using
copy/paste
The http:
, https:
, file:
and ftp:
commands mostly
follow the industry standard syntax for their respective type.
Specifically, they have a place for a username and password,
which is generally not needed for our purposes.
However, those fields will generally (but not always) be used if they're provided.
Since including user names and passwords in mail messages is generally not good practice, you should
be sure you understand the consequences of using them in a request.
We won't discuss those fields further here.
If your book source requires their use, they should provide example URLs that should work here.
in many cases.
Technical details.
• To allow easier copy/paste (or using the reply function of a mailer), lines beginning with one or more
sequences of ">
" have those characters removed, since many mailers insert those
characters to indicate text quoted from prior messages.
• Some mailers reformat text, potentially breaking the single line per command format here.
The Aesop Player makes a reasonable effort to deal with that, but
should that not work, you should be able to configure the mailer you are using to send "plain text".
On GMail, it's found by clicking the vertical ellipsis at the lower right of the mail composition screen.
GMail remembers this setting between messages, so you may need to set or reset it.
• Replying to or forwarding an "Aesop Request" message that hasn't yet been deleted generally works, although
you may get ignorable error messages.
The exit:
command can be used to ignore "leftovers" from prior mail.
Using a target device name that doesn't exist (e.g. "sticky") will keep a message from being deleted.
For several commands, there's a need to refer to a specific book. That's done by using a partial title.
A partial title is a quoted string which can be any substring of the title or its directory name; the comparison ignores case. If exactly one book matches that title, it is selected. If more than one book matches, no books are selected. For example if both "Alice in Wonderland" and "Alice Through the Looking Glass" are installed, "wonderland" will select "Alice in Wonderland", "glass" will select "Alice through the Looking Glass", and "Alice" will select neither, because it's not clear which book was intended. If it should happen that you have books where the title of the one you want to change is a substring of another title, remember that you can choose a string in the directory name (if that's different than the title). Worst case, you can rename the longer title (by using the part of the title that's unique) and then rename that book back to its prior value when done.
Some commands allow you to specify a new title for the book. If the new title isn't reasonable (for example is empty or consists of spaces), it will be rejected to prevent creating a book that cannot be found as a partial title.
http:
URL
|
https:
URL
)
(
[
"
title"
|
downloadOnly
]
)
http://www.archive.org/...kidnapped_0807_librivox_64kb_mp3.zip
http://www.archive.org/...kidnapped_0807_librivox_64kb_mp3.zip "Stevenson's Kidnapped"
http://www.archive.org/...kidnapped_0807_librivox_64kb_mp3.zip downloadOnly
Whether you use "http" or "https" is determined by the web site you're using;
you must use whichever the website provides.
See also the download manager settings if you are having problems downloading.
Files will always be downloaded to the Download
directory.
See also here.
It is possible that a potential book could be downloaded and then the install fails. A likely reason for that is that the device is out of space. The Aesop player does NOT remove such downloaded files automatically, since it is likely you could fix the problem and then install it later. However, you should be sure that all failed downloads are removed, either by installing them, or explicitly deleting them. An exception to the rule of not deleting failed installs occurs when "Not an AudioBook" is reported. Since there will be no way to find it by name or partial title, it is immediately removed.
A note about older devices.
Due to some standards changes that were made after Android 4 devices were released,
downloading on those devices doesn't always work for https:
URLs.
Many https
connections will work on those devices, but some websites don't connect,
and there are some indications that there isn't a solution available other than changing the
website's configuration.
We aren't aware of any audio book websites for which this is the case.
(Solutions include downloading some other way, contacting the website owner, and getting a newer device.)
ftp:
URL
(
[
"
title"
|
downloadOnly
]
)
The ftp:
command does an
"anonymous ftp"
It will actually take a login name and password as allowed by the standard syntax, but it
defaults to "anonymous ftp". If you want to use a user name and password, whoever is providing
the service should be able to provide the required information. As we mentioned in a note above,
including this information in eMail is a questionable security practice.
download of a file.
This is useful for services that don't support http downloads, or for which this is more convenient.
Like the URL for http:
it includes a hostname and path.
Project Gutenberg allows downloading their books, including audio books, via FTP, as in the
following example to download the first chapter of the book they catalog as
22984.
This is actually a LibriVox recording.
ftp://aleph.gutenberg.org/2/2/9/8/22984/mp3/22984-01.mp3 "Peter Pan Chapter 1"
Ftp may or may not work over mobile connections... you'll have to try it. You can search the web for suggestions.
file:
filename
[
"
title"
]
If you already have a book ready to install on your device,
you can do that with the file:
command.
It may be easier to use the downloads:install
command in some cases.
They do the same thing; use whichever is easier in the particular case.
If you have the full file URL somewhere you can use that directly just as you did with
https:
.
If you need to construct a file URL from a full path name, the first characters should be
file://
, followed by the full path name. Since the fill path name begins with
a slash character, there will be three slashes in a row.
(Caution: full file URLs may not always be portable between devices.)
If you know the file path as a relative path in "the usual places" ("internal storage" on Android),
putting the relative path just after the "file:" (no "/") will
work.
This is not a standard-conforming file:
URL, but
Aesop interprets it as relative to the parent of the Download
directory.
For example, if you downloaded but did not install the book in the https:
example above,
you could later install it with:
file:Download/kidnapped_0807_librivox_64kb_mp3.zip "Stevenson's Kidnapped"
The new title is optional.
See also here.
books:books
books:books
command lists the currently installed books.
It's the same information as the "Current Books" screen: the total length of each book, the current position,
whether it's completed or not (the "C" column) and whether it's writable or not (the "W" column).
The usual title is always given.
If the directory name differs from the title, ->
and the directory name follows.
The current (playable) book is marked with a >
at the left margin.
If a digit appears in the left margin, see
here. You can use downloads:rawdelete
, below, to remove the duplicates.
books:clean
[all
]
[current
]
The books:clean
command removes those books that are marked completed and which are in the first
minute
The assumption is that the user might have restarted a previous book, but recognized the repetition and
changed books again.
of the book, but excluding the current book.
The operand "all" will unconditionally remove all books except the current book.
The operand "current" will unconditionally remove the current book.
The current book is treated specially so that the user is not surprised by an unexpected change.
Thus books:clean all current
removes all books.
See also here.
books:delete
"
partial title"
...
The books:delete
command removes the book specified by the first argument,
which is a partial title as described above.
See also here.
books:rename
"
partial title"
"
title"
books:rename
command changes the title of the book specified by the partial title
to the new title which is the second argument.
For example, books:rename "alice" "Alice's Adventures in Wonderland"
provides the historical title.
books:reset
(
"
partial title"
|
all
)
[
<time>
]
books:reset
command changes the current position in the book, and clears the "completed" flag.
The first argument, which can be either a partial title or all
specifies the book(s)
to change. An optional second argument specifies the time to set it to. If the second argument is omitted
it is taken to be zero, which means "rewind to the beginning". For example
books:reset "alice" 0
rewinds Alice In Wonderland to the beginning.
books:reset all
rewinds every book to the beginning.
Times may be specified as either hh:mm (hours and minutes) or mmm (just minutes).
All of
1:01
,
1:1
and
61
specify the 61st minute of the book.
See also here.
When dealing with uninstalled books, they can be found in any directory.
Thus there is a "current download directory": the one being operated upon currently.
This can be changed at any time.
Except for the command to change it, all the "downloads" commands are performed relative to that directory.
It initially defaults to the Android default Download
directory during each request.
downloads:books
download:books
command prints the list of potential books found in the current download
directory. Potential books are audio files and directories containing audio files.
It lists the file or directory name, the book title if it's different, and a flag indicating
that the default title conflicts with an existing book and thus can't be installed unless
a different name is provided when installing it.
See also here.
downloads:directory
"
directory name"
download:directory
command changes the current download directory.
The directory name can either be an absolute path (beginning with "/") or a path
from the "usual place": relative to the parent of the Download
directory.
No change is made if the directory doesn't exist.
It is permissible and sometimes useful to name AudioBooks
as the current downloads
directory.
See also here.
downloads:delete
(
"
partial title"
...
|
all
)
download:delete
command deletes entries in the current download directory.
It will delete either using a partial title, or all items identified as potential
books in that directory. CAUTION: Not everything the Aesop Player identifies
as audio books are actually audio books, and those may be used for other system purposes.
Be absolutely sure that if you use the all
operand that there are only books
in the current download directory. Otherwise, delete by using partial titles.
downloads:install
(
(
"
partial title"
[
"
title"
]
)
|
all
)
download:install
command installs entries from the current download directory
as new books. You can install either all the books in the directory (and Aesop will compute
titles) or a single title, where you may provide a new title. Semantically this is
identical to the file:
when installing a single file, but with a
frequently more convenient syntax.
See also here.
downloads:group
"
new title"
"
partial title"
...
The download:group
command collects the list of partial titles
into a single new book entry named by the new title.
This is useful to collect a group of downloads that constitute a single logical book
into a single entry that can be installed as a single book.
See also here.
downloads:ungroup
"
partial title"
The download:ungroup
undoes what the group command does.
It primarily exists to correct errors, but is occasionally useful
in making a bundled collection of books into separate books, if the
structure allows that.
Ungrouping a group that has ordinary files as well as directories
will cause the ordinary files to appear at the top level, which may
require cleanup.
See also here.
downloads:rawfiles
The download:rawfiles
exists primarily to help clean up if
things go wrong and unexpected files are left on the device.
It lists the file names (not just books) in the current download directory.
The current download directory could be AudioBooks
.
Normally the command is not needed, or you would use a file manager directly
on the device to do cleanup, but this allows cleanup to be done remotely.
The format of the list of files includes quotes so that names can easily
be copied (using copy/paste) into the download:rawdelete
command.
Android 11 limits the directories this command can be used with.
Readability.
This list can become hard to read in GMail because of the reformatting GMail does.
There are a few Chrome Plugins that will render the results in "computer" (monospace)
font. We've tried "Gmail Mono" successfully.
downloads:rawdelete
"
filename"
...
The download:rawdelete
exists primarily to help clean up if
things go wrong and unexpected files are left on the device.
It deletes the named files in the current download directory.
These are not partial names.
They must be the exact name of the file (or directory) to be deleted.
The download:rawfiles
command provides those names.
Use this command with care.
It can delete important system files, so make sure that you know that
the files you are deleting are really unnecessary.
Android 11 limits the directory this command can be used with.
These commands are intended to allow book maintenance to actually occur when the user is not using the device, and to avoid the caregiver having to maintain books at inconvenient times. As noted above, it's likely requests can be run while the user is playing a book.
run:at
time-of-day
The run:at
command specifies a time of day that the rest of the request is run.
If the time time is prior to the time the mail was sent or the shared file updated,
it will be run the next day at that time.
For example, if you are mailing commands in the early evening,
run:at 10:30PM
will cause the commands to be run later that evening, run:at 0300
will cause the request to be delayed until 3 o'clock the next morning.
All times are in the local time of the device.
The run:at
must be the first non-comment line in the file.
If there are any errors in the run:at
an error will be sent when
the Aesop Player first sees the request, and the message will be deleted like any
other message.
A time-of-day can either be hh:mm [ AM | PM ]
or hhmm
.
The first form is for 12 hour time (e.g. 5:30 PM
or 5:30PM
), the second for 24 hour
time (e.g. 1730
).
run:every
[ time-of-day ] <daynames>
The run:every
command specifies that the request should be run on the specified days.
If the time is specified, the request is run at that hour. If no time is provided it is run at 03:00 AM.
It is run on the specified days at the specified time until the request is deleted.
If a request message or file contains this command, it is not deleted (or ignored) after being run,
but remains to be used again on the next day.
This is intended to be used with the books:books
command to be reminded of the status
of the device.
The run:every
must be the first non-comment line in the file.
If there are any errors in the run:every
command an error will be sent when
the Aesop Player first sees the request, and the message will be deleted like any
other message.
The possible values for <daynames> are
Monday
or Mon
,
Tuesday
or Tue
,
Wednesday
or Wed
,
Thursday
or Thu
,
Friday
or Fri
,
Saturday
or Sat
,
Sunday
or Sun
,
everyDay
or every
, and
weekDay
or week
.
Any combination of these is supported.
Note that "day" alone is not allowed.
If you no longer need this request, you can simply remove it from the mailbox.
Several of the commands below change a setting. Each of those settings is restored to its default value for each complete request. If you use any of these it's best to collect them near the front of the request so it's easy to include them in each request.
exit:
The exit:
command terminates processing the request.
Everything past the exit:
command is ignored.
It is useful to keep a collection of commands you aren't using
where you can easily copy them, or to cause mailer-created irrelevant text to be ignored.
mailto:
address
The mailto:
command indicates an additional mail address to whom
the processing status is sent.
(It is always sent to the sender of a mail request.)
This is attempted even when using a shared file.
If the mail connection could not be validated, the error is logged to the shared file,
and the command is otherwise ignored.
settings:archive
( true
| false
| yes
| no
)
The settings:archive
command sets a switch indicating that when a book is deleted,
it is moved to Audiobooks.old
rather than actually being deleted.
It could be reinstalled later from Audiobooks.old
in the usual ways.
Using this option is not usually recommended because the space is not recovered,
but it may be useful in temporarily making a book appear unavailable.
This applies to all subsequent deletions for the current request.
See also here.
settings:rename
( true
| false
| yes
| no
)
The settings:rename
command sets a switch indicating that while installing a book,
audio files and directories which appear to be sequenced using decimal numbers are renamed so that all strings of digits
are the same length. That is, chapter1.mp3
might be renamed chapter01.mp3
so that it plays in proper order with respect to chapter10.mp3
. This is normally
enabled, but can be used if for some reason the renaming
creates a problem.
We've never actually seen a problem.
This applies to all subsequent installs for the current request.
See also here.
settings:retain
( true
| false
| yes
| no
)
The settings:retain
command sets a switch indicating that when a book is installed,
the original copy is not to be deleted.
Using this option is not recommended because there will now be two copies of such books, taking up space on the device.
This applies to all subsequent installs for the current request.
See also here.
settings:mobileData
( true
| false
| yes
| no
)
The settings:mobileData
command sets a switch indicating whether file downloads
(the http:
, https:
and ftp:
commands)
are permitted when there is only a mobile data (no WiFi) connection.
Since it is possible to send and receive mail via mobile data, a request could be
run while there isn't a WiFi connection.
To avoid unintended charges,
Aesop Player doesn't download files via mobile data unless this switch is set.
An error will be reported if a download attempt is made over mobile data unless this switch
is set.
Other operations are permitted since they don't involve much data and it might prove useful.
This applies to all subsequent downloads for the current request, and the command should
normally be very near the beginning of the request.
Note that the Android system has other settings for mobile versus WiFi data, and those all
take precedence. This switch has no effect on those settings; it sets policy only for Aesop.
settings:manager
( true
| false
| yes
| no
)
The settings:manager
command sets a switch indicating whether http file downloads
(the http:
and https:
commands)
are done using the download manager rather than a simple socket connection.
This is a potential performance versus reliability decision.
Socket connections are slow but simple. Download managers offer the possibility of faster
downloads, but they may have idiosyncrasies that keep them from working in all circumstances.
In particular, the default download manager for devices prior to Android 5 does not work for modern https connections due to some standards changes made after those devices were released.
The default is to use socket connections. If you use this command to enable the download manager twice (without disabling it), it will allow attempts to use https on Android 4 devices; this might work with download managers from the play store. We haven't tried it. If download speeds are an issue, you can experiment with this option to see if it helps. (If you're updating a device overnight, it's unlikely that the speed difference matters.) We haven't tested this at all with other than the stock download manager. If you do try using it and learn anything, please do let us know.
This applies to all subsequent downloads for the current request, and the command should normally be very near the beginning of the request.
Here's the simplest request, with the results following:
To: MyName.ls@gmail.com Subject: Aesop request avant books:books exit:
Here's the result you'd get if just the sample books are installed.
Start of request on: Avant at Fri Sep 04 12:53:14 PDT 2020 books:books Books Total: 0:09:04 Length Current C W Title In /storage/emulated/0/AudioBooks >0:05:02 0:00:00 - 0% Alice's Adventures in Wonderland 0:04:01 0:00:00 - 0% Hamlet exit: End of request on: Avant at Fri Sep 04 12:53:14 PDT 2020 Space on /storage/emulated/0: Using 5517Mb of 12597Mb (43%)
"Avant" is the device name. The current book is "Alice..."; neither book has been started.
The line beginning in "In" is the location of the books that follow. There can be
more than one
AudioBooks
directory, so each such directory gets a title like that.
The total playing time appears to the right of "Books".
The last line summarizes the available space, as a guide to knowing how many books might be added.
There is one space line for each AudioBooks
directory: if they're on the same storage they will
have the same space information.
This next example loads a few new books. The "http" commands are from right-clicking the "Download" button on the Librivox website and selecting "Copy Link", which then can be pasted directly into the message.
To: MyName.ls@gmail.com Subject: Aesop request Avant // Granny really liked the sample books; get full versions. books:delete "Hamlet" books:delete "alice" http://www.archive.org/download/alice_in_wonderland_librivox/alice_in_wonderland_librivox_64kb_mp3.zip http://www.archive.org/download/hamlet_1209_librivox/hamlet_1209_librivox_64kb_mp3.zip books:books // See what came (and how long) exit: // This looks interesting, maybe next time http://www.archive.org/download//aliceinwonderlandinwordsofonesyllable_1604_librivox/aliceinwonderlandinwordsofonesyllable_1604_librivox_64kb_mp3.zip
Here's a reminder to see if books need to be updated on two book readers. You'll get mail every Friday evening, one from each device.
To: MyName.ls@gmail.com Subject: Aesop request Avant Grampy_reader // Check to see if either Granny or Grampy need new books every Friday night run:every Friday 10:00PM books:clean // get rid of the finished books books:books // see what's left