Windows Live Writer Post Download Plugin

English version of these instructions.

Come promesso, questo è il post sul plugin da premio Nobel che mi sono auto assegnato.

Il problema: tempo fa cercando sul mio blog, ho scoperto che un post antico non si visualizzava correttamente in quanto l’immagine hot-linkata su WikiPedia era stata rinominata. Siccome la piattaforma ancora non supporta l’editing on-line (Всему свое время, direbbero i russi), l’alternativa era quella di aprire gli ultimi 500 post via Windows Live Writer, trovare quello giusto, editarlo e ripubblicarlo. Più facile a dirsi che a farsi ed il post è rimasto “rotto” per un bel po’

La soluzione (teorica): la prima soluzione è stata quella di suggerire al team di Windows Live Writer di supportare l’apertura di un post tramite PostId. Purtroppo il suggerimento non è stato recepito in tempo (vorrei sperare) ed io ed un paio di colleghi siamo rimasti con un palmo di naso.

La soluzione (pratica): armato di santa pazienza e di magico reflector, ho ravanato un bel po’ nel codice di Windows Live Writer ed ho scoperto che la magica funzionalità era a qualche API di distanza. Da lì è stato poi semplice: ho referenziato le giuste DLL, creato le 10 righe di codice necessarie per fare la magia e ho creato uno URI protocol handler (wlw://) per invocare il codicillo magico. Il tutto condito di un installer ed una UI frichigna, che poi in realtà altro non è che una semplice animazione visto che scaricare il post via webservice non è una delle operazioni più veloci del mondo ed ho dovuto renderla asincrona. Tutto qui? Non proprio. Nel momento in cui ho testato il plugin sul mio PC in ufficio per testare che tutto funzionasse su un PC “vergine”, ho scoperto che diverse versioni di DLL rendevano lo sforzo vano: da lì l’idea di invocare le stesse API usando la reflection: sicuramente meno safe, ma funziona e sono contento così. Dal lato server per esporre la funzionalità basta inserire un link della forma wlw://hostname.com/?postid=numeroPost per i post o wlw://hostname.com/?pageId=numeroPagina per le pagine.

Seguono un paio di screenshot che non renderanno sicuramente giustizia al lavoro svolto :

Plugin1

 Plugin2

Un paio di note:

  1. il plugin, misteriosamente, non funziona su x64. Non avendo un PC x64 nelle immediate vicinanze, non ho nessuna possibilità di rimediare. FIXED
  2. il plugin potrebbe non funzionare correttamente se con WLW si gestiscono più blog sullo stesso PC (working on a fix, visto che la cosa interessa direttamente ) FIXED
  3. lo stesso è scaricabile dalla pagina download.works
  4. infine il nobel-worth-plugin è certificato works on my machine, use at your own risk; se lo usate, fatemi la cortesia di dirmi brevemente se funziona

-enjoy

Potrebbero interessarti anche:
Commenti (34): [ Pagina 1 di 2  - più vecchi ]
5. Enrico
mercoledì 17 settembre 2008 alle 9:16 PM - unknown unknown unknown
   

@Paperino

ma non eri in vacanza?

   
6. Gofree
martedì 20 luglio 2010 alle 2:06 PM - firefox 3.0.8 Windows XP
   

Thx a lot for the great plugin! I've been searching for so long.

   
7. Gofree
martedì 20 luglio 2010 alle 5:12 PM - firefox 3.0.8 Windows XP
   

Seem not working. When I tried one of the post: wlw://www.gameloo.info/.../one-unit-whole-blood-blood...

It said ‘Invalid URL’

It’s Blogger.

   
8. Manu
martedì 20 luglio 2010 alle 5:43 PM - firefox 3.6.6 Windows 7
   

@Gofree

I think that at the link miss the last "l": you wrote [...].htm but the link finish with .html

(Sorry for my bad English :))

   
9. Paperino
martedì 20 luglio 2010 alle 5:47 PM - chrome 5.0.375.99 Windows 7
   

@GoFree:

The url you need to pass to the plugin is in the form of:

wlw://youblogurl.com/postid=your-post-id

where your-post-id is the actual id of the post. This is because WLW can retrieve an existing post only through the Metablog API which requires the postId. Usually each platform has it's own way to represent the postId. If you need further assistance feel free to email me through this page http://aovestdipaperino.com/ContactMe.aspx

   
10. Gofree
mercoledì 21 luglio 2010 alle 12:48 PM - firefox 3.0.8 Windows XP
   

Wordpress is OK to get the post ID if we don't enable the URL rewrite. What about Google Blogger?

Anyway, if finding ID is to edit the post in the blog, what is the meaning to load it to WLW as we can just edit it right away?

   
11. Paperino
mercoledì 21 luglio 2010 alle 8:13 PM - chrome 5.0.375.99 Windows 7
   

Basically what you need to do is edit the theme of your blog.
These are the instructions:
Edit the HTML template for your blog;
find the section <b:includable id='post' var='post'> and place the following
snippet inside:
<a expr:href='&quot;wlw://[YOURBLOGDOMAIN]?postId=&quot; +
data:post.id'>Edit with Windows Live Writer</a> where [YOURBLOGDOMAIN] is
your blog domain

Now all the posts will have a "Edit with Windows Live Writer" link. If you
want to have the link visible only when you are logged on place it in the
<b:includable id='postQuickEdit' var='post'> section of the theme.

I made an example on how it would look like here:
http://silly-test.blogspot.com/

If you click on "Click here to edit" it will invoke WLW. Of course it will
throw an error since you don't own this blog, but on your blog it will work
fine.

   
12. Gofree
giovedì 22 luglio 2010 alle 3:15 PM - firefox 3.0.8 Windows XP
   

The link shown fine at my blog http://softwareloo.info

But when I clicked on the link, it still shows: The blog is not registered

   
13. Jimmy
sabato 24 luglio 2010 alle 12:53 AM - IE 8.0 Windows 7
   

When I try wlw://blog.jtbworld.com/?postid=100 I get this error below. Any ideas what it might be?

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.UriFormatException: Invalid URI: The format of the URI could not be determined.

   at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)

   at System.Uri..ctor(String uriString)

   at WindowsLive.Writer.BlogClient.Clients.AtomClient.PostIdToPostUri(String postId)

   at WindowsLive.Writer.BlogClient.Clients.AtomClient.GetPost(String blogId, String postId)

   at WindowsLive.Writer.BlogClient.Blog.GetPost(String postId, Boolean isPage)

   --- End of inner exception stack trace ---

   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)

   at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)

   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)

   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)

   at WLWPostDownloader.MainForm.InvokeMethod(Object o, String[] methodNames, Object[] args)

   at WLWPostDownloader.MainForm.InvokeMethod(Object o, String methodName, Object[] args)

   at WLWPostDownloader.MainForm.backgroundWorker_DoWork(Object sender, DoWorkEventArgs e)

   
14. Paperino
sabato 24 luglio 2010 alle 6:41 AM - chrome 5.0.375.99 Windows 7
   

@GoFree: add a slash ( / ) before the question mark, I made a typo in my previous comment.

@Jimmy: when you configured your blog with WLW, what platform did you select? Did it configure it automatically.

   
15. Gofree
sabato 24 luglio 2010 alle 8:01 AM - firefox 3.0.8 Windows XP
   

"add a slash ( / ) before the question mark, I made a typo in my previous comment."

It returns the same error.

   
16. Paperino
sabato 24 luglio 2010 alle 3:30 PM - chrome 5.0.375.99 Windows 7
   

Let me make a few experiment with my fake blogger site and return back to both of you

   
17. Gofree
lunedì 26 luglio 2010 alle 3:45 PM - firefox 3.0.8 Windows XP
   

Oh, also to add that my blog as a few admins added too.

   
18. lehenryjr
martedì 27 luglio 2010 alle 2:22 AM - firefox 3.6.8 Windows Vista
   

Awesome plug-in... This is something I have been trying to tell the Windows Live Writer developers for a long time- I wish someone over there would listen.. And thanks for the awesome plug-in... life just got a little easier.

Until next time,
LEHenryJr

 

 

 

 

   
19. Jimmy
venerdì 30 luglio 2010 alle 9:44 AM - IE 8.0 Windows 7
   

I selected Other blog service. I've tested with a couple of other blogs with same result.

   
20. gofee
martedì 10 agosto 2010 alle 12:43 PM - firefox 3.6.8 Windows XP
   

Any fixes for the Blogger?

   
21. gofee
sabato 28 agosto 2010 alle 5:11 PM - firefox 3.6.8 Windows XP
   

Seem like you have given up the development?

   
22. Paperino
domenica 29 agosto 2010 alle 1:38 PM - chrome 6.0.472.51 Windows 7
   

Nope, I am on vacation until end of next week

   
23. gofee
sabato 18 settembre 2010 alle 7:06 PM - firefox 3.6.10 Windows XP
   

any update, dude?

   
24. Paperino
lunedì 20 settembre 2010 alle 12:29 AM - chrome 6.0.472.62 Windows 7
   

Cannot repro. Can we setup a remote assistance session so I can understand better what is going on? If yes, contact me privately here: http://aovestdipaperino.com/ContactMe.aspx

   
25. Jimmy Bergmark
giovedì 23 settembre 2010 alle 6:04 AM - IE 8.0 Windows 7
   


I'll try to contact you so we can see if we can get it working. If you have not got my email let me know.

   
26. Paperino
giovedì 23 settembre 2010 alle 8:25 PM - chrome 6.0.472.63 Windows 7
   

UPDATE: I have a fix for the blogger platform that is getting tested now. 

   
27. Jimmy Bergmark
domenica 26 settembre 2010 alle 12:12 PM - IE 8.0 Windows 7
   


Thanks a lot for the update. I made a blog post showing also how to modify the Blogger template after this change.

blog.jtbworld.com/.../open-old-posts-in-windows...

   
28. Paperino
domenica 26 settembre 2010 alle 6:43 PM - chrome 6.0.472.63 Windows 7
   

Thank _you_!

   
29. gofree
mercoledì 13 ottobre 2010 alle 1:08 PM - firefox 3.6.10 Windows XP
   

I still got 'this blog is not registered' error.

   
30. Paperino
mercoledì 13 ottobre 2010 alle 7:28 PM - chrome 6.0.472.63 Windows 7
   

If you contact me privately I might be able to assist you remotely and figure out your specific issue.

   
31. gofree
domenica 17 ottobre 2010 alle 1:14 PM - firefox 3.6.10 Windows XP
   

Plz, email me once so I can contact u, dude.

   
32. Passegua
venerdì 24 maggio 2013 alle 10:41 AM - firefox 21.0 Windows 7
   

Ho appena aggiornato wlw alla versione 2012 build 16.4.3508.205 e purtroppo l'ottimo strumento non funziona più come dovrebbe.

Nel senso che se inserisco la linea

wlw://ww.miosito.org/wordpress/?postid=3530

mi chiede di creare un nuovo account in wlw.

Grazie!

   
33. Passegua
venerdì 24 maggio 2013 alle 11:05 AM - firefox 21.0 Windows 7
   

Ho dovuto reinstallare il tuo plugin, adesso funziona anche con l'ultima versione di wlw.

Grazie

   
34. Paperino
venerdì 24 maggio 2013 alle 10:58 PM - chrome 27.0.1453.94 Windows 8
   

de nada. Devo ricordarmi di farlo diventare cartonlinaware.

   
[ Pagina 1 di 2  - più vecchi ]
Lascia un commento:
Commento: (clicca su questo link per gli smiley supportati; regole di ingaggio per i commenti)
(opzionale, per il Gravatar)