|1||Hyena 10 0 keygen||14%|
|2||Vso er ultimate 22.214.171.124 crack||66%|
|3||Ustream producer pro 2.0 keygen||58%|
|4||Icare data recovery 5.0 serial key||73%|
|5||Fifa 07 torrent crack keygen||15%|
|6||Hi platinum 8.08 keygen music||100%|
|7||Arcgis desktop 10.1 crack||23%|
- Android Programming [pld4kv93yvln]
- Sight Word Activities For Older Students & Worksheets
- English Typing Test: Classical Literature
- Cool Secret Codes For Kids - Free Printables
- Button Tutorial With Examples In Android Studio
- Free 10 Key Data Entry Tests
- Planning and Control Using Oracle Primavera P6 Versions 8
- 10 key typing test - Numbers 10 key skills - Online Typing
Keygen 4.31.2 TEFRA Examinations - Field Office Procedures
Response Action Contract (RAC) Users' Guide, Volume 1. Type the key or sequence shown in the crate to drop it. Pick keys to practice from Control Keys. To use the number pad, please turn on the Num Lock button in the top left. Note the number of errors.
Activity code uS5987443A - System, method and article of manufacture for
Learn to use your number pad with speed and accuracy by playing typing games. While typing speed is important, it is only one skill in the field of data entry. For instance, at the secondary school level in Malaysia, the main form of assessment is a national examination that requires learners to sit for at least 10–12 subjects; for each subject, learners have to register for at least 2–3 examination papers – usually in the shape of written test, oral examination and laboratory experiments. You can do this online through a DED website; or at one of the typing centers in the emirate.
Download num Pad: 4 5 6 - Free Online Speed Typing Test & Practice
Numpad (10-key) Multiple entry modes. Typing Test Worksheets & Teaching Resources. Scoring over 12, 000 KPH with good accuracy (98%) on our free 10 key practice tests will qualify you for just about any data entry job. Primavera P6 How To Use Fill Down to Copy Activity Data.
3.13.36 EPMF Account Numbers
Most answers here all have the weakness of using key- events. The test provides both a speed score (keystrokes per hour) and an accuracy score (number of correct fields). Compiled - If Python is interpreted, what are .pyc files official site. The most lightweight of them are Memtest (sized at 28, ) and A-Key Calculator (sized at, ), while the largest one is AVS Video Editor with, bytes.
Crack typing Practice With 10 Fingers
Can you name the numbers you're typing? Completing the Number Row, the full set of numbers keys will used in this practical sessions. I want to learn the position of the hands and the appropriate way to do it in a fast way Apr 10, 2020 10: 12: 51 AM By: Mahalaxmi. The test folder function should not be used for basis for assessment such as web exams, but only for self-tests and the like.
What To Do When Your Keyboard Types Numbers Instead of
Ten key speed is measured with a Keystrokes per Hour Test. 10 key typing test numbers only books. One of the students has made it over half way through the task and has just attempted to journalize the sixteenth transaction. Learn to type, type faster, practice for employment tests like the ProveIt or CritiCall data entry exams.
- Ten Key Test - Typing Test and Free Learn to Type Tutor Online
- Free Touch Typing Lessons Online: : Learn How to Touch
- 10 key typing test and free 10 key practice - Online Typing
- Alphabet: A to Z - Text Practice
- Online typing test in English - 5 minutes
- Frequently Asked Questions
- Typing Speed Test - Free online typing tests, lessons and
Cracked ministry Of Corporate Affairs - Classification and
The test below will do just that and comes with a number of options including the ability to change the keys you are tested on and the duration of the test. Most typing tests are straightforward. The student submits to the Financial Coach, but the feedback comes back blank. SSC LDC TYPING TEST 10 MINUTES - Text Practice news.
Free Typing Test Practice Exercise
Following setups are done for the item used as part of the flow in inventory module: The Service Billable attribute is set to Material. Free Online Typing Test. Before initiating a TEFRA key case examination, the time frames and procedures outlined in Exhibit 4.31.2-2, TEFRA Pass-Through Examination Time Chart, and Exhibit 4.31.2-3, TEFRA Key Case Procedures, must be carefully reviewed. Welcome to the #1 Typing Speed Test!
Business setup consultantBusiness Setup in Dubai
Text Practice Practice your own Text Top Unlock the Top words of your language. There is an EXERCISE section at the bottom part of each LESSON. Increase speed only when you feel sure enough to do so. Don't look at the keyboard! The test students work through the journalization activity.
How to Create a Summary Worksheet in Excel 2020
As you begin these typing lessons, remember to focus on accuracy. If you have to deal with numbers repeatingly in your job like prices, accounting or engineering calculations, it can be quite slow to use the top row of the keyboards to type these numbers. Daily practice, especially with the use of online tools, can help you increase your speed of the key pad by touch. You will not be alerted of your errors until the time is over, and we don't have a distracting WPM meter next to the test.
Serial key full text of "ibm: : common: : 1620 Users Group Western
Holding the Fn key is a temporary solution, however here is a more permanent one. How to Learn Key by Playing Games. Check your true typing speed, accuracy and skill level in just 60 seconds. Do not press enter at the end of each line, only at the end of the.
- KeyTower - Game - Typing Games Zone
- Improve your Data Entry Skills with The Practice Test
- Original 10 Key Test Typing and Practice Test Pad KPH
- What Are 10 Key Skills for Data Entry?
- CodeHS - Teach Coding and Computer Science at Your School
- Exposure Factors Handbook Volume 3 Activities Factors
- Avanset vce exam simulator 2.0.1 crack
LazyLibrarian, Calibre, Calibre-Web, Booksonic Installation Guide v1.0
If you follow this, please read through the whole thing first. There are some things that should come in a certain order to make life easier. I've tried to call out options where they are available and give some reasoning behind my choices.
I do NOT have all of the answers. And my choices are not always correct for me, let alone for you.
Hopefully coming soon will be some short guides for things you'll encounter after the installation (why won't my audiobooks import, why aren't calibre entries being written, etc.) As well as an inevitable edit of this guide once all of the flaws and shortcomings have been located.
To get started, you need a Linux installation. I'm assuming a plain vanilla install of Debian that you've booted into once, updated packages, and rebooted if necessary. Not sure if it matters, but I'm running it in a VM. Currently giving the system 4GB of RAM, 4 processors, and 70 GB of space, NOT counting space for the library. The RAM only rarely comes into play. The processors almost never come into play. At some point, I'll dial them both down by half or more. The disc space looks kinda ridiculous. In retrospect, 20-30 is probably more than enough, but I'm still figuring our the room for metadata.
(For comparison, I have 28GB of eBooks at the moment, as well as 164 GB of audiobooks. (Note to self: look into that. Database reporting in LazyLibrarian says I only have 624 books and 263 audio. That amount of disk space seems a bit much. Difference between du and df is interesting.))
Information and items to have before you start (* is mandatory, O is optional):
- * -Location of helpers like SABNZB, qbittorrent, etc.
- * -Intended Directory layout. More on this later
- * -IP address and hostname of your library server (this should be statically set, or you may have issues later) (for this document, we are assuming 192.168.1.100 and hostname librarian)
- O -Bot accounts on your favorite IRC servers if you like.
- O -GoodReads account.
- O -Kindle email to device address
Distribution ChoiceI prefer Debian based distros due to simplicity. Usually I go for Ubuntu (because everyone does, it makes it trivial to specific directions). For my library, I went with vanilla Debian. There are some changes in how Ubuntu handles certificates that aren't well documented and that I didn't feel like figuring out. This guide will be based on Debian Buster.
I haven't gotten around yet to playing with Docker. Sometime in the next year, I hope to do that. If you need Docker help, gotta ask someone besides me. This is a guide to putting a library on (virtual) metal.
Required additional packages
- git (For installing/updating.)
- xvfb (Required to do a few things with calibre. Most importantly, this is required if you didn't install a gui on your system)
- python3-pip (Not every python package is prepackaged.)
- libnss, python3-openssl, python3-oauth (Agh, lost my notes as to why we need this.)
- openssh-server (unless you are logging in locally or solely through VNC, which I don't recommend.)
- cifs-utils (if you are using a Samba/SMB share. No, it's not recommended, we're doing it anyway.)
- imagemagick, ghostscript, python3-pythonmagick, python3-wand (for generating covers and the like)
- rename (helps manipulate filenames, because ebook and audiobook naming is awful)
- id3v2 and id3tool (helps manipulate id3 tags because ebook and audiobook tagging is awful. Supposedly id3 v1 is sufficient, but you really need the v2 tool. If you are a super miser on space, skip id3tool)
- unzip (another file/metadata helper)
apt install git xvfb python3-pip libnss python3-openssl python3-oauth openssh-server cifs-utils imagemagick rename id3v2 id3tool unzip ffmpeg
You need to set up a user just to run the services. On this setup and for this guide, our user is 'librarian'. I shouldn't have, but did set it up as a normal user, but with a couple of adjustments.
adduser librarian --system --group
Your screen should give you something like this:
Adding system user `librarian' (UID 109) ... Adding new group `librarian' (GID 116) ... Adding new user `librarian' (UID 109) with group `librarian' ...Take note of the UID and GID numbers. We'll come back to that later.
Directory setupYou will need several directories to exist before you begin the installations.
/home/librarian should already exist. If not, make sure you have a 'librarian' user and group. Then create the directory and assign ownership to your librarian user:
chown -R librarian:librarian /home/librarian
If you don't have the usegroup, try creating them again.
Most of the server stuff I want in /srv. If it doesn't exist, /opt is another choice. And back in the day, /uslocal did the trick. This guide uses /srv.
Almost all of my data lies on network mounts. In my case, I use samba/SMB. Unfortunately, calibre does not deal with this very well due to samba/SMB not handling file locks well. So far it's mostly ok if you follow my steps and mounting options. The 'not mostly' part is that every so often you may need to reboot the system.
Filesystems are automounted. You'll have to edit your /etc/fstab file. This is a typical line for my mounts:
//fileserveebooks /mnt/ebooks cifs uid=109,gid=116,credentials=/root/creds,vers=2.1,auto,x-systemd.automount,_netdev,mfsymlinks,nobrl 0 0Fileserver is the smb name for the fileserver where the data resides.
/ebooks is the name of the share.
/mnt/ebooks is the location that our librarian system goes to in order to find those files.
cifs merely specifies the kind of fileshare we are using
uid and gid must match the numbers from your 'librarian' user and group. This will make that user and group own the mount and be able to do just about anything with the files.
credentials=/root/creds specifies the location of your smb username and password. You could put the info here, but this provides a little extra security. The /root/creds file should look like this:
Username=BigBadLibrarian Password=s00p3rsekr1+Or whatever your credentials are.
vers=2.1 may be unneccessary or may need changing depending on your client and server to get the compatibility right.
The next two sections make the mount happen automatically at startup, after the network comes up.
The last two sections "mfsymlinks,nobrl" are two options that minimize the locking problem earlier. It's not perfect, but it's the best that can be done.
What directories do you need?
- /mnt/ebooks/ebooks is where we will put our ebooks (naturally)
- /mnt/ebooks/audiobooks is for audiobooks
- /mnt/ebooks/comics is for comics (which are beyond the scope of this document)
- /mnt/downloads is where our torrent and nzb downloader will place completed downloads. I strongly suggest you place them all here. You can separate them if you wish, but at some point, it's not worth the extra effort of defining things out too finely.
- /mnt/manual_import is where we will place files that we want to bring in manually. Suppose you copy some files from your ereader or a thumb drive. You drop them into this folder. (In my case, the data is on the file server. I mount it as drive N: on my desktop and as /mnt/manual_import on my librarian. Drop it on the desktop, it appears on the server.)
- /home/librarian/logs is where we will keep our logs. This isn't the best location (should be /valog/librarian or similar) but this will do for now.
- /home/librarian/.config/calibre/ is where we will keep some configuration bits, including the user database.
Install calibre-serverLong story short: follow the directions here: https://calibre-ebook.com/download_linux
A stock install should have the correct tools and dependencies already installed.
Run this on the command line: "sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin"
This will fetch the calibre installer and run it, placing items in stock locations (/opt/calibre). This is perfectly acceptable.
Now we need a sample file to use to force calibre to create its database. This command will grab the freely available "Hearts of Darkness" from Project Gutenberg. Feel free to grab whatever you like:
sudo wget http://www.gutenberg.org/ebooks/219.epub.noimages -O heart.epub
Take note of where the file 'heart.pub' is located. I will assume it is in /mnt/manual_import. Whatever directory you choose, life is simpler if you have only one sample epub in there. Next, issue the following command:
sudo xvfb-run calibredb add /mnt/manual_import/* --library-path /mnt/ebooks/ebooks
Change the two directories that start with "/mnt" to your location of heart.epub that you just downloaded and the location where you want your calibre database.
Calibre will run just enough to create a database. The computer should take a few seconds and then come back with "Added book ids: 1". If you look in your library folder, there should be a folder labelled 'Joseph Conrad' (or the author of the book you downloaded) as well as a file named metadata.db.
So now we have our basic database. Some people are leaving us now, as that's a key sticking point. Next step is to verify that the server works. Enter the following command: "sudo calibre-server --port=8180 --enable-local-write /mnt/ebooks/ebooks" Then open up a browser and go to "http://192.168.1.100:8180". You should be able to 'browse' around a bit, seeing your massive one author and single book. That's enough. Go back to the screen where you last were at the command prompt, and press control-c to end the task.
We are going to have some logging in our install. Create the log file and set permissions with these commands: "sudo touch /home/librarian/logs/calibre.log && sudo chown -R librarian:librarian /home/librarian/logs/calibre.log"
We will have separate users for our install. It's not strictly necessary now, but might be down the road.
Create the user database and enter your first user by entering this: "sudo calibre-server --userdb /home/librarian/.config/calibre/server-users.sqlite --manage-users"
Create a library user. We assume username "librarian" and password "password" for this example. Don't type the quotation marks. In addition, give this user rights to all libraries in case you added another. Add another user if you like and provide credentials as well as what library you want that user to have access to.
Next we will need a service file to get calibre-server running at every boot. Using your favorite text editor, edit /etc/systemd/system/calibre-server.service.
Mine looks like this (lines that are comments start with an octothorpe '#'. You can leave them or delete the entire line):
[Unit] Description=calibre content server #this can be anything you want After=remote-fs.target #this prevents calibre from starting until after network shares are mounted. If you are storing everything locally, change remote to local [Service] Type=simple User=librarian Group=librarian #previous two lines should reflect the name of the user and group you set above ExecStart=/usbin/calibre-server \ #this should be your calibre executable. You can display it by typing "which calibre-server" at the command prompt. /mnt/ebooks/ebooks/ \ #your library location --enable-auth \ #if you set up authentication as we did. If you REALLY don't want it, delete previous line or comment it out --userdb="/home/librarian/.config/calibre/server-users.sqlite" \ #location of the database we set above --log="/home/librarian/logs/calibre.log" \ #location of the log file we set above --max-log-size=2 #maximum size of the log in megabytes Restart=on-failure #If it crashes or has certain problems, it will try to restart RestartSec=30 #Tunes restarting of the service [Install] WantedBy=multi-user.target #We only want this if we are running services. Not in a single user mode for system. Even if you are the only user, it has nothing to do with this line. Don't touch unless you know what you're doing.Reload your services configuration with "systemctl daemon-reload" and attempt to start the server with "systemctl start calibre-server"
Wait 10-30 seconds (it take a bit to get going) and investigate with "systemctl status calibre-server" or "ps ax | grep calibre" or both. The systemctl method is preferred. The beginning of roughly the third line of output should look like:
Active: active (running)Stop the service with "systemctl stop calibre-server". Check status. It should no longer say 'Running'. Start the service again. Wait a minute or two. At least as much time as it takes to type the next two commands. Check status. At the end of roughly the third line, there should be a time. It should display a time roughly equal to the last time you issued the command with start. A minute or two.
Now restart the service with "systemctl restart calibre-server" and after no more than about five seconds, issue the status command. The time at the end should be roughly five seconds. If it still says a minute or more, wait 10 seconds and try again. If it still shows an odd time, try the stop command, see if it stops, like it did before. Something isn't right.
And now to make it start on every boot, use the command "systemctl enable calibre-server". You can reboot, wait a minute or so, and then issue the status command to see if it started up ok. (I know there's an easier way than a reboot, but I rarely use it with VMs, so I'm not looking it up now.)
You can go read your copy of Hearts of Darkness (a solid book, btw), take a rest, or forge on.
Install calibre-web (optional but recommended)This is completely optional but oh so desireable. As good as what calibre does, the author is not as good at UX as he is at other things. The marketplace of ideas stepped in and provided us with calibre-web. It is simply a different front end to calibre. If you like the basic server, you can skip this section.
Download a copy of the software. Currently located at https://github.com/janeczku/calibre-web/archive/master.zip. easiest way is to change to the /srv/ directory and type "wget https://github.com/janeczku/calibre-web/archive/master.zip" and hit enter. Then 'unzip master.zip'. There is now a directory named "calibre-web-master". Change it to "calibre-web" with "mv calibre-web-master calibre-web". Then assign ownership of this folder to your librarian with "chown -R librarian:librarian calibre-web"
Change into that directory. At this point you can largely follow the instructions here, beginning at step 3: https://github.com/janeczku/calibre-web/wiki/How-To:Install-Calibre-web-(-Python3-)-in-Linux-Mint-20---Linux-Mint-19-in-Linux-Mint-20---Linux-Mint-19).
- 1Install requirements with "sudo python3 -m pip install --system --target vendor -r requirements.txt"
- Run calibre-web with "sudo -u librarian python3 /srv/calibre-web/cps.py"
- Leave it running and do not close the terminal.
- Go to "http://192.168.1.100:8083" in your browser. You login username is admin and password is admin123
At this point you can setup the startup script or you can keep setting up calibre-web. The startup script will be used even if you have to wipe this out and reinstall what you have so far. OTOH, you won't have to bother with the startup script if you decide you hate the interface and don't want it.
Walk through the setup wizard, filling in as much information as you can. If you collected the right information regarding paths and filenames you should have it all above.
A few suggestions:
- Assign at least one other admin user in case you forget the password after changing it from 'admin123'.
- Decide which software is going to take 'lead' for importing books, especially manual imports. I chose LazyLibrarian because it pings calibre which backfills calibre-web. The other options would require more manual intervention from time to time. Not to say that this is free of it. Oh no, the metadata is too bad for that to be possible.
- If you have a Kindle, set up email to Kindle. You'll need to look up the address on Amazon's site. You'll need an email sender. (I use Google, which will require you to setup an application password. Searching "gmail application specific password" should get you to directions for that.
Next we will need a service file to get calibre-web running at every boot. Using your favorite text editor, edit /etc/systemd/system/calibre-web.service.
Mine looks like this (lines that are comments start with an octothorpe '#'. You can leave them or delete the entire line):
[Unit] Description=Calibre-Web #any descriptive name you like After=remote-fs.target #this prevents calibre from starting until after network shares are mounted. If you are storing everything locally, change remote to local [Service] Type=simple User=librarian Group=librarian #previous two lines should reflect the name of the user and group you set above ExecStart=/usbin/python3 /srv/calibre-web/cps.py #determine the 'python' part by typing "which python3" at the command line. The cps.py part will be in the directory where everything is installed for calibre-web WorkingDirectory=/srv/calibre-web/ #can be changed to /home/librarian/calibre-web after creating the directory, but specifying this one makes installation and cleanup very tidy. [Install] WantedBy=multi-user.target #We only want this if we are running services. Not in a single user mode for system. Even if you are the only user, it has nothing to do with this line. Don't touch unless you know what you're doing.One other item of note. If you are keeping calibre-web, you should change your /etc/systemd/system/calibre-server.service file. The line saying "After" should be edited to read "After=calibre-web.service remote-fs.target" for network shares or "After=calibre-web.service local-fs.target" for local data. This makes sure that calibre-web starts firsts, calibre-server second. If it happens the other way around, calibre-web will not be able to access the database.
Reload your services configuration with "systemctl daemon-reload" and attempt to start the server with "systemctl start calibre-web"
Wait 10-30 seconds (it take a bit to get going) and investigate with "systemctl status calibre-web" or "ps ax | grep calibre-web" or both. The systemctl method is preferred. The beginning of roughly the third line of output should look like "Active: active (running)".
Stop the service with "systemctl stop calibre-web". Check status. It should no longer say 'Running'. Start the service again. Wait a minute or two. At least as much time as it takes to type the next two commands. Check status. At the end of roughly the third line, there should be a time. It should display a time roughly equal to the last time you issued the command with start. A minute or two.
Now restart the service with "systemctl restart calibre-web" and after no more than about five seconds, issue the status command. The time at the end should be roughly five seconds. If it still says a minute or more, wait 10 seconds and try again. If it still shows an odd time, try the stop command, see if it stops, like it did before. Something isn't right.
And now to make it start on every boot, use the command "systemctl enable calibre-web". You can reboot, wait a minute or so, and then issue the status command to see if it started up ok. (I know there's an easier way than a reboot, but I rarely use it with VMs, so I'm not looking it up now.)
Again, if you prefer the other interface, this one is optional. You can 'uninstall' it at this point by deleting /srv/calibre-web/ and going on about your life.
You can go read your copy of Hearts of Darkness (a solid book, btw), take a rest, or forge on.
Install lazylibrarianSwitch to /srv or wherever you want your installation executables and configs to go. Get the current source by entering the command: "git clone https://gitlab.com/LazyLibrarian/LazyLibrarian.git". This should create a directory named LazyLibrarian in the /srv directory. Start the program by running "python LazyLibrarian.py -d". If it crashes or provides errors, you probably are missing some required libraries. Double check the list above.
Cancel the program with control-c. Set ownership of the directory with "chown -R librarian:librarian /srv/LazyLibrarian". Start the program again, this time by running "sudo -u librarian python LazyLibrarian.py -d". Open a browser window and go to http://192.168.1.100:5299. Cancel the program with control-c. If you saw something, we need to make it start up automatically. If it didn't start or you have errors, now is the time to fix them.
We will need a service file to get lazylibrarian running at every boot. Using your favorite text editor, edit /etc/systemd/system/lazylibrarian.service.
Mine looks like this (lines that are comments start with an octothorpe '#'. You can leave them or delete the entire line):
[Unit] Description=LazyLibrarian After=network.target [Service] ExecStart=/usbin/python3 /srv/LazyLibrarian/LazyLibrarian.py Type=simple User=librarian Group=librarian Restart=on-failure [Install] WantedBy=multi-user.targetReload your services configuration with "systemctl daemon-reload" and attempt to start the server with "systemctl start lazylibrarian"
Wait 10-30 seconds (it take a bit to get going) and investigate with "systemctl status lazylibrarian" or "ps ax | grep lazylibrarian" or both. The systemctl method is preferred. The beginning of roughly the third line of output should look like "Active: active (running)".
Stop the service with "systemctl stop lazylibrarian". Check status. It should no longer say 'Running'. Start the service again. Wait a minute or two. At least as much time as it takes to type the next two commands. Check status. At the end of roughly the third line, there should be a time. It should display a time roughly equal to the last time you issued the command with start. A minute or two.
Now restart the service with "systemctl restart lazylibrarian" and after no more than about five seconds, issue the status command. The time at the end should be roughly five seconds. If it still says a minute or more, wait 10 seconds and try again. If it still shows an odd time, try the stop command, see if it stops, like it did before. Something isn't right.
And now to make it start on every boot, use the command "systemctl enable lazylibrarian". You can reboot, wait a minute or so, and then issue the status command to see if it started up ok. (I know there's an easier way than a reboot, but I rarely use it with VMs, so I'm not looking it up now.)
Now it's time to configure LazyLibrarian.
Between each tab and subtab on the setup, hit save. It's easy to get lost and forget what you've done, so save often. All that will happen is some errors will get thrown because we won't really have this configured enough to work until 75% done. Similarly, if there's a 'test' button near data you enter, try it. If it throws an error at this stage, it almost certainly won't work for real. Better to fix now than hunt bugs later.
Switch to the config tab in the browser. It's the one with the gear icon. The first subtab is interface. Server details should be blank. Under logs, enter a location for a log file. "/srv/LazyLibrarian/Logs" works well if not already selected. Screenlog should be 500, files set to 10. 99% of people use the bootstrap skin (madeup statistic, but most screenshots online use it.) In the bottom right, untick magazines and comics if you aren't using those features. I'll discuss only ebooks and audiobooks. Most of these settings are personal preference. Set the proxy if your system needs one to reach the internet.
The next subtab is 'Importing'. First column, 'Information Sources'. Easiest source is a GoodReads API key. Go to that site, set it up, and copy the key. (If you don't have one, go to this link https://www.goodreads.com/api/keys provide the required information only, and it will provide the key). Do not enable 'GoodReads Sync' at this time. It's going to require reading and planning. I don't use it because I don't care if GoodReads tracks what I've read. I do care about getting want lists out of GoodReads and we'll do that elsewhere.)
Next is file formats. For each of the three boxes, enter a comma separated list of the file formats you want for a given category. "epub, mobi, pdf" is good for ebooks. The converters and process is most mature. I haven't gotten anything else to work. Maybe some day. Audiobooks works with mp3. I'm trying m4b, but haven't completed my testing with my stack. For now, stick with mp3. Magazines I have no opinion on except that pdfs are common. All of the checkboxes below should be blank for now. After your testing and you are satsified, I suggest adding the checkmarks for the two blacklist options. It will cut down on reloading the same bad files over and over.
Finally, language. Set this for your country. I'm an American English speaker, so I use "en, eng, en-US, en-GB, Unknown". You may not want Unknown unless you are having trouble getting books that should be available in your selected languages. The date display options are personal preference. "$m-$d-$Y" would be typical American date nomenclature. "$Y-$m-$d" probably more popular among Europeans.
Next tab is Downloaders. In this, I'm using SABnzbd+ and qBitTorrent.
For SABnzbd+, setup is straightforward. Enter your SABnzbd+ host's location and port. Credentials for the SABnzbd+ server (not your Usenet provider) and the api key. The API key can be found by clicking the gear icon in SABnzbd+ and then the 'General' tab. Get the api key, not the NZB key. SABnzbd+ should be setup with categories. ebooks should have their own category with a particular location for completed downloads. I have this setup, and the category is 'ebooks' which you enter here. 'Delete from sabnzbd history' is the only ticked box in this column.
For qBitTorrent, setup is pretty similar. Enter your qBitTorrent host's location and port. Enter credentials if needed. Provide category name. The download directory is where the torrent client saves files, but as seen by the lazylibrarian host. If you followed along, this should be '/mnt/downloads'. 'Use Torrent Blackhole' is the only UNticked box in this column.
Providers is the next tab. The content will depend on where you are looking for ebooks.
Priority doesn't have to be set. Use it to favor some providers (they have higher quality books for example) and disfavor others. A provider with a higher score/rating will be used over a lower scored one if the search results are scored at the same value.
Newznab generally provides Usenet searches. Your provider can provide the URL and the key.
Torznab is a way to interface to various torrent search engines using Jackett. Setting that up is beyond the scope of this document. If you've set it up, you should know how to get the data that LazyLibrarian needs here.
RSS/Wishlist feeds are, honestly, an odd little beast. They perform two functions. One is to periodically update a list of torrents available from certain trackers. If you know you need this, enter the rss feed for the url here. Of more interest is the ability to use these as sources for wanted books. If the rss feed is from GoodReads, Amazon, New York Times or Listopia, it will grab that list of books, begin searching, and then download them. I use this for my GoodReads want sync. Find/create a bookshelf on GoodReads. Populate that shelf. Then click on the shelf to show the list. At the bottom of the page, there is a small link labelled 'RSS'. Copy that link. It will be something like: "https://www.goodreads.com/review/list_rss/ANIDENTIFIER?key=AWHOLEBUNCHOFSTUFFTHATCOULDBEUSEDTOIDENTIFYME&shelf=to-read" except the all caps parts will be some identifying code. Paste that link into the RSS URL field in LazyLibrarian. Now, shortly after you add an item to this list in GoodReads, LazyLibrarian will notice and look for the book.
Torrent providers are built in torrent searches. These aren't all always working and or available. Use as needed.
IRC is probably the easiest provider to configure. Most of the time. 'Name' is a simple description. 'Server' is the server hostname, such as 'irc.irchighway.net' or 'irc.undernet.org'. Channel is just that: the name of the channel, including the octothorpe, such as '#ebooks'. The botnick and botpass are fields for servers where you can reserve a bot name. You'll have to look at your irc server and see if this is the case. If so, register the name and password, and enter the credentials here. This isn't universally allowed.
At the bottom of the page is a button marked 'Blocked Providers' There probably are not any right now. As you use LazyLibrarian, if the software encounters issues with a provider, it uses the list here to throttle that connection. If you've fixed something that is paused/throttled/blocked, just come here, open the list, and turn it off. It automatically turns back on if needed.
Install booksonic (optional. Recommended for audiobooks)Booksonic is a fork of airsonic and runs under java. It serves audiobooks. If not interested, skip it. There are a couple of dependencies, a java runtime and ffmpeg. If installing from scratch, the following command will install them: 'apt install openjdk-8-jre ffmpeg'. There have been a few changes to the development of booksonic since inception. At the time of this writing, download links can be found at: https://booksonic.org/download.
Switch to /srv or wherever you want your installation executables and configs to go. Create a directory named 'booksonic'. Set ownership of the directory with "chown -R librarian:librarian /srv/booksonic". Change into that directory. Download the .war file from the link above. Do not get the 'legacy' link. At the time of this writing, the command to do that is "wget https://github.com/popeen/Booksonic-Aireleases/download/v2009.1.0/booksonic.war" You can quickly test your install by running " java -jar booksonic.war -Dserver.port=4040" and visiting "http://192.168.1.100:4040". If it crashes or provides errors, you probably are missing some required libraries. Double check the list above. If everything looks ok, cancel the program with control-c. delete everything in the /srv/booksonic direct except the .war file. If you accidentally deleted everything, just download a new copy.
Next we will need a service file to get calibre-web running at every boot. Using your favorite text editor, edit /etc/systemd/system/booksonic.service.
Mine looks like this (lines that are comments start with an octothorpe '#'. You can leave them or delete the entire line):
[Unit] Description=Booksonic service [Service] WorkingDirectory=/srv/booksonic ExecStart=/usbin/java -jar /srv/booksonic/booksonic.war #There are a multitude of options here for setting memory usage, ports, etc. Using #this, the url you will visit is http://192.168.1.100:8080. User=librarian Group=librarian Type=simple Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.targetReload your services configuration with "systemctl daemon-reload" and attempt to start the server with "systemctl start booksonic"
Wait 10-30 seconds (it take a bit to get going) and investigate with "systemctl status booksonic" or "ps ax | grep booksonic" or both. The systemctl method is preferred. The beginning of roughly the third line of output should look like "Active: active (running)".
Stop the service with "systemctl stop booksonic". Check status. It should no longer say 'Running'. Start the service again. Wait a minute or two. At least as much time as it takes to type the next two commands. Check status. At the end of roughly the third line, there should be a time. It should display a time roughly equal to the last time you issued the command with start. A minute or two.
Now restart the service with "systemctl restart booksonic" and after no more than about five seconds, issue the status command. The time at the end should be roughly five seconds. If it still says a minute or more, wait 10 seconds and try again. If it still shows an odd time, try the stop command, see if it stops, like it did before. Something isn't right.
And now to make it start on every boot, use the command "systemctl enable booksonic". You can reboot, wait a minute or so, and then issue the status command to see if it started up ok. (I know there's an easier way than a reboot, but I rarely use it with VMs, so I'm not looking it up now.)
ConclusionNow you should have a working install of calibre, calibre-web, lazylibrarian, and booksonic. Go into booksonic, add an author, and add a book. I've found searching for a book using ISBN is the fastest. When you add that book, if the net gods are smiling on you, your system will locate them, download them, and transfer them to calibre. If you chose an audiobook, the same thing should happen except that your book will be available in booksonic.
You will have to determine the legalities moralities of any of this for yourself and your country.
One problem you will encounter is horrible file naming and metadata. Everyone has their own idea about what cataloguing is best, and the files you download may not work well with the programs we've installed. Honestly, their authors have done fantastic work dealing with a very tricky problem. If you find value in this guide and there is interest, I will try to write some shorter guides about how to deal with metadata and other common problem areas encountered with this tool stack.
Travelling to China and the 14-Day Mandatory Hotel Quarantine: My Story and Advice
This will be a semi-informative, semi-experienced based article on the entire process of travelling to China and what to expect from your mandatory 14-day quarantine. I will detail every step, starting from the eureka moment to eagerly walking out of your quarantine hotel in China. I personally found the pre-flight steps the most overwhelming of the entire experience. Once you touch down in China, everything is very organised and efficient. Although other travellers have had differing experiences, which I will touch upon later. I wonder how your own experiences will unfold? For now, sit back, take notes and/or revel in my disaster story.
Travel restrictionsBefore you can even think about flying to China, you need to check if nationals from your country are allowed entry. For the better part of the year, China has had its borders closed to almost everyone, except a select few who were crucial to big industry. This widespread lockdown went as far as including Chinese nationals stuck abroad. China wasn’t messing about in a bid to keep a lid on the spread of Covid.
In mid-August, to my surprise and delight, an announcement went out over Wechat (Chinese messaging app) that China was re-opening its borders to a select group of European countries, adding them to an already small list of Asian countries that could travel to China under certain conditions. My country was on that list. I was ecstatic. My wife was still in China when restrictions were put in place. We hadn’t seen each other in months. I was finally going to see her and I couldn’t wait.
My advice for any would-be travellers is to check the Chinese embassy website for your respective countries. It wouldn’t hurt to check any .gov websites for your country too which might have some useful information on travel restrictions. There will be sufficient information on those sites to inform you of your ability to fly to China. NOTE: Regularly check these websites as updates and/or new restrictions can be put in place in the blink of an eye. For those only going to China for a short stint (which is unlikely but possible), it might also be useful to be aware of any quarantine rules that are in place for your return trip.
Chinese VisasI mentioned above that there were conditions for those wishing to travel to China. Well, those conditions are focused solely on your visa or ability to get one. If you’re planning to visit the Great Wall or the Avatar inspired mountains in Zhangjiajie National Forest Park, don’t bother. China is not open for tourism. You can only travel to China if you fit the following criteria.
- You held a valid “Foreigner’s Residence Permit” before lockdown (expired after 28 March 2020) for work, private matters or family reunion purposes and are returning for the same intention.
- You are invited by the provisional government for economic, trade, scientific, technological, culture or sport purposes and have the relevant documentation.
- You are invited for work, private matter or family reunion purposes in China and have obtained a “Notification Letter of Foreigners Work Permit”, “Invitation Letter (PU/TE)” or “Verification Confirmation of Invitation”.
- Humanitarian reasons, including visiting family and looking after sick or elderly family members.
- Crew members
Booking flightsThis is where my nightmare truly set in. For starters, flights to China are exorbitantly expensive. Tickets were going for USD2000–5000. Yeah, exactly… WTH! To my surprise though, I found an incredibly affordable flight. This was in the realms of what I could afford. Only USD600 (one-way). A glimmer of hope at last. This was with an airline I had never heard of, and I travel regularly. I noticed it was partnered with a global and recognised alliance group, so my inklings of doubt quickly subsided, despite worry from family and friends. There was a 23-hour layover, which explained the price. In the grand scheme of things, 23-hours sitting in a dingy airport lounge, or a terminal hotel (which had shocking reviews), was nothing compared to seeing my wife again. Bring it on! I do, however, recommend flying direct if it is within your means. My 23-hour layover caused a lot of anxiety and trouble in terms of timing, specifically with the Covid-swab test. There is another key reason I recommend booking direct which I will touch upon later.
Covid-Swab TestThis is where things started becoming problematic. Travelling to China requires a mandatory Covid-swab test (not to be mistaken for the antibody test). To make things more delicate, you need to have your test administered 72 hours before your flight to China. Emphasis on your flight to China. If you have a multiple leg ticket, it only counts from the flight which is departing to China.
With my 23-hour layover, this left me with less than 48 hours to receive my results before embarking on my journey. Not ideal. To make matters worse, the only options for Covid-swab tests (with specific documentation for flying) in the UK are through private health clinics. And boy do they know their supply and demand. Prices are extortionary. Most clinics will offer a 48-72 hour window for returning your results, albeit denying liability if you miss your flight as a result of late test results. This made things troublesome. Few offered 24-hour results, those that did happily doubled their prices. Those costs just kept piling on.
I’m sure costs and timing may vary from country to country, but it still leaves a tight window. Plan accordingly. Make sure you leave yourself with enough time to hand in your health declaration form to the embassy and receive your signed form before your flight.
As for the test itself, boy oh boy. For someone who has a sensitive gag reflex to put it lightly, this test was not my cup of tea. For starters, the clinic I used insisted I administer the test myself. Secondly, it was via nose, and wait for it… throat too. I’m sure for most of you this won't be the case. Testing will be done via nasal passage or by throat and administered by a medical expert. I gagged for the entirety of the test and sneezed about 20 times. I probably scared the bejesus out of the patients waiting in line. Fun times.
One last important piece of advice regarding the swab test: Ask your medical practitioners to date it and put your passport number on your test results. This is crucial in obtaining a signed health declaration form.
Health Declaration FormThis is a must for getting on the plane. A printed out version to be specific. The only problem… it requires you emailing your Covid-swab test results to an embassy issued email address and then waiting for the reply. How long will it take? Will they reply in time? Will I make my flight? Those were the exact questions whizzing around my brain. I emailed the embassy enquiring about said questions and all I got were vague responses, or departments offloading the burden onto another department. Not helpful at all. I decided to take matters into my own hands, partially. I was still racing against the clock. The embassy website gives a list of email addresses you can email your Health Declaration Form and Covid-swab test to. The website suggests writing a specific subject header in your email to speed up the process. I decided to go gung ho. Email each address twice. Once following protocol. The second adding URGENT in the forefront of the subject title. And voila, success. Funnily enough, I received 4 different Health Declaration Forms in a matter of 20 minutes. This tactic may or may not work for you, but I suggest trying it. Fingers crossed my young padawans. Next stop, Heathrow Terminal 5. It’s the final countdown!
Airport DepartureAdvice from a weary traveller: Constantly check for changes in your flight status, and updates on flight paths being cancelled. Read on for why this is critical.
Oh it was meant to be a joyous occasion. I was finally on my way back to my significant other. Documents in hand. How I was wrong. Again. My cab was pulling into Heathrow Terminal 5 and immediately I sensed something was off. There wasn’t a car or person in sight. It quickly became apparent the terminal was closed. I asked the cab driver to politely stay put as I investigated. All flights from terminal 5 had been re-allocated to different terminals. Great! I wish my airline had informed me of this. I know some of the blame falls on me too, I should have been more vigilant keeping up with my flight status etc, but I still feel this is something they should have made their customers aware of. As I hopped back into the cab, I see a couple arriving in their taxi. I quickly told them to keep their cab, “The terminal is closed! Don’t let your cab leave, you will be stranded!”. I’m not going to lie, I felt like a superhero saving that couple from disaster. For those who don’t frequent Heathrow often, the terminals are miles apart. It would definitely put a damper on your day. Although, I'm sure it wasn't that dramatic.
Eventually, I arrived at Terminal 2. The diversion had subsequently left me short on time. Naturally, there was a monstrosity of a queue to get into the terminal. Single file lane for every passenger entering the building, with one officer checking everyone's boarding pass. Typical England. Eventually, I made it to the check-in desk. Hallelujah. Pleasantries aside, the check-in assistant got to it. Seconds went by, seconds turned to minutes. “What's happening now”, I sighed under my breath. The airline couldn’t seem to find me in their system. I also noticed the flight number and departure time were slightly different from my booking info. Alas, they found me in their system. There’s just one teeny-weeny problem. The second leg of my ticket had been cancelled. It had been for 7 days already. All flights from that specific destination to China had been cancelled for the foreseeable future. I started to get agitated. Why had the airline not informed me of this? Why was I only finding out about this now? Why was there nothing on the airline website mentioning this? For my troubles, I received a standard-issue apology, no explanation and a voucher. No refund. Back home I went dejected and heartbroken.
If you happen to run into a similar situation, depending on local regulations, you may be legally entitled to a refund. Subsequently, I have taken the airline to small claims court via an online agency that handles such matters.
I mentioned earlier in the article to fly direct. This is why. It saves you having to worry about cancellations across multiple leg journeys. I’m just thankful I wasn’t sitting in that poorly rated terminal hotel in the middle of nowhere when the flight path to China was cancelled. Count your blessings.
Thanks to my lovely family, we can fast forward 24 hours, and I was off to China again, direct to Shanghai this time around and minus a small fortune. Before I carry on, I think it is important to note a few things regarding check-in: First, they ask you to scan and fill out a medical questionnaire using Wechat. You will need to show this on arrival. If you don’t have Wechat (Which the Australian next to me didn’t), they do have workarounds, albeit slow. So don’t fret. Secondly and of even greater importance, is if you have a second leg within China, you need to make sure it is for two weeks time. My ticket was for London — Shanghai — Beijing. The Beijing leg was on the same day as the Shanghai arrival. You will not be able to make same-day connections, let alone 2 or 3-day connections. The port of arrival is where you will quarantine. The airline unbeknownst to this factor, still graciously changed my Beijing flight to the appropriate date. Last but not least, prepare for the unexpected, and don’t be afraid to ask questions. I fear a lot of people missed those local connecting flights for fear of asking.
In-flightThe flight itself wasn’t as uncomfortable as I was expecting. Despite a lack of hot food and wearing a mask for the entirety of the flight, it was just like any other flight. Staff weren’t wearing hazmat suits, there were no temperature checks, no strict enforcement of protocols. This will vary by country and airline. I had friends flying on Air China and it was exactly what you would expect. Limited food, hazmat wearing flight attendants, temperature checks, the whole shebang. If you are risk-averse and don’t want to roll the dice on your health, maybe flying on a Chinese airline will be your best bet.Note: Don’t forget to bring some snacks, water, hand sanitizewipes and several masks. After a few hours, the masks get really damp, which is not pleasant, but more importantly, time impedes the effectiveness of the masks. Medical experts recommend changing them every three hours.
Airport ArrivalsAfter 10 agonisingly long months, I finally touched down in China. I was so close, yet so far. I still had to endure two weeks of isolation. What would my hotel room be like? How much was it going to cost? Would the food be edible? How long would the process in the airport take? These are all questions, that cannot be answered. They will differ from person to person. It really is a roll of the dice. I can draw upon my own experiences and those of friends to give you a rough idea of what to expect. The highs and lows. Best to worst-case scenarios.
Let's start off with the airport experience. After disembarking the plane, I was fed through a one-way system. I wanted to bypass long queues so I power walked past anyone I had my sights on. This method proved extremely helpful in the long run. I highly recommend you adopt this advice. You really don’t want to be queuing behind hundreds of people.
The first pit stop, is your Covid-swab test. Staff are fast and efficient. They didn’t waste any time sticking two swabs up my nose. Each nostril for around 10 seconds. It was brain tinglingly brutal. The next pit stop brings me back to the questionnaire I had to fill out at Heathrow via Wechat. Airport staff scanned the QR code I received upon completion of the questionnaire. This downloaded my answers/information into their system. I also had to hand over my Health Declaration Form and Covid-swab test report. Next stop, immigration. The end was nigh. Or was it? After immigration, I collected my bags and joined a queue for the buses that would hurry me off to an unknown location. This queue, moved at snail pace. I was comparatively at the front, yet it still took over an hour. This is why I recommend power walking past anyone or anything. Skipping 50 people will save you an hour. Have your documents on hand, walk fast and you may save yourself significant time. After a significant wait, I finally boarded my bus. To where? No idea. I just hoped and prayed.
Hotel ExperienceThe anticipation was killing me. Would I score lucky in the hotel lottery? Would I be able to have a nice hot shower after such a long journey? The bus started pulling into a side road and…Cha-ching! It was the Holiday Inn. That's a win in my books. From arriving at the hotel, I was swiftly sent up to my room with my luggage, a toiletry bag, a few A4 papers with Chinese writing and a single pot of pot noodles. The most important of those being the A4 papers.
This contains all of the answers to your questions. If you can read Chinese. If not, I highly recommend you have a friend or colleague on hand to walk you through the form. It will differ from hotel to hotel as they each have their own policies. My hotel, for example, forbid ordering any food that didn’t come pre-wrapped. So McDonalds was off the menu. It also banned the consumption of alcohol and cigarettes. If you don’t think you can last the two weeks, I recommend pre-packing some in your suitcase, otherwise use the opportunity to detox.
It also goes into detail about how to pay for your hotel stay, the food they provide for breakfast, lunch and dinner, and also your covid test which you will take a few days before your departure. All payments have to be done via Wechat, Alipay and Chinese bank transfer. Alipay accepts foreign cards, although I haven’t personally tested it myself. If you don’t want to risk it, you could ask a friend to cover the payments and pay them back. They are all done via QR codes except for the covid test, which I had to pay via bank transfer. Either way, you have time in isolation to sort out a payment method which suits you. Time is not scarce in isolation!
As for breakfast, lunch and dinner. The food I ate daily was actually pretty good. I was surprised. I had heard horror stories about the food being served in some hotels. This once again, comes back to the luck of the draw. You can opt-out having the food, but once you opt-out, it's done for good. You cannot pick and choose which days.
As for the cost of the hotel and food, it will say on your A4 sheet. The costs can vary dramatically from location to hotel. I had a friend stay at a horrible hotel, and he paid the same as me. Whereas I had some friends stay at a lovely hotel and paid 25% of what I paid. Generally, you won't pay more than 500RMB per night (excluding food). If you are lucky, or unlucky in the sense your hotel is a dump, you can be paying as low as 150RMB a night. Based off multiple accounts, the food seems to be a constant 100RMB a night. The food also comes ridiculously early. Breakfast at 730am (which isn’t so bad), but lunch and dinner come at 1130am and 430pm respectively. Some hotels do allow ordering from outside restaurants, so you can opt-out of the 100RMB a day and eat at your own expense and time.
As for my hotel room, it was clean, spacious and even had a bathtub. Once again, this may not be your experience. But this gave me the space to exercise daily, which I did to keep my mind busy. Time will be your enemy. So I recommend having a plan of action by the time you arrive. Set up a daily routine and stick to it. I read a lot, worked on some programming and exercised religiously. Without the routine, I think time would have stood still. You are alone, by yourself, with only your thoughts, for two weeks. It’s solitary confinement with a bathtub. Figure out what works for you, and you will be fine. Your only connection to the outside world will be your hazmat wearing food delivery man, knocking on your door to leave your food outside, or the nurse coming to collect your twice-daily temperature checks (self-administered).
ConclusionI wrote this article to highlight some of the pains I went through in getting to China and ultimately back to my wife. But specifically to highlight how you can avoid those pains and make your trip less stressful.
To condense it all done to a tee, I highly recommend being vigilant in regards to your timing, your flight status, making sure you have the appropriate documentation, and dealing with isolation by being productive and letting go of the small details in life. Your bed may be uncomfortable, or the food sucks, but the time will pass, and you will move on with your life. It’s just a small blip in an otherwise fruitful life. Enjoy your travels and enjoy China. Most importantly, stay safe!