כלים ללכידה ולהמרה של האינטרנט

שימוש במסגרת הסימפוני של PHP עם ממשק ה- API של לכידת GrabzIt

בעוד שספריית PHP של GrabzIt מתמקדת באספקת ספריה שניתן להשתמש בה בכל פרויקט PHP. סימפוני פרויקטים של PHP מורכבים בצורה ייחודית הדורשת קצת יותר עבודה.

Symfony היא אחת ממסגרות ה- PHP הגדולות ביותר בהן נעשה שימוש כיום והיא מאיצה את פיתוח האינטרנט על ידי מתן מערך ספריות ורכיבים לשימוש חוזר. אשר GrabzIt הוא עכשיו חלק ממנו, בזכות טורבן לונדסארד מ תלמידיה שיצר חבילה של GrabzIt לסימפוניה. תוכנת קוד פתוח זו משתמשת ב- רישיון MIT.

כדי להשיג את ה- GrabzIt Bundle, עליכם להתקין אותו תחילה עם המלחין.

composer require tlamedia/grabzit-bundle

ואז הוסף אותו לליבה שלך.

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

תְצוּרָה

קבל שלך מפתח API וסוד ולהוסיף אותם לקובץ התצורה שלך כך.

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

הצרור רושם מספר שירותים אשר כאשר הוא מתקשר מחזיר את הכיתה המתאימה ל- GrabzIt.

מזהה שירות GrabzIt Class
tla_grabzit.client GrabzItClient
tla_grabzit.image אופציות GrabzItImageOptions
tla_grabzit.pdf אופציות GrabzItPDFOptions
tla_grabzit.docxoptions GrabzItDOCXOptions
tla_grabzit.animations אימות GrabzItAnimationOptions
tla_grabzit.table אפשרויות GrabzItTableOptions

כיצד ליצור תצלומים

דוגמה ליצירת תמונה ממוזערת במסגרת 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;
    }
}

כיצד לקבל תצלומים עם מטפל

דוגמה כיצד לקבל תצלומים מ- GrabzIt באמצעות מטפל במסגרת Symfony. כמובן שתצטרך לשנות זאת כך שיתאים לדרישות שלך.

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

מאמר עזרה זה הורחב מ- עזרה לחבילה זו המפורטת ב- GitHub.