#compdef ebook-edit lrf2lrs calibredb fetch-ebook-metadata lrfviewer calibre calibre-debug ebook-meta calibre-server ebook-polish ebook-viewer calibre-smtp ebook-convert

_ebc_input_args() {
  local extras; extras=(
    {-h,--help}":Show Help"
    "--version:Show program version"
    "--list-recipes:List builtin recipe names"
    "+info.recipe"
    ".týždeň.recipe"
    "10minutos.recipe"
    "168 óra.recipe"
    "180.com.uy.recipe"
    "1843.recipe"
    "20 Minutos.recipe"
    "20 Minutos new.recipe"
    "20 minutes.recipe"
    "24 Sata - Hr.recipe"
    "24 Sata - Sr.recipe"
    "3DNews\: Daily Digital Digest.recipe"
    "4Łomza.recipe"
    "7 dias.recipe"
    "7th Guard.recipe"
    "A List Apart.recipe"
    "ABC Color.recipe"
    "ABC Linuxu.recipe"
    "ABC News.recipe"
    "ABC.es.recipe"
    "AD.recipe"
    "AKTER - Dnevnik.recipe"
    "AKTER - Nedeljnik.recipe"
    "AM730.recipe"
    "APP Funds.recipe"
    "ARG Noticias.recipe"
    "ATV.recipe"
    "AZRepublic.recipe"
    "Aachener Nachrichten.recipe"
    "Academia Caţavencu.recipe"
    "Accountancy Age.recipe"
    "Acrimed.recipe"
    "Adevărul.recipe"
    "Adnkronos.recipe"
    "Ads of the World.recipe"
    "Adventure Gamers.recipe"
    "Adventure Zone.recipe"
    "Aftenposten.recipe"
    "Agenţia de ştiri Moldova.recipe"
    "Agro Gerila.recipe"
    "Air Force Times.recipe"
    "Ajiajin blog.recipe"
    "Aksiyon Dergisi.recipe"
    "Al Jazeera in English.recipe"
    "Al Monitor.recipe"
    "Al-Ahram (الأهرام).recipe"
    "Al-Masry Alyoum (المصري اليوم).recipe"
    "Albert Mohler's Blog.recipe"
    "Alberto Montt en dosis diarias.recipe"
    "Aleja Komiksu.recipe"
    "Alo!.recipe"
    "Alt om Herning.recipe"
    "Alternet.recipe"
    "Ambito Financiero.recipe"
    "Ambito.com.recipe"
    "American Prospect.recipe"
    "American Thinker.recipe"
    "An Druma Mór.recipe"
    "Anandtech.recipe"
    "Anchorage Daily News.recipe"
    "Android.com.pl.recipe"
    "Animal Político.recipe"
    "Ansa.recipe"
    "Antyweb.recipe"
    "Apcom.recipe"
    "Applefobia.recipe"
    "AraInfo.org.recipe"
    "Arabian Business.recipe"
    "Arbetaren.recipe"
    "Arcadia.recipe"
    "Arcamax.recipe"
    "Archeowieści.recipe"
    "Arguments & Facts - Russian.recipe"
    "Arizona  Daily Star.recipe"
    "Army Times.recipe"
    "Arrêt sur images.recipe"
    "Ars Technica.recipe"
    "Asco de vida.recipe"
    "AsiaOne.recipe"
    "Associated Press.recipe"
    "AstroNEWS.recipe"
    "Astroflesz.recipe"
    "Astronomy Picture of the Day.recipe"
    "Athens News.recipe"
    "Auto.recipe"
    "Auto Bild.recipe"
    "Auto Blog.recipe"
    "Auto Prove.recipe"
    "Automatiseringgids IT.recipe"
    "Autosport.recipe"
    "Avantaje.recipe"
    "Aventuri La Pescuit.recipe"
    "Avto Magazin.recipe"
    "Axxon noticias.recipe"
    "AÇIK BİLİM DERGİSİ.recipe"
    "B92.recipe"
    "BBC Arabic Middle East.recipe"
    "BBC Brasil.recipe"
    "BBC Chinese.recipe"
    "BBC Mundo.recipe"
    "BBC News.recipe"
    "BBC News (fast).recipe"
    "BBC Sport.recipe"
    "BBC Vietnamese.recipe"
    "BETA.recipe"
    "BETA - English.recipe"
    "BUGÜN Gazetesi.recipe"
    "Baby Online.recipe"
    "Balkan Insight.recipe"
    "Banat News.recipe"
    "Bangkok Biz News.recipe"
    "Bangkok Post.recipe"
    "Bankier.pl.recipe"
    "Barron's.recipe"
    "Bash.org.pl.recipe"
    "Benchmark.pl.recipe"
    "Beppe Grillo.recipe"
    "Berlin Policy Journal.recipe"
    "Berliner Zeitung.recipe"
    "Berlingske Tidende.recipe"
    "Berria.recipe"
    "BiaMag.recipe"
    "Bianet.recipe"
    "Bianet-English.recipe"
    "Big Government.recipe"
    "Big Hollywood.recipe"
    "BigOven.recipe"
    "Bild.de.recipe"
    "Bill O'Reilly.recipe"
    "Bill O'Reilly Premium.recipe"
    "Biolog.pl.recipe"
    "Birgün Gazetesi.recipe"
    "Birmingham Evening Mail.recipe"
    "Birmingham post.recipe"
    "Biweekly.recipe"
    "BizPortal.recipe"
    "Blesk.recipe"
    "Blic.recipe"
    "Blog Escrevinhador.recipe"
    "Blog VioMundo.recipe"
    "Blog da Cidadania.recipe"
    "Blog de David Bravo.recipe"
    "Blog eClicto.recipe"
    "Blues News.recipe"
    "Boston Globe Subscription.recipe"
    "Brasil de Fato.recipe"
    "Brecha Digital.recipe"
    "Brewiarz.recipe"
    "Brigitte.de.recipe"
    "Bucataras.recipe"
    "Buchreport.recipe"
    "BuckMasters In The Kitchen.recipe"
    "Buenos Aires Economico.recipe"
    "Buenos Aires Herald.recipe"
    "Buffalo News.recipe"
    "Business Insider.recipe"
    "Business Spectator.recipe"
    "Business Standard.recipe"
    "Business World Magazine.recipe"
    "Börse-online.recipe"
    "CACM.recipe"
    "CBC Canada.recipe"
    "CBN News.recipe"
    "CD-Action.recipe"
    "CDRinfo.pl.recipe"
    "CGM.recipe"
    "CIO .recipe"
    "CIO Magazine.recipe"
    "CIPER Chile.recipe"
    "CND.recipe"
    "CND Weekly.recipe"
    "CNET Japan.recipe"
    "CNET Japan Digital.recipe"
    "CNET Japan release.recipe"
    "CNET News.recipe"
    "CNN.recipe"
    "CafCaf Dergisi.recipe"
    "Caijing Magazine.recipe"
    "Calcalist.recipe"
    "Calgary Herald.recipe"
    "Calibre Blog.recipe"
    "Camera di Commercio di Bari.recipe"
    "CanardPC.recipe"
    "Capes n Babes.recipe"
    "Capital.recipe"
    "Capital.de.recipe"
    "Capital.gr.recipe"
    "Caravan Magazine.recipe"
    "Caros Amigos.recipe"
    "Carta.recipe"
    "Carta Capital.recipe"
    "Catholic Daily Readings.recipe"
    "Catholic News Agency.recipe"
    "Caţavencii.recipe"
    "Ce se întâmplă doctore?.recipe"
    "Champion.com.ua.recipe"
    "Chetnixploitation.recipe"
    "Chicago Breaking News.recipe"
    "Chicago Tribune.recipe"
    "China Daily.recipe"
    "China Economic Net.recipe"
    "China Post.recipe"
    "China Press USA.recipe"
    "Chip Online.recipe"
    "Chowk.recipe"
    "Cicero Online.recipe"
    "Ciekawostki Historyczne.recipe"
    "Cincinnati Enquirer.recipe"
    "Cinco Dias.recipe"
    "Cinebel.recipe"
    "Clarion Ledger.recipe"
    "Clarín.recipe"
    "ClicRBS.recipe"
    "Climate Progress.recipe"
    "Coding Horror.recipe"
    "Colta.ru.recipe"
    "Columbia Journalism Review.recipe"
    "Common Dreams.recipe"
    "Computer act!ve.recipe"
    "Computerworld.pl.recipe"
    "Consortium News.recipe"
    "Consumerist.recipe"
    "Contemporary Argentine Writers.recipe"
    "Contropiano.recipe"
    "Correio da Manha - Portugal.recipe"
    "Corren.recipe"
    "Cosmopolitan.recipe"
    "Cosmopolitan UK.recipe"
    "Cosmopolitan.de.recipe"
    "Cotidianul.recipe"
    "Counterpunch.recipe"
    "Countryfile.com.recipe"
    "Courier Mail.recipe"
    "Courier Press.recipe"
    "Courrier International.recipe"
    "Cracked.com.recipe"
    "Creative Blog.recipe"
    "Credit Slips.org.recipe"
    "CubaDebate.recipe"
    "Cumhuriyet - Yazarlar.recipe"
    "Curierul Naţional.recipe"
    "Cvece zla i naopakog.recipe"
    "Cyberpresse.recipe"
    "Cyprus News Live.recipe"
    "Cyprus Weekly.recipe"
    "Czas Gentlemanów.recipe"
    "Czytania na każdy dzień.recipe"
    "DNA India.recipe"
    "DR Nyheder.recipe"
    "Dachauer Nachrichten.recipe"
    "Dagens Industri.recipe"
    "Dagens Nyheter.recipe"
    "Daily Express.recipe"
    "Daily Telegraph.recipe"
    "Daily Writing Tips.recipe"
    "Daily tportal.h.recipe"
    "Danas.recipe"
    "Dani.recipe"
    "Dark Horizons.recipe"
    "Dark Reading.recipe"
    "DataNews.recipe"
    "Datasport.recipe"
    "Dawn.recipe"
    "Daytona Beach News Journal.recipe"
    "De Gentenaar.recipe"
    "De Luns a Venres (RSS).recipe"
    "De Morgen.recipe"
    "De Standaard.recipe"
    "De Tijd.recipe"
    "De Volkskrant.recipe"
    "Deadspin.recipe"
    "Deccan Herald.recipe"
    "Defense News.recipe"
    "Delcoe Times.recipe"
    "Demagog.cz.recipe"
    "Democracy Journal.recipe"
    "Democracy now!.recipe"
    "Den of Geek.recipe"
    "Denver Post.recipe"
    "Deník Referendum.recipe"
    "Der Spiegel.recipe"
    "Der Tagesspiegel.recipe"
    "Deredactie.be.recipe"
    "Derin Dusunce.recipe"
    "Descoperă.recipe"
    "Descoperă.org.recipe"
    "Desiring God.recipe"
    "Detroit News.recipe"
    "Deutsche Welle.recipe"
    "Developpez.com.recipe"
    "Diagonales.recipe"
    "Diario Cordoba.recipe"
    "Diario El Pueblo.recipe"
    "Diario Extra.recipe"
    "Diario Granma.recipe"
    "Diario La Republica.recipe"
    "Diario Rio Negro.recipe"
    "Diario Sport.recipe"
    "Diario Vasco.recipe"
    "Diario de Ibiza digital.recipe"
    "Die Presse.recipe"
    "Die Zeit.recipe"
    "DigiZone.recipe"
    "Digital Arts Magazine  .recipe"
    "Digital Journal.recipe"
    "Digital Spy - UK Edition.recipe"
    "Dilbert.recipe"
    "Dilema Veche.recipe"
    "Dingoo A320. Русский ресурс.recipe"
    "Discover Magazine.recipe"
    "Discover Magazine Monthly.recipe"
    "Diva Hair.recipe"
    "Diário de Notícias.recipe"
    "Dnevne novine Pravda.recipe"
    "Dnevni Avaz.recipe"
    "Dnevnik - Hr.recipe"
    "Dnevnik - mk.recipe"
    "Dnevnik.si.recipe"
    "Doba Nevinosti.recipe"
    "Dobreprogramy.pl.recipe"
    "Doghouse Diaries.recipe"
    "Dorfener Anzeiger.recipe"
    "Dotpod.recipe"
    "Down To Earth.recipe"
    "DrawAndCook.recipe"
    "Drytooling.com.pl.recipe"
    "DvhN.recipe"
    "Dwutygodnik.recipe"
    "Dział Zagraniczny.recipe"
    "Dziennik Bałtycki.recipe"
    "Dziennik Internautów.recipe"
    "Dziennik Polski.recipe"
    "Dziennik Wschodni.recipe"
    "Dziennik Zachodni.recipe"
    "Dziennik Związkowy.recipe"
    "Dziennik Łódzki.recipe"
    "Dziennik.pl.recipe"
    "Dünya Bizim.recipe"
    "Dünya Bülteni.recipe"
    "E-Novine.recipe"
    "EPL Talk.recipe"
    "ESO PL.recipe"
    "ESPN.recipe"
    "Ebersberger Zeitung.recipe"
    "Echo Dnia.recipe"
    "Echo Online.recipe"
    "Eclipse Online.recipe"
    "EcoGeek.recipe"
    "Economia Magazine.recipe"
    "Economic and Political Weekly.recipe"
    "Economico.recipe"
    "Edebistan.recipe"
    "Edebiyat Haber.recipe"
    "Edge.org Conversations.recipe"
    "Editor and Publisher.recipe"
    "Editoriali.recipe"
    "Edmonton Journal.recipe"
    "Ekantipur.recipe"
    "Ekologia.pl.recipe"
    "Ekonom\:east News.recipe"
    "Ekonom\:east Vesti.recipe"
    "Ekot.recipe"
    "El Comercio .recipe"
    "El Correo.recipe"
    "El Cronista Comercial.recipe"
    "El Diplo.recipe"
    "El Faro de Vigo.recipe"
    "El Malpensante.recipe"
    "El Mostrador.recipe"
    "El Mundo.recipe"
    "El Mundo Today.recipe"
    "El Observador.recipe"
    "El Pais.recipe"
    "El Pais - Uruguay.recipe"
    "El Pais Babelia.recipe"
    "El Pais semanal.recipe"
    "El País.recipe"
    "El Periodico de Aragon.recipe"
    "El Periodico de Catalunya.recipe"
    "El Tiempo - Honduras.recipe"
    "El Tribuno Jujuy (Edición Impresa).recipe"
    "El Tribuno Salta (Edición Impresa).recipe"
    "El Universal.recipe"
    "El Universal (Edición Impresa).recipe"
    "El Universo - Ecuador.recipe"
    "El club del ebook.recipe"
    "ElArgentino.com.recipe"
    "Ele.recipe"
    "Elektroda.recipe"
    "Elsevier.nl.recipe"
    "Emol.com - El sitio de noticias online de Chile.recipe"
    "Empire Magazine.recipe"
    "Endgadget日本版.recipe"
    "Engadget.recipe"
    "Entrepeneur Magazine.recipe"
    "Epicurious.recipe"
    "Equipped.recipe"
    "Erdinger Anzeiger.recipe"
    "Esensja.recipe"
    "Esensja (RSS).recipe"
    "Esquire.recipe"
    "Estadão.recipe"
    "Europa Press.recipe"
    "Europa Sur.recipe"
    "European Voice.recipe"
    "Evangelizo.org.recipe"
    "Evenimentul Zilei.recipe"
    "Everett Herald.recipe"
    "Exiled Online.recipe"
    "Expansion.recipe"
    "Explosm Rotated.recipe"
    "Express.de.recipe"
    "F-Secure Weblog.recipe"
    "FAZ.NET.recipe"
    "FC Knudde.recipe"
    "FHM Ro.recipe"
    "FHM UK.recipe"
    "FOX News.recipe"
    "Factcheck.recipe"
    "Fairbanks Daily News-miner.recipe"
    "FanGraphs.recipe"
    "Fast Company.recipe"
    "Fdb.pl.recipe"
    "Field and Stream.recipe"
    "Film.org.pl.recipe"
    "FilmWeb.recipe"
    "Financial Sense.recipe"
    "Financial Times.recipe"
    "Financial Times (International) printed edition.recipe"
    "Financial Times (UK).recipe"
    "Financiarul.recipe"
    "Fisco Oggi.recipe"
    "Fleshbot.recipe"
    "Flickr Blog.recipe"
    "Fluter.recipe"
    "Focus.recipe"
    "Focus (DE).recipe"
    "Fokke en Sukke.recipe"
    "Folha de São Paulo.recipe"
    "Folha de São Paulo - portal.recipe"
    "Forbes.recipe"
    "Forbes India.recipe"
    "Forbes.pl.recipe"
    "Foreign Affairs (Subcription).recipe"
    "Foreign Policy.recipe"
    "Formula AS.recipe"
    "Formuła 1 - F1 ultra.recipe"
    "Forsal.pl.recipe"
    "Fortune Magazine.recipe"
    "Fotoblogia.pl.recipe"
    "FrAndroid.recipe"
    "Frankfurter Rundschau.recipe"
    "Freakonomics Blog.recipe"
    "Freisinger Tagblatt.recipe"
    "Fria Tidningen.recipe"
    "Frontline.recipe"
    "Fudzilla.recipe"
    "Futurismic.recipe"
    "Fürstenfeldbrucker Tagblatt.recipe"
    "GS24.pl (Głos Szczeciński).recipe"
    "GWUP | Die Skeptiker.recipe"
    "Galicia Confidencial (RSS).recipe"
    "Gamasutra Featured articles.recipe"
    "Gamasutra News.recipe"
    "Gamekult.com.recipe"
    "Gameplay.pl.recipe"
    "Gamespot.com Reviews.recipe"
    "Garmisch-Partenkirchener Tagblatt.recipe"
    "Gawker.recipe"
    "Gazet van Antwerpen.recipe"
    "Gazeta Codziennej Nowiny.recipe"
    "Gazeta Krakowska.recipe"
    "Gazeta Lubuska.recipe"
    "Gazeta Pomorska.recipe"
    "Gazeta Prawna.recipe"
    "Gazeta Sporturilor.recipe"
    "Gazeta Wrocławska.recipe"
    "Gazeta Współczesna.recipe"
    "Gazeta Wyborcza.recipe"
    "Gazeta Wyborcza Bydgoszcz.recipe"
    "Gazeta Wyborcza Kraków.recipe"
    "Gazeta Wyborcza Szczecin.recipe"
    "Gazeta Wyborcza Warszawa.recipe"
    "Geek and Poke.recipe"
    "General Knowledge Today.recipe"
    "Geopolityka.org.recipe"
    "George Monbiot - blog.recipe"
    "Geretsrieder Merkur.recipe"
    "Gezgin Dergi.recipe"
    "Gildia.pl.recipe"
    "Gizmodo.recipe"
    "Glamour (US).recipe"
    "Glas Javnosti.recipe"
    "Glas Srpske.recipe"
    "Glasgow Herald.recipe"
    "Glenn Beck.recipe"
    "Glenn Greenwald | guardian.co.uk.recipe"
    "Global Times.recipe"
    "Globe & Mail.recipe"
    "Globes.recipe"
    "Go Comics.recipe"
    "Goal.recipe"
    "Gofin.recipe"
    "Golem.de.recipe"
    "Good House Keeping.recipe"
    "Good to Know (uk).recipe"
    "Google Mobile Blog.recipe"
    "Gość Niedzielny.recipe"
    "Gość Niedzielny - pełny numer.recipe"
    "Gram.pl.recipe"
    "Grandes corresponsales.recipe"
    "Grantland.recipe"
    "Greensboro News & Record.recipe"
    "Gry-Online.pl.recipe"
    "Gulf News.recipe"
    "Gulli.recipe"
    "Gândul.recipe"
    "Głos Wielkopolski.recipe"
    "H7 TÜMSPOR.recipe"
    "HIT.recipe"
    "HN With Comments Link.recipe"
    "HNA.recipe"
    "HNonline.recipe"
    "HOY.recipe"
    "HRT\: Vesti.recipe"
    "HVG.recipe"
    "Haaretz.recipe"
    "Haber 7.recipe"
    "Haksöz.recipe"
    "Hallo Assen.recipe"
    "Hamilton Spectator.recipe"
    "Handelsblatt.recipe"
    "Hankyoreh21.recipe"
    "Hannoversche Allgemeine Zeitung.recipe"
    "Harper's Magazine.recipe"
    "Harper's Magazine - articles from printed edition.recipe"
    "Harvard Business Review.recipe"
    "Hatalska.recipe"
    "Heavy Metal.recipe"
    "Heise Open.recipe"
    "Heise-online.recipe"
    "Helsingin Sanomat.recipe"
    "Heraldo de Aragon.recipe"
    "Het Belang Van Limburg.recipe"
    "Het Financieele Dagblad.recipe"
    "Het Laatste Nieuws.recipe"
    "High Country News.recipe"
    "Hira.recipe"
    "Histmag.recipe"
    "Historia.recipe"
    "Historia.org.pl.recipe"
    "Historias del Mundo.recipe"
    "History Today.recipe"
    "Històries del Món.recipe"
    "Holzkirchener Merkur.recipe"
    "Homopedia.recipe"
    "Honolulu Star-Advertiser.recipe"
    "Hot Air.recipe"
    "Hotcity.recipe"
    "Hotnews.recipe"
    "How To Geek.recipe"
    "Huffington Post UK.recipe"
    "Hurriyet Daily News.recipe"
    "Hírszerző.recipe"
    "Hürriyet.recipe"
    "IDG.recipe"
    "IDG Now!.recipe"
    "IEEE-Spectrum Online.recipe"
    "IN4.pl.recipe"
    "INFRA.recipe"
    "IOL News.recipe"
    "IT techblog.recipe"
    "Ideal (Edición Almería).recipe"
    "Ideal (Edición Granada).recipe"
    "Ideal (Edición Jaén).recipe"
    "Il Corriere della sera.recipe"
    "Il Corriere della sera (english) .recipe"
    "Il Corriere dello Sport.recipe"
    "Il Disinformatico - Paolo Attivissimo.recipe"
    "Il Fatto Quotidiano.recipe"
    "Il Foglio - Editoriali.recipe"
    "Il Giornale.recipe"
    "Il Manifesto.recipe"
    "Il Messaggero.recipe"
    "Il Sole 24 Ore.recipe"
    "Imperator Travel.recipe"
    "Impulse.de.recipe"
    "Inc Magazine.recipe"
    "Index.hu.recipe"
    "India Today.recipe"
    "Indian Express.recipe"
    "Indianapolis Star.recipe"
    "Infobae.com.recipe"
    "Infomotori.recipe"
    "Information - Denmark.recipe"
    "Infoworld.com.recipe"
    "Inquirer.net.recipe"
    "Insider.recipe"
    "Instapaper.recipe"
    "Intelligencer.recipe"
    "Interia.pl - Fakty.recipe"
    "Interia.pl - Sport.recipe"
    "Interoperability Happens.recipe"
    "Irish Independent.recipe"
    "Irodai patkényok.recipe"
    "Isar-Loisachbote.recipe"
    "Ivana Milaković.recipe"
    "Izvestia.recipe"
    "JAAPA.recipe"
    "JBPress.recipe"
    "Jagran Josh.recipe"
    "Jakarta Globe.recipe"
    "Jakarta Post.recipe"
    "Jalopnik.recipe"
    "Javalobby.recipe"
    "JazzPRESS.recipe"
    "Jerusalem Post.recipe"
    "Jerusalem post.recipe"
    "JeuxVideo.com.recipe"
    "Jezebel.recipe"
    "Joel on Software.recipe"
    "Joop.recipe"
    "Jornal Brasileiro Online.recipe"
    "Jot Down - Contemporary Culture Magazine.recipe"
    "Journal Gazette Ft. Wayne IN.recipe"
    "Journal of Accountancy.recipe"
    "Journal of Hospital Medicine.recipe"
    "Journal of the American Society of Nephrology.recipe"
    "Jurnalul Naţional.recipe"
    "Jutarnji.recipe"
    "Juve - La Stampa.recipe"
    "Juventud Rebelde.recipe"
    "Juventud Rebelde in english.recipe"
    "Jyllands-Posten.recipe"
    "KA-News.de.recipe"
    "KDE News.recipe"
    "Kamera & Bild.recipe"
    "Kamikaze.recipe"
    "Kansas City Star.recipe"
    "Karsi Gazete.recipe"
    "Kathimerini.recipe"
    "Kellog Faculty Blogs.recipe"
    "Kellog Insight.recipe"
    "Kerrang!.recipe"
    "Kitekintő.recipe"
    "Kitsap Sun.recipe"
    "Kleine Zeitung.recipe"
    "Klipme.recipe"
    "Klub knjige.recipe"
    "KomChadLuek.recipe"
    "Kommersant.recipe"
    "Kompas.recipe"
    "Konflikty Zbrojne.recipe"
    "Kopalnia Wiedzy.recipe"
    "Korben.recipe"
    "KoreaHerald.recipe"
    "Korwin-Mikke Blog.recipe"
    "Kosmonauta.net.recipe"
    "Kotaku.recipe"
    "Krebs on Security.recipe"
    "Kresy.recipe"
    "Krstarica - Vesti.recipe"
    "Krstarica - news in english.recipe"
    "Krytyka Polityczna.recipe"
    "Kudika.recipe"
    "Kudy z nudy.recipe"
    "Kukuburi.recipe"
    "Kurier.recipe"
    "Kurier Galicyjski.recipe"
    "Kurier Lubelski.recipe"
    "Kurier Poranny.recipe"
    "Kurier Szczeciński.recipe"
    "Kyungyhang.recipe"
    "L'Avenir.recipe"
    "L'Espresso .recipe"
    "L'Osservatore Romano.recipe"
    "L'express.recipe"
    "LWN.net Weekly Edition.recipe"
    "La Capital de Rosario.recipe"
    "La Cuarta.recipe"
    "La Derniere Heure.recipe"
    "La Gazzetta del Mezzogiorno.recipe"
    "La Gazzetta dello Sport .recipe"
    "La Jornada (Mexico).recipe"
    "La Libre Belgique.recipe"
    "La Meuse.recipe"
    "La Mujer de mi Vida.recipe"
    "La Nacion.recipe"
    "La Nacion Chile.recipe"
    "La Nacion Costa Rica.recipe"
    "La Nueva España.recipe"
    "La Politica Online.recipe"
    "La Prensa.recipe"
    "La Prensa - Honduras.recipe"
    "La Prensa - Nicaragua.recipe"
    "La Razón - Bolivia.recipe"
    "La Repubblica.recipe"
    "La Rioja.recipe"
    "La Segunda.recipe"
    "La Stampa.recipe"
    "La Tercera.recipe"
    "La Tribuna - Honduras.recipe"
    "La Tribuna de.recipe"
    "La Vanguardia - Blogs de los corresponsales.recipe"
    "La Vanguardia Digital.recipe"
    "La Voce.recipe"
    "La pausa caffè.recipe"
    "LaRed21.recipe"
    "Lamebook.recipe"
    "Las Vegas Review Journal.recipe"
    "Le Devoir .recipe"
    "Le GORAFI.fr.recipe"
    "Le Journal de Montreal.recipe"
    "Le Monde.recipe"
    "Le Monde diplomatique - English edition.recipe"
    "Le Monde diplomatique.fr.recipe"
    "Le Monde\: Édition abonnés.recipe"
    "Le Nouvel Observateur.recipe"
    "Le Point.recipe"
    "Le Scienze.recipe"
    "Le Soir.recipe"
    "Le Temps.recipe"
    "Leduc - Wetaskiwin Pipestone Flyer.recipe"
    "Lega Nerd.recipe"
    "Lege Artis.recipe"
    "Leggo.it.recipe"
    "Leipziger Volkszeitung Online RSS.recipe"
    "Lenta.ru\: Новости.recipe"
    "Les Echos.recipe"
    "Let's Get Critical.recipe"
    "Levante.recipe"
    "Libartes.recipe"
    "Liberation.recipe"
    "Liberatorio Politico.recipe"
    "Libero .recipe"
    "Libertad Digital.recipe"
    "LifeHacker.recipe"
    "Lifehacker Polska.recipe"
    "Lightspeed Magazine.recipe"
    "Limes.recipe"
    "Linux Journal.recipe"
    "Linux Magazine.recipe"
    "LinuxPortal.recipe"
    "Linuxdevices.recipe"
    "Live Mint.recipe"
    "Living Stones Pastors Blog.recipe"
    "London Free Press.recipe"
    "London Review of Books.recipe"
    "London Review of Books (free).recipe"
    "Los Andes.recipe"
    "Los Angeles Times.recipe"
    "Los Tiempos - Bolivia.recipe"
    "Ludwig von Mises Institute.recipe"
    "Lupa.recipe"
    "MIT Technology Review Magazine.recipe"
    "MMC RTV Slovenija.recipe"
    "MONITOR online.recipe"
    "MSDN Magazine.recipe"
    "MSN産経ニュース(新商品).recipe"
    "Mac World .recipe"
    "Mac World UK .recipe"
    "MacVideo .recipe"
    "Maciej Samcik Blog.recipe"
    "Macity.recipe"
    "Macleans Magazine.recipe"
    "Magyar Nemzet.recipe"
    "Maharashtra Times.recipe"
    "Mail & Guardian ZA News.recipe"
    "Malaya Business Insight.recipe"
    "MalaysianMirror.recipe"
    "Manila Standard Today.recipe"
    "Marc Toensings Visionen.recipe"
    "Marca.recipe"
    "Marietta Daily Journal.recipe"
    "Marine Corps Times.recipe"
    "Marketing Magazine.recipe"
    "Marketing sensoriale.recipe"
    "Matichon.recipe"
    "Max-Planck-Gesellschaft.recipe"
    "Mayra.recipe"
    "MedScape.recipe"
    "Media Indonesia.recipe"
    "Media2.recipe"
    "Mediafax.recipe"
    "Mediapart.recipe"
    "Melbourne Herald Sun.recipe"
    "Men24.gr.recipe"
    "Mens Health (US).recipe"
    "Merco Press.recipe"
    "Metro Nieuws NL.recipe"
    "Metro UK.recipe"
    "Metropol TV.recipe"
    "Michelle Malkin.recipe"
    "Microwave Journal.recipe"
    "Miesbacher Merkur.recipe"
    "Milenio-diario.recipe"
    "Military Times.recipe"
    "Milwaukee Journal Sentinel.recipe"
    "Ming Pao - Hong Kong.recipe"
    "Ming Pao - Toronto.recipe"
    "Ming Pao - Vancouver.recipe"
    "Miradas al Sur.recipe"
    "Mish's Global Economic Trend Analysis.recipe"
    "Mobile Nations.recipe"
    "Mobilebulgaria.com.recipe"
    "Modoros Blog.recipe"
    "Moldova Azi.recipe"
    "Monde durable.recipe"
    "Monden.recipe"
    "Money Control.recipe"
    "Money Ro.recipe"
    "Money.pl.recipe"
    "Moneynews.com.recipe"
    "Montevideo COMM.recipe"
    "Montreal Gazette.recipe"
    "More Intelligent Life.recipe"
    "Mother Jones.recipe"
    "Mumbai Mirror.recipe"
    "Murnauer Tagblatt.recipe"
    "MyApple.pl.recipe"
    "Métro Montréal.recipe"
    "Múlt-Kor.recipe"
    "Münchner Merkur Nord.recipe"
    "Münchner Merkur Stadt.recipe"
    "Münchner Merkur Süd.recipe"
    "Münchner Merkur Würmtal.recipe"
    "Měšec.recipe"
    "Młody technik.recipe"
    "NASA.recipe"
    "NBC Olympics 2010.recipe"
    "NGZ-online.recipe"
    "NIN online.recipe"
    "NOAA Online.recipe"
    "NOL.recipe"
    "NPR Music Blogs.recipe"
    "NRC.recipe"
    "NRC Handelsblad.recipe"
    "NSPM in English.recipe"
    "NTV.recipe"
    "NTVSpor.recipe"
    "NY Times Global.recipe"
    "NZZ Folio.recipe"
    "NZZ Online.recipe"
    "NZZ Webpaper.recipe"
    "NaTemat.pl.recipe"
    "Nachdenkseiten.recipe"
    "NacionRed.com.recipe"
    "Nacional - Hr.recipe"
    "Nadační fond proti korupci.recipe"
    "Najwyższy Czas.recipe"
    "Naked Capitalism.recipe"
    "Nan Feng Chuang / South Reviews Magazine.recipe"
    "Nasz Dziennik.recipe"
    "National Geographic.recipe"
    "National Geographic (DE).recipe"
    "National Geographic PL.recipe"
    "National Geographic RO.recipe"
    "National Post.recipe"
    "National Public Radio.recipe"
    "National Review Online.recipe"
    "Nature News.recipe"
    "Navegalo.com.recipe"
    "Navy Times.recipe"
    "Nealz Nuze.recipe"
    "Neowin.net.recipe"
    "Netzpolitik.recipe"
    "Neue Osnabrücker Zeitung.recipe"
    "Neviditelný pes.recipe"
    "New England Journal of Medicine.recipe"
    "New Journal of Physics.recipe"
    "New London Day.recipe"
    "New Musical Express Magazine.recipe"
    "New Scientist - Online News w. subscription.recipe"
    "New Statesman.recipe"
    "New Straits Times from Malaysia.recipe"
    "New York Magazine.recipe"
    "New York Post.recipe"
    "New York Review of Books.recipe"
    "New York Review of Books (no subscription).recipe"
    "New York Times.recipe"
    "New York Times Book Review.recipe"
    "New York Times Headlines.recipe"
    "New York Times Sports Beat.recipe"
    "New York Times Technology Beat.recipe"
    "New Yorker Magazine.recipe"
    "New Zealand Herald.recipe"
    "News And Observer.recipe"
    "News Busters.recipe"
    "News On Japan.recipe"
    "News24.recipe"
    "NewsWeek Argentina.recipe"
    "Newsbeast.recipe"
    "Newstimes.recipe"
    "Newsweek.recipe"
    "Newsweek Polska.recipe"
    "Nezavisne novine.recipe"
    "Niebezpiecznik.pl.recipe"
    "Nightflier's Bookspace.recipe"
    "Nikkei Business Online.recipe"
    "Njuz.net.recipe"
    "Non leggerlo.recipe"
    "NorteCastilla .recipe"
    "Not A Blog - George R.R. Martin.recipe"
    "Not Safe For Work Corporation.recipe"
    "Noticias R7.recipe"
    "Noticias UnB.recipe"
    "Nova srpska politicka misao.recipe"
    "Novaya Gazeta.recipe"
    "Novi List.recipe"
    "Novi List - online portal.recipe"
    "Novi Standard.recipe"
    "Novinite.bg.recipe"
    "Novinite.com.recipe"
    "Novinky.recipe"
    "Now Toronto.recipe"
    "Nowa Fantastyka.recipe"
    "Nowa Trybuna Opolska.recipe"
    "Nowiny - Rybnik.recipe"
    "Nowy Obywatel.recipe"
    "Nowy ekran.recipe"
    "Nu.nl.recipe"
    "Nursing Times.recipe"
    "Nuus24.recipe"
    "Népszabadság.recipe"
    "O Globo.recipe"
    "OSEL.cz.recipe"
    "OSWorld.pl.recipe"
    "Oakland North.recipe"
    "Observa Digital.recipe"
    "Observatorul cultural.recipe"
    "Odkrywcy.pl.recipe"
    "Oil Price.recipe"
    "OmgUbuntu.recipe"
    "Onda Rock.recipe"
    "Online-Zeitung Schattenblick.recipe"
    "Open Left.recipe"
    "Opinión - Bolivia.recipe"
    "Orange County Register.recipe"
    "Organizacja Monarchistów Polskich.recipe"
    "Oriental Dailly.recipe"
    "Orlando Sentinel.recipe"
    "Orsai.recipe"
    "Ottawa Citizen.recipe"
    "Our Daily Bread.recipe"
    "Outlook India.recipe"
    "Overclock.pl.recipe"
    "Oxford Mail.recipe"
    "Ośrodek Studiów Wschodnich.recipe"
    "PAP Nauka w Polsce.recipe"
    "PC Centre.recipe"
    "PC Foster.recipe"
    "PC Lab.recipe"
    "PC Magazine.recipe"
    "PC World.recipe"
    "PCArena.recipe"
    "PCWORLD.HU.recipe"
    "PCWorld .recipe"
    "PHD Comics.recipe"
    "PNN.recipe"
    "PVP online.recipe"
    "Padre y Decano.recipe"
    "Pagina - 12.recipe"
    "Pagina/12 - Edicion Impresa.recipe"
    "Pajamas Media.recipe"
    "Palmtop.pl.recipe"
    "Pambianco.recipe"
    "PandoDaily.recipe"
    "Panorama .recipe"
    "Parlamentní Listy.recipe"
    "Patente de Corso.recipe"
    "Pc Advisor .recipe"
    "Penguin News.recipe"
    "Penzberger Merkur.recipe"
    "People/US Magazine Mashup.recipe"
    "Perfil.recipe"
    "Periodismo Humano.recipe"
    "Periódico El Colombiano.recipe"
    "Periódico El Mundo.recipe"
    "Periódico Portafolio Colombia.recipe"
    "Periódico el Espectador.recipe"
    "Periódico el Tiempo.recipe"
    "Peter Schiff's Economic Commentary.recipe"
    "Peščanik.recipe"
    "Philadelphia Inquirer.recipe"
    "Philosophy Now.recipe"
    "Phoronix.recipe"
    "PhysOrg.recipe"
    "Physicstoday.recipe"
    "Physicsworld.recipe"
    "Pikoboard.pl.recipe"
    "Pilipino Star Ngayon.recipe"
    "Pilot Online.recipe"
    "Piratská strana.recipe"
    "Piratské noviny.recipe"
    "Planet Python.recipe"
    "Pobjeda Online.recipe"
    "Pocket.recipe"
    "Podnikatel.recipe"
    "Politico.recipe"
    "Politifact.recipe"
    "Politika Online.recipe"
    "Politiken.dk.recipe"
    "Polityka.recipe"
    "Polizeipresse - Deutschland.recipe"
    "Polska Times.recipe"
    "Polter.pl.recipe"
    "Popular Science.recipe"
    "Poradnia Językowa PWN.recipe"
    "Portfolio.recipe"
    "Portfolio.hu.recipe"
    "Portfolio.hu - English Edition.recipe"
    "Post Today.recipe"
    "Poughkeepsie Journal.recipe"
    "Prague Daily Monitor.recipe"
    "Pravda.recipe"
    "Pravda em português.recipe"
    "Pravda in English.recipe"
    "Pravda in Italiano.recipe"
    "Press Online.recipe"
    "PressThink.recipe"
    "Pressemitteilungen der Bundesregierung.recipe"
    "Pressemitteilungen der EU Kommission pro Politikbereich.recipe"
    "Presseportal DE.recipe"
    "Presseurop.recipe"
    "Private Eye.recipe"
    "Pro Physik.recipe"
    "Pro Publica.recipe"
    "Pro-Linux.de.recipe"
    "ProTv Magazin.recipe"
    "Promotor.recipe"
    "Prospect Magazine.recipe"
    "Prosport.recipe"
    "Prost Amerika.recipe"
    "Protagon.recipe"
    "Providence Journal.recipe"
    "Právo.recipe"
    "Psychologies.recipe"
    "Psychology Today.recipe"
    "Pubblico giornale.recipe"
    "Publico.PT.recipe"
    "Publico.es.recipe"
    "Publika.recipe"
    "Puls Biznesu.recipe"
    "Punto Informatico .recipe"
    "PurePC.recipe"
    "Que Leer.recipe"
    "Quotidiano Net .recipe"
    "RBC.ru.recipe"
    "RDS.recipe"
    "RGA Online - German.recipe"
    "RIA Novosti - Russian.recipe"
    "RP-online.recipe"
    "RT in English.recipe"
    "RTE News.recipe"
    "RTS\: Vesti.recipe"
    "Rabble.ca.recipe"
    "Racjonalista.pl.recipe"
    "Radikal - Turkey.recipe"
    "Radio Praha.recipe"
    "Raleigh News & Observer.recipe"
    "Readers Digest.recipe"
    "Real Clear.recipe"
    "Real-world economis review blog.recipe"
    "Realitatea.recipe"
    "Rebelion.org.recipe"
    "Red Voltaire.recipe"
    "RedAragon.recipe"
    "Regina Leader-Post.recipe"
    "Replica Vedetelor.recipe"
    "Reptantes.recipe"
    "Republica.recipe"
    "Republika.recipe"
    "Res Publica Nowa.recipe"
    "Reuters.recipe"
    "Reuters(Japan).recipe"
    "Revista Axxon.recipe"
    "Revista Bla.recipe"
    "Revista Cromos.recipe"
    "Revista El Cultural.recipe"
    "Revista Felicia.recipe"
    "Revista Muy Interesante.recipe"
    "Revista Semana.recipe"
    "Revista Summa.recipe"
    "Revista piauí.recipe"
    "Ria Novosti.recipe"
    "Richmond Times-Dispatch.recipe"
    "Rmf24.pl - Ekonomia Sport Kultura Nauka.recipe"
    "Rmf24.pl - Fakty.recipe"
    "Rmf24.pl - Opinie.recipe"
    "Roger Ebert.recipe"
    "Rolling Stone Magazine - free content.recipe"
    "Rolling Stones Mag.recipe"
    "România Liberă.recipe"
    "Root.cz.recipe"
    "Rue89.recipe"
    "Rushisaband.recipe"
    "Rusia Hoy.recipe"
    "Rybinski.eu - economy of the XXI century.recipe"
    "Rynek Infrastruktury.recipe"
    "Rynek Kolejowy.recipe"
    "Rynek Zdrowia.recipe"
    "Rzeczpospolita OnLine.recipe"
    "SATKurier.pl.recipe"
    "SBNation.recipe"
    "SC Print Magazine.recipe"
    "SG.hu.recipe"
    "SKAI.recipe"
    "SLOVO.recipe"
    "SME.recipe"
    "SPIN Magzine.recipe"
    "Sabah.recipe"
    "Sabit Fikir.recipe"
    "Salon.com.recipe"
    "Salonica Press News.recipe"
    "Samanyolu Haber.recipe"
    "Samanyolu Teknoloji.recipe"
    "San Francisco Bay Guardian.recipe"
    "San Francisco Chronicle.recipe"
    "San Jose Mercury News.recipe"
    "Sapte Seri.recipe"
    "Sarajevo-x.com.recipe"
    "Saskatoon Star-Phoenix.recipe"
    "SatMagazine.recipe"
    "Satira.recipe"
    "Schongauer Nachrichten.recipe"
    "Science AAAS.recipe"
    "Science Based Medicine.recipe"
    "Science News Recent Issues.recipe"
    "ScienceDaily.recipe"
    "Scientific American.recipe"
    "Scinexx.de.recipe"
    "Scott Hanselman's Computer Zen.recipe"
    "Sean Hannity Show.recipe"
    "Sekurak.recipe"
    "Shacknews.recipe"
    "Shortlist.recipe"
    "SigmaLive.recipe"
    "Sign On San Diego.recipe"
    "Sign of the Times.recipe"
    "Silicon Republic.recipe"
    "Sinfest.recipe"
    "Singtao Daily - Canada.recipe"
    "Singtao STNN.recipe"
    "Siol.net.recipe"
    "Skylife.recipe"
    "Slashdot.org.recipe"
    "Slate.recipe"
    "Slate Star Codex.recipe"
    "Smarter Planet | Tumblr.recipe"
    "Smashing Magazine.recipe"
    "SmileZilla.recipe"
    "Smithsonian Magazine.recipe"
    "Snopes.recipe"
    "Social Diva.recipe"
    "Soldiers.recipe"
    "Something Awful.recipe"
    "South China Morning Post.recipe"
    "Spectator Magazine.recipe"
    "Spektrum der Wissenschaft.recipe"
    "Spider's Web.recipe"
    "Spiegel Online - German.recipe"
    "Spiegel Online International.recipe"
    "Sport.pl.recipe"
    "SportoweFakty.recipe"
    "Sports Illustrated.recipe"
    "Sports Illustrated Columnists.recipe"
    "St Louis Post-Dispatch.recipe"
    "Stack Overflow - Blog.recipe"
    "Stamgasten.recipe"
    "Standard Money Ro.recipe"
    "Stanisław Michalkiewicz.recipe"
    "Star Gazetesi.recipe"
    "Starnberger Merkur.recipe"
    "Stars and Stripes.recipe"
    "Statesman.recipe"
    "Stopklatka.pl.recipe"
    "Strange Horizons.recipe"
    "Strategic Culture Foundation.recipe"
    "Strategy+Business.recipe"
    "Sunday Nation.recipe"
    "Superbebe.recipe"
    "Supersite for Windows.recipe"
    "Svenska Dagbladet.recipe"
    "Süddeutsche Zeitung.recipe"
    "Süddeutsche Zeitung mobil.recipe"
    "Süddeutsche.de.recipe"
    "Săptămâna Financiară.recipe"
    "Sızıntı Dergisi.recipe"
    "TIME Magazine.recipe"
    "TJournal.recipe"
    "TSN.recipe"
    "TVN24.recipe"
    "TVP.INFO.recipe"
    "TVXS.recipe"
    "TVmania.recipe"
    "Ta Nea.recipe"
    "Tablety.pl.recipe"
    "Tabu.recipe"
    "Tagesanzeiger.recipe"
    "Tagesschau.recipe"
    "Taipei Times.recipe"
    "Tanjug.recipe"
    "Tanuki.recipe"
    "Tawerna RPG.recipe"
    "Taz - die Tageszeitung.recipe"
    "Taz Digiabo.recipe"
    "Tech Dirt.recipe"
    "Tech Economy.recipe"
    "TechCrunch.recipe"
    "TechWorld.recipe"
    "Technology Review.recipe"
    "Techtarget.recipe"
    "Tegernseer Zeitung.recipe"
    "Telam.recipe"
    "Telegraph.co.uk.recipe"
    "Telepolis.recipe"
    "Telepolis (Artikel).recipe"
    "Telepolis.pl.recipe"
    "Teleread Blog.recipe"
    "Television Without Pity.recipe"
    "Thai Post Daily.recipe"
    "Thairath.recipe"
    "Thanh Nien Xa Me.recipe"
    "The #climate Daily - paperli.recipe"
    "The AJC.recipe"
    "The Age.recipe"
    "The American Spectator.recipe"
    "The Asian Review of Books.recipe"
    "The Atlantic.recipe"
    "The Australian.recipe"
    "The Baltimore Sun.recipe"
    "The Bay Citizen.recipe"
    "The Big Picture.recipe"
    "The Budget Fashionista.recipe"
    "The Business Line.recipe"
    "The CATO Institute.recipe"
    "The Christian Post.recipe"
    "The Christian Science Monitor - daily.recipe"
    "The Chronicle of Higher Education.recipe"
    "The Clinic.recipe"
    "The Codeless Code.recipe"
    "The Columbus Dispatch.recipe"
    "The Conversation.recipe"
    "The Cult of Ghoul.recipe"
    "The Daily Mail.recipe"
    "The Daily Mirror.recipe"
    "The Daily News Egypt.recipe"
    "The Daily Reckoning - US edition.recipe"
    "The Daily WTF.recipe"
    "The Dallas Morning News.recipe"
    "The Economic Collapse.recipe"
    "The Economic Times India.recipe"
    "The Economist.recipe"
    "The Edge Singapore.recipe"
    "The Escapist Magazine.recipe"
    "The Feature.recipe"
    "The Financial Express.recipe"
    "The Force.recipe"
    "The Freeman.recipe"
    "The Friday Times.recipe"
    "The Galaxy's Edge.recipe"
    "The Grid.recipe"
    "The Guardian and The Observer.recipe"
    "The Hartford Courant.recipe"
    "The Heritage Foundation.recipe"
    "The Hindu.recipe"
    "The Hockey News.recipe"
    "The Hollywood Reporter.recipe"
    "The House News Bloggers 主場博客.recipe"
    "The Houston Chronicle.recipe"
    "The Huffington Post.recipe"
    "The Independent.recipe"
    "The Irish Times.recipe"
    "The Japan Times.recipe"
    "The Luminous Landscape.recipe"
    "The Mainichi.recipe"
    "The Manila Bulletin.recipe"
    "The Manila Times.recipe"
    "The Market Ticker.recipe"
    "The Miami Herald.recipe"
    "The Moscow Times.recipe"
    "The Nation.recipe"
    "The New Age.recipe"
    "The New Republic.recipe"
    "The News.recipe"
    "The ONE.recipe"
    "The Observer.recipe"
    "The Old Foodie.recipe"
    "The Old New Thing.recipe"
    "The Onion.recipe"
    "The Onion AV Club.recipe"
    "The Online Photographer.recipe"
    "The Oregonian.recipe"
    "The Philippine Daily Inquirer.recipe"
    "The Philippine Star.recipe"
    "The Philosophers' Magazine.recipe"
    "The Register.recipe"
    "The Resurgence.recipe"
    "The Sage News - Opinion.recipe"
    "The Sage News - Satire.recipe"
    "The Scotsman.recipe"
    "The Seattle Times.recipe"
    "The Skeptic.recipe"
    "The Skeptical Inquirer.recipe"
    "The Southern Star.recipe"
    "The Standard.recipe"
    "The Straits Times.recipe"
    "The Sun UK.recipe"
    "The Sunday Times UK.recipe"
    "The Sydney Morning Herald.recipe"
    "The TMZ.recipe"
    "The Telegraph India.recipe"
    "The Times UK.recipe"
    "The Times of India.recipe"
    "The Toronto Star.recipe"
    "The Verge.recipe"
    "The Wall Street Journal.recipe"
    "The Walrus Mag.recipe"
    "The Washington Post.recipe"
    "The Way the Future Blogs.recipe"
    "The Week Magazine.recipe"
    "The West Australian.recipe"
    "The Wokingham Times.recipe"
    "TheAtlantic.com.recipe"
    "TheJournal.ie.recipe"
    "TheMarker.recipe"
    "TheServerSide.com.recipe"
    "Think Progress.recipe"
    "TidBITS\: Mac News for the Rest of Us.recipe"
    "Tijolaco.com.recipe"
    "Tillsonburg/Norfolk County.recipe"
    "TimeTürk.recipe"
    "Times New Roman.recipe"
    "Times of Malta.recipe"
    "Titanic.recipe"
    "To Vima.recipe"
    "Today Online - Singapore.recipe"
    "Todays Zaman.recipe"
    "Tom's Hardware.recipe"
    "Tom's Hardware US.recipe"
    "ToyoKeizai News.recipe"
    "Tri-City Herald.recipe"
    "Trombon.recipe"
    "Trouw.recipe"
    "Trystero.recipe"
    "Trójmiasto.pl.recipe"
    "Tulsa World.recipe"
    "Tuttosport.recipe"
    "Tweakers.net.recipe"
    "Twitch Films.recipe"
    "Tyden.cz.recipe"
    "Tölzer Kurier.recipe"
    "UBUNTU.pl.recipe"
    "UN Periodico.recipe"
    "US & World Report news.recipe"
    "USA Today.recipe"
    "Ubuntu-pomoc.org.recipe"
    "Ultima Hora.recipe"
    "Uncrate.recipe"
    "Uni secret base.recipe"
    "Unica.recipe"
    "United Press International.recipe"
    "Universe Today.recipe"
    "Utne reader.recipe"
    "Utrinski Vesnik.recipe"
    "VFR Magazine.recipe"
    "VICE News.recipe"
    "Vancouver Province.recipe"
    "Vancouver Sun.recipe"
    "Vanity Fair.recipe"
    "Variety.recipe"
    "Vecernje Novosti.recipe"
    "Vecernji List.recipe"
    "Veintitres.recipe"
    "Version2.dk.recipe"
    "Vice Magazin Deutschland.recipe"
    "Vice Magazine España.recipe"
    "Victoria Times Colonist.recipe"
    "Vignette.recipe"
    "Vijesti.recipe"
    "Village Voice.recipe"
    "Virtual Shackles.recipe"
    "Vitalia.recipe"
    "Viva.recipe"
    "VnExpress.recipe"
    "Voice of America.recipe"
    "Vreme.recipe"
    "Vrij Nederland.recipe"
    "WNP.recipe"
    "WOZ Die Wochenzeitung.recipe"
    "WV Hooligan.recipe"
    "Waco Tribune Herald.recipe"
    "Wall Street.recipe"
    "Walla.recipe"
    "Warentest.recipe"
    "Washington Post Cartoons.recipe"
    "Washington Times.recipe"
    "Watching America.recipe"
    "WebSecurity.recipe"
    "Weblogs SL (Xataka, Genbeta, VidaExtra, Blog de Cine y otros).recipe"
    "Weilheimer Tagblatt.recipe"
    "Welt der Physik.recipe"
    "Weltonline.recipe"
    "West Hawaii Today.recipe"
    "What If....recipe"
    "Wichita Eagle.recipe"
    "Wikinews.recipe"
    "Windsor Star.recipe"
    "Winnipeg Free Press.recipe"
    "Winnipeg Sun.recipe"
    "Wired Daily Edition.recipe"
    "Wired Magazine, Monthly Edition.recipe"
    "Wired.it.recipe"
    "WirtschaftsWoche Online.recipe"
    "Wirtualnemedia.pl.recipe"
    "WoW Insider.recipe"
    "Wolne Media.recipe"
    "Words Without Borders.recipe"
    "Workers World.recipe"
    "Worldcrunch.recipe"
    "Wprost.recipe"
    "Wprost (RSS).recipe"
    "Wysokie Obcasy.recipe"
    "XpatLoop.com.recipe"
    "Yagmur Dergisi.recipe"
    "Yahoo News.recipe"
    "Yakima Herald-Republic.recipe"
    "Yalansavar.recipe"
    "Yazihane.recipe"
    "Yemen Times.recipe"
    "Yeni Umit Dergisi.recipe"
    "Yenişafak Gazetesi.recipe"
    "Ynet.recipe"
    "Yomiuri Online (Latest).recipe"
    "Yomiuri Online (World).recipe"
    "ZAMAN Gazetesi.recipe"
    "ZDNet.fr.recipe"
    "ZIVE.sk.recipe"
    "Zaufana Trzecia Strona.recipe"
    "Zaxid.net.recipe"
    "Zeit Online.recipe"
    "Zero Hedge.recipe"
    "Zerocalcare.recipe"
    "Ziarul Financiar.recipe"
    "Ziua Veche.recipe"
    "ZnadPlanszy.pl.recipe"
    "[origo].recipe"
    "aktualne.cz.recipe"
    "attac.es.recipe"
    "b365 Realitatea.recipe"
    "badania.net.recipe"
    "bitacora.com.uy.recipe"
    "brand eins.recipe"
    "conowego.pl.recipe"
    "darknet.recipe"
    "denik.cz.recipe"
    "derStandard.recipe"
    "diagonal.recipe"
    "drivelry.com.recipe"
    "dzieje.pl.recipe"
    "eCuisine.recipe"
    "eKundelek.recipe"
    "eMuzyka.recipe"
    "egirl.recipe"
    "eioba.recipe"
    "ekathimerini.recipe"
    "frazpc.pl.recipe"
    "freeway.com.uy.recipe"
    "go4it.recipe"
    "heise.recipe"
    "historia-news.recipe"
    "iDnes.cz.recipe"
    "iEco Clarin.recipe"
    "iHNed.recipe"
    "iHNed.cz.recipe"
    "iLiteratura.cz.recipe"
    "iProfesional.com.recipe"
    "iXBT.com.recipe"
    "il Cambiamento.recipe"
    "in.gr.recipe"
    "infzm - China Southern Weekly.recipe"
    "io9.recipe"
    "ionline - Portugal.recipe"
    "kath.net.recipe"
    "książka.net.pl.recipe"
    "l'equipe.recipe"
    "lidovky.recipe"
    "lwn.recipe"
    "msnbc.com.recipe"
    "novinky.cz.recipe"
    "nrcnext.recipe"
    "nrc•next.recipe"
    "optyczne.pl.recipe"
    "ppe.pl.recipe"
    "prawica.net.recipe"
    "securitywatch.recipe"
    "soL Haber.recipe"
    "stuff.co.nz.recipe"
    "tomshardware.recipe"
    "tuttojuve.recipe"
    "wallabag.recipe"
    "wenxuecity - znjy.recipe"
    "www.superesportes.com.br.recipe"
    "xkcd.recipe"
    "zdnet.recipe"
    "zougla.recipe"
    "¡Hola!.recipe"
    "Élet és Irodalom.recipe"
    "Între fete.recipe"
    "ČT24.recipe"
    "Česká pozice.recipe"
    "České Noviny.recipe"
    "Český rozhlas 6.recipe"
    "İktibas.recipe"
    "İnsan Okur.recipe"
    "Świat Czytników.recipe"
    "Świat Obrazu.recipe"
    "Życie Warszawy.recipe"
    "Știință şi Tehnică.recipe"
    "Алексей Навальный.recipe"
    "Ведомости.recipe"
    "Експрес.recipe"
    "Задолба!ли.recipe"
    "ИноПресса.recipe"
    "Компьютерра.recipe"
    "Львівська газета.recipe"
    "МедиаЗона.recipe"
    "Печат.recipe"
    "Правда.recipe"
    "Российская Газета.recipe"
    "Троицкий вариант.recipe"
    "Український Тиждень.recipe"
    "Эхо Москвы.recipe"
    "ナショナル・ジオグラフィックニュース.recipe"
    "中時電子報.recipe"
    "人民日报.recipe"
    "日本経済新聞（朝刊・夕刊）.recipe"
    "日経新聞電子版(Free, MAX).recipe"
    "日経新聞電子版(MAX).recipe"
    "星島日報 (香港).recipe"
    "時事通信.recipe"
    "毎日新聞.recipe"
    "毎日新聞(Science).recipe"
    "河北新報.recipe"
    "联合早报网 zaobao.com.recipe"
    "聯合新聞網.recipe"
    "自由電子報.recipe"
    "蘋果日報 (台灣).recipe"
    "蘋果日報 (香港).recipe"
    "매일경제.recipe"
    "미디어 다음 오늘의 주요 뉴스.recipe"
    "시사인 라이브.recipe"
    "조선일보.recipe"
    "중앙일보.recipe"
    "한겨례.recipe"
  ); _describe -t recipes "ebook-convert builtin recipes" extras
  _files -g "*.FB2 *.rtf *.TEXT *.RECIPE *.LIT *.markdown *.txt *.djvu *.xhtml *.lit *.MOBI *.PRC *.djv *.ODT *.chm *.PMLZ *.html *.RAR *.xhtm *.RB *.text *.PML *.tcr *.SHTML *.docx *.azw3 *.azw4 *.txtz *.ZIP *.DJV *.DOWNLOADED_RECIPE *.CHM *.mobi *.opf *.textile *.docm *.PDF *.XHTML *.SHTM *.PDB *.EPUB *.TEXTILE *.SNB *.OEBZIP *.md *.pobi *.TXTZ *.azw *.cbc *.prc *.fb2 *.htm *.odt *.cbr *.pml *.rar *.cbz *.htmlz *.shtm *.DJVU *.AZW *.shtml *.RTF *.oebzip *.MD *.TCR *.updb *.POBI *.HTML *.rb *.downloaded_recipe *.HTMLZ *.TXT *.DOCX *.MARKDOWN *.snb *.lrf *.recipe *.DOCM *.UPDB *.epub *.CBC *.AZW3 *.AZW4 *.zip *.LRF *.HTM *.pmlz *.CBR *.OPF *.XHTM *.CBZ *.pdf *.pdb"
}

_ebc_output_args() {
  local extras; extras=(
    ".fb2:Convert to a .fb2 file with the same name as the input file"
    ".docx:Convert to a .docx file with the same name as the input file"
    ".rtf:Convert to a .rtf file with the same name as the input file"
    ".snb:Convert to a .snb file with the same name as the input file"
    ".rb:Convert to a .rb file with the same name as the input file"
    ".lrf:Convert to a .lrf file with the same name as the input file"
    ".tcr:Convert to a .tcr file with the same name as the input file"
    ".azw3:Convert to a .azw3 file with the same name as the input file"
    ".oeb:Convert to a .oeb file with the same name as the input file"
    ".htmlz:Convert to a .htmlz file with the same name as the input file"
    ".txt:Convert to a .txt file with the same name as the input file"
    ".epub:Convert to a .epub file with the same name as the input file"
    ".mobi:Convert to a .mobi file with the same name as the input file"
    ".zip:Convert to a .zip file with the same name as the input file"
    ".pmlz:Convert to a .pmlz file with the same name as the input file"
    ".lit:Convert to a .lit file with the same name as the input file"
    ".txtz:Convert to a .txtz file with the same name as the input file"
    ".pdf:Convert to a .pdf file with the same name as the input file"
    ".pdb:Convert to a .pdb file with the same name as the input file"
  ); _describe -t output "ebook-convert output" extras
  _files -g "*.FB2 *.DOCX *.rtf *.snb *.RB *.ZIP *.fb2 *.azw3 *.tcr *.docx *.AZW3 *.LIT *.MOBI *.oeb *.PDF *.htmlz *.rb *.PDB *.EPUB *.mobi *.RTF *.SNB *.zip *.LRF *.lrf *.TCR *.pdf *.txtz *.PMLZ *.lit *.epub *.TXTZ *.txt *.OEB *.HTMLZ *.TXT *.pdb *.pmlz"
  _path_files -/
}

_ebc_common_opts() {
  _arguments -s \
  '(- *)'--version"[show program's version number and exit]" \
  '(- *)'{--help,-h}"[show this help message and exit]" \
  --list-recipes"[List builtin recipe names. You can create an ebook from a builtin recipe like this\: ebook-convert 'Recipe Name.recipe' output.epub]" \
  --input-profile="[Specify the input profile. The input profile gives the conversion system information on how to interpret various information in the input document. For example resolution dependent lengths (i.e. lengths in pixels). Choices are\:cybookg3, cybook_opus, default, hanlinv3, hanlinv5, illiad, irexdr1000, irexdr800, kindle, msreader, mobipocket, nook, sony, sony300, sony900]":"Specify the input profile. The input profile gives the conversion system information on how to interpret various information in the input document. For example resolution dependent lengths (i.e. lengths in pixels). Choices are\:cybookg3, cybook_opus, default, hanlinv3, hanlinv5, illiad, irexdr1000, irexdr800, kindle, msreader, mobipocket, nook, sony, sony300, sony900":(cybookg3|cybook_opus|default|hanlinv3|hanlinv5|illiad|irexdr1000|irexdr800|kindle|msreader|mobipocket|nook|sony|sony300|sony900) \
  --output-profile="[Specify the output profile. The output profile tells the conversion system how to optimize the created document for the specified device (such as by resizing images for the device screen size). In some cases, an output profile can be used to optimize the output for a particular device, but this is rarely necessary. Choices are\:cybookg3, cybook_opus, default, generic_eink, generic_eink_hd, generic_eink_large, hanlinv3, hanlinv5, illiad, ipad, ipad3, irexdr1000, irexdr800, jetbook5, kindle, kindle_dx, kindle_fire, kindle_pw, kindle_pw3, kindle_voyage, kobo, msreader, mobipocket, nook, nook_color, nook_hd_plus, pocketbook_900, pocketbook_pro_912, galaxy, sony, sony300, sony900, sony-landscape, sonyt3, tablet]":"Specify the output profile. The output profile tells the conversion system how to optimize the created document for the specified device (such as by resizing images for the device screen size). In some cases, an output profile can be used to optimize the output for a particular device, but this is rarely necessary. Choices are\:cybookg3, cybook_opus, default, generic_eink, generic_eink_hd, generic_eink_large, hanlinv3, hanlinv5, illiad, ipad, ipad3, irexdr1000, irexdr800, jetbook5, kindle, kindle_dx, kindle_fire, kindle_pw, kindle_pw3, kindle_voyage, kobo, msreader, mobipocket, nook, nook_color, nook_hd_plus, pocketbook_900, pocketbook_pro_912, galaxy, sony, sony300, sony900, sony-landscape, sonyt3, tablet":(cybookg3|cybook_opus|default|generic_eink|generic_eink_hd|generic_eink_large|hanlinv3|hanlinv5|illiad|ipad|ipad3|irexdr1000|irexdr800|jetbook5|kindle|kindle_dx|kindle_fire|kindle_pw|kindle_pw3|kindle_voyage|kobo|msreader|mobipocket|nook|nook_color|nook_hd_plus|pocketbook_900|pocketbook_pro_912|galaxy|sony|sony300|sony900|sony-landscape|sonyt3|tablet) \
  --base-font-size="[The base font size in pts. All font sizes in the produced book will be rescaled based on this size. By choosing a larger size you can make the fonts in the output bigger and vice versa. By default, the base font size is chosen based on the output profile you chose.]":"The base font size in pts. All font sizes in the produced book will be rescaled based on this size. By choosing a larger size you can make the fonts in the output bigger and vice versa. By default, the base font size is chosen based on the output profile you chose.": \
  --disable-font-rescaling"[Disable all rescaling of font sizes.]" \
  --font-size-mapping="[Mapping from CSS font names to font sizes in pts. An example setting is 12,12,14,16,18,20,22,24. These are the mappings for the sizes xx-small to xx-large, with the final size being for huge fonts. The font rescaling algorithm uses these sizes to intelligently rescale fonts. The default is to use a mapping based on the output profile you chose.]":"Mapping from CSS font names to font sizes in pts. An example setting is 12,12,14,16,18,20,22,24. These are the mappings for the sizes xx-small to xx-large, with the final size being for huge fonts. The font rescaling algorithm uses these sizes to intelligently rescale fonts. The default is to use a mapping based on the output profile you chose.": \
  --embed-font-family="[Embed the specified font family into the book. This specifies the 'base' font used for the book. If the input document specifies its own fonts, they may override this base font. You can use the filter style information option to remove fonts from the input document. Note that font embedding only works with some output formats, principally EPUB, AZW3 and DOCX.]":"Embed the specified font family into the book. This specifies the 'base' font used for the book. If the input document specifies its own fonts, they may override this base font. You can use the filter style information option to remove fonts from the input document. Note that font embedding only works with some output formats, principally EPUB, AZW3 and DOCX.": \
  --subset-embedded-fonts"[Subset all embedded fonts. Every embedded font is reduced to contain only the glyphs used in this document. This decreases the size of the font files. Useful if you are embedding a particularly large font with lots of unused glyphs.]" \
  --embed-all-fonts"[Embed every font that is referenced in the input document but not already embedded. This will search your system for the fonts, and if found, they will be embedded. Embedding will only work if the format you are converting to supports embedded fonts, such as EPUB, AZW3, DOCX or PDF. Please ensure that you have the proper license for embedding the fonts used in this document.]" \
  --line-height="[The line height in pts. Controls spacing between consecutive lines of text. Only applies to elements that do not define their own line height. In most cases, the minimum line height option is more useful. By default no line height manipulation is performed.]":"The line height in pts. Controls spacing between consecutive lines of text. Only applies to elements that do not define their own line height. In most cases, the minimum line height option is more useful. By default no line height manipulation is performed.": \
  --minimum-line-height="[The minimum line height, as a percentage of the element's calculated font size. calibre will ensure that every element has a line height of at least this setting, irrespective of what the input document specifies. Set to zero to disable. Default is 120%. Use this setting in preference to the direct line height specification, unless you know what you are doing. For example, you can achieve 'double spaced' text by setting this to 240.]":"The minimum line height, as a percentage of the element's calculated font size. calibre will ensure that every element has a line height of at least this setting, irrespective of what the input document specifies. Set to zero to disable. Default is 120%. Use this setting in preference to the direct line height specification, unless you know what you are doing. For example, you can achieve 'double spaced' text by setting this to 240.": \
  --linearize-tables"[Some badly designed documents use tables to control the layout of text on the page. When converted these documents often have text that runs off the page and other artifacts. This option will extract the content from the tables and present it in a linear fashion.]" \
  --extra-css="[Either the path to a CSS stylesheet or raw CSS. This CSS will be appended to the style rules from the source file, so it can be used to override those rules.]":"Either the path to a CSS stylesheet or raw CSS. This CSS will be appended to the style rules from the source file, so it can be used to override those rules.": \
  --filter-css="[A comma separated list of CSS properties that will be removed from all CSS style rules. This is useful if the presence of some style information prevents it from being overridden on your device. For example\: font-family,color,margin-left,margin-right]":"A comma separated list of CSS properties that will be removed from all CSS style rules. This is useful if the presence of some style information prevents it from being overridden on your device. For example\: font-family,color,margin-left,margin-right": \
  --transform-css-rules="[Path to a file containing rules to transform the CSS styles in this book. The easiest way to create such a file is to use the wizard for creating rules in the calibre GUI. Access it in the 'Look & Feel->Transform styles' section of the conversion dialog. Once you create the rules, you can use the Export button to save them to a file.]":"Path to a file containing rules to transform the CSS styles in this book. The easiest way to create such a file is to use the wizard for creating rules in the calibre GUI. Access it in the 'Look & Feel->Transform styles' section of the conversion dialog. Once you create the rules, you can use the Export button to save them to a file.": \
  --expand-css"[By default, calibre will use the shorthand form for various css properties such as margin, padding, border, etc. This option will cause it to use the full expanded form instead. Note that CSS is always expanded when generating EPUB files with the output profile set to one of the Nook profiles as the Nook cannot handle shorthand CSS.]" \
  --smarten-punctuation"[Convert plain quotes, dashes and ellipsis to their typographically correct equivalents. For details, see http\://daringfireball.net/projects/smartypants]" \
  --unsmarten-punctuation"[Convert fancy quotes, dashes and ellipsis to their plain equivalents.]" \
  --margin-top="[Set the top margin in pts. Default is 5.0. Setting this to less than zero will cause no margin to be set (the margin setting in the original document will be preserved). Note\: 72 pts equals 1 inch]":"Set the top margin in pts. Default is 5.0. Setting this to less than zero will cause no margin to be set (the margin setting in the original document will be preserved). Note\: 72 pts equals 1 inch": \
  --margin-left="[Set the left margin in pts. Default is 5.0. Setting this to less than zero will cause no margin to be set (the margin setting in the original document will be preserved). Note\: 72 pts equals 1 inch]":"Set the left margin in pts. Default is 5.0. Setting this to less than zero will cause no margin to be set (the margin setting in the original document will be preserved). Note\: 72 pts equals 1 inch": \
  --margin-right="[Set the right margin in pts. Default is 5.0. Setting this to less than zero will cause no margin to be set (the margin setting in the original document will be preserved). Note\: 72 pts equals 1 inch]":"Set the right margin in pts. Default is 5.0. Setting this to less than zero will cause no margin to be set (the margin setting in the original document will be preserved). Note\: 72 pts equals 1 inch": \
  --margin-bottom="[Set the bottom margin in pts. Default is 5.0. Setting this to less than zero will cause no margin to be set (the margin setting in the original document will be preserved). Note\: 72 pts equals 1 inch]":"Set the bottom margin in pts. Default is 5.0. Setting this to less than zero will cause no margin to be set (the margin setting in the original document will be preserved). Note\: 72 pts equals 1 inch": \
  --change-justification="[Change text justification. A value of 'left' converts all justified text in the source to left aligned (i.e. unjustified) text. A value of 'justify' converts all unjustified text to justified. A value of 'original' (the default) does not change justification in the source file. Note that only some output formats support justification.]":"Change text justification. A value of 'left' converts all justified text in the source to left aligned (i.e. unjustified) text. A value of 'justify' converts all unjustified text to justified. A value of 'original' (the default) does not change justification in the source file. Note that only some output formats support justification.":(left|justify|original) \
  --insert-blank-line"[Insert a blank line between paragraphs. Will not work if the source file does not use paragraphs (<p> or <div> tags).]" \
  --insert-blank-line-size="[Set the height of the inserted blank lines (in em). The height of the lines between paragraphs will be twice the value set here.]":"Set the height of the inserted blank lines (in em). The height of the lines between paragraphs will be twice the value set here.": \
  --remove-paragraph-spacing"[Remove spacing between paragraphs. Also sets an indent on paragraphs of 1.5em. Spacing removal will not work if the source file does not use paragraphs (<p> or <div> tags).]" \
  --remove-paragraph-spacing-indent-size="[When calibre removes blank lines between paragraphs, it automatically sets a paragraph indent, to ensure that paragraphs can be easily distinguished. This option controls the width of that indent (in em). If you set this value negative, then the indent specified in the input document is used, that is, calibre does not change the indentation.]":"When calibre removes blank lines between paragraphs, it automatically sets a paragraph indent, to ensure that paragraphs can be easily distinguished. This option controls the width of that indent (in em). If you set this value negative, then the indent specified in the input document is used, that is, calibre does not change the indentation.": \
  --asciiize"[Transliterate unicode characters to an ASCII representation. Use with care because this will replace unicode characters with ASCII. For instance it will replace 'Михаил Горбачёв' with 'Mikhail Gorbachiov'. Also, note that in cases where there are multiple representations of a character (characters shared by Chinese and Japanese for instance) the representation based on the current calibre interface language will be used.]" \
  --keep-ligatures"[Preserve ligatures present in the input document. A ligature is a special rendering of a pair of characters like ff, fi, fl et cetera. Most readers do not have support for ligatures in their default fonts, so they are unlikely to render correctly. By default, calibre will turn a ligature into the corresponding pair of normal characters. This option will preserve them instead.]" \
  --enable-heuristics"[Enable heuristic processing. This option must be set for any heuristic processing to take place.]" \
  --disable-markup-chapter-headings"[Detect unformatted chapter headings and sub headings. Change them to h2 and h3 tags.  This setting will not create a TOC, but can be used in conjunction with structure detection to create one.]" \
  --disable-italicize-common-cases"[Look for common words and patterns that denote italics and italicize them.]" \
  --disable-fix-indents"[Turn indentation created from multiple non-breaking space entities into CSS indents.]" \
  --html-unwrap-factor="[Scale used to determine the length at which a line should be unwrapped. Valid values are a decimal between 0 and 1. The default is 0.4, just below the median line length.  If only a few lines in the document require unwrapping this value should be reduced]":"Scale used to determine the length at which a line should be unwrapped. Valid values are a decimal between 0 and 1. The default is 0.4, just below the median line length.  If only a few lines in the document require unwrapping this value should be reduced": \
  --disable-unwrap-lines"[Unwrap lines using punctuation and other formatting clues.]" \
  --disable-delete-blank-paragraphs"[Remove empty paragraphs from the document when they exist between every other paragraph]" \
  --disable-format-scene-breaks"[Left aligned scene break markers are center aligned. Replace soft scene breaks that use multiple blank lines with horizontal rules.]" \
  --disable-dehyphenate"[Analyze hyphenated words throughout the document.  The document itself is used as a dictionary to determine whether hyphens should be retained or removed.]" \
  --disable-renumber-headings"[Looks for occurrences of sequential <h1> or <h2> tags. The tags are renumbered to prevent splitting in the middle of chapter headings.]" \
  --replace-scene-breaks="[Replace scene breaks with the specified text. By default, the text from the input document is used.]":"Replace scene breaks with the specified text. By default, the text from the input document is used.": \
  --sr1-search="[Search pattern (regular expression) to be replaced with sr1-replace.]":"Search pattern (regular expression) to be replaced with sr1-replace.": \
  --sr1-replace="[Replacement to replace the text found with sr1-search.]":"Replacement to replace the text found with sr1-search.": \
  --sr2-search="[Search pattern (regular expression) to be replaced with sr2-replace.]":"Search pattern (regular expression) to be replaced with sr2-replace.": \
  --sr2-replace="[Replacement to replace the text found with sr2-search.]":"Replacement to replace the text found with sr2-search.": \
  --sr3-search="[Search pattern (regular expression) to be replaced with sr3-replace.]":"Search pattern (regular expression) to be replaced with sr3-replace.": \
  --sr3-replace="[Replacement to replace the text found with sr3-search.]":"Replacement to replace the text found with sr3-search.": \
  --search-replace="[Path to a file containing search and replace regular expressions. The file must contain alternating lines of regular expression followed by replacement pattern (which can be an empty line). The regular expression must be in the python regex syntax and the file must be UTF-8 encoded.]":"Path to a file containing search and replace regular expressions. The file must contain alternating lines of regular expression followed by replacement pattern (which can be an empty line). The regular expression must be in the python regex syntax and the file must be UTF-8 encoded.":_files \
  --chapter="[An XPath expression to detect chapter titles. The default is to consider <h1> or <h2> tags that contain the words 'chapter','book','section', 'prologue', 'epilogue', or 'part' as chapter titles as well as any tags that have class='chapter'. The expression used must evaluate to a list of elements. To disable chapter detection, use the expression '/'. See the XPath Tutorial in the calibre User Manual for further help on using this feature.]":"An XPath expression to detect chapter titles. The default is to consider <h1> or <h2> tags that contain the words 'chapter','book','section', 'prologue', 'epilogue', or 'part' as chapter titles as well as any tags that have class='chapter'. The expression used must evaluate to a list of elements. To disable chapter detection, use the expression '/'. See the XPath Tutorial in the calibre User Manual for further help on using this feature.": \
  --chapter-mark="[Specify how to mark detected chapters. A value of 'pagebreak' will insert page breaks before chapters. A value of 'rule' will insert a line before chapters. A value of 'none' will disable chapter marking and a value of 'both' will use both page breaks and lines to mark chapters.]":"Specify how to mark detected chapters. A value of 'pagebreak' will insert page breaks before chapters. A value of 'rule' will insert a line before chapters. A value of 'none' will disable chapter marking and a value of 'both' will use both page breaks and lines to mark chapters.":(pagebreak|rule|both|none) \
  --prefer-metadata-cover"[Use the cover detected from the source file in preference to the specified cover.]" \
  --remove-first-image"[Remove the first image from the input ebook. Useful if the input document has a cover image that is not identified as a cover. In this case, if you set a cover in calibre, the output document will end up with two cover images if you do not specify this option.]" \
  --insert-metadata"[Insert the book metadata at the start of the book. This is useful if your ebook reader does not support displaying/searching metadata directly.]" \
  --page-breaks-before="[An XPath expression. Page breaks are inserted before the specified elements. To disable use the expression\: /]":"An XPath expression. Page breaks are inserted before the specified elements. To disable use the expression\: /": \
  --disable-remove-fake-margins"[Some documents specify page margins by specifying a left and right margin on each individual paragraph. calibre will try to detect and remove these margins. Sometimes, this can cause the removal of margins that should not have been removed. In this case you can disable the removal.]" \
  --start-reading-at="[An XPath expression to detect the location in the document at which to start reading. Some ebook reading programs (most prominently the Kindle) use this location as the position at which to open the book. See the XPath tutorial in the calibre User Manual for further help using this feature.]":"An XPath expression to detect the location in the document at which to start reading. Some ebook reading programs (most prominently the Kindle) use this location as the position at which to open the book. See the XPath tutorial in the calibre User Manual for further help using this feature.": \
  --level1-toc="[XPath expression that specifies all tags that should be added to the Table of Contents at level one. If this is specified, it takes precedence over other forms of auto-detection. See the XPath Tutorial in the calibre User Manual for examples.]":"XPath expression that specifies all tags that should be added to the Table of Contents at level one. If this is specified, it takes precedence over other forms of auto-detection. See the XPath Tutorial in the calibre User Manual for examples.": \
  --level2-toc="[XPath expression that specifies all tags that should be added to the Table of Contents at level two. Each entry is added under the previous level one entry. See the XPath Tutorial in the calibre User Manual for examples.]":"XPath expression that specifies all tags that should be added to the Table of Contents at level two. Each entry is added under the previous level one entry. See the XPath Tutorial in the calibre User Manual for examples.": \
  --level3-toc="[XPath expression that specifies all tags that should be added to the Table of Contents at level three. Each entry is added under the previous level two entry. See the XPath Tutorial in the calibre User Manual for examples.]":"XPath expression that specifies all tags that should be added to the Table of Contents at level three. Each entry is added under the previous level two entry. See the XPath Tutorial in the calibre User Manual for examples.": \
  --toc-threshold="[If fewer than this number of chapters is detected, then links are added to the Table of Contents. Default\: 6]":"If fewer than this number of chapters is detected, then links are added to the Table of Contents. Default\: 6": \
  --max-toc-links="[Maximum number of links to insert into the TOC. Set to 0 to disable. Default is\: 50. Links are only added to the TOC if less than the threshold number of chapters were detected.]":"Maximum number of links to insert into the TOC. Set to 0 to disable. Default is\: 50. Links are only added to the TOC if less than the threshold number of chapters were detected.": \
  --no-chapters-in-toc"[Don't add auto-detected chapters to the Table of Contents.]" \
  --use-auto-toc"[Normally, if the source file already has a Table of Contents, it is used in preference to the auto-generated one. With this option, the auto-generated one is always used.]" \
  --toc-filter="[Remove entries from the Table of Contents whose titles match the specified regular expression. Matching entries and all their children are removed.]":"Remove entries from the Table of Contents whose titles match the specified regular expression. Matching entries and all their children are removed.": \
  --duplicate-links-in-toc"[When creating a TOC from links in the input document, allow duplicate entries, i.e. allow more than one entry with the same text, provided that they point to a different location.]" \
  --title="[Set the title.]":"Set the title.": \
  --authors="[Set the authors. Multiple authors should be separated by ampersands.]":"Set the authors. Multiple authors should be separated by ampersands.": \
  --title-sort="[The version of the title to be used for sorting. ]":"The version of the title to be used for sorting. ": \
  --author-sort="[String to be used when sorting by author. ]":"String to be used when sorting by author. ": \
  --cover="[Set the cover to the specified file or URL]":"Set the cover to the specified file or URL":'_files -g "*.gif *.bmp *.jpg *.jpeg *.png *.GIF *.BMP *.JPG *.JPEG *.PNG"' \
  --comments="[Set the ebook description.]":"Set the ebook description.": \
  --publisher="[Set the ebook publisher.]":"Set the ebook publisher.": \
  --series="[Set the series this ebook belongs to.]":"Set the series this ebook belongs to.": \
  --series-index="[Set the index of the book in this series.]":"Set the index of the book in this series.": \
  --rating="[Set the rating. Should be a number between 1 and 5.]":"Set the rating. Should be a number between 1 and 5.": \
  --isbn="[Set the ISBN of the book.]":"Set the ISBN of the book.": \
  --tags="[Set the tags for the book. Should be a comma separated list.]":"Set the tags for the book. Should be a comma separated list.": \
  --book-producer="[Set the book producer.]":"Set the book producer.": \
  --language="[Set the language.]":"Set the language.": \
  --pubdate="[Set the publication date.]":"Set the publication date.": \
  --timestamp="[Set the book timestamp (no longer used anywhere)]":"Set the book timestamp (no longer used anywhere)": \
  {--read-metadata-from-opf=,--from-opf=,-m+}"[Read metadata from the specified OPF file. Metadata read from this file will override any metadata in the source file.]":"Read metadata from the specified OPF file. Metadata read from this file will override any metadata in the source file.": \
  {--verbose,-v}"[Level of verbosity. Specify multiple times for greater verbosity. Specifying it twice will result in full verbosity, once medium verbosity and zero times least verbosity.]" \
  {--debug-pipeline=,-d+}"[Save the output from different stages of the conversion pipeline to the specified directory. Useful if you are unsure at which stage of the conversion process a bug is occurring.]":"Save the output from different stages of the conversion pipeline to the specified directory. Useful if you are unsure at which stage of the conversion process a bug is occurring.":'_path_files -/' \
  --pretty-print"[If specified, the output plugin will try to create output that is as human readable as possible. May not have any effect for some output plugins.]" \
  --input-encoding="[Specify the character encoding of the input document. If set this option will override any encoding declared by the document itself. Particularly useful for documents that do not declare an encoding or that have erroneous encoding declarations.]":"Specify the character encoding of the input document. If set this option will override any encoding declared by the document itself. Particularly useful for documents that do not declare an encoding or that have erroneous encoding declarations.": 
}

_ebc_input_opts_cbc() {
  _arguments -s \
  --wide"[Keep aspect ratio and scale image using screen height as image width for viewing in landscape mode.]" \
  --right2left"[Used for right-to-left publications like manga. Causes landscape pages to be split into portrait pages from right to left.]" \
  --colors="[Reduce the number of colors used in the image. This works only if you choose the PNG output format. It is useful to reduce file sizes. Set to zero to turn off. Maximum value is 256. It is off by default.]":"Reduce the number of colors used in the image. This works only if you choose the PNG output format. It is useful to reduce file sizes. Set to zero to turn off. Maximum value is 256. It is off by default.": \
  --dont-sharpen"[Disable sharpening.]" \
  --output-format="[The format that images in the created ebook are converted to. You can experiment to see which format gives you optimal size and look on your device.]":"The format that images in the created ebook are converted to. You can experiment to see which format gives you optimal size and look on your device.":(png|jpg) \
  --despeckle"[Enable Despeckle. Reduces speckle noise. May greatly increase processing time.]" \
  --landscape"[Don't split landscape images into two portrait images]" \
  --dont-add-comic-pages-to-toc"[When converting a CBC do not add links to each page to the TOC. Note this only applies if the TOC has more than one section]" \
  --comic-image-size="[Specify the image size as widthxheight pixels. Normally, an image size is automatically calculated from the output profile, this option overrides it.]":"Specify the image size as widthxheight pixels. Normally, an image size is automatically calculated from the output profile, this option overrides it.": \
  --dont-normalize"[Disable normalize (improve contrast) color range for pictures. Default\: False]" \
  --dont-grayscale"[Do not convert the image to grayscale (black and white)]" \
  --disable-trim"[Disable trimming of comic pages. For some comics, trimming might remove content as well as borders.]" \
  --no-sort"[Don't sort the files found in the comic alphabetically by name. Instead use the order they were added to the comic.]" \
  --keep-aspect-ratio"[Maintain picture aspect ratio. Default is to fill the screen.]" \
  --no-process"[Apply no processing to the image]" 
}

_ebc_input_opts_rtf() {
  _arguments -s \
  --ignore-wmf"[Ignore WMF images instead of replacing them with a placeholder image.]" 
}

_ebc_input_opts_text() {
  _arguments -s \
  --txt-in-remove-indents"[Normally extra space at the beginning of lines is retained. With this option they will be removed.]" \
  --markdown-extensions="[Enable extensions to markdown syntax. Extensions are formatting that is not part of the standard markdown format. The extensions enabled by default\: footnotes, tables, toc. To learn more about markdown extensions, see http\://pythonhosted.org/Markdown/extensions/index.html This should be a comma separated list of extensions to enable\: * abbr\: Abbreviations * admonition\: Support admonitions * attr_list\: Add attribute to HTML tags * def_list\: Definition lists * extra\: Enables various common extensions * fenced_code\: Alternative code block syntax * footnotes\: Footnotes * headerid\: Allow ids as part of a header * meta\: Metadata in the document * tables\: Support tables * toc\: Generate a table of contents * wikilinks\: Wiki style links]":"Enable extensions to markdown syntax. Extensions are formatting that is not part of the standard markdown format. The extensions enabled by default\: footnotes, tables, toc. To learn more about markdown extensions, see http\://pythonhosted.org/Markdown/extensions/index.html This should be a comma separated list of extensions to enable\: * abbr\: Abbreviations * admonition\: Support admonitions * attr_list\: Add attribute to HTML tags * def_list\: Definition lists * extra\: Enables various common extensions * fenced_code\: Alternative code block syntax * footnotes\: Footnotes * headerid\: Allow ids as part of a header * meta\: Metadata in the document * tables\: Support tables * toc\: Generate a table of contents * wikilinks\: Wiki style links": \
  --preserve-spaces"[Normally extra spaces are condensed into a single space. With this option all spaces will be displayed.]" \
  --formatting-type="[Formatting used within the document.* auto\: Automatically decide which formatting processor to use. * plain\: Do not process the document formatting. Everything is a paragraph and no styling is applied. * heuristic\: Process using heuristics to determine formatting such as chapter headings and italic text. * textile\: Processing using textile formatting. * markdown\: Processing using markdown formatting. To learn more about markdown see http\://daringfireball.net/projects/markdown/]":"Formatting used within the document.* auto\: Automatically decide which formatting processor to use. * plain\: Do not process the document formatting. Everything is a paragraph and no styling is applied. * heuristic\: Process using heuristics to determine formatting such as chapter headings and italic text. * textile\: Processing using textile formatting. * markdown\: Processing using markdown formatting. To learn more about markdown see http\://daringfireball.net/projects/markdown/":(auto|plain|heuristic|textile|markdown) \
  --paragraph-type="[Paragraph structure. choices are ('auto', 'block', 'single', 'print', 'unformatted', 'off') * auto\: Try to auto detect paragraph type. * block\: Treat a blank line as a paragraph break. * single\: Assume every line is a paragraph. * print\:  Assume every line starting with 2+ spaces or a tab starts a paragraph. * unformatted\: Most lines have hard line breaks, few/no blank lines or indents. Tries to determine structure and reformat the differentiate elements. * off\: Don't modify the paragraph structure. This is useful when combined with Markdown or Textile formatting to ensure no formatting is lost.]":"Paragraph structure. choices are ('auto', 'block', 'single', 'print', 'unformatted', 'off') * auto\: Try to auto detect paragraph type. * block\: Treat a blank line as a paragraph break. * single\: Assume every line is a paragraph. * print\:  Assume every line starting with 2+ spaces or a tab starts a paragraph. * unformatted\: Most lines have hard line breaks, few/no blank lines or indents. Tries to determine structure and reformat the differentiate elements. * off\: Don't modify the paragraph structure. This is useful when combined with Markdown or Textile formatting to ensure no formatting is lost.":(auto|block|single|print|unformatted|off) 
}

_ebc_input_opts_htm() {
  _arguments -s \
  --breadth-first"[Traverse links in HTML files breadth first. Normally, they are traversed depth first.]" \
  --dont-package"[Normally this input plugin re-arranges all the input files into a standard folder hierarchy. Only use this option if you know what you are doing as it can result in various nasty side effects in the rest of the conversion pipeline.]" \
  --max-levels="[Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.]":"Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.": 
}

_ebc_input_opts_cbr() {
  _arguments -s \
  --dont-normalize"[Disable normalize (improve contrast) color range for pictures. Default\: False]" \
  --wide"[Keep aspect ratio and scale image using screen height as image width for viewing in landscape mode.]" \
  --colors="[Reduce the number of colors used in the image. This works only if you choose the PNG output format. It is useful to reduce file sizes. Set to zero to turn off. Maximum value is 256. It is off by default.]":"Reduce the number of colors used in the image. This works only if you choose the PNG output format. It is useful to reduce file sizes. Set to zero to turn off. Maximum value is 256. It is off by default.": \
  --dont-grayscale"[Do not convert the image to grayscale (black and white)]" \
  --output-format="[The format that images in the created ebook are converted to. You can experiment to see which format gives you optimal size and look on your device.]":"The format that images in the created ebook are converted to. You can experiment to see which format gives you optimal size and look on your device.":(png|jpg) \
  --no-process"[Apply no processing to the image]" \
  --right2left"[Used for right-to-left publications like manga. Causes landscape pages to be split into portrait pages from right to left.]" \
  --comic-image-size="[Specify the image size as widthxheight pixels. Normally, an image size is automatically calculated from the output profile, this option overrides it.]":"Specify the image size as widthxheight pixels. Normally, an image size is automatically calculated from the output profile, this option overrides it.": \
  --no-sort"[Don't sort the files found in the comic alphabetically by name. Instead use the order they were added to the comic.]" \
  --dont-sharpen"[Disable sharpening.]" \
  --keep-aspect-ratio"[Maintain picture aspect ratio. Default is to fill the screen.]" \
  --despeckle"[Enable Despeckle. Reduces speckle noise. May greatly increase processing time.]" \
  --disable-trim"[Disable trimming of comic pages. For some comics, trimming might remove content as well as borders.]" \
  --landscape"[Don't split landscape images into two portrait images]" \
  --dont-add-comic-pages-to-toc"[When converting a CBC do not add links to each page to the TOC. Note this only applies if the TOC has more than one section]" 
}

_ebc_input_opts_cbz() {
  _arguments -s \
  --no-sort"[Don't sort the files found in the comic alphabetically by name. Instead use the order they were added to the comic.]" \
  --disable-trim"[Disable trimming of comic pages. For some comics, trimming might remove content as well as borders.]" \
  --keep-aspect-ratio"[Maintain picture aspect ratio. Default is to fill the screen.]" \
  --output-format="[The format that images in the created ebook are converted to. You can experiment to see which format gives you optimal size and look on your device.]":"The format that images in the created ebook are converted to. You can experiment to see which format gives you optimal size and look on your device.":(png|jpg) \
  --dont-grayscale"[Do not convert the image to grayscale (black and white)]" \
  --dont-normalize"[Disable normalize (improve contrast) color range for pictures. Default\: False]" \
  --colors="[Reduce the number of colors used in the image. This works only if you choose the PNG output format. It is useful to reduce file sizes. Set to zero to turn off. Maximum value is 256. It is off by default.]":"Reduce the number of colors used in the image. This works only if you choose the PNG output format. It is useful to reduce file sizes. Set to zero to turn off. Maximum value is 256. It is off by default.": \
  --dont-sharpen"[Disable sharpening.]" \
  --dont-add-comic-pages-to-toc"[When converting a CBC do not add links to each page to the TOC. Note this only applies if the TOC has more than one section]" \
  --wide"[Keep aspect ratio and scale image using screen height as image width for viewing in landscape mode.]" \
  --despeckle"[Enable Despeckle. Reduces speckle noise. May greatly increase processing time.]" \
  --right2left"[Used for right-to-left publications like manga. Causes landscape pages to be split into portrait pages from right to left.]" \
  --landscape"[Don't split landscape images into two portrait images]" \
  --no-process"[Apply no processing to the image]" \
  --comic-image-size="[Specify the image size as widthxheight pixels. Normally, an image size is automatically calculated from the output profile, this option overrides it.]":"Specify the image size as widthxheight pixels. Normally, an image size is automatically calculated from the output profile, this option overrides it.": 
}

_ebc_input_opts_markdown() {
  _arguments -s \
  --txt-in-remove-indents"[Normally extra space at the beginning of lines is retained. With this option they will be removed.]" \
  --formatting-type="[Formatting used within the document.* auto\: Automatically decide which formatting processor to use. * plain\: Do not process the document formatting. Everything is a paragraph and no styling is applied. * heuristic\: Process using heuristics to determine formatting such as chapter headings and italic text. * textile\: Processing using textile formatting. * markdown\: Processing using markdown formatting. To learn more about markdown see http\://daringfireball.net/projects/markdown/]":"Formatting used within the document.* auto\: Automatically decide which formatting processor to use. * plain\: Do not process the document formatting. Everything is a paragraph and no styling is applied. * heuristic\: Process using heuristics to determine formatting such as chapter headings and italic text. * textile\: Processing using textile formatting. * markdown\: Processing using markdown formatting. To learn more about markdown see http\://daringfireball.net/projects/markdown/":(auto|plain|heuristic|textile|markdown) \
  --markdown-extensions="[Enable extensions to markdown syntax. Extensions are formatting that is not part of the standard markdown format. The extensions enabled by default\: footnotes, tables, toc. To learn more about markdown extensions, see http\://pythonhosted.org/Markdown/extensions/index.html This should be a comma separated list of extensions to enable\: * abbr\: Abbreviations * admonition\: Support admonitions * attr_list\: Add attribute to HTML tags * def_list\: Definition lists * extra\: Enables various common extensions * fenced_code\: Alternative code block syntax * footnotes\: Footnotes * headerid\: Allow ids as part of a header * meta\: Metadata in the document * tables\: Support tables * toc\: Generate a table of contents * wikilinks\: Wiki style links]":"Enable extensions to markdown syntax. Extensions are formatting that is not part of the standard markdown format. The extensions enabled by default\: footnotes, tables, toc. To learn more about markdown extensions, see http\://pythonhosted.org/Markdown/extensions/index.html This should be a comma separated list of extensions to enable\: * abbr\: Abbreviations * admonition\: Support admonitions * attr_list\: Add attribute to HTML tags * def_list\: Definition lists * extra\: Enables various common extensions * fenced_code\: Alternative code block syntax * footnotes\: Footnotes * headerid\: Allow ids as part of a header * meta\: Metadata in the document * tables\: Support tables * toc\: Generate a table of contents * wikilinks\: Wiki style links": \
  --paragraph-type="[Paragraph structure. choices are ('auto', 'block', 'single', 'print', 'unformatted', 'off') * auto\: Try to auto detect paragraph type. * block\: Treat a blank line as a paragraph break. * single\: Assume every line is a paragraph. * print\:  Assume every line starting with 2+ spaces or a tab starts a paragraph. * unformatted\: Most lines have hard line breaks, few/no blank lines or indents. Tries to determine structure and reformat the differentiate elements. * off\: Don't modify the paragraph structure. This is useful when combined with Markdown or Textile formatting to ensure no formatting is lost.]":"Paragraph structure. choices are ('auto', 'block', 'single', 'print', 'unformatted', 'off') * auto\: Try to auto detect paragraph type. * block\: Treat a blank line as a paragraph break. * single\: Assume every line is a paragraph. * print\:  Assume every line starting with 2+ spaces or a tab starts a paragraph. * unformatted\: Most lines have hard line breaks, few/no blank lines or indents. Tries to determine structure and reformat the differentiate elements. * off\: Don't modify the paragraph structure. This is useful when combined with Markdown or Textile formatting to ensure no formatting is lost.":(auto|block|single|print|unformatted|off) \
  --preserve-spaces"[Normally extra spaces are condensed into a single space. With this option all spaces will be displayed.]" 
}

_ebc_input_opts_txt() {
  _arguments -s \
  --formatting-type="[Formatting used within the document.* auto\: Automatically decide which formatting processor to use. * plain\: Do not process the document formatting. Everything is a paragraph and no styling is applied. * heuristic\: Process using heuristics to determine formatting such as chapter headings and italic text. * textile\: Processing using textile formatting. * markdown\: Processing using markdown formatting. To learn more about markdown see http\://daringfireball.net/projects/markdown/]":"Formatting used within the document.* auto\: Automatically decide which formatting processor to use. * plain\: Do not process the document formatting. Everything is a paragraph and no styling is applied. * heuristic\: Process using heuristics to determine formatting such as chapter headings and italic text. * textile\: Processing using textile formatting. * markdown\: Processing using markdown formatting. To learn more about markdown see http\://daringfireball.net/projects/markdown/":(auto|plain|heuristic|textile|markdown) \
  --paragraph-type="[Paragraph structure. choices are ('auto', 'block', 'single', 'print', 'unformatted', 'off') * auto\: Try to auto detect paragraph type. * block\: Treat a blank line as a paragraph break. * single\: Assume every line is a paragraph. * print\:  Assume every line starting with 2+ spaces or a tab starts a paragraph. * unformatted\: Most lines have hard line breaks, few/no blank lines or indents. Tries to determine structure and reformat the differentiate elements. * off\: Don't modify the paragraph structure. This is useful when combined with Markdown or Textile formatting to ensure no formatting is lost.]":"Paragraph structure. choices are ('auto', 'block', 'single', 'print', 'unformatted', 'off') * auto\: Try to auto detect paragraph type. * block\: Treat a blank line as a paragraph break. * single\: Assume every line is a paragraph. * print\:  Assume every line starting with 2+ spaces or a tab starts a paragraph. * unformatted\: Most lines have hard line breaks, few/no blank lines or indents. Tries to determine structure and reformat the differentiate elements. * off\: Don't modify the paragraph structure. This is useful when combined with Markdown or Textile formatting to ensure no formatting is lost.":(auto|block|single|print|unformatted|off) \
  --txt-in-remove-indents"[Normally extra space at the beginning of lines is retained. With this option they will be removed.]" \
  --markdown-extensions="[Enable extensions to markdown syntax. Extensions are formatting that is not part of the standard markdown format. The extensions enabled by default\: footnotes, tables, toc. To learn more about markdown extensions, see http\://pythonhosted.org/Markdown/extensions/index.html This should be a comma separated list of extensions to enable\: * abbr\: Abbreviations * admonition\: Support admonitions * attr_list\: Add attribute to HTML tags * def_list\: Definition lists * extra\: Enables various common extensions * fenced_code\: Alternative code block syntax * footnotes\: Footnotes * headerid\: Allow ids as part of a header * meta\: Metadata in the document * tables\: Support tables * toc\: Generate a table of contents * wikilinks\: Wiki style links]":"Enable extensions to markdown syntax. Extensions are formatting that is not part of the standard markdown format. The extensions enabled by default\: footnotes, tables, toc. To learn more about markdown extensions, see http\://pythonhosted.org/Markdown/extensions/index.html This should be a comma separated list of extensions to enable\: * abbr\: Abbreviations * admonition\: Support admonitions * attr_list\: Add attribute to HTML tags * def_list\: Definition lists * extra\: Enables various common extensions * fenced_code\: Alternative code block syntax * footnotes\: Footnotes * headerid\: Allow ids as part of a header * meta\: Metadata in the document * tables\: Support tables * toc\: Generate a table of contents * wikilinks\: Wiki style links": \
  --preserve-spaces"[Normally extra spaces are condensed into a single space. With this option all spaces will be displayed.]" 
}

_ebc_input_opts_shtm() {
  _arguments -s \
  --max-levels="[Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.]":"Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.": \
  --dont-package"[Normally this input plugin re-arranges all the input files into a standard folder hierarchy. Only use this option if you know what you are doing as it can result in various nasty side effects in the rest of the conversion pipeline.]" \
  --breadth-first"[Traverse links in HTML files breadth first. Normally, they are traversed depth first.]" 
}

_ebc_input_opts_shtml() {
  _arguments -s \
  --max-levels="[Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.]":"Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.": \
  --breadth-first"[Traverse links in HTML files breadth first. Normally, they are traversed depth first.]" \
  --dont-package"[Normally this input plugin re-arranges all the input files into a standard folder hierarchy. Only use this option if you know what you are doing as it can result in various nasty side effects in the rest of the conversion pipeline.]" 
}

_ebc_input_opts_html() {
  _arguments -s \
  --max-levels="[Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.]":"Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.": \
  --dont-package"[Normally this input plugin re-arranges all the input files into a standard folder hierarchy. Only use this option if you know what you are doing as it can result in various nasty side effects in the rest of the conversion pipeline.]" \
  --breadth-first"[Traverse links in HTML files breadth first. Normally, they are traversed depth first.]" 
}

_ebc_input_opts_xhtm() {
  _arguments -s \
  --dont-package"[Normally this input plugin re-arranges all the input files into a standard folder hierarchy. Only use this option if you know what you are doing as it can result in various nasty side effects in the rest of the conversion pipeline.]" \
  --max-levels="[Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.]":"Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.": \
  --breadth-first"[Traverse links in HTML files breadth first. Normally, they are traversed depth first.]" 
}

_ebc_input_opts_xhtml() {
  _arguments -s \
  --max-levels="[Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.]":"Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.": \
  --breadth-first"[Traverse links in HTML files breadth first. Normally, they are traversed depth first.]" \
  --dont-package"[Normally this input plugin re-arranges all the input files into a standard folder hierarchy. Only use this option if you know what you are doing as it can result in various nasty side effects in the rest of the conversion pipeline.]" 
}

_ebc_input_opts_fb2() {
  _arguments -s \
  --no-inline-fb2-toc"[Do not insert a Table of Contents at the beginning of the book.]" 
}

_ebc_input_opts_docx() {
  _arguments -s \
  --docx-no-cover"[Normally, if a large image is present at the start of the document that looks like a cover, it will be removed from the document and used as the cover for created ebook. This option turns off that behavior.]" \
  --docx-inline-subsup"[Render superscripts and subscripts so that they do not affect the line height.]" \
  --docx-no-pagebreaks-between-notes"[Do not insert a page break after every endnote.]" 
}

_ebc_input_opts_txtz() {
  _arguments -s \
  --markdown-extensions="[Enable extensions to markdown syntax. Extensions are formatting that is not part of the standard markdown format. The extensions enabled by default\: footnotes, tables, toc. To learn more about markdown extensions, see http\://pythonhosted.org/Markdown/extensions/index.html This should be a comma separated list of extensions to enable\: * abbr\: Abbreviations * admonition\: Support admonitions * attr_list\: Add attribute to HTML tags * def_list\: Definition lists * extra\: Enables various common extensions * fenced_code\: Alternative code block syntax * footnotes\: Footnotes * headerid\: Allow ids as part of a header * meta\: Metadata in the document * tables\: Support tables * toc\: Generate a table of contents * wikilinks\: Wiki style links]":"Enable extensions to markdown syntax. Extensions are formatting that is not part of the standard markdown format. The extensions enabled by default\: footnotes, tables, toc. To learn more about markdown extensions, see http\://pythonhosted.org/Markdown/extensions/index.html This should be a comma separated list of extensions to enable\: * abbr\: Abbreviations * admonition\: Support admonitions * attr_list\: Add attribute to HTML tags * def_list\: Definition lists * extra\: Enables various common extensions * fenced_code\: Alternative code block syntax * footnotes\: Footnotes * headerid\: Allow ids as part of a header * meta\: Metadata in the document * tables\: Support tables * toc\: Generate a table of contents * wikilinks\: Wiki style links": \
  --preserve-spaces"[Normally extra spaces are condensed into a single space. With this option all spaces will be displayed.]" \
  --formatting-type="[Formatting used within the document.* auto\: Automatically decide which formatting processor to use. * plain\: Do not process the document formatting. Everything is a paragraph and no styling is applied. * heuristic\: Process using heuristics to determine formatting such as chapter headings and italic text. * textile\: Processing using textile formatting. * markdown\: Processing using markdown formatting. To learn more about markdown see http\://daringfireball.net/projects/markdown/]":"Formatting used within the document.* auto\: Automatically decide which formatting processor to use. * plain\: Do not process the document formatting. Everything is a paragraph and no styling is applied. * heuristic\: Process using heuristics to determine formatting such as chapter headings and italic text. * textile\: Processing using textile formatting. * markdown\: Processing using markdown formatting. To learn more about markdown see http\://daringfireball.net/projects/markdown/":(auto|plain|heuristic|textile|markdown) \
  --paragraph-type="[Paragraph structure. choices are ('auto', 'block', 'single', 'print', 'unformatted', 'off') * auto\: Try to auto detect paragraph type. * block\: Treat a blank line as a paragraph break. * single\: Assume every line is a paragraph. * print\:  Assume every line starting with 2+ spaces or a tab starts a paragraph. * unformatted\: Most lines have hard line breaks, few/no blank lines or indents. Tries to determine structure and reformat the differentiate elements. * off\: Don't modify the paragraph structure. This is useful when combined with Markdown or Textile formatting to ensure no formatting is lost.]":"Paragraph structure. choices are ('auto', 'block', 'single', 'print', 'unformatted', 'off') * auto\: Try to auto detect paragraph type. * block\: Treat a blank line as a paragraph break. * single\: Assume every line is a paragraph. * print\:  Assume every line starting with 2+ spaces or a tab starts a paragraph. * unformatted\: Most lines have hard line breaks, few/no blank lines or indents. Tries to determine structure and reformat the differentiate elements. * off\: Don't modify the paragraph structure. This is useful when combined with Markdown or Textile formatting to ensure no formatting is lost.":(auto|block|single|print|unformatted|off) \
  --txt-in-remove-indents"[Normally extra space at the beginning of lines is retained. With this option they will be removed.]" 
}

_ebc_input_opts_downloaded_recipe() {
  _arguments -s \
  --lrf"[Optimize fetching for subsequent conversion to LRF.]" \
  --username="[Username for sites that require a login to access content.]":"Username for sites that require a login to access content.": \
  --password="[Password for sites that require a login to access content.]":"Password for sites that require a login to access content.": \
  --test"[Useful for recipe development. Forces max_articles_per_feed to 2 and downloads at most 2 feeds. You can change the number of feeds and articles by supplying optional arguments. For example\: --test 3 1 will download at most 3 feeds and only 1 article per feed.]" \
  --dont-download-recipe"[Do not download latest version of builtin recipes from the calibre server]" 
}

_ebc_input_opts_recipe() {
  _arguments -s \
  --lrf"[Optimize fetching for subsequent conversion to LRF.]" \
  --dont-download-recipe"[Do not download latest version of builtin recipes from the calibre server]" \
  --test"[]" \
  --password="[Password for sites that require a login to access content.]":"Password for sites that require a login to access content.": \
  --username="[Username for sites that require a login to access content.]":"Username for sites that require a login to access content.": 
}

_ebc_input_opts_opf() {
  _arguments -s \
  --breadth-first"[Traverse links in HTML files breadth first. Normally, they are traversed depth first.]" \
  --max-levels="[Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.]":"Maximum levels of recursion when following links in HTML files. Must be non-negative. 0 implies that no links in the root HTML file are followed. Default is 5.": \
  --dont-package"[Normally this input plugin re-arranges all the input files into a standard folder hierarchy. Only use this option if you know what you are doing as it can result in various nasty side effects in the rest of the conversion pipeline.]" 
}

_ebc_input_opts_textile() {
  _arguments -s \
  --formatting-type="[Formatting used within the document.* auto\: Automatically decide which formatting processor to use. * plain\: Do not process the document formatting. Everything is a paragraph and no styling is applied. * heuristic\: Process using heuristics to determine formatting such as chapter headings and italic text. * textile\: Processing using textile formatting. * markdown\: Processing using markdown formatting. To learn more about markdown see http\://daringfireball.net/projects/markdown/]":"Formatting used within the document.* auto\: Automatically decide which formatting processor to use. * plain\: Do not process the document formatting. Everything is a paragraph and no styling is applied. * heuristic\: Process using heuristics to determine formatting such as chapter headings and italic text. * textile\: Processing using textile formatting. * markdown\: Processing using markdown formatting. To learn more about markdown see http\://daringfireball.net/projects/markdown/":(auto|plain|heuristic|textile|markdown) \
  --paragraph-type="[Paragraph structure. choices are ('auto', 'block', 'single', 'print', 'unformatted', 'off') * auto\: Try to auto detect paragraph type. * block\: Treat a blank line as a paragraph break. * single\: Assume every line is a paragraph. * print\:  Assume every line starting with 2+ spaces or a tab starts a paragraph. * unformatted\: Most lines have hard line breaks, few/no blank lines or indents. Tries to determine structure and reformat the differentiate elements. * off\: Don't modify the paragraph structure. This is useful when combined with Markdown or Textile formatting to ensure no formatting is lost.]":"Paragraph structure. choices are ('auto', 'block', 'single', 'print', 'unformatted', 'off') * auto\: Try to auto detect paragraph type. * block\: Treat a blank line as a paragraph break. * single\: Assume every line is a paragraph. * print\:  Assume every line starting with 2+ spaces or a tab starts a paragraph. * unformatted\: Most lines have hard line breaks, few/no blank lines or indents. Tries to determine structure and reformat the differentiate elements. * off\: Don't modify the paragraph structure. This is useful when combined with Markdown or Textile formatting to ensure no formatting is lost.":(auto|block|single|print|unformatted|off) \
  --txt-in-remove-indents"[Normally extra space at the beginning of lines is retained. With this option they will be removed.]" \
  --markdown-extensions="[Enable extensions to markdown syntax. Extensions are formatting that is not part of the standard markdown format. The extensions enabled by default\: footnotes, tables, toc. To learn more about markdown extensions, see http\://pythonhosted.org/Markdown/extensions/index.html This should be a comma separated list of extensions to enable\: * abbr\: Abbreviations * admonition\: Support admonitions * attr_list\: Add attribute to HTML tags * def_list\: Definition lists * extra\: Enables various common extensions * fenced_code\: Alternative code block syntax * footnotes\: Footnotes * headerid\: Allow ids as part of a header * meta\: Metadata in the document * tables\: Support tables * toc\: Generate a table of contents * wikilinks\: Wiki style links]":"Enable extensions to markdown syntax. Extensions are formatting that is not part of the standard markdown format. The extensions enabled by default\: footnotes, tables, toc. To learn more about markdown extensions, see http\://pythonhosted.org/Markdown/extensions/index.html This should be a comma separated list of extensions to enable\: * abbr\: Abbreviations * admonition\: Support admonitions * attr_list\: Add attribute to HTML tags * def_list\: Definition lists * extra\: Enables various common extensions * fenced_code\: Alternative code block syntax * footnotes\: Footnotes * headerid\: Allow ids as part of a header * meta\: Metadata in the document * tables\: Support tables * toc\: Generate a table of contents * wikilinks\: Wiki style links": \
  --preserve-spaces"[Normally extra spaces are condensed into a single space. With this option all spaces will be displayed.]" 
}

_ebc_input_opts_docm() {
  _arguments -s \
  --docx-no-cover"[Normally, if a large image is present at the start of the document that looks like a cover, it will be removed from the document and used as the cover for created ebook. This option turns off that behavior.]" \
  --docx-no-pagebreaks-between-notes"[Do not insert a page break after every endnote.]" \
  --docx-inline-subsup"[Render superscripts and subscripts so that they do not affect the line height.]" 
}

_ebc_input_opts_md() {
  _arguments -s \
  --preserve-spaces"[Normally extra spaces are condensed into a single space. With this option all spaces will be displayed.]" \
  --txt-in-remove-indents"[Normally extra space at the beginning of lines is retained. With this option they will be removed.]" \
  --formatting-type="[Formatting used within the document.* auto\: Automatically decide which formatting processor to use. * plain\: Do not process the document formatting. Everything is a paragraph and no styling is applied. * heuristic\: Process using heuristics to determine formatting such as chapter headings and italic text. * textile\: Processing using textile formatting. * markdown\: Processing using markdown formatting. To learn more about markdown see http\://daringfireball.net/projects/markdown/]":"Formatting used within the document.* auto\: Automatically decide which formatting processor to use. * plain\: Do not process the document formatting. Everything is a paragraph and no styling is applied. * heuristic\: Process using heuristics to determine formatting such as chapter headings and italic text. * textile\: Processing using textile formatting. * markdown\: Processing using markdown formatting. To learn more about markdown see http\://daringfireball.net/projects/markdown/":(auto|plain|heuristic|textile|markdown) \
  --paragraph-type="[Paragraph structure. choices are ('auto', 'block', 'single', 'print', 'unformatted', 'off') * auto\: Try to auto detect paragraph type. * block\: Treat a blank line as a paragraph break. * single\: Assume every line is a paragraph. * print\:  Assume every line starting with 2+ spaces or a tab starts a paragraph. * unformatted\: Most lines have hard line breaks, few/no blank lines or indents. Tries to determine structure and reformat the differentiate elements. * off\: Don't modify the paragraph structure. This is useful when combined with Markdown or Textile formatting to ensure no formatting is lost.]":"Paragraph structure. choices are ('auto', 'block', 'single', 'print', 'unformatted', 'off') * auto\: Try to auto detect paragraph type. * block\: Treat a blank line as a paragraph break. * single\: Assume every line is a paragraph. * print\:  Assume every line starting with 2+ spaces or a tab starts a paragraph. * unformatted\: Most lines have hard line breaks, few/no blank lines or indents. Tries to determine structure and reformat the differentiate elements. * off\: Don't modify the paragraph structure. This is useful when combined with Markdown or Textile formatting to ensure no formatting is lost.":(auto|block|single|print|unformatted|off) \
  --markdown-extensions="[Enable extensions to markdown syntax. Extensions are formatting that is not part of the standard markdown format. The extensions enabled by default\: footnotes, tables, toc. To learn more about markdown extensions, see http\://pythonhosted.org/Markdown/extensions/index.html This should be a comma separated list of extensions to enable\: * abbr\: Abbreviations * admonition\: Support admonitions * attr_list\: Add attribute to HTML tags * def_list\: Definition lists * extra\: Enables various common extensions * fenced_code\: Alternative code block syntax * footnotes\: Footnotes * headerid\: Allow ids as part of a header * meta\: Metadata in the document * tables\: Support tables * toc\: Generate a table of contents * wikilinks\: Wiki style links]":"Enable extensions to markdown syntax. Extensions are formatting that is not part of the standard markdown format. The extensions enabled by default\: footnotes, tables, toc. To learn more about markdown extensions, see http\://pythonhosted.org/Markdown/extensions/index.html This should be a comma separated list of extensions to enable\: * abbr\: Abbreviations * admonition\: Support admonitions * attr_list\: Add attribute to HTML tags * def_list\: Definition lists * extra\: Enables various common extensions * fenced_code\: Alternative code block syntax * footnotes\: Footnotes * headerid\: Allow ids as part of a header * meta\: Metadata in the document * tables\: Support tables * toc\: Generate a table of contents * wikilinks\: Wiki style links": 
}

_ebc_input_opts_pdf() {
  _arguments -s \
  --no-images"[Do not extract images from the document]" \
  --unwrap-factor="[Scale used to determine the length at which a line should be unwrapped. Valid values are a decimal between 0 and 1. The default is 0.45, just below the median line length.]":"Scale used to determine the length at which a line should be unwrapped. Valid values are a decimal between 0 and 1. The default is 0.45, just below the median line length.": \
  --new-pdf-engine"[Use the new PDF conversion engine. Currently not operational.]" 
}

_ebc_output_opts_fb2() {
  _arguments -s \
  --fb2-genre="[Genre for the book. Choices\: sf_history, sf_action, sf_epic, sf_heroic, sf_detective, sf_cyberpunk, sf_space, sf_social, sf_horror, sf_humor, sf_fantasy, sf, det_classic, det_police, det_action, det_irony, det_history, det_espionage, det_crime, det_political, det_maniac, det_hard, thriller, detective, prose_classic, prose_history, prose_contemporary, prose_counter, prose_rus_classic, prose_su_classics, love_contemporary, love_history, love_detective, love_short, love_erotica, adv_western, adv_history, adv_indian, adv_maritime, adv_geo, adv_animal, adventure, child_tale, child_verse, child_prose, child_sf, child_det, child_adv, child_education, children, poetry, dramaturgy, antique_ant, antique_european, antique_russian, antique_east, antique_myths, antique, sci_history, sci_psychology, sci_culture, sci_religion, sci_philosophy, sci_politics, sci_business, sci_juris, sci_linguistic, sci_medicine, sci_phys, sci_math, sci_chem, sci_biology, sci_tech, science, comp_www, comp_programming, comp_hard, comp_soft, comp_db, comp_osnet, computers, ref_encyc, ref_dict, ref_ref, ref_guide, reference, nonf_biography, nonf_publicism, nonf_criticism, design, nonfiction, religion_rel, religion_esoterics, religion_self, religion, humor_anecdote, humor_prose, humor_verse, humor, home_cooking, home_pets, home_crafts, home_entertain, home_health, home_garden, home_diy, home_sport, home_sex, home   See\: http\://www.fictionbook.org/index.php/Eng\:FictionBook_2.1_genres for a complete list with descriptions.]":"Genre for the book. Choices\: sf_history, sf_action, sf_epic, sf_heroic, sf_detective, sf_cyberpunk, sf_space, sf_social, sf_horror, sf_humor, sf_fantasy, sf, det_classic, det_police, det_action, det_irony, det_history, det_espionage, det_crime, det_political, det_maniac, det_hard, thriller, detective, prose_classic, prose_history, prose_contemporary, prose_counter, prose_rus_classic, prose_su_classics, love_contemporary, love_history, love_detective, love_short, love_erotica, adv_western, adv_history, adv_indian, adv_maritime, adv_geo, adv_animal, adventure, child_tale, child_verse, child_prose, child_sf, child_det, child_adv, child_education, children, poetry, dramaturgy, antique_ant, antique_european, antique_russian, antique_east, antique_myths, antique, sci_history, sci_psychology, sci_culture, sci_religion, sci_philosophy, sci_politics, sci_business, sci_juris, sci_linguistic, sci_medicine, sci_phys, sci_math, sci_chem, sci_biology, sci_tech, science, comp_www, comp_programming, comp_hard, comp_soft, comp_db, comp_osnet, computers, ref_encyc, ref_dict, ref_ref, ref_guide, reference, nonf_biography, nonf_publicism, nonf_criticism, design, nonfiction, religion_rel, religion_esoterics, religion_self, religion, humor_anecdote, humor_prose, humor_verse, humor, home_cooking, home_pets, home_crafts, home_entertain, home_health, home_garden, home_diy, home_sport, home_sex, home   See\: http\://www.fictionbook.org/index.php/Eng\:FictionBook_2.1_genres for a complete list with descriptions.":(sf_history|sf_action|sf_epic|sf_heroic|sf_detective|sf_cyberpunk|sf_space|sf_social|sf_horror|sf_humor|sf_fantasy|sf|det_classic|det_police|det_action|det_irony|det_history|det_espionage|det_crime|det_political|det_maniac|det_hard|thriller|detective|prose_classic|prose_history|prose_contemporary|prose_counter|prose_rus_classic|prose_su_classics|love_contemporary|love_history|love_detective|love_short|love_erotica|adv_western|adv_history|adv_indian|adv_maritime|adv_geo|adv_animal|adventure|child_tale|child_verse|child_prose|child_sf|child_det|child_adv|child_education|children|poetry|dramaturgy|antique_ant|antique_european|antique_russian|antique_east|antique_myths|antique|sci_history|sci_psychology|sci_culture|sci_religion|sci_philosophy|sci_politics|sci_business|sci_juris|sci_linguistic|sci_medicine|sci_phys|sci_math|sci_chem|sci_biology|sci_tech|science|comp_www|comp_programming|comp_hard|comp_soft|comp_db|comp_osnet|computers|ref_encyc|ref_dict|ref_ref|ref_guide|reference|nonf_biography|nonf_publicism|nonf_criticism|design|nonfiction|religion_rel|religion_esoterics|religion_self|religion|humor_anecdote|humor_prose|humor_verse|humor|home_cooking|home_pets|home_crafts|home_entertain|home_health|home_garden|home_diy|home_sport|home_sex|home) \
  --sectionize="[Specify the sectionization of elements. A value of 'nothing' turns the book into a single section. A value of 'files' turns each file into a separate section; use this if your device is having trouble. A value of 'Table of Contents' turns the entries in the Table of Contents into titles and creates sections; if it fails, adjust the 'Structure Detection' and/or 'Table of Contents' settings (turn on 'Force use of auto-generated Table of Contents').]":"Specify the sectionization of elements. A value of 'nothing' turns the book into a single section. A value of 'files' turns each file into a separate section; use this if your device is having trouble. A value of 'Table of Contents' turns the entries in the Table of Contents into titles and creates sections; if it fails, adjust the 'Structure Detection' and/or 'Table of Contents' settings (turn on 'Force use of auto-generated Table of Contents').":(toc|files|nothing) 
}

_ebc_output_opts_docx() {
  _arguments -s \
  --extract-to="[Extract the contents of the generated DOCX file to the specified directory. The contents of the directory are first deleted, so be careful.]":"Extract the contents of the generated DOCX file to the specified directory. The contents of the directory are first deleted, so be careful.":'_path_files -/' \
  --docx-custom-page-size="[Custom size of the document. Use the form widthxheight EG. '123x321' to specify the width and height (in pts). This overrides any specified page-size.]":"Custom size of the document. Use the form widthxheight EG. '123x321' to specify the width and height (in pts). This overrides any specified page-size.": \
  --docx-no-toc"[Do not insert the table of contents as a page at the start of the document.]" \
  --docx-page-size="[The size of the page. Default is letter. Choices are (u'a0', u'a1', u'a2', u'a3', u'a4', u'a5', u'a6', u'b0', u'b1', u'b2', u'b3', u'b4', u'b5', u'b6', u'legal', u'letter')]":"The size of the page. Default is letter. Choices are (u'a0', u'a1', u'a2', u'a3', u'a4', u'a5', u'a6', u'b0', u'b1', u'b2', u'b3', u'b4', u'b5', u'b6', u'legal', u'letter')":(a0|a1|a2|a3|a4|a5|a6|b0|b1|b2|b3|b4|b5|b6|legal|letter) \
  --docx-no-cover"[Do not insert the book cover as an image at the start of the document. If you use this option, the book cover will be discarded.]" 
}

_ebc_output_opts_snb() {
  _arguments -s \
  --snb-dont-indent-first-line"[Specify whether or not to insert two space characters to indent the first line of each paragraph.]" \
  --snb-output-encoding="[Specify the character encoding of the output document. The default is utf-8.]":"Specify the character encoding of the output document. The default is utf-8.": \
  --snb-full-screen"[Resize all the images for full screen view. ]" \
  --snb-max-line-length="[The maximum number of characters per line. This splits on the first space before the specified value. If no space is found the line will be broken at the space after and will exceed the specified value. Also, there is a minimum of 25 characters. Use 0 to disable line splitting.]":"The maximum number of characters per line. This splits on the first space before the specified value. If no space is found the line will be broken at the space after and will exceed the specified value. Also, there is a minimum of 25 characters. Use 0 to disable line splitting.": \
  --snb-hide-chapter-name"[Specify whether or not to hide the chapter title for each chapter. Useful for image-only output (eg. comics).]" \
  --snb-insert-empty-line"[Specify whether or not to insert an empty line between two paragraphs.]" 
}

_ebc_output_opts_rb() {
  _arguments -s \
  --inline-toc"[Add Table of Contents to beginning of the book.]" 
}

_ebc_output_opts_lrf() {
  _arguments -s \
  --header"[Add a header to all the pages with title and author.]" \
  --wordspace="[Set the space between words in pts. Default is 2.5]":"Set the space between words in pts. Default is 2.5": \
  --sans-family="[The sans-serif family of fonts to embed]":"The sans-serif family of fonts to embed": \
  --mono-family="[The monospace family of fonts to embed]":"The monospace family of fonts to embed": \
  --header-separation="[Add extra spacing below the header. Default is 0 pt.]":"Add extra spacing below the header. Default is 0 pt.": \
  --minimum-indent="[Minimum paragraph indent (the indent of the first line of a paragraph) in pts. Default\: 0]":"Minimum paragraph indent (the indent of the first line of a paragraph) in pts. Default\: 0": \
  --render-tables-as-images"[Render tables in the HTML as images (useful if the document has large or complex tables)]" \
  --text-size-multiplier-for-rendered-tables="[Multiply the size of text in rendered tables by this factor. Default is 1.0]":"Multiply the size of text in rendered tables by this factor. Default is 1.0": \
  --header-format="[Set the format of the header. %a is replaced by the author and %t by the title. Default is %t by %a]":"Set the format of the header. %a is replaced by the author and %t by the title. Default is %t by %a": \
  --enable-autorotation"[Enable autorotation of images that are wider than the screen width.]" \
  --serif-family="[The serif family of fonts to embed]":"The serif family of fonts to embed": 
}

_ebc_output_opts_tcr() {
  _arguments -s \
  --tcr-output-encoding="[Specify the character encoding of the output document. The default is utf-8.]":"Specify the character encoding of the output document. The default is utf-8.": 
}

_ebc_output_opts_azw3() {
  _arguments -s \
  --dont-compress"[Disable compression of the file contents.]" \
  --prefer-author-sort"[When present, use author sort field as author.]" \
  --no-inline-toc"[Don't add Table of Contents to the book. Useful if the book has its own table of contents.]" \
  --toc-title="[Title for any generated in-line table of contents.]":"Title for any generated in-line table of contents.": \
  --share-not-sync"[Enable sharing of book content via Facebook etc.  on the Kindle. WARNING\: Using this feature means that  the book will not auto sync its last read position  on multiple devices. Complain to Amazon.]" \
  --extract-to="[Extract the contents of the generated AZW3 file to the specified directory. The contents of the directory are first deleted, so be careful.]":"Extract the contents of the generated AZW3 file to the specified directory. The contents of the directory are first deleted, so be careful.":'_path_files -/' \
  --mobi-toc-at-start"[When adding the Table of Contents to the book, add it at the start of the book instead of the end. Not recommended.]" 
}

_ebc_output_opts_htmlz() {
  _arguments -s \
  --htmlz-class-style="[How to handle the CSS when using css-type = 'class'. Default is external. external\: Use an external CSS file that is linked in the document. inline\: Place the CSS in the head section of the document.]":"How to handle the CSS when using css-type = 'class'. Default is external. external\: Use an external CSS file that is linked in the document. inline\: Place the CSS in the head section of the document.":(external|inline) \
  --htmlz-css-type="[Specify the handling of CSS. Default is class. class\: Use CSS classes and have elements reference them. inline\: Write the CSS as an inline style attribute. tag\: Turn as many CSS styles as possible into HTML tags.]":"Specify the handling of CSS. Default is class. class\: Use CSS classes and have elements reference them. inline\: Write the CSS as an inline style attribute. tag\: Turn as many CSS styles as possible into HTML tags.":(class|inline|tag) \
  --htmlz-title-filename"[If set this option causes the file name of the html file inside the htmlz archive to be based on the book title.]" 
}

_ebc_output_opts_txt() {
  _arguments -s \
  --max-line-length="[The maximum number of characters per line. This splits on the first space before the specified value. If no space is found the line will be broken at the space after and will exceed the specified value. Also, there is a minimum of 25 characters. Use 0 to disable line splitting.]":"The maximum number of characters per line. This splits on the first space before the specified value. If no space is found the line will be broken at the space after and will exceed the specified value. Also, there is a minimum of 25 characters. Use 0 to disable line splitting.": \
  --force-max-line-length"[Force splitting on the max-line-length value when no space is present. Also allows max-line-length to be below the minimum]" \
  --keep-image-references"[Do not remove image references within the document. This is only useful when paired with a txt-output-formatting option that is not none because links are always removed with plain text output.]" \
  --keep-links"[Do not remove links within the document. This is only useful when paired with a txt-output-formatting option that is not none because links are always removed with plain text output.]" \
  --inline-toc"[Add Table of Contents to beginning of the book.]" \
  {--newline=,-n+}"[Type of newline to use. Options are ('old_mac', 'system', 'unix', 'windows'). Default is 'system'. Use 'old_mac' for compatibility with Mac OS 9 and earlier. For Mac OS X use 'unix'. 'system' will default to the newline type used by this OS.]":"Type of newline to use. Options are ('old_mac', 'system', 'unix', 'windows'). Default is 'system'. Use 'old_mac' for compatibility with Mac OS 9 and earlier. For Mac OS X use 'unix'. 'system' will default to the newline type used by this OS.":(system|unix|old_mac|windows) \
  --keep-color"[Do not remove font color from output. This is only useful when txt-output-formatting is set to textile. Textile is the only formatting that supports setting font color. If this option is not specified font color will not be set and default to the color displayed by the reader (generally this is black).]" \
  --txt-output-formatting="[Formatting used within the document. * plain\: Produce plain text. * markdown\: Produce Markdown formatted text. * textile\: Produce Textile formatted text.]":"Formatting used within the document. * plain\: Produce plain text. * markdown\: Produce Markdown formatted text. * textile\: Produce Textile formatted text.":(plain|markdown|textile) \
  --txt-output-encoding="[Specify the character encoding of the output document. The default is utf-8.]":"Specify the character encoding of the output document. The default is utf-8.": 
}

_ebc_output_opts_epub() {
  _arguments -s \
  --preserve-cover-aspect-ratio"[When using an SVG cover, this option will cause the cover to scale to cover the available screen area, but still preserve its aspect ratio (ratio of width to height). That means there may be white borders at the sides or top and bottom of the image, but the image will never be distorted. Without this option the image may be slightly distorted, but there will be no borders.]" \
  --toc-title="[Title for any generated in-line table of contents.]":"Title for any generated in-line table of contents.": \
  --epub-inline-toc"[Insert an inline Table of Contents that will appear as part of the main book content.]" \
  --dont-split-on-page-breaks"[Turn off splitting at page breaks. Normally, input files are automatically split at every page break into two files. This gives an output ebook that can be parsed faster and with less resources. However, splitting is slow and if your source file contains a very large number of page breaks, you should turn off splitting on page breaks.]" \
  --no-default-epub-cover"[Normally, if the input file has no cover and you don't specify one, a default cover is generated with the title, authors, etc. This option disables the generation of this cover.]" \
  --extract-to="[Extract the contents of the generated EPUB file to the specified directory. The contents of the directory are first deleted, so be careful.]":"Extract the contents of the generated EPUB file to the specified directory. The contents of the directory are first deleted, so be careful.":'_path_files -/' \
  --epub-toc-at-end"[Put the inserted inline Table of Contents at the end of the book instead of the start.]" \
  --no-svg-cover"[Do not use SVG for the book cover. Use this option if your EPUB is going to be used on a device that does not support SVG, like the iPhone or the JetBook Lite. Without this option, such devices will display the cover as a blank page.]" \
  --epub-flatten"[This option is needed only if you intend to use the EPUB with FBReaderJ. It will flatten the file system inside the EPUB, putting all files into the top level.]" \
  --flow-size="[Split all HTML files larger than this size (in KB). This is necessary as most EPUB readers cannot handle large file sizes. The default of 260KB is the size required for Adobe Digital Editions. Set to 0 to disable size based splitting.]":"Split all HTML files larger than this size (in KB). This is necessary as most EPUB readers cannot handle large file sizes. The default of 260KB is the size required for Adobe Digital Editions. Set to 0 to disable size based splitting.": 
}

_ebc_output_opts_mobi() {
  _arguments -s \
  --mobi-keep-original-images"[By default calibre converts all images to JPEG format in the output MOBI file. This is for maximum compatibility as some older MOBI viewers have problems with other image formats. This option tells calibre not to do this. Useful if your document contains lots of GIF/PNG images that become very large when converted to JPEG.]" \
  --dont-compress"[Disable compression of the file contents.]" \
  --prefer-author-sort"[When present, use author sort field as author.]" \
  --mobi-file-type="[By default calibre generates MOBI files that contain the old MOBI 6 format. This format is compatible with all devices. However, by changing this setting, you can tell calibre to generate MOBI files that contain both MOBI 6 and the new KF8 format, or only the new KF8 format. KF8 has more features than MOBI 6, but only works with newer Kindles.]":"By default calibre generates MOBI files that contain the old MOBI 6 format. This format is compatible with all devices. However, by changing this setting, you can tell calibre to generate MOBI files that contain both MOBI 6 and the new KF8 format, or only the new KF8 format. KF8 has more features than MOBI 6, but only works with newer Kindles.":(old|both|new) \
  --mobi-ignore-margins"[Ignore margins in the input document. If False, then the MOBI output plugin will try to convert margins specified in the input document, otherwise it will ignore them.]" \
  --mobi-toc-at-start"[When adding the Table of Contents to the book, add it at the start of the book instead of the end. Not recommended.]" \
  --share-not-sync"[Enable sharing of book content via Facebook etc.  on the Kindle. WARNING\: Using this feature means that  the book will not auto sync its last read position  on multiple devices. Complain to Amazon.]" \
  --toc-title="[Title for any generated in-line table of contents.]":"Title for any generated in-line table of contents.": \
  --no-inline-toc"[Don't add Table of Contents to the book. Useful if the book has its own table of contents.]" \
  --personal-doc="[Tag for MOBI files to be marked as personal documents. This option has no effect on the conversion. It is used only when sending MOBI files to a device. If the file being sent has the specified tag, it will be marked as a personal document when sent to the Kindle.]":"Tag for MOBI files to be marked as personal documents. This option has no effect on the conversion. It is used only when sending MOBI files to a device. If the file being sent has the specified tag, it will be marked as a personal document when sent to the Kindle.": \
  --extract-to="[Extract the contents of the generated MOBI file to the specified directory. The contents of the directory are first deleted, so be careful.]":"Extract the contents of the generated MOBI file to the specified directory. The contents of the directory are first deleted, so be careful.":'_path_files -/' 
}

_ebc_output_opts_zip() {
  _arguments -s \
  --extract-to="[Extract the contents of the generated ZIP file to the specified directory. WARNING\: The contents of the directory will be deleted.]":"Extract the contents of the generated ZIP file to the specified directory. WARNING\: The contents of the directory will be deleted.":'_path_files -/' \
  --template-css="[CSS file used for the output instead of the default file]":"CSS file used for the output instead of the default file": \
  --template-html="[Template used for the generation of the html contents of the book instead of the default file]":"Template used for the generation of the html contents of the book instead of the default file": \
  --template-html-index="[Template used for generation of the html index file instead of the default file]":"Template used for generation of the html index file instead of the default file": 
}

_ebc_output_opts_pmlz() {
  _arguments -s \
  --full-image-depth"[Do not reduce the size or bit depth of images. Images have their size and depth reduced by default to accommodate applications that can not convert images on their own such as Dropbook.]" \
  --pml-output-encoding="[Specify the character encoding of the output document. The default is cp1252.]":"Specify the character encoding of the output document. The default is cp1252.": \
  --inline-toc"[Add Table of Contents to beginning of the book.]" 
}

_ebc_output_opts_txtz() {
  _arguments -s \
  --force-max-line-length"[Force splitting on the max-line-length value when no space is present. Also allows max-line-length to be below the minimum]" \
  {--newline=,-n+}"[Type of newline to use. Options are ('old_mac', 'system', 'unix', 'windows'). Default is 'system'. Use 'old_mac' for compatibility with Mac OS 9 and earlier. For Mac OS X use 'unix'. 'system' will default to the newline type used by this OS.]":"Type of newline to use. Options are ('old_mac', 'system', 'unix', 'windows'). Default is 'system'. Use 'old_mac' for compatibility with Mac OS 9 and earlier. For Mac OS X use 'unix'. 'system' will default to the newline type used by this OS.":(system|unix|old_mac|windows) \
  --keep-image-references"[Do not remove image references within the document. This is only useful when paired with a txt-output-formatting option that is not none because links are always removed with plain text output.]" \
  --keep-links"[Do not remove links within the document. This is only useful when paired with a txt-output-formatting option that is not none because links are always removed with plain text output.]" \
  --keep-color"[Do not remove font color from output. This is only useful when txt-output-formatting is set to textile. Textile is the only formatting that supports setting font color. If this option is not specified font color will not be set and default to the color displayed by the reader (generally this is black).]" \
  --inline-toc"[Add Table of Contents to beginning of the book.]" \
  --txt-output-encoding="[Specify the character encoding of the output document. The default is utf-8.]":"Specify the character encoding of the output document. The default is utf-8.": \
  --max-line-length="[The maximum number of characters per line. This splits on the first space before the specified value. If no space is found the line will be broken at the space after and will exceed the specified value. Also, there is a minimum of 25 characters. Use 0 to disable line splitting.]":"The maximum number of characters per line. This splits on the first space before the specified value. If no space is found the line will be broken at the space after and will exceed the specified value. Also, there is a minimum of 25 characters. Use 0 to disable line splitting.": \
  --txt-output-formatting="[Formatting used within the document. * plain\: Produce plain text. * markdown\: Produce Markdown formatted text. * textile\: Produce Textile formatted text.]":"Formatting used within the document. * plain\: Produce plain text. * markdown\: Produce Markdown formatted text. * textile\: Produce Textile formatted text.":(plain|markdown|textile) 
}

_ebc_output_opts_pdf() {
  _arguments -s \
  --pdf-add-toc"[Add a Table of Contents at the end of the PDF that lists page numbers. Useful if you want to print out the PDF. If this PDF is intended for electronic use, use the PDF Outline instead.]" \
  --preserve-cover-aspect-ratio"[Preserve the aspect ratio of the cover, instead of stretching it to fill the full first page of the generated pdf.]" \
  --pdf-serif-family="[The font family used to render serif fonts]":"The font family used to render serif fonts": \
  --pdf-mono-font-size="[The default font size for monospaced text]":"The default font size for monospaced text": \
  --toc-title="[Title for generated table of contents.]":"Title for generated table of contents.": \
  --custom-size="[Custom size of the document. Use the form widthxheight e.g. '123x321' to specify the width and height. This overrides any specified paper-size.]":"Custom size of the document. Use the form widthxheight e.g. '123x321' to specify the width and height. This overrides any specified paper-size.": \
  --pdf-mark-links"[Surround all links with a red box, useful for debugging.]" \
  --uncompressed-pdf"[Generate an uncompressed PDF, useful for debugging, only works with the new PDF engine.]" \
  --pdf-header-template="[An HTML template used to generate headers on every page. The strings _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_ will be replaced by their current values.]":"An HTML template used to generate headers on every page. The strings _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_ will be replaced by their current values.": \
  --pdf-mono-family="[The font family used to render monospaced fonts]":"The font family used to render monospaced fonts": \
  --pdf-page-numbers"[Add page numbers to the bottom of every page in the generated PDF file. If you specify a footer template, it will take precedence over this option.]" \
  --pdf-default-font-size="[The default font size]":"The default font size": \
  --pdf-footer-template="[An HTML template used to generate footers on every page. The strings _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_ will be replaced by their current values.]":"An HTML template used to generate footers on every page. The strings _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_ will be replaced by their current values.": \
  --pdf-standard-font="[The font family used to render monospaced fonts]":"The font family used to render monospaced fonts":(serif|sans|mono) \
  --pdf-sans-family="[The font family used to render sans-serif fonts]":"The font family used to render sans-serif fonts": \
  --paper-size="[The size of the paper. This size will be overridden when a non default output profile is used. Default is letter. Choices are (u'a0', u'a1', u'a2', u'a3', u'a4', u'a5', u'a6', u'b0', u'b1', u'b2', u'b3', u'b4', u'b5', u'b6', u'legal', u'letter')]":"The size of the paper. This size will be overridden when a non default output profile is used. Default is letter. Choices are (u'a0', u'a1', u'a2', u'a3', u'a4', u'a5', u'a6', u'b0', u'b1', u'b2', u'b3', u'b4', u'b5', u'b6', u'legal', u'letter')":(a0|a1|a2|a3|a4|a5|a6|b0|b1|b2|b3|b4|b5|b6|legal|letter) \
  --old-pdf-engine"[Use the old, less capable engine to generate the PDF]" \
  {--unit=,-u+}"[The unit of measure for page sizes. Default is inch. Choices are ('millimeter', 'centimeter', 'point', 'inch', 'pica', 'didot', 'cicero', 'devicepixel') Note\: This does not override the unit for margins!]":"The unit of measure for page sizes. Default is inch. Choices are ('millimeter', 'centimeter', 'point', 'inch', 'pica', 'didot', 'cicero', 'devicepixel') Note\: This does not override the unit for margins!":(millimeter|centimeter|point|inch|pica|didot|cicero|devicepixel) \
  --override-profile-size"[Normally, the PDF page size is set by the output profile chosen under the page setup options. This option will cause the  page size settings under PDF Output to override the  size specified by the output profile.]" 
}

_ebc_output_opts_pdb() {
  _arguments -s \
  {--format=,-f+}"[Format to use inside the pdb container. Choices are\: ('doc', 'ereader', 'ztxt')]":"Format to use inside the pdb container. Choices are\: ('doc', 'ereader', 'ztxt')":(doc|ztxt|ereader) \
  --pdb-output-encoding="[Specify the character encoding of the output document. The default is cp1252. Note\: This option is not honored by all formats.]":"Specify the character encoding of the output document. The default is cp1252. Note\: This option is not honored by all formats.": \
  --inline-toc"[Add Table of Contents to beginning of the book.]" 
}

_ebook_convert() {
  local iarg oarg context state_descr state line
  typeset -A opt_args
  local ret=1
  _arguments '1: :_ebc_input_args' '*::ebook-convert output:->args' && ret=0
  case $state in 
  (args)
    iarg=${line[1]##*.}; 
    _arguments '1: :_ebc_output_args' '*::ebook-convert options:->args' && ret=0
     case $state in 
    (args)
      oarg=${line[1]##*.}
      iarg="_ebc_input_opts_${(L)iarg}"; oarg="_ebc_output_opts_${(L)oarg}"
      _call_function - $iarg; _call_function - $oarg; _ebc_common_opts; ret=0
    ;;
    esac
  ;;
  esac
  return ret
}

_calibredb_cmds() {
  local commands; commands=(
    {-h,--help}":Show help"
    "--version:Show version"
    "list_categories:Produce a report of the category information in the database"
    "saved_searches:Manage the saved searches stored in this database"
    "custom_columns:List available custom columns"
    "set_custom:Set the value of a custom column for the book identified by id"
    "search:Search the library for the specified search term, returning a comma separated"
    "clone:Create a clone of the current library"
    "remove_custom_column:Remove the custom column identified by label"
    "list:List the books available in the calibre database"
    "catalog:Export a catalog in format specified by path/to/destination extension"
    "remove:Remove the books identified by ids from the database"
    "check_library:Perform some checks on the filesystem representing a library"
    "show_metadata:Show the metadata stored in the calibre database for the book identified by id"
    "add:Add the specified files as books to the database"
    "set_metadata:Set the metadata stored in the calibre database for the book identified by id"
    "backup_metadata:Backup the metadata stored in the database into individual OPF files in each"
    "restore_database:Restore this database from the metadata stored in OPF files in each"
    "add_format:Add the ebook in ebook_file to the available formats for the logical book identified by id"
    "embed_metadata:Update the metadata in the actual book files stored in the calibre library from"
    "export:Export the books specified by ids (a comma separated list) to the filesystem"
    "remove_format:Remove the format fmt from the logical book identified by id"
    "add_custom_column:Create a custom column"
  )
  _describe -t commands "calibredb command" commands 
}

_calibredb() {
    local state line state_descr context
    typeset -A opt_args
    local ret=1

    _arguments \
        '1: :_calibredb_cmds' \
        '*::calibredb subcommand options:->args' \
        && ret=0

    case $state in
    (args)
    case $line[1] in
      (-h|--help|--version)
          _message 'no more arguments' && ret=0
      ;;
    (list_categories)
      _arguments -s \
        {--item_count,-i}"[Output only the number of items in a category instead of the counts per item within the category]" \
        {--csv,-c}"[Output in CSV]" \
        {--quote=,-q+}"[The character to put around the category value in CSV mode. Default is quotes (').]":"The character to put around the category value in CSV mode. Default is quotes (').": \
        {--categories=,-r+}"[Comma-separated list of category lookup names. Default\: all]":"Comma-separated list of category lookup names. Default\: all": \
        {--width=,-w+}"[The maximum width of a single line in the output. Defaults to detecting screen size.]":"The maximum width of a single line in the output. Defaults to detecting screen size.": \
        {--separator=,-s+}"[The string used to separate fields in CSV mode. Default is a comma.]":"The string used to separate fields in CSV mode. Default is a comma.": \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (saved_searches)
      _arguments -s \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (custom_columns)
      _arguments -s \
        {--details,-d}"[Show details for each column.]" \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (set_custom)
      _arguments -s \
        {--append,-a}"[If the column stores multiple values, append the specified values to the existing ones, instead of replacing them.]" \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (search)
      _arguments -s \
        {--limit=,-l+}"[The maximum number of results to return. Default is all results.]":"The maximum number of results to return. Default is all results.": \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (clone)
      _arguments -s \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (remove_custom_column)
      _arguments -s \
        {--force,-f}"[Do not ask for confirmation]" \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (list)
      _arguments -s \
        {--fields=,-f+}"[The fields to display when listing books in the database. Should be a comma separated list of fields. Available fields\: author_sort, authors, comments, cover, formats, id, identifiers, isbn, languages, last_modified, pubdate, publisher, rating, series, series_index, size, tags, timestamp, title, uuid Default\: title,authors. The special field 'all' can be used to select all fields.]":"The fields to display when listing books in the database. Should be a comma separated list of fields. Available fields\: author_sort, authors, comments, cover, formats, id, identifiers, isbn, languages, last_modified, pubdate, publisher, rating, series, series_index, size, tags, timestamp, title, uuid Default\: title,authors. The special field 'all' can be used to select all fields.": \
        --sort-by="[The field by which to sort the results. Available fields\: author_sort, authors, comments, cover, formats, identifiers, isbn, languages, last_modified, pubdate, publisher, rating, series, series_index, size, tags, timestamp, title, uuid Default\: id]":"The field by which to sort the results. Available fields\: author_sort, authors, comments, cover, formats, identifiers, isbn, languages, last_modified, pubdate, publisher, rating, series, series_index, size, tags, timestamp, title, uuid Default\: id": \
        --ascending"[Sort results in ascending order]" \
        {--search=,-s+}"[Filter the results by the search query. For the format of the search query, please see the search related documentation in the User Manual. Default is to do no filtering.]":"Filter the results by the search query. For the format of the search query, please see the search related documentation in the User Manual. Default is to do no filtering.": \
        {--line-width=,-w+}"[The maximum width of a single line in the output. Defaults to detecting screen size.]":"The maximum width of a single line in the output. Defaults to detecting screen size.": \
        --separator="[The string used to separate fields. Default is a space.]":"The string used to separate fields. Default is a space.": \
        --prefix="[The prefix for all file paths. Default is the absolute path to the library folder.]":"The prefix for all file paths. Default is the absolute path to the library folder.": \
        --limit="[The maximum number of results to display. Default\: all]":"The maximum number of results to display. Default\: all": \
        --for-machine"[Generate output in JSON format, which is more suitable for machine parsing. Causes the line width and separator options to be ignored.]" \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (catalog)
      _arguments -s \
        {--ids=,-i+}"[Comma-separated list of database IDs to catalog. If declared, --search is ignored. Default\: all]":"Comma-separated list of database IDs to catalog. If declared, --search is ignored. Default\: all": \
        {--search=,-s+}"[Filter the results by the search query. For the format of the search query, please see the search-related documentation in the User Manual. Default\: no filtering]":"Filter the results by the search query. For the format of the search query, please see the search-related documentation in the User Manual. Default\: no filtering": \
        {--verbose,-v}"[Show detailed output information. Useful for debugging]" \
        --catalog-title="[Title of generated catalog used as title in metadata. Default\: 'My Books' Applies to\: AZW3, ePub, MOBI output formats]":"Title of generated catalog used as title in metadata. Default\: 'My Books' Applies to\: AZW3, ePub, MOBI output formats": \
        --cross-reference-authors"[Create cross-references in Authors section for books with multiple authors. Default\: 'False' Applies to\: AZW3, ePub, MOBI output formats]" \
        --debug-pipeline="[Save the output from different stages of the conversion pipeline to the specified directory. Useful if you are unsure at which stage of the conversion process a bug is occurring. Default\: 'None' Applies to\: AZW3, ePub, MOBI output formats]":"Save the output from different stages of the conversion pipeline to the specified directory. Useful if you are unsure at which stage of the conversion process a bug is occurring. Default\: 'None' Applies to\: AZW3, ePub, MOBI output formats":'_path_files -/' \
        --exclude-genre="[Regex describing tags to exclude as genres. Default\: '\[.+\]|^\+$' excludes bracketed tags, e.g. '(Project Gutenberg)', and '+', the default tag for read books. Applies to\: AZW3, ePub, MOBI output formats]":"Regex describing tags to exclude as genres. Default\: '\[.+\]|^\+$' excludes bracketed tags, e.g. '(Project Gutenberg)', and '+', the default tag for read books. Applies to\: AZW3, ePub, MOBI output formats": \
        --exclusion-rules="[Specifies the rules used to exclude books from the generated catalog. The model for an exclusion rule is either ('<rule name>','Tags','<comma-separated list of tags>') or ('<rule name>','<custom column>','<pattern>'). For example\: (('Archived books','#status','Archived'),) will exclude a book with a value of 'Archived' in the custom column 'status'. When multiple rules are defined, all rules will be applied. Default\:  '(('Catalogs','Tags','Catalog'),)' Applies to AZW3, ePub, MOBI output formats]":"Specifies the rules used to exclude books from the generated catalog. The model for an exclusion rule is either ('<rule name>','Tags','<comma-separated list of tags>') or ('<rule name>','<custom column>','<pattern>'). For example\: (('Archived books','#status','Archived'),) will exclude a book with a value of 'Archived' in the custom column 'status'. When multiple rules are defined, all rules will be applied. Default\:  '(('Catalogs','Tags','Catalog'),)' Applies to AZW3, ePub, MOBI output formats": \
        --generate-authors"[Include 'Authors' section in catalog. Default\: 'False' Applies to\: AZW3, ePub, MOBI output formats]" \
        --generate-descriptions"[Include 'Descriptions' section in catalog. Default\: 'False' Applies to\: AZW3, ePub, MOBI output formats]" \
        --generate-genres"[Include 'Genres' section in catalog. Default\: 'False' Applies to\: AZW3, ePub, MOBI output formats]" \
        --generate-titles"[Include 'Titles' section in catalog. Default\: 'False' Applies to\: AZW3, ePub, MOBI output formats]" \
        --generate-series"[Include 'Series' section in catalog. Default\: 'False' Applies to\: AZW3, ePub, MOBI output formats]" \
        --generate-recently-added"[Include 'Recently Added' section in catalog. Default\: 'False' Applies to\: AZW3, ePub, MOBI output formats]" \
        --genre-source-field="[Source field for Genres section. Default\: 'Tags' Applies to\: AZW3, ePub, MOBI output formats]":"Source field for Genres section. Default\: 'Tags' Applies to\: AZW3, ePub, MOBI output formats": \
        --header-note-source-field="[Custom field containing note text to insert in Description header. Default\: '' Applies to\: AZW3, ePub, MOBI output formats]":"Custom field containing note text to insert in Description header. Default\: '' Applies to\: AZW3, ePub, MOBI output formats": \
        --merge-comments-rule="[#<custom field>\:(before|after)\:(True|False) specifying\:  <custom field> Custom field containing notes to merge with Comments  (before|after) Placement of notes with respect to Comments  (True|False) - A horizontal rule is inserted between notes and Comments Default\: '::' Applies to AZW3, ePub, MOBI output formats]":"#<custom field>\:(before|after)\:(True|False) specifying\:  <custom field> Custom field containing notes to merge with Comments  (before|after) Placement of notes with respect to Comments  (True|False) - A horizontal rule is inserted between notes and Comments Default\: '::' Applies to AZW3, ePub, MOBI output formats": \
        --output-profile="[Specifies the output profile. In some cases, an output profile is required to optimize the catalog for the device.  For example, 'kindle' or 'kindle_dx' creates a structured Table of Contents with Sections and Articles. Default\: 'None' Applies to\: AZW3, ePub, MOBI output formats]":"Specifies the output profile. In some cases, an output profile is required to optimize the catalog for the device.  For example, 'kindle' or 'kindle_dx' creates a structured Table of Contents with Sections and Articles. Default\: 'None' Applies to\: AZW3, ePub, MOBI output formats": \
        --prefix-rules="[Specifies the rules used to include prefixes indicating read books, wishlist items and other user-specified prefixes. The model for a prefix rule is ('<rule name>','<source field>','<pattern>','<prefix>'). When multiple rules are defined, the first matching rule will be used. Default\: '(('Read books','tags','+','✓'),('Wishlist item','tags','Wishlist','×'))' Applies to AZW3, ePub, MOBI output formats]":"Specifies the rules used to include prefixes indicating read books, wishlist items and other user-specified prefixes. The model for a prefix rule is ('<rule name>','<source field>','<pattern>','<prefix>'). When multiple rules are defined, the first matching rule will be used. Default\: '(('Read books','tags','+','✓'),('Wishlist item','tags','Wishlist','×'))' Applies to AZW3, ePub, MOBI output formats": \
        --preset="[Use a named preset created with the GUI Catalog builder. A preset specifies all settings for building a catalog. Default\: 'None' Applies to AZW3, ePub, MOBI output formats]":"Use a named preset created with the GUI Catalog builder. A preset specifies all settings for building a catalog. Default\: 'None' Applies to AZW3, ePub, MOBI output formats": \
        --use-existing-cover"[Replace existing cover when generating the catalog. Default\: 'False' Applies to\: AZW3, ePub, MOBI output formats]" \
        --thumb-width="[Size hint (in inches) for book covers in catalog. Range\: 1.0 - 2.0 Default\: '1.0' Applies to AZW3, ePub, MOBI output formats]":"Size hint (in inches) for book covers in catalog. Range\: 1.0 - 2.0 Default\: '1.0' Applies to AZW3, ePub, MOBI output formats": \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" \
        '*:filename:_files -g "*.XML *.azw3 *.bib *.mobi *.MOBI *.CSV *.epub *.xml *.AZW3 *.BIB *.EPUB *.csv"' 
    ;;
    (remove)
      _arguments -s \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (check_library)
      _arguments -s \
        {--csv,-c}"[Output in CSV]" \
        {--report=,-r+}"[Comma-separated list of reports. Default\: all]":"Comma-separated list of reports. Default\: all": \
        {--ignore_extensions=,-e+}"[Comma-separated list of extensions to ignore. Default\: all]":"Comma-separated list of extensions to ignore. Default\: all": \
        {--ignore_names=,-n+}"[Comma-separated list of names to ignore. Default\: all]":"Comma-separated list of names to ignore. Default\: all": \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (show_metadata)
      _arguments -s \
        --as-opf"[Print metadata in OPF form (XML)]" \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (add)
      _arguments -s \
        {--duplicates,-d}"[Add books to database even if they already exist. Comparison is done based on book titles.]" \
        {--empty,-e}"[Add an empty book (a book with no formats)]" \
        {--title=,-t+}"[Set the title of the added book(s)]":"Set the title of the added book(s)": \
        {--authors=,-a+}"[Set the authors of the added book(s)]":"Set the authors of the added book(s)": \
        {--isbn=,-i+}"[Set the ISBN of the added book(s)]":"Set the ISBN of the added book(s)": \
        {--identifier=,-I+}"[Set the identifiers for this book, for e.g. -I asin\:XXX -I isbn\:YYY]":"Set the identifiers for this book, for e.g. -I asin\:XXX -I isbn\:YYY": \
        {--tags=,-T+}"[Set the tags of the added book(s)]":"Set the tags of the added book(s)": \
        {--series=,-s+}"[Set the series of the added book(s)]":"Set the series of the added book(s)": \
        {--series-index=,-S+}"[Set the series number of the added book(s)]":"Set the series number of the added book(s)": \
        {--cover=,-c+}"[Path to the cover to use for the added book]":"Path to the cover to use for the added book":'_files -g "*.gif *.bmp *.jpg *.jpeg *.png *.GIF *.BMP *.JPG *.JPEG *.PNG"' \
        {--languages=,-l+}"[A comma separated list of languages (best to use ISO639 language codes, though some language names may also be recognized)]":"A comma separated list of languages (best to use ISO639 language codes, though some language names may also be recognized)": \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" \
        {--one-book-per-directory,-1}"[Assume that each directory has only a single logical book and that all files in it are different e-book formats of that book]" \
        {--recurse,-r}"[Process directories recursively]" \
        --ignore="[A filename (glob) pattern, files matching this pattern will be ignored when scanning directories for files. Can be specified multiple times for multiple patterns. For e.g.\: *.pdf will ignore all pdf files]":"A filename (glob) pattern, files matching this pattern will be ignored when scanning directories for files. Can be specified multiple times for multiple patterns. For e.g.\: *.pdf will ignore all pdf files": \
        --add="[A filename (glob) pattern, files matching this pattern will be added when scanning directories for files, even if they are not of a known ebook file type. Can be specified multiple times for multiple patterns.]":"A filename (glob) pattern, files matching this pattern will be added when scanning directories for files, even if they are not of a known ebook file type. Can be specified multiple times for multiple patterns.": \
        '*:filename:_files' 
    ;;
    (set_metadata)
      _arguments -s \
        {--field=,-f+}"[The field to set. Format is field_name\:value, for example\: --field tags\:tag1,tag2. Use --list-fields to get a list of all field names. You can specify this option multiple times to set multiple fields. Note\: For languages you must use the ISO639 language codes (e.g. en for English, fr for French and so on). For identifiers, the syntax is --field identifiers\:isbn\:XXXX,doi\:YYYYY. For boolean (yes/no) fields use true and false or yes and no.]":"The field to set. Format is field_name\:value, for example\: --field tags\:tag1,tag2. Use --list-fields to get a list of all field names. You can specify this option multiple times to set multiple fields. Note\: For languages you must use the ISO639 language codes (e.g. en for English, fr for French and so on). For identifiers, the syntax is --field identifiers\:isbn\:XXXX,doi\:YYYYY. For boolean (yes/no) fields use true and false or yes and no.": \
        {--list-fields,-l}"[List the metadata field names that can be used with the --field option]" \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" \
        '*:filename:_files -g "*.opf *.OPF"' 
    ;;
    (backup_metadata)
      _arguments -s \
        --all"[Normally, this command only operates on books that have out of date OPF files. This option makes it operate on all books.]" \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (restore_database)
      _arguments -s \
        {--really-do-it,-r}"[Really do the recovery. The command will not run unless this option is specified.]" \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (add_format)
      _arguments -s \
        --dont-replace"[Do not replace the format if it already exists]" \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" \
        '*:filename:_files' 
    ;;
    (embed_metadata)
      _arguments -s \
        {--only-formats=,-f+}"[Only update metadata in files of the specified format. Specify it multiple times for multiple formats. By default, all formats are updated.]":"Only update metadata in files of the specified format. Specify it multiple times for multiple formats. By default, all formats are updated.": \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (export)
      _arguments -s \
        --all"[Export all books in database, ignoring the list of ids.]" \
        --to-dir="[Export books to the specified directory. Default is .]":"Export books to the specified directory. Default is .":'_path_files -/' \
        --single-dir"[Export all books into a single directory]" \
        --dont-asciiize"[Normally, calibre will convert all non English characters into English equivalents for the file names. WARNING\: If you turn this off, you may experience errors when saving, depending on how well the filesystem you are saving to supports unicode. Specifying this switch will turn this behavior off.]" \
        --dont-update-metadata"[Normally, calibre will update the metadata in the saved files from what is in the calibre library. Makes saving to disk slower. Specifying this switch will turn this behavior off.]" \
        --dont-write-opf"[Normally, calibre will write the metadata into a separate OPF file along with the actual e-book files. Specifying this switch will turn this behavior off.]" \
        --dont-save-cover"[Normally, calibre will save the cover in a separate file along with the actual e-book file(s). Specifying this switch will turn this behavior off.]" \
        --timefmt="[The format in which to display dates. %d - day, %b - month, %m - month number, %Y - year. Default is\: %b, %Y]":"The format in which to display dates. %d - day, %b - month, %m - month number, %Y - year. Default is\: %b, %Y": \
        --template="[The template to control the filename and directory structure of the saved files. Default is '{author_sort}/{title}/{title} - {authors}' which will save books into a per-author subdirectory with filenames containing title and author. Available controls are\: {author_sort, authors, id, isbn, languages, last_modified, pubdate, publisher, rating, series, series_index, tags, timestamp, title}]":"The template to control the filename and directory structure of the saved files. Default is '{author_sort}/{title}/{title} - {authors}' which will save books into a per-author subdirectory with filenames containing title and author. Available controls are\: {author_sort, authors, id, isbn, languages, last_modified, pubdate, publisher, rating, series, series_index, tags, timestamp, title}": \
        --formats="[Comma separated list of formats to save for each book. By default all available formats are saved.]":"Comma separated list of formats to save for each book. By default all available formats are saved.": \
        --replace-whitespace"[Replace whitespace with underscores.]" \
        --to-lowercase"[Convert paths to lowercase.]" \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (remove_format)
      _arguments -s \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    (add_custom_column)
      _arguments -s \
        --is-multiple"[This column stores tag like data (i.e. multiple comma separated values). Only applies if datatype is text.]" \
        --display="[A dictionary of options to customize how the data in this column will be interpreted. This is a JSON  string. For enumeration columns, use --display='{\'enum_values\'\:(\'val1\', \'val2\')}' There are many options that can go into the display variable.The options by column type are\: composite\: composite_template, composite_sort, make_category,contains_html, use_decorations datetime\: date_format enumeration\: enum_values, enum_colors, use_decorations int, float\: number_format text\: is_names, use_decorations  The best way to find legal combinations is to create a custom column of the appropriate type in the GUI then look at the backup OPF for a book (ensure that a new OPF has been created since the column was added). You will see the JSON for the 'display' for the new column in the OPF.]":"A dictionary of options to customize how the data in this column will be interpreted. This is a JSON  string. For enumeration columns, use --display='{\'enum_values\'\:(\'val1\', \'val2\')}' There are many options that can go into the display variable.The options by column type are\: composite\: composite_template, composite_sort, make_category,contains_html, use_decorations datetime\: date_format enumeration\: enum_values, enum_colors, use_decorations int, float\: number_format text\: is_names, use_decorations  The best way to find legal combinations is to create a custom column of the appropriate type in the GUI then look at the backup OPF for a book (ensure that a new OPF has been created since the column was added). You will see the JSON for the 'display' for the new column in the OPF.": \
        {--library-path=,--with-library=}"[Path to the calibre library. Default is to use the path stored in the settings.]":"Path to the calibre library. Default is to use the path stored in the settings.":'_path_files -/' \
        --dont-notify-gui"[Do not notify the running calibre GUI (if any) that the database has changed. Use with care, as it can lead to database corruption!]" \
        '(- *)'{--help,-h}"[show this help message and exit]" \
        '(- *)'--version"[show program's version number and exit]" 
    ;;
    esac
    ;;
    esac

    return ret
    
}


_ebook_edit() {
    local curcontext="$curcontext" state line ebookfile expl
    typeset -A opt_args

    _arguments -C -s \
        "--version""[show program's version number and exit]" \
        {--help,-h}"[show this help message and exit]" \
        "--detach""[Detach from the controlling terminal, if any (linux only)]" \
        "1:ebook file:_files -g '(#i)*.(docx|AZW3|xhtm|htm|html|EPUB|xhtml)'" \
        '*:file in ebook:->files' && return 0

    case $state in
        files)
            ebookfile=${~${(Q)line[1]}}

            if [[ -f "$ebookfile" && "$ebookfile" =~ '\.[eE][pP][uU][bB]$' ]]; then
                _zip_cache_name="$ebookfile"
                _zip_cache_list=( ${(f)"$(zipinfo -1 $_zip_cache_name 2>/dev/null)"} )
            else
                return 1
            fi
            _wanted files expl 'file from ebook' \
            _multi_parts / _zip_cache_list && return 0
            ;;
    esac

    return 1
}


case $service in
ebook-edit)
 _ebook_edit "$@"
;;
lrf2lrs)
_arguments -s \
  '(- *)'--version"[show program's version number and exit]" \
  '(- *)'{--help,-h}"[show this help message and exit]" \
  {--output=,-o+}"[Output LRS file]":"Output LRS file":'_files -g "*.lrs *.LRS"' \
  --dont-output-resources"[Do not save embedded image and font files to disk]" \
  --verbose"[Be more verbose]" \
  "*:filename:_files -g '(#i)*.(lrf)'" 
;;
calibredb)
 _calibredb "$@"
;;
fetch-ebook-metadata)
_arguments -s \
  '(- *)'--version"[show program's version number and exit]" \
  '(- *)'{--help,-h}"[show this help message and exit]" \
  {--title=,-t+}"[Book title]":"Book title": \
  {--authors=,-a+}"[Book author(s)]":"Book author(s)": \
  {--isbn=,-i+}"[Book ISBN]":"Book ISBN": \
  {--verbose,-v}"[Print the log to the console (stderr)]" \
  {--opf,-o}"[Output the metadata in OPF format instead of human readable text.]" \
  {--cover=,-c+}"[Specify a filename. The cover, if available, will be saved to it. Without this option, no cover will be downloaded.]":"Specify a filename. The cover, if available, will be saved to it. Without this option, no cover will be downloaded.":'_files -g "*.gif *.bmp *.jpg *.jpeg *.png *.GIF *.BMP *.JPG *.JPEG *.PNG"' \
  {--timeout=,-d+}"[Timeout in seconds. Default is 30]":"Timeout in seconds. Default is 30": 
;;
lrfviewer)
_arguments -s \
  '(- *)'--version"[show program's version number and exit]" \
  '(- *)'{--help,-h}"[show this help message and exit]" \
  --verbose"[Print more information about the rendering process]" \
  --visual-debug"[Turn on visual aids to debugging the rendering engine]" \
  --disable-hyphenation"[Disable hyphenation. Should significantly speed up rendering.]" \
  --white-background"[By default the background is off white as I find this easier on the eyes. Use this option to make the background pure white.]" \
  --profile"[Profile the LRF renderer]" \
  "*:filename:_files -g '(#i)*.(lrf)'" 
;;
calibre)
_arguments -s \
  '(- *)'--version"[show program's version number and exit]" \
  '(- *)'{--help,-h}"[show this help message and exit]" \
  --with-library="[Use the library located at the specified path.]":"Use the library located at the specified path.":'_path_files -/' \
  --start-in-tray"[Start minimized to system tray.]" \
  {--verbose,-v}"[Ignored, do not use. Present only for legacy reasons]" \
  --no-update-check"[Do not check for updates]" \
  --ignore-plugins"[Ignore custom plugins, useful if you installed a plugin that is preventing calibre from starting]" \
  {--shutdown-running-calibre,-s}"[Cause a running calibre instance, if any, to be shutdown. Note that if there are running jobs, they will be silently aborted, so use with care.]" \
  --detach"[Detach from the controlling terminal, if any (linux only)]" \
  "*:filename:_files -g '(#i)*.(azw|azw1|azw3|azw4|book|cbc|cbr|cbz|chm|djv|djvu|doc|docm|docx|epub|fb2|htm|html|htmlz|iba|ibook|ibooks|imp|kepub|lit|lrf|lrx|markdown|mbp|md|mobi|odt|oebzip|oxps|pdb|pdf|pdr|pml|pmlz|pobi|prc|ps|rar|rb|rtf|snb|tan|text|textile|tpz|txt|txtz|updb|xhtm|xhtml|xps|zbf|zip)'" 
;;
calibre-debug)
_arguments -s \
  '(- *)'--version"[show program's version number and exit]" \
  '(- *)'{--help,-h}"[show this help message and exit]" \
  {--command=,-c+}"[Run python code.]":"Run python code.": \
  {--exec-file=,-e+}"[Run the python code in file.]":"Run the python code in file.":'_files -g "*.py *.recipe *.PY *.RECIPE"' \
  {--subset-font,-f}"[Subset the specified font. Use -- after this option to pass option to the font subsetting program.]" \
  {--debug-device-driver,-d}"[Debug device detection]" \
  {--gui,-g}"[Run the GUI with debugging enabled. Debug output is printed to stdout and stderr.]" \
  --gui-debug="[Run the GUI with a debug console, logging to the specified path. For internal use only, use the -g option to run the GUI in debug mode]":"Run the GUI with a debug console, logging to the specified path. For internal use only, use the -g option to run the GUI in debug mode": \
  {--viewer,-w}"[Run the ebook viewer in debug mode]" \
  --paths"[Output the paths necessary to setup the calibre environment]" \
  --add-simple-plugin="[Add a simple plugin (i.e. a plugin that consists of only a .py file), by specifying the path to the py file containing the plugin code.]":"Add a simple plugin (i.e. a plugin that consists of only a .py file), by specifying the path to the py file containing the plugin code.":'_files -g "*.py *.PY"' \
  --reinitialize-db="[Re-initialize the sqlite calibre database at the specified path. Useful to recover from db corruption.]":"Re-initialize the sqlite calibre database at the specified path. Useful to recover from db corruption.": \
  {--py-console,-p}"[Run python console]" \
  {--inspect-mobi,-m}"[Inspect the MOBI file(s) at the specified path(s)]" \
  {--edit-book,-t}"[Launch the calibre Edit Book tool in debug mode.]" \
  {--explode-book=,-x+}"[Explode the book (exports the book as a collection of HTML files and metadata, which you can edit using standard HTML editing tools, and then rebuilds the file from the edited HTML. Makes no additional changes to the HTML, unlike a full calibre conversion).]":"Explode the book (exports the book as a collection of HTML files and metadata, which you can edit using standard HTML editing tools, and then rebuilds the file from the edited HTML. Makes no additional changes to the HTML, unlike a full calibre conversion).": \
  --export-all-calibre-data"[Export all calibre data (books/settings/plugins)]" \
  --import-calibre-data"[Import previously exported calibre data]" \
  {--shutdown-running-calibre,-s}"[Cause a running calibre instance, if any, to be shutdown. Note that if there are running jobs, they will be silently aborted, so use with care.]" \
  --test-build"[Test binary modules in build]" \
  {--run-plugin=,-r+}"[Run a plugin that provides a command line interface. For example\: calibre-debug -r 'Add Books' -- file1 --option1 Everything after the -- will be passed to the plugin as arguments.]":"Run a plugin that provides a command line interface. For example\: calibre-debug -r 'Add Books' -- file1 --option1 Everything after the -- will be passed to the plugin as arguments.": \
  --diff"[Run the calibre diff tool. For example\: calibre-debug --diff file1 file2]" \
  --default-programs="[(Un)register calibre from Windows Default Programs. --default-programs=(register|unregister)]":"(Un)register calibre from Windows Default Programs. --default-programs=(register|unregister)":(register|unregister) \
  --new-server"[Run the new calibre content server. Any options specified after a -- will be passed to the server.]" \
  "*:filename:_files -g '(#i)*.(azw|azw3|docx|mobi|py|recipe)'" 
;;
ebook-meta)
_arguments -s \
  '(- *)'--version"[show program's version number and exit]" \
  '(- *)'{--help,-h}"[show this help message and exit]" \
  {--title=,-t+}"[Set the title.]":"Set the title.": \
  {--authors=,-a+}"[Set the authors. Multiple authors should be separated by the & character. Author names should be in the order Firstname Lastname.]":"Set the authors. Multiple authors should be separated by the & character. Author names should be in the order Firstname Lastname.": \
  --title-sort="[The version of the title to be used for sorting. If unspecified, and the title is specified, it will be auto-generated from the title.]":"The version of the title to be used for sorting. If unspecified, and the title is specified, it will be auto-generated from the title.": \
  --author-sort="[String to be used when sorting by author. If unspecified, and the author(s) are specified, it will be auto-generated from the author(s).]":"String to be used when sorting by author. If unspecified, and the author(s) are specified, it will be auto-generated from the author(s).": \
  --cover="[Set the cover to the specified file.]":"Set the cover to the specified file.":'_files -g "*.gif *.bmp *.jpg *.jpeg *.png *.GIF *.BMP *.JPG *.JPEG *.PNG"' \
  {--comments=,-c+}"[Set the ebook description.]":"Set the ebook description.": \
  {--publisher=,-p+}"[Set the ebook publisher.]":"Set the ebook publisher.": \
  --category="[Set the book category.]":"Set the book category.": \
  {--series=,-s+}"[Set the series this ebook belongs to.]":"Set the series this ebook belongs to.": \
  {--index=,-i+}"[Set the index of the book in this series.]":"Set the index of the book in this series.": \
  {--rating=,-r+}"[Set the rating. Should be a number between 1 and 5.]":"Set the rating. Should be a number between 1 and 5.": \
  --isbn="[Set the ISBN of the book.]":"Set the ISBN of the book.": \
  --identifier="[Set the identifiers for the book, can be specified multiple times. For example\: --identifier uri\:http\://acme.com --identifier isbn\:12345 To remove an identifier, specify no value, --identifier isbn\: Note that for EPUB files, an identifier marked as the package identifier cannot be removed.]":"Set the identifiers for the book, can be specified multiple times. For example\: --identifier uri\:http\://acme.com --identifier isbn\:12345 To remove an identifier, specify no value, --identifier isbn\: Note that for EPUB files, an identifier marked as the package identifier cannot be removed.": \
  --tags="[Set the tags for the book. Should be a comma separated list.]":"Set the tags for the book. Should be a comma separated list.": \
  {--book-producer=,-k+}"[Set the book producer.]":"Set the book producer.": \
  {--language=,-l+}"[Set the language.]":"Set the language.": \
  {--date=,-d+}"[Set the published date.]":"Set the published date.": \
  --get-cover="[Get the cover from the ebook and save it at as the specified file.]":"Get the cover from the ebook and save it at as the specified file.": \
  --to-opf="[Specify the name of an OPF file. The metadata will be written to the OPF file.]":"Specify the name of an OPF file. The metadata will be written to the OPF file.":'_files -g "*.opf"' \
  --from-opf="[Read metadata from the specified OPF file and use it to set metadata in the ebook. Metadata specified on the command line will override metadata read from the OPF file]":"Read metadata from the specified OPF file and use it to set metadata in the ebook. Metadata specified on the command line will override metadata read from the OPF file":'_files -g "*.opf"' \
  --lrf-bookid="[Set the BookID in LRF files]":"Set the BookID in LRF files": \
  "*:filename:_files -g '(#i)*.(azw|azw1|azw3|azw4|cbr|cbz|chm|docx|epub|fb2|html|htmlz|imp|lit|lrf|lrx|mobi|odt|oebzip|opf|pdb|pdf|pml|pmlz|pobi|prc|rar|rb|rtf|snb|tpz|txt|txtz|updb|zip)'" 
;;
calibre-server)
_arguments -s \
  '(- *)'--version"[show program's version number and exit]" \
  '(- *)'{--help,-h}"[show this help message and exit]" \
  {--port=,-p+}"[The port on which to listen. Default is 8080]":"The port on which to listen. Default is 8080": \
  {--timeout=,-t+}"[The server timeout in seconds. Default is 120]":"The server timeout in seconds. Default is 120": \
  --thread-pool="[The max number of worker threads to use. Default is 30]":"The max number of worker threads to use. Default is 30": \
  --password="[Set a password to restrict access. By default access is unrestricted.]":"Set a password to restrict access. By default access is unrestricted.": \
  --username="[Username for access. By default, it is\: 'calibre']":"Username for access. By default, it is\: 'calibre'": \
  --develop"[Development mode. Server automatically restarts on file changes and serves code files (html, css, js) from the file system instead of calibre's resource system.]" \
  --max-cover="[The maximum size for displayed covers. Default is '600x800'.]":"The maximum size for displayed covers. Default is '600x800'.": \
  --max-opds-items="[The maximum number of matches to return per OPDS query. This affects Stanza, WordPlayer, etc. integration.]":"The maximum number of matches to return per OPDS query. This affects Stanza, WordPlayer, etc. integration.": \
  --max-opds-ungrouped-items="[Group items in categories such as author/tags by first letter when there are more than this number of items. Default\: 100. Set to a large number to disable grouping.]":"Group items in categories such as author/tags by first letter when there are more than this number of items. Default\: 100. Set to a large number to disable grouping.": \
  --url-prefix="[Prefix to prepend to all URLs. Useful for reverseproxying to this server from Apache/nginx/etc.]":"Prefix to prepend to all URLs. Useful for reverseproxying to this server from Apache/nginx/etc.": \
  --with-library="[Path to the library folder to serve with the content server]":"Path to the library folder to serve with the content server":'_path_files -/' \
  --pidfile="[Write process PID to the specified file]":"Write process PID to the specified file":_files \
  --daemonize"[Run process in background as a daemon. No effect on windows.]" \
  {--restriction=,--virtual-library=}"[Specifies a virtual library to be used for this invocation. This option overrides any per-library settings specified in the GUI. For compatibility, if the value is not a virtual library but is a saved search, that saved search is used. Also note that if you do not specify a restriction, the value specified in the GUI (if any) will be used.]":"Specifies a virtual library to be used for this invocation. This option overrides any per-library settings specified in the GUI. For compatibility, if the value is not a virtual library but is a saved search, that saved search is used. Also note that if you do not specify a restriction, the value specified in the GUI (if any) will be used.": \
  --auto-reload"[Auto reload server when source code changes. May not work in all environments.]" 
;;
ebook-polish)
_arguments -s \
  '(- *)'--version"[show program's version number and exit]" \
  '(- *)'{--help,-h}"[show this help message and exit]" \
  {--embed-fonts,-e}"[Embed all fonts that are referenced in the document and are not already embedded. This will scan your computer for the fonts, and if they are found, they will be embedded into the document. Please ensure that you have the proper license for embedding the fonts used in this document. ]" \
  {--subset-fonts,-f}"[Subsetting fonts means reducing an embedded font to contain only the characters used from that font in the book. This greatly reduces the size of the font files (halving the font file sizes is common). For example, if the book uses a specific font for headers, then subsetting will reduce that font to contain only the characters present in the actual headers in the book. Or if the book embeds the bold and italic versions of a font, but bold and italic text is relatively rare, or absent altogether, then the bold and italic fonts can either be reduced to only a few characters or completely removed. The only downside to subsetting fonts is that if, at a later date you decide to add more text to your books, the newly added text might not be covered by the subset font. ]" \
  {--cover=,-c+}"[Path to a cover image. Changes the cover specified in the ebook. If no cover is present, or the cover is not properly identified, inserts a new cover.]":"Path to a cover image. Changes the cover specified in the ebook. If no cover is present, or the cover is not properly identified, inserts a new cover.":'_files -g "*.gif *.bmp *.jpg *.jpeg *.png *.GIF *.BMP *.JPG *.JPEG *.PNG"' \
  {--opf=,-o+}"[Path to an OPF file. The metadata in the book is updated from the OPF file.]":"Path to an OPF file. The metadata in the book is updated from the OPF file.":'_files -g "*.opf"' \
  {--jacket,-j}"[Insert a 'book jacket' page at the start of the book that contains all the book metadata such as title, tags, authors, series, comments, etc. Any previous book jacket will be replaced.]" \
  --remove-jacket"[Remove a previous inserted book jacket page. ]" \
  {--smarten-punctuation,-p}"[Convert plain text dashes, ellipsis, quotes, multiple hyphens, etc. into their typographically correct equivalents. Note that the algorithm can sometimes generate incorrect results, especially when single quotes at the start of contractions are involved. ]" \
  {--remove-unused-css,-u}"[Remove all unused CSS rules from stylesheets and <style> tags. Some books created from production templates can have a large number of extra CSS rules that dont match any actual content. These extra rules can slow down readers that need to parse them all. ]" \
  {--compress-images,-i}"[Losslessly compress images in the book, to reduce the filesize, without affecting image quality. ]" \
  --verbose"[Produce more verbose output, useful for debugging.]" \
  "*:filename:_files -g '(#i)*.(azw3|epub)'" 
;;
ebook-viewer)
_arguments -s \
  '(- *)'--version"[show program's version number and exit]" \
  '(- *)'{--help,-h}"[show this help message and exit]" \
  --raise-window"[If specified, viewer window will try to come to the front when started.]" \
  {--full-screen,--fullscreen,-f}"[If specified, viewer window will try to open full screen when started.]" \
  --debug-javascript"[Print javascript alert and console messages to the console]" \
  --open-at="[The position at which to open the specified book. The position is a location as displayed in the top left corner of the viewer.]":"The position at which to open the specified book. The position is a location as displayed in the top left corner of the viewer.": \
  --continue"[Continue reading at the previously opened book]" \
  --detach"[Detach from the controlling terminal, if any (linux only)]" \
  "*:filename:_files -g '(#i)*.(azw|azw3|azw4|cbc|cbr|cbz|chm|djv|djvu|docm|docx|downloaded_recipe|epub|fb2|htm|html|htmlz|lit|lrf|markdown|md|mobi|odt|opf|pdb|pdf|pml|pmlz|pobi|prc|rb|recipe|rtf|shtm|shtml|snb|tcr|text|textile|txt|txtz|updb|xhtm|xhtml)'" 
;;
calibre-smtp)
_arguments -s \
  '(- *)'--version"[show program's version number and exit]" \
  '(- *)'{--help,-h}"[show this help message and exit]" \
  {--localhost=,-l+}"[Host name of localhost. Used when connecting to SMTP server.]":"Host name of localhost. Used when connecting to SMTP server.": \
  {--outbox=,-o+}"[Path to maildir folder to store failed email messages in.]":"Path to maildir folder to store failed email messages in.":'_path_files -/' \
  {--fork,-f}"[Fork and deliver message in background. If you use this option, you should also use --outbox to handle delivery failures.]" \
  {--timeout=,-t+}"[Timeout for connection]":"Timeout for connection": \
  {--verbose,-v}"[Be more verbose]" \
  {--attachment=,-a+}"[File to attach to the email]":"File to attach to the email":_files \
  {--subject=,-s+}"[Subject of the email]":"Subject of the email": \
  {--relay=,-r+}"[An SMTP relay server to use to send mail.]":"An SMTP relay server to use to send mail.": \
  --port="[Port to connect to on relay server. Default is to use 465 if encryption method is SSL and 25 otherwise.]":"Port to connect to on relay server. Default is to use 465 if encryption method is SSL and 25 otherwise.": \
  {--username=,-u+}"[Username for relay]":"Username for relay": \
  {--password=,-p+}"[Password for relay]":"Password for relay": \
  {--encryption-method=,-e+}"[Encryption method to use when connecting to relay. Choices are TLS, SSL and NONE. Default is TLS. WARNING\: Choosing NONE is highly insecure]":"Encryption method to use when connecting to relay. Choices are TLS, SSL and NONE. Default is TLS. WARNING\: Choosing NONE is highly insecure":(TLS|SSL|NONE) 
;;
ebook-convert)
 _ebook_convert "$@"
;;
esac
