عنوان:

Blogger auto poster


نویسنده: وحید نصیری
تاریخ: ۱۳۹۰/۰۸/۱۶ ۱۷:۴۵:۰۰
آدرس: www.dntips.ir

حتما مطالب «خلاصه اشتراک‌های روز 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 را انتخاب کنید،‌ اگر بر روی عنوان مطلب ظاهر شده کلیک نمائید،‌ قابل ویرایش می‌شود (نکته‌ای که در نگاه اول مشخص نیست).


نظرات

  • مهمان در ۱۳۹۰/۰۸/۱۷ ۰۱:۱۹:۰۷
    سلام
    کاملا مشخص بود که چنین نرم افزاری در پشت پرده وجود دارد
    چون ساعت و دقیقه همه اشتراک های روزانه شما 00:05 بود
    ممنون از به اشتراک گذاری
  • مهمان در ۱۳۹۰/۰۸/۱۷ ۱۵:۲۹:۰۷
    سلام...
    برای بلاگهای وردپرسی که روی هاست شخصی برپا شدند، برنامه ای هست؟ 
    ممنون
  • وحید نصیری در ۱۳۹۰/۰۸/۱۷ ۱۹:۳۷:۰۰
    پشتیبانی از وردپرس هم اضافه شد.
    لطفا آخرین نسخه را از سایت CodePlex دریافت کنید.

    توضیحات تکمیلی جهت تنظیمات برنامه، مخصوص ورد پرس:
    اینبار BlogUrl شما چیزی شبیه به https://mysite.wordpress.com/xmlrpc.php خواهد بود که به API وردپرس جهت ارسال خودکار مطالب اشاره می‌کند.
    Username و password شما هم همان نام کاربری و کلمه عبور ورود به وبلاگ است.
    در وردپرس برخلاف بلاگر، اگر تگی از پیش تعریف نشده باشد، به صورت خودکار ایجاد نمی‌شود. بنابراین اول باید categories مناسب را در پنل مدیریتی وبلاگ ایجاد کنید.
    زمان را هم در کنترل پنل وبلاگ اصلاح کنید. UTC آن مهم است. اگر تنظیم نباشد احتمالا مطالب به صورت scheduled در کنترل پنل نمایش داده می‌شود و سر ساعت که رسید عمومی خواهد شد.
  • مهمان در ۱۳۹۰/۰۸/۱۷ ۲۰:۰۶:۲۲
    سلام . دستت درد نکنه . عالیه . فقط 3 تا سؤال : 1 -  نوع فرمت زمان ارسال لینکها بصورت 12 ساعته است و یا 24 ساعته است ؟ ( یعنی 10 شب از نظر برنامه 22 تعریف شده است و یا 10 )
    2- برنامه  بصورت خودکار همیشه تمام لینکهای شر شده در یک روز را منتشر میکند و یا یک تعداد مشخصی را ؟ ( اگر مورد اول درست هست بهتر است که مورد دوم را در نسخه جدید برنامه به آن اضافه کنید )
     3- چرا بعد از انجام تنظیمات برنامه با توجه به حساب کاربری خودم و اتصال موفق ، بعد از زدن دکمه Download News در میان لیست لینکهای شر شده من ، لیست لینکها منتشر شده و منتخب شما مشاهده میگردد ؟ . آیا آدرس فید شما بصورت پیش فرض در برنامه گنجانده شده است ؟: ببینید :

    http://upload20.ir/upload/13207696341013548167.jpg
  • وحید نصیری در ۱۳۹۰/۰۸/۱۷ ۲۰:۲۳:۲۷
    -زمان را 24 ساعته وارد کنید؛ یعنی ساعت 22 را.
    - برنامه به صورت خودکار تمام لینک‌های روز قبل را منتشر می‌کند. اگر نیاز دارید تعداد مشخصی را ارسال کنید، می‌تونید از حالت دستی استفاده کنید. موارد دلخواه را در برنامه تیک بزنید بعد روی دکمه بلاگر که در toolbar هست کلیک کنید. به این صورت فقط این موارد به اکانت شما ارسال می‌شود (صرفنظر از زمان و غیره).
    -برنامه هم گوگل پلاس و هم فید ذکر شده را با هم بررسی می‌کند. احتمالا شما ID پیش فرض (موجود در فایل کانفیگ) مربوط به گوگل پلاس را خالی نکردید، یا ID خودتان را جایگزین آن نکردید. حداقل یک مورد باید ذکر شود. هر دو هم بود که چه بهتر. اگر نیازی نیست آن‌را خالی کنید.
  • مهمان در ۱۳۹۰/۰۸/۱۷ ۲۱:۴۴:۴۰
    ممنون
    ولی منظور من این بود که توی وبلاگی که خودمون رو هاست شخصی ساختیم، پست رو قرار بده...
    مثلا روی xyz.ir که روی هاست شخصی ه...
    البته امتحان نکردم و صرفا از روی آدرسی که توی کامنتتون گذاشتید، حد زدم که شاید کار نکنه...
  • وحید نصیری در ۱۳۹۰/۰۸/۱۷ ۲۳:۰۸:۰۰
    فایل xmlrpc.php جزو بسته استاندارد wordpress است. بنابراین این آدرس ذکر شده، در یک سایت شخصی می‌شود مثلا mysite.ir/xmlrpc.php .
  • مهمان در ۱۳۹۰/۰۸/۲۸ ۱۳:۱۴:۵۲
    سلام
    اولا ممنون از اینکه این ایده خوب رو به اشتراک گذاشتین.

    بعد اینکه اگر حالا به هر دلیلی اون فایل db.xml ساخته نشد، یک نمونه خامش رو از کجا میشه ساخت یا پیدا کرد؟
    چون من هر چی تلاش کردم با این error مواجه شدم و نتونستم استفاده کنم.

    Could not find file 'C:\BloggerAutoPoster\db.xml'.
  • وحید نصیری در ۱۳۹۰/۰۸/۲۸ ۱۶:۴۰:۳۴
    ساخت این فایل خودکار هست و در اولین بار دریافت اطلاعات از وب ساخته می‌شود و اگر ایجاد نشده یعنی برنامه دسترسی نوشتن و رایت در پوشه نصب شده را ندارد. در کل یک نمونه از این فایل رو می‌تونید اینجا پیدا کنید: (^)