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ırken. 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 Çerçevelerinden biridir ve yeniden kullanılabilir bir kitaplık ve bileşen seti sağlayarak web geliştirmeyi hızlandırır. Torben Lundsgaard sayesinde artık GrabzIt'in bir parçası TLAMedya Symfony için bir GrabzIt paketi yaratan kişi. Bu açık kaynaklı yazılım şunları kullanır: MİT Lisans.

GrabzIt Paketini edinmek için önce onu besteciyle yüklemelisiniz.

composer require tlamedia/grabzit-bundle

Daha sonra kernelinize ekleyin.

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

yapılandırma

Referans API Anahtarı ve Sırrı ve bunları bu şekilde yapılandırma dosyanıza 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 çeşitli hizmetleri kaydeder.

Hizmet Tanımlayıcı GrabzIt 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

Yakalamalar Nasıl Oluşturulur

Symfony Çerçevesinde nasıl küçük resim oluşturulacağına 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(1366);
        $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şleyiciyle yakalamalar nasıl alınır?

Symfony çerçevesindeki bir işleyiciyi kullanarak GrabzIt'tan yakalamaların nasıl alınacağına dair bir örnek. Elbette bunu kendi gereksinimlerinize uyacak şekilde değiştirmeniz gerekecektir.

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 şu tarihten itibaren genişletilmiştir: GitHub'da ayrıntılı olarak açıklanan bu paket için yardım.