Frattanto automatizzo


La formattazione della serie tormentone “frattanto …” è piaciuta, si direbbe dai commenti. E da parte mia la compilazione del testo all’atto della raccolta del link rende più spedita la stesura del post. E si può fare anche di più: automatizzare la formattazione del file dei dati come HTML comanda. Forse, almeno ci provo, con uno script sorprendentemente breve.
E siccome sto ravanando sulla versione 3 di Python lo faccio con quello 8)

Il file dei dati, fnb-lst, costruito man mano che trovo una pagina che mi sembra interessante è così composto (naturalmente questo è finto, solo per il test)

Microsoft dice che il cloud è il futuro
http://tech.slashdot.org/story/11/09/14/2219226/Windows-8-Roundup


Aggiungere nuovi font su Ubuntu
http://www.lffl.org/2011/09/come-aggiungere-nuovi-font-su-ubuntu.html
https://okpanico.wordpress.com
http://ostatic.com/blog/do-you-think-linux-is-secure


Linux has taken a couple of blows recently
http://ostatic.com/blog/do-you-think-linux-is-secure

Come si vede ci sono dei blocchi fatti da una descrizione, anche di più righe, seguite da uno o più link, uno per riga. Per comodità lascio una riga vuota di separazione tra un blocco e il successivo ma non è richiesto; risulta però comodo nel caso di aggiunta di ulteriori link per lo stesso argomento.

Quello che si vuole ottenere è qualcosa come questo. Ma allora è banale! Tutto quello che serve è un file che associ l’URL del sito al suo nome, ecco allora il file fnb-dict


http://tech.slashdot.org:::Slashdot
http://www.lffl.org:::lffl

E questo è lo script, fnb.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

fnbdict = 'fnb-dict'
fnbsource = 'fnb-lst'
fnbout = 'fnb-out'
fnbadd = 'fnb-dict-add'

udict = {}

def make_dict():
	dsep = ':::'
	fdict = open(fnbdict, 'r')
	ldict = fdict.readlines()
	fdict.close()
	for c in ldict:
		st = c.strip()
		if len(st) > 0: # riga non vuota
			p = st.index(dsep)
			nome = st[p + 3:]
			url = st[:p]
			udict[url] = nome

def make_fnb():
	tpl = '::: <a href="{0}" target="_blank">{1}</a>\n'
	ladd = [] #lista aggiunte

	#for d in udict.keys():
	#	print(d, ' ', udict[d])

	fs = open(fnbsource, 'r')
	fo = open(fnbout, 'w')

	#ciclo di lettura/scrittura
	st = fs.readline()
	while len(st) > 0:
		if st.strip().startswith('http'):
			st = st.strip()
			p = st.find('/', 7)
			if p == -1:
				site = st
			else:
				site = st[:p]
			if site in udict.keys():
				anchor = udict.get(site)
			else:
				anchor = '***'
				if not (site in ladd):
					ladd.append(site)
			fo.write(tpl.format(st, anchor))
		else:
			fo.write(st)
		st = fs.readline()

	fs.close()
	fo.close()

	if len(ladd) > 0:
		fa = open(fnbadd, 'w')
		for e in ladd:
			fa.write("{0}\n".format(e))
		fa.close()
		print(len(ladd), 'siti da aggiungere')

#main
make_dict()
make_fnb()
print('OK\n')

Eseguendolo si ha

Intanto ci dice che ci sono due siti senza nome (vengono elencati nel file fnb-dict-add, che sarà da completare e inserire nel file fnb-dict), poi produce il file fnb.out, eccolo


Microsoft dice che il cloud è il futuro
::: <a href="http://tech.slashdot.org/story/11/09/14/2219226/Windows-8-Roundup" target="_blank">Slashdot</a>


Aggiungere nuovi font su Ubuntu
::: <a href="http://www.lffl.org/2011/09/come-aggiungere-nuovi-font-su-ubuntu.html" target="_blank">lffl</a>
::: <a href="https://okpanico.wordpress.com" target="_blank">***</a>
::: <a href="http://ostatic.com/blog/do-you-think-linux-is-secure" target="_blank">***</a>


Linux has taken a couple of blows recently
::: <a href="http://ostatic.com/blog/do-you-think-linux-is-secure" target="_blank">***</a>

che è quello che andrà inserito nel post. Questo file richiede qualche intervento manuale, ma va bene così mi costringe a leggere quello che comparirà. Inserito brutalmente nel browser sarebbe così

Orrendo vero? Ma contiene tutto quello che serve, solo da formattare inserendo degli a-capo 8)

OK, da vedere se funziona davvero, e se qualcuno lo trova interessante meglio. Per esempio RMS ha reagito così

Nota: WordPress per qualche ragione mysteriuosa assay mi formatta a modo suo i primi due pezzi di file testo inseriti. Il terzo è OK, ho provato a copiarlo negli altri due e sostituire il contenuto: niente, a lui piace così e allora così piace anche a me 😦

Posta un commento o usa questo indirizzo per il trackback.

Commenti

  • laperfidanera2fidanera  Il 17 settembre 2011 alle 13:29

    Be’, dài, non ti lamentare di WordPress, anche Blogger fa quel che gli pare, no? soprattutto con le immagini…

    • juhan  Il 17 settembre 2011 alle 14:14

      Sì, sono due editor non proprio il massimo 😉 Io, a suo tempo, li avrei bocciati entrambi.

  • laperfidanera  Il 17 settembre 2011 alle 13:32

    Per il commento qui sopra il sistema ha inventato un nuovo nome mio: sono fatalista, prendo la vita come viene… boh!

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: