Outils pour capturer et convertir le Web

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

Alors que la bibliothèque PHP de GrabzIt se concentre sur la fourniture d'une bibliothèque pouvant être utilisée dans tout projet PHP. Symfony Les projets PHP sont mis en place de manière unique, ce qui nécessite un peu plus de travail.

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

Pour obtenir le paquet GrabzIt, 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 ça.

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

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

Identifiant de service Classe 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 la manière de générer une vignette dans 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;
    }
}

Comment recevoir des captures avec un gestionnaire

Un exemple de la façon de recevoir des captures de GrabzIt en utilisant 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 paquet détaillé sur GitHub.