Outils pour capturer et convertir le Web

Utilisation du framework Symfony de PHP avec l'API de capture de GrabzIt

Tandis que la bibliothèque PHP de GrabzIt se concentre sur la fourniture d'une bibliothèque qui peut être utilisée dans n'importe quel projet PHP. Symfony Les projets PHP sont élaborés d'une manière unique qui nécessite un peu plus de travail.

Symfony est l'un des frameworks PHP les plus utilisés actuellement. Il accélère le développement Web en fournissant un ensemble réutilisable de bibliothèques et de composants. Dont GrabzIt fait désormais partie, grâce à Torben Lundsgaard de TLAMedia qui a créé un bundle de GrabzIt pour Symfony. Ce logiciel open source utilise le MIT License.

Pour obtenir le GrabzIt Bundle, vous devez d'abord l'installer avec composer.

composer require tlamedia/grabzit-bundle

Ajoutez-le ensuite à votre noyau.

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

configuration

Obtenez votre Clé et secret de l'API et ajoutez-les à votre fichier de configuration comme ceci.

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

Le bundle enregistre plusieurs services qui, lorsqu'ils sont appelés, renvoient la classe GrabzIt appropriée.

Identifiant du service Cours 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

Comment générer des captures

Un exemple de comment générer une vignette dans le Framework Symfony.

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

Comment recevoir des captures avec un gestionnaire

Un exemple de comment recevoir des captures de GrabzIt à l'aide d'un gestionnaire dans le framework Symfony. Bien sûr, vous devrez modifier cela pour répondre à vos propres besoins.

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

Cet article d'aide a été développé à partir du aide pour ce bundle détaillée sur GitHub.