-Музыка

 -Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в Flashr

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 26.02.2007
Записей:
Комментариев:
Написано: 6574


BlogEngine - MultiPost v0.1.4

Понедельник, 08 Июня 2009 г. 12:26 + в цитатник
Обновил расширение для BlogEngine позволяющее постить одновременно сразу в несколько блогомест. Качать архив файлов тут. Архив содержит 3 вещи, которые нужно поместить в корень вашего блога заменив старое - 1) папку admin с измененным файлом Settings, я там исправил ошибку с редактированием настроек 2) папку App_Code - в ней содержится код расширения, который вы сможете поправить, если нужно 3) Папку bin, которая содержит библиотеку BlogsAPI, в которой реализована работа с основными(lj,liru,yaru,blogsmail) блогохостингами.

Не забудте внести изменения в web.config, как я писал ранее, а то не будет работать с Яндексом.

Сейчас там реализовано копирование постов на Лиру и Яру. Но если есть желание, то можно дописать свой класс для копирования постов куда угодно, который имеет интерфейс IBlogHosting и поместить его в namespace MultiPostExtension.Blogs:
Copy Source | Copy HTML
  1. public interface IBlogHosting
  2.     {
  3.         /// <summary>
  4.         /// NameOf
  5.         /// </summary>
  6.         String Name
  7.         {
  8.             get;
  9.         }
  10.  
  11.         /// <summary>
  12.         /// Settings
  13.         /// </summary>
  14.         SettingsCollection Defaults();
  15.  
  16.  
  17.         /// <summary>
  18.         /// Logging action
  19.         /// </summary>
  20.         /// <returns>isSuccess</returns>
  21.         Boolean PublishItem(IPublishable post);
  22.  
  23.     }

В моем случае реализация для Лиру выглядит достаточно просто:
Copy Source | Copy HTML
  1. namespace MultiPostExtension.Blogs
  2. {
  3.  
  4.     #region using
  5.  
  6.     using System;
  7.     using System.IO;
  8.     using System.Web;
  9.     using System.Net;
  10.     using System.Text;
  11.     using BlogEngine.Core;
  12.     using BlogEngine.Core.Web.Controls;
  13.     using System.Threading;
  14.     using BlogsAPI;
  15.  
  16.     #endregion
  17.  
  18. /// <summary>
  19. /// Design a post to somewhere
  20. /// </summary>
  21.     public class LiveInternet : BlogHosting, IBlogHosting
  22.     {
  23.         /// <summary>
  24.         /// NameOf
  25.         /// </summary>
  26.         public String Name
  27.         {
  28.             get
  29.             {
  30.                 return "LiveInternet";
  31.             }
  32.         }
  33.  
  34.         /// <summary>
  35.         /// Defs
  36.         /// </summary>
  37.         /// <returns></returns>
  38.         public SettingsCollection Defaults()
  39.         {
  40.             SettingsCollection sc = new SettingsCollection();
  41.             sc.Add("true");
  42.             sc.Add(" ");
  43.             sc.Add(this.Name);
  44.             sc.Add("flashr");
  45.             sc.Add("");
  46.             sc.Add("noneed");
  47.             sc.Add("1");
  48.             sc.Add(PostType.Public.ToString());
  49.             return sc;
  50.         }
  51.  
  52.         /// <summary>
  53.         /// Constructor with params
  54.         /// </summary>
  55.         /// <param name="sets"></param>
  56.         public LiveInternet(SettingsCollection settings)
  57.         {
  58.             this.Hostname = "liveinternet.ru";
  59.             this.blogSettings = settings;
  60.         }
  61.  
  62.         /// <summary>
  63.         /// Making it published
  64.         /// </summary>
  65.         /// <param name="post">Object of Post</param>
  66.         public Boolean PublishItem(IPublishable post)
  67.         {
  68.             Boolean bRet = false;
  69.             if (this.AttemptsCount++ < this.blogSettings.Attempts)
  70.             {
  71.                 if (this.MakePost(post))
  72.                 {
  73.                     bRet = true;
  74.                 }
  75.             }
  76.             else
  77.             {
  78.                 throw new NotSupportedException("Too many fails for " + post.Title);
  79.             }
  80.             return bRet;
  81.         }
  82.  
  83.         /// <summary>
  84.         /// Hidden actions 
  85.         /// </summary>
  86.         /// <param name="post">Published content</param>
  87.         /// <returns></returns>
  88.         private Boolean MakePost(IPublishable post)
  89.         {
  90.             BlogPost blogPost = new BlogPost(){
  91.                  Subject = post.Title,
  92.                  Body = post.Content,
  93.                  type = post.IsPublished?PostType.Public:PostType.Private
  94.             };
  95.             //adding tags
  96.             blogPost.Attributes.Add(new PostAttribute(PostParams.Tags.ToString(),GetTags(post.Categories)));
  97.  
  98.             BlogsAPI.Sites.Liveinternet liru = new BlogsAPI.Sites.Liveinternet();
  99.             return liru.MakePost(new UserAccaunt(
  100.                 this.blogSettings.Login,
  101.                 this.blogSettings.Password
  102.                 ), blogPost
  103.                 ).Success;
  104.         }
  105.     }
  106. }
Метки:  

QoSyS   обратиться по имени Пятница, 03 Июля 2009 г. 17:08 (ссылка)
а где же исходники самого BlogsApi?)
И почему так получается, что добавление на Яру/ЛиРу спрятано посути в BlosApi, а на хабр нет.
Ответить С цитатой В цитатник
Перейти к дневнику

Пятница, 03 Июля 2009 г. 17:32ссылка
1) Исходники BlogsAPI не выложены, так как над ними работаю только я и там очень много чувствительной информации - такой как пароли от аккаунтов для Unit тестинга.

2) Хабр не включен, так как на хабре меня забанили за копирование собственных мыслей(собственного блога). И так будет рано или поздно с любым кто начнет массово постить свой блог на хабр, незаплатив им за это.

3) Я подумываю над тем, чтобы выложить библиотеку для совместного дописывания с людьми заинтересованными в этом. И более оперативной правки изменений, которые тоже нередко бывают на блогохостингах. Я использую библиотеку для ведения ботов, поэтому мне важно чтобы она была всегда роботоспособна, кроме того надо расширять ее возможности на новые блогплатформы. Возможно тебе было бы интересно дописать класс по работе с Лиру, чтобы иметь возможности по работе с файлами в рамках библиотеки.
QoSyS   обратиться по имени Вторник, 07 Июля 2009 г. 00:53 (ссылка)
Да, это довольно интересно и я готов тебе помочь в написании библиотеки. Можем с тобой все обговорить, мой jid - qosys@jabber.ru.
Ответить С цитатой В цитатник
 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку