أدوات لالتقاط وتحويل الويب

استخدام PHP's Symfony Framework مع GrabzIt's Capture API

بينما تركز مكتبة PHP الخاصة بـ GrabzIt على توفير مكتبة يمكن استخدامها في أي مشروع PHP. في symfony يتم وضع مشاريع PHP معًا بطريقة فريدة تتطلب المزيد من العمل.

تعد Symfony واحدة من أكبر أطر عمل PHP المستخدمة حاليًا ، فهي تسرع تطوير الويب من خلال توفير مجموعة قابلة لإعادة الاستخدام من المكتبات والمكونات. الذي GrabzIt هو الآن جزء منه ، وذلك بفضل Torben Lundsgaard TLAMedia الذي خلق حزمة من GrabzIt ل Symfony. يستخدم هذا البرنامج مفتوح المصدر MIT الترخيص.

للحصول على حزمة GrabzIt ، يجب عليك أولاً تثبيتها مع الملحن.

composer require tlamedia/grabzit-bundle

ثم إضافته إلى النواة الخاصة بك.

public function registerBundles()
{
$bundles = array(
//...
new Tla\GrabzitBundle\TlaGrabzitBundle(),
//…

ترتيب

احصل على API الرئيسية والسرية وإضافتها إلى ملف التكوين الخاص بك مثل ذلك.

# config.yml
tla_grabzit:
    key: 'Sign in to view your Application Key'
    secret: 'Sign in to view your Application Secret'

تسجل الحزمة العديد من الخدمات التي تُرجع عند استدعاء فئة GrabzIt المناسبة.

معرف الخدمة GrabzIt الدرجة
tla_grabzit.client GrabzItClient
tla_grabzit.imageoptions GrabzItImageOptions
tla_grabzit.pdfoptions GrabzItPDFOptions
tla_grabzit.docxoptions GrabzItDOCXOptions
tla_grabzit.animationoptions GrabzItAnimationOptions
tla_grabzit.tableoptions GrabzItTableOptions

كيفية توليد يلتقط

مثال عن كيفية إنشاء صورة مصغرة في Symfony Framework.

namespace App\Service;

use Symfony\Component\DependencyInjection\ContainerInterface as Container;

class ThumbnailGenerator
{
    private $container;

    public function __construct(Container $container)
    {
        $this->router = $router;
        $this->container = $container;
    }

    public function generateThumbnail($url)
    {
        $grabzItHandlerUrl = 'https://www.my-grabzit-thumbnail-site.com/api/thumbmail-ready';

        $options = $this->container->get('tla_grabzit.imageoptions');
        $options->setBrowserWidth(1024);
        $options->setBrowserHeight(768);
        $options->setFormat("png");
        $options->setWidth(320);
        $options->setHeight(240);
        $options->setCustomId($domain);

        $grabzIt = $this->container->get('tla_grabzit.client');
        $grabzIt->URLToImage($url, $options);
        $grabzIt->Save($grabzItHandlerUrl);

        try {
            $grabzIt->URLToImage($url, $options);
            $grabzIt->Save($grabzItHandlerUrl);
            $result = true;
        } catch (\Throwable $t) {
            $result = false;
        }

        return $result;
    }
}

كيفية تلقي يلتقط مع معالج

مثال عن كيفية تلقي لقطات من GrabzIt باستخدام معالج في إطار Symfony. بالطبع سوف تحتاج إلى تغيير هذا لتتناسب مع الاحتياجات الخاصة بك.

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class ApiController extends Controller
{
    public function thumbnailReadyAction(Request $request)
    {
        $id = urldecode($request->query->get('id'));
        $customId = $request->query->get('customid');
        $thumbnailFormat = $request->query->get('format');

        if ($id && $customId && $thumbnailFormat) {

            $grabzItApplicationKey = $this->container->getParameter('tla_grabzit.key');

            if (0 === strpos($id, $grabzItApplicationKey)) {

                $grabzIt = $this->container->get('tla_grabzit.client');
                $result = $grabzIt->GetResult($id);

                if ($result) {
                    $rootPath = $this->get('kernel')->getRootDir() . '/../';
                    $thumbnailsPath = $rootPath . 'var/thumbnails/';
                    $fileName = $customId. '.' .$thumbnailFormat;
                    
                    file_put_contents($thumbnailsPath . $fileName, $result);
                } else {
                    throw $this->createNotFoundException('GrabzIt did not return a file');
                }
            } else {
                throw $this->createNotFoundException('Wrong key - Unauthorized access');
            }
        } else {
            throw $this->createNotFoundException('Missing parameters');
        }
        return new Response(null, 200);
    }
}

وقد تم توسيع هذه المادة المساعدة من مساعدة لهذه الحزمة مفصلة على جيثب.