API-dokumentation för recept

API:n för skriva recept är definierade av BasicNewsRecipe

class calibre.web.feeds.news.BasicNewsRecipe(options, log, progress_reporter)[source]

Basklass som innehåller logik behövs i alla recept. Genom att åsidosätta progressivt mer av funktionaliteten i denna klass, kan du göra allt mer kundanpassade/kraftfulla recept. En handledning introduktion till att skapa recept, se Lägg till din favorit nyhetswebbplats.

abort_article(msg=None)[source]

Anropa denna metod inuti någon av förbehandlingsmetoderna för att avbryta hämtningen av den aktuella artikeln. Användbart att hoppa över artiklar som innehåller olämpligt innehåll, såsom hela videoklippsartiklar.

abort_recipe_processing(msg)[source]

Orsakar att recepthämtningssystemet avbryter hämtningen av detta recept, visning av ett enkelt återkopplingsmeddelande till användaren.

add_toc_thumbnail(article, src)[source]

Kalla detta från populate_article_metadata med attributet src för en <img> etikett från artikeln som är lämplig att använda som miniatyrbild representerar artikeln i innehållsförteckningen. Huruvida ikonen faktiskt används är beroende av enhet (för närvarande endast används av Kindle-läsare). Observera att den refererade bilden måste vara en som framgångsrikt hämtats ner, annars kommer det att ignoreras.

classmethod adeify_images(soup)[source]

Om ditt recept vid konvertering till EPUB har problem med bilderna när de visas i Adobe Digital Editions, kalla denna metod inifrån postprocess_html().

canonicalize_internal_url(url, is_link=True)[source]

Återge en uppsättning kanoniska representationer av url. Grundinställningen använder bara servervärdnamn och sökväg för URL, ignorerar eventuella frågeparametrar, fragment, o.s.v. kanoniska representationer måste vara unika för alla webbadresser till den här nyhetskällan. Om de inte är det, så interna länkar kan lösas felaktigt.

Parametrar:is_link – Är True om webbadressen kommer från en intern länk i en HTML-fil. False om webbadressen är URL som används för att hämtar en artikel.
cleanup()[source]

Anropas efter alla artiklar har hämtats. Använd den för att göra godtycklig sanering som att logga ut från prenumerationsplatser o.s.v.

clone_browser(br)[source]

Klona webbläsare br. Klonade webbläsare används för flertrådade hämtningar, eftersom mechanize (mekanisera) inte är trådsäkert. Standard kloningsrutinerna ska fånga de flesta webbläsaranpassningar, men om du gör något exotiskt i ditt recept, ska du åsidosätta den här metoden i ditt recept och klona manuellt.

Klonade webbläsarinstanser använder samma, trådsäkra CookieJar som standard, såvida du inte har anpassad hantering av kakor.

default_cover(cover_file)[source]

Skapa en generisk omslag för recept som inte har ett omslag

download()[source]

Hämta och förbearbeta alla artiklar från flöde i detta recept. Denna metod bör kallas en gång för en viss receptinstans. Kallas det mer än en gång kommer det att leda till odefinierade beteenden. :return: Path to index.html

extract_readable_article(html, url)[source]

Tar fram huvudartikelns innehåll från “html”, rensar upp och återvänder som en (article_html, extracted_title) tupel. Baserat på den ursprungliga läsbarhet algoritm genom Arc90.

get_article_url(article)[source]

Överrid i en underklass för att anpassa utvinning av URL som hänvisar till innehållet för varje artikel. Återge artikel-URL. Den anropas med article, ett objekt som representerar en analyserad artikel från ett flöde. Se ‘feedparser <https://pythonhosted.org/feedparser/>’ _. Normalt söker den efter den ursprungliga länken (till flöde syndikerade via en tjänst som Feedburner eller pheedo) och om den hittas, återger detta eller annars återges article.link.

get_browser(*args, **kwargs)[source]

Återge en webbläsarinstans som används för att hämta dokument från webben. Som standard återges en mechanize (mekanisera) webbläsarinstans som stöder kakor, ignorerar robots.txt, hanterar uppdateringar och har en Mozilla Firefox användaragent.

Om ditt recept kräver att du loggar in först, överrids denna metod i din underklass. Till exempel är följande kod används i New York Times recept för att logga in för full tillgång:

def get_browser(self):
    br = BasicNewsRecipe.get_browser(self)
    if self.username is not None and self.password is not None:
        br.open('https://www.nytimes.com/auth/login')
        br.select_form(name='login')
        br['USERID']   = self.username
        br['PASSWORD'] = self.password
        br.submit()
    return br
get_cover_url()[source]

Återge en URL till omslagsbild för den här utgåvan eller` None`. Som standard återges värdet av elementet self.cover_url som normalt är None. Om du vill att ditt recept för att hämtar ett omslag för e-boken överrids den här metoden i din underklass, eller ställa medlemsvariabeln self.cover_url innan denna metod anropas.

get_extra_css()[source]

Som standard återges self.extra_css. Åsidosätt om du vill programmässigt generera extra_css.

get_feeds()[source]

Återge en lista med RSS flöde att hämta för den här profilen. Varje element i listan måste vara ett 2-elements tupel av formen (titel, url). Om titeln är None eller en tom sträng, används titeln från flödet. Denna metod är användbar om du receptet behöver göra en del bearbetning för att räkna ut lista med inlägg för att hämtar. Om så är fallet, överrid i din underklass.

get_masthead_title()[source]

Åsidosätt i underklass för att använda något annat än receptstiteln

get_masthead_url()[source]

Återge en URL till redaktionsloggo till denna utgåva eller` None`. Som standard återger värdet av elementet self.masthead_url som normalt är None. Om du vill att ditt recept ska hämtar en redationsloggon för e-boken överrrid den här metoden i din underklass, eller sätt medlemmen variabeln self.masthead_url innan denna metod anropas. Redaktionsloggo används i Kindle MOBI-filer.

get_obfuscated_article(url)[source]

Om du sätter articles_are_obfuscated anropas denna metod med varje artikel URL. Det ska återge sökvägen till en fil i filsystemet som innehåller artikeln HTML. Filen bearbetas av den rekursiva HTML-hämtmotor, så det kan innehålla länkar till sidor/bilder på webben.

Denna metod är oftast användbart för webbplatser som försöker göra det svårt att komma åt artikelns innehåll automatiskt.

classmethod image_url_processor(baseurl, url)[source]

Utför någon behandling på bildwebbadresser (kanske ta bort storleksbegränsningar för dynamiskt genererade bilder, o.s.v.) och återger bearbetad URL.

index_to_soup(url_or_raw, raw=False, as_tree=False)[source]

Bekväm metod som använder en webadress (URL) för indexera en sida och återger en BeautifulSoup av den.

url_or_raw: Antingen en webbadress eller den hämtade indexsidan som en sträng

Återge True om länken ska följas eller False annars. Som standard höjer NotImplementedError som orsakar hämtningen att ignorera det.

Parametrar:
  • url – Webbadressen som ska följas
  • tag – Ettiketen för vilken URL erhölls
parse_feeds()[source]

Skapa en lista med artiklar från listan med flöden som återges av BasicNewsRecipe.get_feeds(). Återger en lista med Feed objekt.

parse_index()[source]

Denna metod bör implementeras på recept för att tolka en webbplats istället för flöden genererar en lista med artiklar. Typiska användningsområden är för nyhetskällor som har en “tryckt upplaga”-webbplats som listar alla artiklar i den aktuella tryckupplagan. Om denna funktion implementeras kommer den att användas istället för BasicNewsRecipe.parse_feeds().

Det måste återge en lista. Varje element i listan måste vara ett 2-inslag tupel av formen ("flödestitel", lista med artiklar).

Varje lista med artiklar måste innehålla ordlistor av formen:

{
'title'       : article title,
'url'         : URL of print version,
'date'        : The publication date of the article as a string,
'description' : A summary of the article
'content'     : The full article (can be an empty string). Obsolete
                do not use, instead save the content to a temporary
                file and pass a file:///path/to/temp/file.html as
                the URL.
}

Till exempel, se receptet för hämtning av The Atlantic. Dessutom kan du lägga till ‘författare’ till författaren till artikeln.

Om du vill avbryta behandlingen av någon anledning och låta calibre visa användaren ett enkelt budskap istället för ett fel, anropa abort_recipe_processing().

populate_article_metadata(article, soup, first)[source]

Anropas när varje HTML-sida som tillhör artikel hämtas. Avsedd att användas för att få artikelns metadata som författare/sammanfattning/etc. från analyserad HTML (massa).

Parametrar:
  • article – Ett objekt av klass calibre.web.feeds.Article. Om du ändrar sammanfattningen, kom ihåg att också ändra text_summary
  • soup – Tolkad HTML tillhör den här artikeln
  • first – True iff tolkade HTML är den första sidan av artikeln.
postprocess_book(oeb, opts, log)[source]

Kör någon behövd efterbehandling på den tolkade hämtade e-boken.

Parametrar:
  • oeb – Ett OEBBook-objekt
  • opts – Konverteringsalternativ
postprocess_html(soup, first_fetch)[source]

Denna metod kallas med källan till varje hämtad: term HTML-fil, efter att den analyserats för länkar och bilder. Den kan användas för att göra godtyckligt kraftfull efterbehandling på HTML. Det bör återge soup efter bearbetning det.

Parametrar:
  • soup – En BeautifulSoup instans innehållande hämtad HTML.
  • first_fetch – True om detta är första sidan av en artikel.
preprocess_html(soup)[source]

Denna metod kallas med källan till varje hämtad HTML-fil, innan den analyseras för länkar och bilder. Det kallas efter rensningen som specificerats remove_tags o.s.v. Det kan användas för att göra godtyckliga och starka förbearbetning på HTML. Det bör återge soup efter bearbetning det.

soup: En BeautifulSoup instans innehållande hämtad HTML.

preprocess_raw_html(raw_html, url)[source]

Denna metod anropas med källa av varje hämtad HTML-fil, innan den tolkas i ett objektträd. raw_html är en unicode sträng som representerar råa HTML-hämtning från webben. url är URL från vilken HTML var hämtad.

Obserevera att denna metod agerar innan preprocess_regexps.

Denna metod måste återge den bearbetade raw_html som ett unicode-objekt.

classmethod print_version(url)[source]

Ta en url som hänvisar till en webbplats med artikelinnehåll och återger URL som hänvisar till en utskrivbar version av artikeln. Som standard gör ingenting. TIll exempel:

def print_version(self, url):
    return url + '?&pagewanted=print'
skip_ad_pages(soup)[source]

Denna metod anropas med källan till varje hämtad HTML-fil, innan någon av rensningsattribut som remove_tags, keep_only_tags tillämpas. Observera att preprocess_regexps kommer redan ha använts. Det är tänkt att låta receptet att hoppa över annonssidor. Om soup är en annonssida, återge HTML den verkliga sidan. Annars återges None.

soup: En BeautifulSoup instans innehållande hämtad HTML.

sort_index_by(index, weights)[source]

Bekväm metod för att sortera titlar i index enligt weights. index` sorteras efter plats. Återger index.

index: En lista med titlar.

weights: En ordlista som översätter vikt mot titel. Om något titelindex inte har vikt, antas de ha vikten 0.

classmethod tag_to_string(tag, use_alt=True, normalize_whitespace=True)[source]

Bekväm metod som använder en BeautifulSoup tag-etikett och extraherar text från den rekursivt, inkluderande godtycklig CDATA sektion och alt-attribut. Återge en möjlig tom unicode-sträng.

use_alt: Om True försök använd alt attribut för etiketter som inte har något textinnehåll

tag: BeautifulSoup Tag

articles_are_obfuscated = False

Ställ in till True och implementerar get_obfuscated_article() för att hantera webbplatser som försöker göra det svårt att skrapa fram innehåll.

auto_cleanup = False

Automatiskt extrahera all text från hämtade artikelsidor. Använder algoritmerna från läsbarhet projektet. Sätt denna till True innebär att du inte behöver oroa dig för att städa upp hämtad HTML manuellt (även om manuell rensning alltid kommer att vara bättre).

auto_cleanup_keep = None

Specify elements that the auto cleanup algorithm should never remove. The syntax is a XPath expression. For example:

auto_cleanup_keep = '//div[@id="article-image"]' will keep all divs with
                                               id="article-image"
auto_cleanup_keep = '//*[@class="important"]' will keep all elements
                                            with class="important"
auto_cleanup_keep = '//div[@id="article-image"]|//span[@class="important"]'
                  will keep all divs with id="article-image" and spans
                  with class="important"
center_navbar = True

Om True centreras navigationslisten annars är den vänsterjusterad

compress_news_images = False

Ändra den till False för att ignorera alla skalnings- och komprimeringsparametrar och passera bilder igenom omodifierad. Om True och andra komprimeringsparametrar behåller sina standardvärden, kommer jpeg-bilder skalas för att passa in skärmmått som fastställts av utdataprofil och komprimeras till storleken på de flesta (b * h)/16 där b x h är det skalade bildens dimensioner .

compress_news_images_auto_size = 16

Den faktor som används när automatisk komprimera jpeg-bilder. Om värdet är None, är komprimering automatisk avaktiverad. Annars kommer bilderna att minskas i storlek till (b * h) / compress_news_images_auto_size byte om möjligt genom att minska kvalitetsnivån, där bxh är bildens dimensioner i pixlar. Den minsta jpeg-kvalitet kommer att vara 5/100 så det är möjligt denna begränsning inte kommer att uppfyllas. Denna parameter kan åsidosättas av parametern compress_news_images_max_size som ger en fast maximal storlek för bilder. Observera att om du aktiverar scale_news_images_to_device kommer sedan bilden först skalas och sedan dess kvalitet sänkas tills dess storlek är mindre än (b*h)/faktor där w och h är nu bildens skalade dimensioner. Med andra ord, denna kompression sker efter skalning.

compress_news_images_max_size = None

Sätt jpeg-kvalitet så att bilder inte överskrider angiven storlek (i kBytes). Om inställd, åsidosättar denna parameter automatisk komprimering via compress_news_images_auto_size. Minimum jpeg-kvalitet kommer vara 5/100 so det är möjligt att denna restriktion inte möts.

conversion_options = {}

Receptspecifika alternativ för att anpassa konvertering av hämtat innehåll in i en e-bok. Dessa kommer åsidosätta alla användare eller insticksprogram specifika värden, så använd bara om det är absolut nödvändigt. Till exempel:

conversion_options = {
  'base_font_size'   : 16,
  'tags'             : 'mytag1,mytag2',
  'title'            : 'My Title',
  'linearize_tables' : True,
}
cover_margins = (0, 0, '#ffffff')

Som standard återges omslagsbild av get_cover_url () och kommer att användas som omslag för tidskriften. Överridning av detta i ditt recept instruerar calibre att anpassa det hämtade omslaget i en ram vars bredd och höjd uttrycks som en procentandel av den hämtade omslaget. cover_margins = (10, 15, “#ffffff”) fyller omslaget med en vit marginal 10 pixlar på vänster och höger, 15 pixlar på toppen och botten. Färgnamn som fastställts på https://www.imagemagick.org/script/color.php Observera att av någon anledning, vitt fungerar inte alltid på fönster. Använd #ffffff istället

delay = 0

Fördröjning mellan konsekutiva hämtningar i sekunder. Argumentet kan vara ett flyttal för att indikera mer exakt tid.

description = u''

Ett par rader som beskriver innehållet detta recept hämtar. Detta kommer främst att användas i ett användargränssnitt som presenterar en lista med recept.

encoding = None

Ange en kodningsöverridning för webbplatser som har en felaktig charset-specifikation. Det vanligaste är att ange latin1 och använda cp1252. Om None, försöka identifiera kodningen. Om det är en anropbar, anropas den anropbara med två argument: Receptobjektet och den källa som ska avkodas. Det måste återge den avkodade källan.

extra_css = None

Ange någon extra CSS som bör läggas till hämtade HTML filer. Det kommer att införas i <style> etiketter, precis före den avslutande </head> etiketten därigenom åsidosätts alla CSS utom det som deklarerats med hjälp av stilattribut på individuella HTML etiketter. Observera att om du vill att programmässigt generera extra_css åsidosätt get_extra_css() metoden istället. Till exempel:

extra_css = '.heading { font: serif x-large }'
feeds = None

Förteckning över flöden att hämtar. Kan vara antingen [url1, url2, ...] eller [('title1', url1), ('title2', url2),...]

filter_regexps = []

Lista med reguljära uttryck som avgör vilka länkar att ignorera. Om den är tom ignoreras det. Endast användas om is_link_wanted inte implementeras. Exempelvis:

filter_regexps = [r'ads\.doubleclick\.net']

kommer ta bort alla URL-adresser som har ads.doubleclick.net in sig.

Bara en av BasicNewsRecipe.match_regexps eller BasicNewsRecipe.filter_regexps skulle bara definierad.

handle_gzip = False

Ställ in till True om du vill använda gzippade överföringar. Observera att vissa gamla servrar fungerar dåligt med detta så den är avstängd som standard.

ignore_duplicate_articles = None

Ignorera dubbletter av artiklar som finns i mer än ett avsnitt. En dubblettartikel är en artikel som har samma titel och / eller webbadress. Att ignorera artiklar med samma titel, ställa detta till:

ignore_duplicate_articles = {'title'}

För att använda URL:er istället, sätt den till:

ignore_duplicate_articles = {'url'}

För att matcha titel eller URL, sätt den till:

ignore_duplicate_articles = {'title', 'url'}
keep_only_tags = []

Håll endast specificerade etiketter och deras underkategorier. För formatet för att ange en etikett se BasicNewsRecipe.remove_tags. Om denna lista inte är tom, då blir <body> etikett tom och återfylld med etiketter som matchar objekt i denna lista. Till exempel:

keep_only_tags = [dict(id=['content', 'heading'])]

kommer bara ha etiketter som har ett id attribut av “content” eller “heading”.

language = 'und'

Språket som nyheterna är i. Måste vara en ISO-639-kod antingen två eller tre tecken långt

masthead_url = None

Som standard, kommer calibre att använda en redaktionslogga (endast Kindle). Åsido detta i ditt recept för att ge en url för att användas som en redaktionslogga.

match_regexps = []

Lista med reguljära uttryck som avgör vilka länkar att följa. Om den är tom, ignoreras den. Endast användas om is_link_wanted inte implementeras. Exempelvis:

match_regexps = [r'page=[0-9]+']

kommer matcha alla URLer som har page=some number i sig.

Bara en av BasicNewsRecipe.match_regexps eller BasicNewsRecipe.filter_regexps skulle bara definierad.

max_articles_per_feed = 100

Maximalt antal artiklar att hämta från varje flöde. Den är primärt användbar för flöde som inte har artikeldatum. För de flesta flödes, bör du använda BasicNewsRecipe.oldest_article

needs_subscription = False

Om True kommer gränssnittet att be användaren om ett användarnamn och lösenord för att använda vid hämtning. Om inställningen är “frivilligt” att använda ett användarnamn och lösenord blir tillval

no_stylesheets = False

Bekväm flagga för att avaktivera laddning av utformningsmallar för webbplatser som har alltför komplexa mallar som är olämpliga för konvertering till e-bokformat. Om True hämtas inte mallar och bearbetas

oldest_article = 7.0

Äldsta artikel att hämtar från denna nyhetskälla. I dagar.

preprocess_regexps = []

Lista med regexp substitutionsregler att köras vid hämtning HTML. Varje element i listan bör vara en tupel. Första elementet av tupel bör vara ett kompilerat regujärt uttryck och andra en anropsbar som tar ett matchande objekt och återger en sträng för att ersätta träffen. Till exempel:

preprocess_regexps = [
   (re.compile(r'<!--Article ends here-->.*</body>', re.DOTALL|re.IGNORECASE),
    lambda match: '</body>'),
]

kommer ta bort allt från <!–Article ends here–> till </body>.

publication_type = 'unknown'

Publikationstyp inställd till tidning, tidskrift eller blogg. Om inställt till None, kommer ingen publikationstypsmetadata skrivas till OPF-filen.

recipe_disabled = None

Ändra till en icke-tom sträng för att avaktivera detta recept. Strängen kommer att användas som avaktiverade meddelande

recursions = 0

Antal nivåer av länkar att följa på en artikelwebbplats

remove_attributes = []

Lista med attribut att ta bort från alla etiketter. Exempelvis:

remove_attributes = ['style', 'font']
remove_empty_feeds = False

Om True tas tomma flöden bort från utdata. Det här alternativet har ingen effekt om parse_index överrids i underklassen. Den är avsedd endast för recept som återger en lista med flöden som använder feeds eller get_feeds(). Den används också om du använder alternativet ignore_duplicate_articles.

remove_javascript = True

Bekväm flagga att strippa alla javascript etiketter från hämtad HTML

remove_tags = []

Lista med etiketter som ska avlägsnas. Angivna etiketter tas bort från hämtad HTML. En etikett anges som en ordlista på formen:

{
 name      : 'tag name',   #e.g. 'div'
 attrs     : a dictionary, #e.g. {class: 'advertisment'}
}

Alla tangenter är valbara. För full förklaring av sökningskriteria, se Beautiful Soup Ett vanligt exempel:

remove_tags = [dict(name='div', attrs={'class':'advert'})]

Detta tar bort alla <div class=”advert”> etiketter och deras underkategorier från hämtade HTML.

remove_tags_after = None

Ta bort alla etiketter som förekommer efter angiven etikett. För formatet att ange en etikett se BasicNewsRecipe.remove_tags. Till exempel:

remove_tags_after = [dict(id='content')]

kommer ta bort alla etiketter efter första elementet med id=”content”.

remove_tags_before = None

Ta bort alla etiketter som förekommer före angiven etikett. För formatet att ange en etikett se BasicNewsRecipe.remove_tags. Till exempel:

remove_tags_before = dict(id='content')

kommer ta bort alla etiketter före första elementet med id=”content”.

requires_version = (0, 6, 0)

Lägsta version av calibre som behövs för detta recept

Om inställt till True så kommer länkar i hämtade artiklar som hänvisar till andra hämtade artiklar ändras till att peka på den hämtade kopian av artikeln snarare än dess ursprungliga webbadress . Om du ställer in detta till True, behöver du kanske du också införa canonicalize_internal_url() för att arbeta med URL-schemat för just din webbplats.

reverse_article_order = False

Vänd om ordningen på artiklar i varje flöde

scale_news_images = None

Maximala dimensioner (w, h) att skala bilder till. Om scale_news_images_to_device är True så är detta inställt på enhetens skärmmått för utskriftsprofil om det inte finns någon profil som, i vilket fall det är kvar på oavsett värde den har tilldelats (standard None).

scale_news_images_to_device = True

Skala om bilder för att passa enhetens skärmmått inställda av utdataprofilen. Ignoreras om ingen utdataprofil är angiven.

simultaneous_downloads = 5

Antal samtidiga hämtningar. Sätt till 1 om servern är petig. Automatisk reducerat till 1 om attr:BasicNewsRecipe.delay > 0

summary_length = 500

Maximalt antal tecken i den korta beskrivningen

template_css = u'\n .article_date {\n color: gray; font-family: monospace;\n }\n\n .article_description {\n text-indent: 0pt;\n }\n\n a.article {\n font-weight: bold; text-align:left;\n }\n\n a.feed {\n font-weight: bold;\n }\n\n .calibre_navbar {\n font-family:monospace;\n }\n '

CSS som används för att utforma mallar, d.v.s. navigeringsfältet och innehållsförteckningen. Istället för att åsidosätta denna variabel bör du använda extra_css i receptet för att anpassa utseende och känsla.

timefmt = ' [%a, %d %b %Y]'

Formatsträng för datum att visa på första sidan. Som standard: Day_Name, Day_Number Month_Name Year

timeout = 120.0

Tidsbegränsning för hämta filer från servern i sekunder

title = u'Ok\xe4nd nyhetsk\xe4lla'

Titel att använda för e-bok

use_embedded_content = None

Normalt försöker vi uppskatta om ett flöde har hela artiklar inbäddade i den baserat på längden av inbäddat innehåll. Om None, sedan standard används gissning. Om True då antar vi alltid flöden har inbäddat innehåll och om` False` kan vi alltid utgå från flödet inte har inbäddat innehåll.