آموزش کار با افزونه IMDBi

افزونه imdbiاطلاعیه ۲۰ بهمن ۹۵ – سرویس OMDB API برای مدت نامعلوم غیرفعال شده. این پروژه برای من به بن‌بست رسیده و زمان کافی برای ادامه اون ندارم لطفا از ارسال ایمیل خوداری کنید.

آپدیت ۱۸ مهر ۹۵ – رفع مشکل ثبت نشدن برخی از شناسه های imdb – به احتمال زیاد این آخرین‌ آپدیت افزونه هست و من زمان کافی برای توسعه اون رو ندارم اگر کسی تمایل به مشارکت در این پروژه داره حتما با من تماس بگیره.

امروز قصد دارم چند خطی درمورد نحوه استفاده از افزونه IMDBi بنویسم. آپدیت ۲.۰.۱ نکات ریزی رو به هسته افزونه اضافه می‌کنه که باعث بهبود کارایی و رفع مشکلات گزراش شده می‌شه پس اول با لیست تغییرات شروع می‌کنم.

لیست تغییرات نگارش ۲.۰.۱

  • رفع خطای نمایش جعبه دریافت اطلاعات در پست تایپ های اختصاصی.
  • اضافه شدن پارامتر rank برای مشخص کردن رتبه فیلم در لیست ۲۵۰ فیلم برتر.
  • ترجمه فیلد زبان.
  • توسعه عملکرد توابع افزونه.

البته لازمه به این نکته اشاره کنم که برای نصب این نگارش باید از وردپرس ۴.۴.۰ و یا بالاتر استفاده کنید.

معرفی توابع افزونه

این افزونه دوتا تابع داره، یکی imdbi_check که برای بررسی مقدار فیلدهای افزونه استفاده میشه و دیگری هم imdbi که برای چاپ مقادیر افزونه توی قالب استفاده میشه. علاوه بر این یک شورت کد هم هست که برای نمایش مقادیر در لابه لای نوشته استفاده میشه. در ادامه پارامترهای مشترک رو لیست کردم.

  • imdbid – شناسه IMDB
  • rank – رتبه فیلم در لیست ۲۵۰ فیلم برتر (جدید)
  • title – عنوان نوشته در سایت IMDB
  • year – سال انتشار به میلادی
  • type – نوع نوشته در سایت IMDB (فیلم، سریال، مستند …)
  • trailer – لینک مستقیم پیش نمایش (تریلر)
  • budget – بودجه
  • gross – سود خالص
  • imdbvotes – تعداد آرا
  • imdbrating – رتبه نوشته در سایت IMDB (از ۰ تا ۱۰)
  • metascore – امتیاز منتقدین (از ۰ تا ۱۰۰)
  • actors – نام بازیگران
  • director – نام کارگردان
  • writer – نام نویسنده
  • runtime – مدت پخش
  • released – تاریخ انتشار به میلادی
  • rated – رده سنی
  • plot – خلاصه داستان (به انگلیسی)
  • awards – جوایز و امتیازات برجسته (به انگلیسی)
  • language – زبان (به فارسی)
  • country – کشور ساخت (به فارسی)
  • genre – ژانر یا موضوع (به فارسی)
  • poster – لینک مستقیم پوستر (تصویری که دانلود شده و یا شما بعنوان تصویر شاخص مشخص می‌کنید)

نحوه استفاده از توابع و شورت کد هم خیلی سادست.

درمورد تابع imdbi و imdbi_check باید به این نکته توجه کنید که خارج از حلقه نوشته‌ها کار نمی‌کنن (ساده تر بگم فقط میشه قبل یا بعد از تابع the_content ازشون استفاده کرد)

برای ساختن قالب هم کافیه قالب نمونه و یا مثال بدون کد html رو بررسی کنید، اصلا سخت نیست.

معرفی پارامتر rank

چند وقت پیش درخواست شده بود تا قابلیتی اضافه کنم که رتبه فیلم رو توی لیست ۲۵۰ فیلم برتر مشخص کنه. این پارامتر به عنوان زمینه دلخواه ذخیره نمیشه، بلکه من ۲۵۰ فیلم برتر رو به صورت key => value توی یک آپشن ریختم و هر ۳۰ روز یک بار آپدیت میشه. نحوه استفاده از این پارامتر به این صورته

همونطور که از مثال پیداست اول چک میشه که آیا فیلم جز اون لیست هست یا نه و اگر بود رشته  «این فیلم دارای رتبه “عدد” می باشد.» (مثلا: این فیلم دارای رتبه ۱۵۳ می باشد.) چاپ میشه.
توی شورت کد هم میشه از این پارامتر استفاده کرد اما اگه فیلم رتبه ای نداشته باشه مقدار صفر برگشت داده میشه.

چطور افزونه رو با مطالب قدیمی هماهنگ کنیم؟

برای این کار باید از تابع imdbi_check کمک بگیرید. وظیفه این تابع بررسی مقدار فیلدهای افزونه‌اس درصورتی که مقدار وجود داشته باشه true و در غیر این صورت false میشه.

توی این مثال اگر مقدار فیلد بازیگران (actors) وجود داشته باشه، اون رو چاپ میکنه. درغیر این صورت مقدار فیلد my_field_actors رو چاپ میکنه. به همین سادگی میشه این مثال رو روی تمامی فیلدها پیاده کرد تا درصورت موجود نبودن هرکدام مقدار فیلد قدیمی نمایش داده بشه.

Author’s gravatar

سلام.
چطور میشه از این توابع با دادن آیدی استفاده کرد؟
یعنی آیدی فیلم در imdb داده بشه و مشخصات فیلم دریافت بشه؟

Author’s gravatar

نمیشه به صورت مستقیم شناسه IMDB رو برای توابع ارسال کرد. توی اسکرین شات های افزونه نحوه استفاده از اون رو کاملا مشخص کردم (https://wordpress.org/plugins/imdbi/screenshots)

Author’s gravatar

می دونم دوست عزیز اما خوب من می خوام افزونه شما را برای این کار ارتقا بدم، یعنی از طریق کدها هم نمیشه این کار رو انجام داد؟!

Author’s gravatar

ایده اینه که با دادن شناسه به توابع افزونه، مستقیم بدون ذخیره اطلاعات اونها رو نمایش بده. این کار از چند نظر مشکل سازه:
۱ – هربار که یک پست فراخوانی بشه درخواست جدیدی به OMDBAPI ارسال میشه پس در نتیجه انتظار میره سرویس مذکور زیاد مهربون نباشه و بعد از یک مدت ip سرور شما رو مسدود کنه.
۲ – این روند به سرعت اینترنت کاربر بستگی داره پس این نکته رو باید درنظر گرفت که این عملیات به لودینگ سایت اضافه میشه (باعث کند کردن روند لود صفحه میشه).
هرچند میشه اطلاعات دریافتی رو به کمک جاوا اسکریپت و با استفاده از LocalStorage سمت (مرورگر) کاربر ذخیره کرد و یک زمان انقضا تعیین کرد که مثلا هر ۳۰ روز یکبار درخواست جدیدی ارسال بشه (که قطعا این نوع کرون جاب دقیق نیست چون براساس مدت زمان گذشته شده از تاریخ تعیین شده کار میکنه). درنهایت اینکه روش شما نیاز به ایجاد تغییرات عمده توی روند عملکرد افزونه داره. و صرفا تغییر عملکرد یک تابع نمیتونه جوابگو باشه.
من سعی میکنم روی این قضیه تمرکز کنم و توی آپدیت بعدی این قابلیت رو (درکنار امکان ذخیره کردن اطلاعات) پیاده سازی کنم. اما اگر شما توانایی انجام اون رو دارید خوشحال میشم اگر تغییرات رو اعمال کنید و یک pull request برای من بفرستید.

Author’s gravatar

کاری که بنده می خوام انجام بدم این هست که کدی در فانکشن قالب بنویسم که هنگام ذخیره یک custom post type (که دارای فیلدی برای تعیین آیدی imdb هست)،
از این آیدی ثبت شده استفاده بشه و فقط url تریلر رو بر گردونه همین!
وقتی قسمتی از کد افزونه شما که مربوط به تریلر هست رو در یک صفحه از قالب قرار بدم این کار انجام میشه و url تریلر رو بر میگردونه اما وقتی در function.php استفاده میشه این خطا رو دارم:
Warning: file_get_contents(http://o53xo.nfwwiyromnxw2.nblu.ru/title/) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in sitepath\wp-content\plugins\imdbi\includes\simpleHtmlDom.php on line 97
در این مورد م تونید به من کمک کنید؟

Author’s gravatar

کدهایی که استفاده کردید رو برام از طریق ایمیل ارسال کنید تا اونها رو بررسی کنم.

Author’s gravatar

سلام.
دوست عزیز کد رو وارد می کنم طبق آموزش و … و فیلدها رو ادیت می کنم و ثبت رو میزنم اما اطلاعات وارد زمینه های قالب نمیشه و همگی خالی هستن اما زمینه های افزونه پره!ممنون میشم بگید چطوری میشه این افزونه رو در قالب ست کرد.

Author’s gravatar

چشم حتما سعی میکنم یک آموزش تصویری ضبط کنم.

Author’s gravatar

همه فیلدها را از IMDB میاره داخل پست و انتشار را هم میزنیم ولی وقتی دیدن نوشته را میزنیم بجز تصویر شاخص هیچی نشون نمیده . نفر آخر هم همین کامنت را گذاشته اما شما گفتید ویدئو میذارم
آخه این که جواب نشد . لطفا بگید چرا خالی میذاره و نشون نمیده

Author’s gravatar

خب ممکنه کدها رو اشتباه قرار داده باشین. اگر جدول زمینه های دلخواه پر میشه یعنی اطلاعات ثبت شده. برای همین گفتم به زودی ویدئوی آموزشی میسازم و نحوه قراردادن کدها رو آموزش میدم.

Author’s gravatar

با عرض سلام و خسته نباشید و ضمن تشکر
افزونه فوق العاده خوبی هست و بنده با اجازتون طبق نیازم ویرایشش کردم. (تغییر زمینه های دلخواه به زمینه های استفاده شده در سایت)

دو ایراد عمده ی این افزونه، مشکل کار نکردن با فیلم ها و ایراد بخش دریافت زبان از IMDB هست که اکثرا مقدار "خطادرترجمه؛لطفاًمجدداًتلاشکنید" را نمایش میدهد. است.

امیدوارم موفق و موید باشید و این ایرادات رو هرچه زودتر برطرف نمایید.
سپاس فراوان از شما دوست عزیز

Author’s gravatar

اپدیت ۲.۰.۲ مشکل رو رفع می کنه.

Author’s gravatar

سلام
تو رو خدا مشکل افزونه رو برطرف کنید برای ۶۰-۷۰ درصد فیلم ها اطلاعات نشون میده ولی در فیلد ها ثبت نمیشه و اینجوری خیلی بده الان تو رو خدا هر کاری میکنی اینو راه بنداز ممنون میشم

Author’s gravatar

آپدیت ۲.۰.۲ مشکل رو رفع می کنه.

Author’s gravatar

سلام
برای سریال ها من آدرس پوستر خودم رو در قسمت imdb poster میزارم . دانلود شده رو پاک کردم ولی هر بار که به روز میکنم با آدرس پوستر قبلی که دانلود شده بود و پاک کردم جایگزین میشه

Author’s gravatar

چون هربار که مطلب رو آپدیت می کنید دوباره درخواست به سرور ارسال میشه برای دانلود پوستر.
باید تیک دانلود خودکار پوسترها رو از قسمت تنظیمات بردارید بعد پوستر خودتون رو آپلود کنید.

Author’s gravatar

سلام
میخواستم ببینم میشه کاری کرد که پست هایی که جزو ۲۵۰ فیلم برتر هست و تو یه برگه خواص نشون داد ؟ اگه میشه کد هاش به چه صورت هست ؟

Author’s gravatar

درحال حاضر این قابلیت پیاده سازی نشده.

Author’s gravatar

سلام
واسه بعضی از فیلما
سرچ که میکنم اطلاعات و میاره
ولی وقتی ثبتو میزنم میپره
مثلا : tt1663202

Author’s gravatar

اپدیت ۲.۰.۲ مشکل رو رفع می کنه.

Author’s gravatar

سلام
آقا من هرکاری کردم تو پیشخوان موقع نوشتن اطلاعات رو نشون میده ولی وقتی انتشار میدم و میخوام توصفحه اصلی کاربرا هم ببینن چیزی نمیاره کلا
میشه راهنمایی کنید؟

Author’s gravatar

از چه نسخه ای استفاده می کنید ؟ چه مدت می‌شه که این حالت پیش اومده‌؟ چه افزونه هایی نصب کردید؟ و در آخر اینکه کدهایی که توی این نوشته آموزش دادم رو به درستی درج کردید؟ لطفا جواب این سوالات رو ایمیل کنید.
iazami@outlook.com

نظری در این مورد دارید؟ خوشحال می‌شم اون رو برام ارسال کنید