Skip to main content

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

Per usare la versione di sviluppo:

Pubblicazione del file di configurazione e delle definizioni dei siti

Con questo comando vengono creati:
  • config/fullfeed.php
  • resources/fullfeed

Aggiornamento automatico dei file di definizione (composer post-update-cmd)

Se vuoi ripubblicare automaticamente le definizioni dei siti a ogni composer update, aggiungi quanto segue a composer.json.

Uso base

Testing

Puoi stubbare la Facade con FullFeed::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 target
  • selector: selettore CSS (prioritario su xpath)
  • xpath: specifica XPath
  • enc: specifica dell’encoding, se serve conversione del set di caratteri
  • callable: 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.
  1. Le classi indicate in callable
  2. XPathExtractor
  3. SelectorExtractor
  4. Le classi indicate in after_callable
Puoi inserire elaborazioni personalizzate prima e dopo la semplice estrazione XPath/CSS: design ideale per adattarsi alle peculiarità di ogni sito.

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 a strip_tags().

Squish

Rimuove gli spazi in eccesso con Str::squish().

Aggiungere regole personalizzate

  1. Aggiungi un file JSON in resources/fullfeed
  2. Aggiungilo a paths in config/fullfeed.php
Viene usata la prima regola il cui data.url corrisponde, quindi è consigliato mettere il file aggiuntivo all’inizio di paths.
Ultima modifica il 13 luglio 2026