۱۳۹۰/۰۸/۱۶

Blogger auto poster


حتما مطالب «خلاصه اشتراك‌هاي روز xyz» را ديده‌ايد و شايد گفته باشيد كه ... عجب حالي دارد؛ هر شب ساعت 12، يك ليست مرتب را ارسال مي‌كند! بايد خدمتتان عرض كنم كه بيشتر از 90 درصد كار تهيه و ارسال اين ليست‌ها، خودكار است؛ منهاي روزي چندبار كليك كردن بر روي لينك Share در عناوين Google reader و همين! (البته اخيرا شده ارسال Public به GooglePlus)
براي اتوماسيون اين‌كار، يك برنامه را تهيه كرده‌ام كه اين‌كارها را انجام مي‌دهد:
هر چند دقيقه يكبار (قابل تنظيم است)، فيد حاصل از مطالب به اشتراك گذاشته شده در Google reader را مي‌خواند و ذخيره مي‌كند (يا موارد عمومي گوگل پلاس را). بانك اطلاعاتي آن هم يك فايل XML ساده است. از اين جهت كه روزي حدودا 20 ركورد يا كمتر، نيازي به بانك اطلاعاتي آنچناني ندارد. سپس آخر هر شب، تمام اين‌ها را تبديل به يك ليست Html ايي كرده و به صورت خودكار در اين بلاگ ارسال مي‌كند.
بنابراين تنها كاري كه من به صورت دستي انجام مي‌دهم كليك كردن بر روي لينك Share در Google reader است (يا ارسال به GooglePlus). سپس اين‌ها به صورت خودكار به فيد مرتبط اضافه مي‌شوند و مابقي آن هم كه عنوان شد.



از كجا مي‌شود آن‌را دريافت كرد؟
اين پروژه به صورت سورس باز از آدرس زير قابل دريافت است:


سورس باز بودن آن هم از اين جهت براي خيلي‌ها شايد اهميت داشته باشد كه بالاخره بايد نام كاربري و كلمه عبور اكانت جي ميل خود را در آن وارد كنند. آيا امن است؟ آيا اطلاعات من جايي ارسال نمي‌شود؟ پاسخ به اين سؤالات هم با مطالعه سورس برنامه قابل دريافت است.


چگونه بايد آن‌را تنظيم كرد؟
كليه تنظيمات اين برنامه و يا سرويس آن، در فايل .config همراه آن قرار دارند. اين فايل xml ايي را با مثلا notepad باز كرده و تغييرات لازم را در آن اعمال كنيد (يا از طريق رابط كاربري برنامه هم قابل انجام است):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="BlogUrl" value="https://www.blogger.com/feeds/blogId/posts/default" />
    <add key="UserName" value="name@gmail.com" />
    <add key="Password" value="myPass..." />
    <add key="PostAt" value="00:05"  />
    <add key="FeedToParse" value="http://feeds2.feedburner.com/VahidsSharedItemsInGoogleReader" />    
    <add key="DBName" value="D:\Prog\db.xml"/>
    <add key="Tag" value="News, daily news" />
    <add key="Title" value="خلاصه اشتراك‌هاي روز " />
    <add key="UsePersianDate" value="true" />
    <add key="ErrorsLogFile" value="D:\Prog\errors.log"/>
    <add key="ReadSitesDataIntervalMin" value="15"/>
    <add key="GooglePlusUserId" value="105013528531611201860"/>

    <!--proxy settings-->
    <add key="IsProxyEnabled" value="false"/>
    <add key="ProxyServerAddress" value="127.0.0.1"/>
    <add key="ProxyServerPort" value="8080"/>
    <add key="ProxyServerUserName" value="user1"/>
    <add key="ProxyServerPassword" value="pass1"/>
  </appSettings>
</configuration>

  • BlogUrl آدرس ويژه وبلاگ شما در بلاگر است. اين مورد تنها نكته‌ي مهم تنظيمات جاري است:
براي يافتن آن به آدرس http://www.blogger.com/home مراجعه كنيد. روي لينك «ويرايش پيام‌ها» كه كليك نمائيد چيزي شبيه به لينك زير خواهد بود:
http://www.blogger.com/posts.g?blogID=number
اين عدد ذكر شده پس از blogId همان عددي است كه بايد در آدرس BlogUrl خود جايگزين كنيد.
  • نام كاربري و كلمه عبور، همان آدرس ايميل و كلمه عبور جي‌ميل شما هستند (جهت ارسال خودكار مطلب به بلاگ شما نياز است).
  • PostAt مشخص مي‌كند كه در چه ساعت و دقيقه‌اي بايد ارسال روزانه صورت گيرد. لطفا به فرمت آن دقت كنيد. به همين شكل بايد باشد و هر زماني كه آن‌را تنظيم كنيد، تنها اطلاعات يك روز قبل را ارسال خواهد كرد. مهم نيست 5 دقيقه بامداد باشد يا 5 صبح يا 6 عصر. بديهي است مطالب امروز هم در PostAt روز بعد ارسال مي‌شوند و همينطور الي آخر. (البته در خود برنامه امكان انتخاب موارد دلخواه و سپس ارسال دستي آن‌ها هم هست. حالت خودكار هماني است كه توضيح داده شد.)
  • FeedToParse آدرس فيد اشتراك‌هاي شما در گوگل ريدر است كه قرار است اطلاعات آن دريافت و ذخيره و سپس خلاصه آن ارسال شود (اين مورد اختياري است؛ از اين جهت كه گوگل آن‌را اخيرا غيرفعال كرده).
  • DBName نام و مسير بانك اطلاعاتي برنامه است. فقط كافي است اين مسير را اصلاح كنيد. بانك اطلاعاتي هم به صورت خودكار در زمان اولين بار اجراي آن ساخته مي‌شود و نياز به تنظيم ديگري ندارد (همان پيش فرض آن كافي است).
  • Tag در اينجا نام برچسب‌هايي است كه قرار است مطلب خودكار ارسالي تحت آن‌ها يا در گروه آن‌ها در وبلاگ شما ارسال شوند. بهتر است حداقل يك مورد را ذكر كنيد. بيشتر از يك مورد را بايد با كاما از هم جدا كنيد.
  • Title عنوان مطلب خودكاري است كه در سايت شما نمايش داده مي‌شود. برنامه به صورت خودكار تاريخ روز قبل را هم به آن اضافه مي‌كند. (حداقل فعلا اينطور است)
  • UsePersianDate در اينجا تاريخ شمسي و راست به چپ بودن خروجي را تعيين مي‌كند. اگر نيازي به آن نداشتيد،‌ آن‌را false كنيد.
  • ErrorsLogFile محل فايل log خطاهاي برنامه را مشخص مي‌كند. اگر در حين كار برنامه خطايي رخ دهد در اين فايل كه مسير آن‌را نياز است اصلاح كنيد، ثبت خواهد شد (پيش فرض آن كافي است).
  • ReadSitesDataIntervalMin مشخص مي‌كند كه هر چند دقيقه يكبار فيد ذكر شده در قسمت FeedToParse بايد بررسي شود (يا موارد گوگل پلاس شما بررسي شوند). عموما هر 10 دقيقه يكبار كافي است.
  • GooglePlusUserId همان شماره كاربري شما در گوگل پلاس است. براي يافتن آن بايد به صفحه «پروفايل» در گوگل پلاس، مراجعه كرده و به آدرس آن دقت نمود: https://plus.google.com/u/0/userId/posts . اين userId را در تنظيمات برنامه وارد كنيد (فقط موارد Public شما توسط برنامه دريافت خواهند شد).
ساير موارد هم كاملا مشخص است و نياز به توضيحات خاصي ندارند.


چند نكته
در اين برنامه توضيحات شما در حين به اشتراك گذاري در گوگل پلاس نسبت به توضيحات انگليسي اصلي آن ارجحيت دارد.
توضيحي منسوخ شده ...!
اگر به طراحي گوگل ريدر دقت كرده باشيد، حداقل دو لينك به اشتراك گذاري دارد. به اشتراك گذاري ساده و به اشتراك گذاري به همراه كامنت. اگر مورد دوم را انتخاب كنيد و توضيحي فارسي را ارائه دهيد (اصطلاحا annotation اضافه كنيد)، سرويس برنامه جاري توانايي تشخيص آن‌را داشته و از آن بجاي عنوان لينك‌ مورد نظر استفاده خواهد كرد. استفاده مهم آن مي‌تواند تبديل عناوين انگليسي به فارسي جهت ارائه در سايت باشد. (اين مورد اختياري است)
روش دوم: زمانيكه گزينه share with note را انتخاب كنيد،‌ اگر بر روي عنوان مطلب ظاهر شده كليك نمائيد،‌ قابل ويرايش مي‌شود (نكته‌اي كه در نگاه اول مشخص نيست).