Web Yakalama ve Dönüştürme Araçları

PHP'nin Symfony Framework'ünü GrabzIt'ın Capture API'siyle Kullanma

GrabzIt'ın PHP Kütüphanesi, herhangi bir PHP projesinde kullanılabilecek bir kütüphane sağlamaya odaklanır. Symfony'nin PHP projeleri, biraz daha fazla çalışma gerektiren benzersiz bir şekilde bir araya getirilir.

Symfony, şu anda kullanılan en büyük PHP Framework'lerinden biridir ve yeniden kullanılabilir bir dizi kütüphane ve bileşen sağlayarak web geliştirmeyi hızlandırır. Hangi GrabzIt şimdi bir parçası, Torben Lundsgaard sayesinde TLAMedia kim Symfony için bir GrabzIt paketi yarattı. Bu açık kaynaklı yazılım MİT Lisans.

GrabzIt Bundle'ı almak için önce besteci ile yüklemelisiniz.

composer require tlamedia/grabzit-bundle

Sonra çekirdeğine ekleyin.

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

yapılandırma

Referans API Anahtarı ve Sırrı ve bunları gibi config dosyasına ekleyin.

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

Paket, çağrıldığında uygun GrabzIt sınıfını döndüren birkaç servis kaydeder.

Servis tanımlayıcısı Kepçe Sınıfı
tla_grabzit.client GrabzItClient
tla_grabzit.imageoptions GrabzItImageOptions
tla_grabzit.pdfoptions GrabzItPDFOptions
tla_grabzit.docxoptions GrabzItDOCXOptions
tla_grabzit.animationoptions GrabzItAnimationOptions
tla_grabzit.tableoptions GrabzItTableOptions

Nasıl Yakalanır?

Symfony Framework'te minik resimlerin nasıl oluşturulduğuna bir örnek.

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;
    }
}

Bir işleyici ile yakalamalar nasıl alınır

Symfony çerçevesinde bir işleyici kullanarak GrabzIt'ten yakalamaların bir örneği. Elbette bunu kendi gereksinimlerinize uyacak şekilde değiştirmeniz gerekir.

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);
    }
}

Bu yardım makalesi, GitHub’da ayrıntılı olarak verilen bu paket için yardım.