Aggiornamenti su VivendoByte Technorati Tags
Ogni tanto vi tedio parlandovi del plug-in per Windows Live Writer che mi sono scritto in WPF per poter “compilare†velocemente i tags con cui marcare i post che poi finiscono dritti dritti sul mio blog. Ricordo che questo plug-in fa parte di una piccola suite che ho pubblicato su CodePlex: i sorgenti sono pubblici e tutti voi potete utilizzarlo. Anzi, se mi trovate qualche baco, segnalatemelo!
Ve ne parlo perchè nel frattempo qualcosa è cambiato. Vediamo di spiegare cosa e perchè.
L’elenco di tags che il plug-in vi mostra arriva direttamente dal web-service esposto da Technorati.com. Questo web-service chiede in input l’url di un blog e restituisce una List<string>: fino alle precedenti versioni questa lista veniva bindata ad una ListBox di WPF per poter essere selezionate dall’utente.
Ho deciso di non utilizzare più stringhe, ma di creare una classe ad-hoc TechnoratiTag. Prima di potervi spiegare il perchè, occorre breve una premessa, relativa alle vecchie versioni del plug-in:
- se il PC su cui gira il plug-in risultava essere connesso alla Rete, allora l’elenco dei tags veniva preso da Technorati come spiegato prima
- se il PC su cui gira il plug-in NON risultava essere connesso alla Rete, l’elenco dei tags veniva preso da un file locale di cache, salvato in C:Documents and SettingsIgorDati applicazioniVivendoByte Technorati Tags.
Il web-service di Technorati restituisce i 100 tag più utilizzati: se per caso ne inserivate uno a mano – non compreso nell’elenco – ve lo perdavate alla grande: il tag veniva salvato effettivamente sulla cache locale, ma in realtà non veniva più proposto, proprio perchè la cache locale veniva ignorata se eravate connessi alla Rete.
Ho quindi pensato che la cosa migliore fosse quella di creare una List<TechnoratiTag>, che fosse l’unione dei tags presi da Technorati e presi dalla cache locale. La classe TechnoratiTag è così composta:
public class TechnoratiTag { private TagSource _source; private string _identifier; public TagSource Source { get { return _source; } set { _source = value; } } public string Identifier { get { return _identifier; } set { _identifier = value; } } }
La proprietà TagSource è un semplice enum che distingue i tags provenienti dalla Rete (TagSource.Internet) oppure dalla cache locale (TagSource.LocalDisk). L’implementazione del metodo LoadTags() del mio repository service è la seguente:
1 public List<TechnoratiTag> LoadTags() 2 { 3 List<TechnoratiTag> internetTags = null; 4 List<TechnoratiTag> localTags = null; 5 List<TechnoratiTag> tags = new List<TechnoratiTag>(); 6 7 if (TestInternetAvaiableService.TestInternetAvaiable()) 8 internetTags = this.LoadRemoteTags(); 9 10 localTags = this.LoadLocalTags(); 11 12 if (internetTags != null) 13 tags.AddRange(internetTags); 14 15 if (localTags != null) 16 foreach (TechnoratiTag t in localTags) 17 { 18 criteria = t.Identifier; 19 if (!tags.Exists(new Predicate<TechnoratiTag>(findTechnoratiTag))) 20 tags.Add(t); 21 } 22 23 tags.Sort(sortTechnoratiTag); 24 25 return tags; 26 }
Alle righe 7 ed 8 vengono caricati i tags dal web-service di Technorati. Alla riga 10 vengono caricati i tags dalla cache locale. Questi due elenchi vengono fusi in un unico List<Technorati> alle linee 15-21, escludendo con una opportuna logica i doppioni. Il tutto viene ordinato e restituito al chiamante.
Il risultato finale è che la ListBox di WPF non viene più bindata da un elenco di stringhe, ma ad un elenco di TechnoratiTag. Ecco uno screenshot:
Grazie ad un DataTemplateSelector viene applicato un template diverso a seconda del valore di ciascun TagSource: i tag che arrivano da Internet hanno un’iconcina con il globo, mentre quelli che arrivano dalla cache locale hanno un’iconcina del CD. In questo modo anche tag poco usati, che magari Technorati non vi segnalerebbe, compaiono magicamente nella lista!
Installazione
Oltre che su CodePlex, il download diretto dei binari è disponibile qui : Windows Live Writer Plugins Technorati Tags WPF. E’ sufficiente aprire il file zip e dezippare il tutto in C:ProgrammiWindows LiveWriterPlugins.
Technorati Tags: Plugin technorati codeplex wpf