Una delle motivazioni per spostare il mio blog su Markdown è stata quella di smettere di fare affidamento su Windows Live Writer che non è più supportato e ha un numero di bug. Ma una cosa per cui era conveniente era incollare le immagini nei post. Potrei semplicemente usare lo strumento di ritaglio di Windows e incollare l’immagine direttamente in un post. In Markdown, ho bisogno di salvare l’immagine in un file e generare un markup per fare riferimento a quel file.
Per piccole attività automatizzate come questa, il mio strumento goto è l’incredibile LINQPad. Ho centinaia di script lì dentro per fare tutti i tipi di cose utili.
Generazione di un nome di file
Prima di tutto, il mio script deve capire dove salvare l’immagine negli appunti. Questo dipende da quale computer sto eseguendo mentre il mio repository GitHub è clonato su percorsi diversi. Ecco un trucco LINQ veloce e sporco per scegliere la cartella corretta su quale computer sono:
var path = new { @"C:\Users\markh\code\web\markblog\wwwroot\posts18",@"C:\code\soundcode\MarkBlog\wwwroot\posts18" }.First(p => Directory.Exists(p));
Successivamente, ho bisogno di generare un nome file. Io uso la “lumaca” del post come prefisso, più un numero crescente. Ancora una volta, uso un po ‘ di LINQ per trovare il primo suffisso che non è stato usato.
var prefix = "css-social-media-icon-list";var fileName = Enumerable.Range(1,100) .Select(n => Path.Combine(path,$"{prefix}-{n}.png")) .First(p => !File.Exists(p));
Salvataggio delle immagini dagli appunti
Ora sappiamo dove vogliamo salvare l’immagine, possiamo usare la classe System.Windows.Forms.Clipboard
per accedere all’immagine e salvarla in un file PNG. Non lasciarti scoraggiare da “Windows Forms” nel nome: questa classe è il modo più semplice per accedere agli appunti e può essere utilizzata da una console o da un’app WPF, se lo desideri.
Aggiorno anche il contenuto degli appunti con il Markdown che voglio incollare nel mio post sul blog. Quindi ora tutto quello che devo fare dopo aver usato lo strumento clip di Windows per fare uno screenshot è eseguire questo script e quindi incollare il Markdown nel mio editor di testo.
if(Clipboard.ContainsImage()){ Clipboard.GetImage().Save(fileName, ImageFormat.Png); Clipboard.SetText($"!(/posts/2018/{Path.GetFileName(fileName)})");}
Prendendo ulteriormente?
Quindi ho incollato un’immagine nei miei post di markdown quasi come lo era con Windows Live Writer, ma il passo successivo sarebbe incorporare un processo simile nel codice di Visual Studio che uso come mio editor. Penso che questo potrebbe essere trasformato in un’estensione del codice di Visual Studio, ma sospetto che ciò significhi una riscrittura nel nodo.js e imparare come funzionano le estensioni di codice VS. Se ci riesco, pubblicherò su come l’ho fatto.
Ma si spera che questo sia utile per chiunque abbia bisogno di accedere agli appunti in c#, e ti dà anche alcune idee su come gli script LINQPad possono essere utilizzati per automatizzare le attività manuali.