Nuovi XBSPSE

Vuoi proporre migliorie o comunicare la tua esperienza con BuDuScRiPt ? Bene, questo è il posto giusto !
BuDuS
Amministratore
Messaggi: 364
Iscritto il: 19/07/2009, 14:15
Contatta:

Re: Nuovi XBSPSE

Messaggioda BuDuS » 16/04/2012, 22:51

Dunque: ho analizzato il problema.

Una premessa: già da tempo mi sono accorto che è noioso individuare la tipologia di filtro da applicare; ho quindi pensato ad un metodo per individuare facilmente quale filtro è meglio utilizzare. Mi si è accesa la lampadina :!: e ho implementato una funzione che, dandogli in pasto la lista, restituisce quale filtro è opportuno usare (se lo individua).

La funzione è implementata all'interno del file "budus_XBSPSE_LIB.sh" così che sia più semplice gestire il tutto; ad esempio mi basta:
  1. Salvare la lista in un file
  2. Analizzare il file con una roba tipo:

    Codice: Seleziona tutto

    ./budus_XBSPSE_LIB.sh --filter-test comingsoon_irc.terribili.net
(dove "comingsoon_irc.terribili.net" è il file lista salvato, ad esempio con

Codice: Seleziona tutto

wget http://www.futureshell.it/comingsoon/ && mv index.html comingsoon_irc.terribili.net
) e vedo quale filtro ha dato il risultato migliore.

Questa funzionalità è presente nella BETA che ho appena caricato.

Detto questo, passiamo a cosa conviene usare per le fonti che hai citato; abbiamo:
  • comingsoon_irc.terribili.net = filter_MULTISTAGE_generic
  • BOiNG_IRC.BOiNG-Irc.it = filter_MULTISTAGE_generic
  • Music_World_IRC.BOiNG-Irc.it = filter_MULTISTAGE_generic

Trovi un esempio nel file che ti avevo spedito via e-mail: "budus_xdcc_plugin_Radiotheworld_amparo.sh"
Ti basta copiarlo e modificarlo.

Per quanto riguarda la tua domanda specifica: sì, si può implementare ed è proprio quello che fa il filtro in oggetto.
Il codice del filtro lo riporto per comodità:

Codice: Seleziona tutto

function filter_MULTISTAGE_generic() {
    {
   NETWORK_NAME="${1}"
   NETWORK_HOST="${2}"
   CHANNEL="${3}"
   
   IFS=$'\n'
   for record in $(cat ${plugin_tempfile} \
       | sed 's@<table class="lista"><tr><th colspan="4">@\nBUDUS_BOT_NAME@g' \
       | grep -F 'BUDUS_BOT_NAME' \
       | sed 's@^BUDUS_BOT_NAME@@g' \
       | sed 's@</th>@\t@g'); do
       BOT_NAME=$(echo "${record}" | awk -F'\t' '{print $1}')
      
       echo "${record}" \
      | awk -F'\t' '{print $2}' \
      | sed 's@<a href=".">@\n@g' \
      | sed 's@</a></td></tr><tr><td>@\t@g' \
      | sed 's@ *</td><td>@\t@g' \
      | sed 's@</td><td class="data">.*@@g' \
      | sed 's@&lt;@<@g' \
      | grep -v '<.*>' \
      | awk -v NETWORK_NAME="${NETWORK_NAME}" -v NETWORK_HOST="${NETWORK_HOST}" -v CHANNEL="${CHANNEL}" -v BOT_NAME="${BOT_NAME}" -F'\t' '{print NETWORK_NAME"\t"NETWORK_HOST"\t"CHANNEL"\t"BOT_NAME"\t"$2"\t"$1"\t"$3"\t/MSG "BOT_NAME" XDCC SEND "$2}'
   done
    } > /tmp/budus_XDCC_db_${plugin_name}.${date_code}
}


BuDuS ha scritto:Come funziona: dalla LISTA esegue una prima elaborazione che ha lo scopo di "creare i records" e poi, per ognuno di essi, va a sostituire i 3 parametri principali ed il nome del BOTSERV.
La vera difficoltà sta nel sostituire il nickname del BOTSERV; il trucco consiste nel creare N record - quanti sono i BOTSERV - formati da un primo campo che è il nickname di quest'ultimo e da un secondo campo che è rappresentato da tutte le risorse che esso fornisce (puoi immaginarlo come un sotto-database), il quale, viene poi suddiviso per formare il database finale.

Fortunatamente sembra che questa tipologia di lista, quando usata, sia sempre uguale, probabilmente usano tutti il medesimo software e, quest'ultimo, personalizza il codice in modo molto blando; questo ci consente di analizzare questo tipo di lista sempre con questo filtro (a differenza degli altri, che hanno spesso bisogno di piccole variazioni).


***

Per quanto riguarda la creazione del pacchetto da distribuire, temo di aver dato un consiglio sbagliato e mi correggo: probabilmente è meglio tenere gli XBSPSE in una sotto-cartella e, quando viene installato il pacchetto, creare dei link simbolici nella cartella dello script, in modo che vengano visti.

Questo consente di:
  1. Gestitli in modo molto più semplice; avendo gli XBSPSE che vai a realizzare in una cartella per conto proprio, diventa più semplice gestirli, non sono mischiati con i miei e, in generale, con la miriade di files dello script.
  2. Nel momento in cui vai a creare una nuova versione del tuo pacchetto e, potenzialmente, hai degli utenti che devono aggiornarlo (pensa ad esempio se hai dovuto eliminare degli XBSPSE - canale morto, ecc... - e sostituirli con altri), diventa più facile gestire la situazione: la sotto-cartella potrebbe essere nominata in base ad una versione, uno cancella la cartella vecchia, i link che risultano "fantasma" (perché puntano ad una cartella che non c'è più) e vai a creare i link nuovi, alla cartella giusta.
La cosa è gestibile dallo script di inizializzazione; quando sarà il momento di creare il pacchetto definitivo, con gli XBSPSE funzionanti, lo script di inizializzazione te lo posso fare io, che ti gestisce tutta la faccenda di cui sopra, così hai una buona base con cui mantenere aggiornato il tutto.


Torna a “Feedback / Proposte / Discussioni”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite