Panoramica
revolution/laravel-fullfeed è un pacchetto Laravel che estrae il corpo del testo dalle pagine web per i feed reader.Utilizza regole per sito (in JSON) per prelevare il contenuto necessario per ciascun articolo.
In origine era una funzionalità usata in un feed reader privato, che è stata estratta e resa pacchetto pubblico.
Requisiti
- PHP >= 8.4 (usa
Dom\HTMLDocument) - Laravel >= 12.x
Installazione
Pubblicazione del file di configurazione e delle definizioni dei siti
config/fullfeed.phpresources/fullfeed
Aggiornamento automatico dei file di definizione (composer post-update-cmd)
Se vuoi ripubblicare automaticamente le definizioni dei siti a ognicomposer update, aggiungi quanto segue a composer.json.
Uso base
Testing
Puoi stubbare la Facade conFullFeed::expects().
File delle regole per sito
items_all.json
items_all.json è la base per importare le regole nel formato LDRFullFeed (wedata).Livedoor Reader era un servizio molto conosciuto in Giappone, ma è stato chiuso; oggi restano soprattutto i dati delle regole come patrimonio. FullFeed sfrutta questo formato storico.
plus.json
plus.json è un esempio per aggiungere regole personalizzate.
Campi di configurazione delle regole
url: espressione regolare per il match sull’URL targetselector: selettore CSS (prioritario suxpath)xpath: specifica XPathenc: specifica dell’encoding, se serve conversione del set di carattericallable: classe Extractor personalizzata da eseguire come preprocessing (singola o array)after_callable: classe Extractor da eseguire alla fine come postprocessing
Ordine di esecuzione degli Extractor come pipeline
FullFeed usa il pattern Pipeline di Laravel e fa scorrere gli Extractor in ordine.- Le classi indicate in
callable XPathExtractorSelectorExtractor- Le classi indicate in
after_callable
Extractor integrati
RemoveElements
Rimuove gli elementi identificati dai selettori indicati.ReplaceMatches
Sostituisce le stringhe che corrispondono all’espressione regolare (opera sulla stringa HTML).StripTags
Rimuove i tag in modo equivalente astrip_tags().
Squish
Rimuove gli spazi in eccesso conStr::squish().
Aggiungere regole personalizzate
- Aggiungi un file JSON in
resources/fullfeed - Aggiungilo a
pathsinconfig/fullfeed.php
data.url corrisponde, quindi è consigliato mettere il file aggiuntivo all’inizio di paths.