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
La funzione è implementata all'interno del file "budus_XBSPSE_LIB.sh" così che sia più semplice gestire il tutto; ad esempio mi basta:
- Salvare la lista in un file
- Analizzare il file con una roba tipo:
Codice: Seleziona tutto
./budus_XBSPSE_LIB.sh --filter-test comingsoon_irc.terribili.net
Codice: Seleziona tutto
wget http://www.futureshell.it/comingsoon/ && mv index.html comingsoon_irc.terribili.netQuesta 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@<@<@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:
- 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.
- 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.