Narzędzia do przechwytywania i konwertowania Internetu

Korzystanie z PHP Symfony Framework z GrabzIt's Capture API

Podczas gdy biblioteka PHP GrabzIt koncentruje się na dostarczaniu biblioteki, której można używać w dowolnym projekcie PHP. Symfony Projekty PHP są składane w unikalny sposób, który wymaga nieco więcej pracy.

Symfony to jeden z największych obecnie używanych frameworków PHP, który przyspiesza tworzenie stron internetowych, udostępniając zestaw bibliotek i komponentów wielokrotnego użytku. Którego GrabzIt jest teraz częścią, dzięki Torbenowi Lundsgaardowi TLAMedia który stworzył pakiet GrabzIt dla Symfony. To oprogramowanie typu open source wykorzystuje rozszerzenie MIT License.

Aby otrzymać pakiet GrabzIt, musisz najpierw zainstalować go za pomocą kompozytora.

composer require tlamedia/grabzit-bundle

Następnie dodaj go do swojego jądra.

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

systemu

Weź swój Klucz API i klucz tajny i dodaj je do pliku konfiguracyjnego w ten sposób.

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

Pakiet rejestruje kilka usług, które po wywołaniu zwracają odpowiednią klasę GrabzIt.

Identyfikator usługi Klasa 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

Jak wygenerować przechwytywania

Przykład generowania miniatury w 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(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;
    }
}

Jak odbierać chwyty z przewodnikiem

Przykład otrzymywania przechwyceń z GrabzIt przy użyciu modułu obsługi w środowisku Symfony. Oczywiście musiałbyś to zmienić, aby dopasować je do własnych wymagań.

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

Ten artykuł pomocy został rozszerzony z pomoc dla tego pakietu wyszczególniona w GitHub.