PHPackages                             junoo/nso-auto-capture - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. junoo/nso-auto-capture

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

junoo/nso-auto-capture
======================

Ninja School Online screenshot client package for Laravel.

00PHP

Since Jun 18Pushed todayCompare

[ Source](https://github.com/xJunoo/nso-auto-capture)[ Packagist](https://packagist.org/packages/junoo/nso-auto-capture)[ RSS](/packages/junoo-nso-auto-capture/feed)WikiDiscussions main Synced today

READMEChangelog (1)DependenciesVersions (1)Used By (0)

NSO Auto Capture
================

[](#nso-auto-capture)

Package Laravel hỗ trợ gửi account Ninja School Online sang worker chụp ảnh và nhận callback ảnh/thông tin nhân vật.

Cài đặt
-------

[](#cài-đặt)

```
composer require junoo/nso-auto-capture
```

Nếu repo private:

```
{
    "repositories": [
        {
            "type": "vcs",
            "url": "git@github.com:xJunoo/nso-auto-capture.git"
        }
    ],
    "require": {
        "junoo/nso-auto-capture": "^1.0"
    }
}
```

Publish config:

```
php artisan vendor:publish --tag=nso-auto-capture-config
```

`.env`:

```
NSO_AUTO_CAPTURE_API_URL=http://api.tungduy.com/api/v1/ninja/capture
NSO_AUTO_CAPTURE_PUSH_ENDPOINT=push-account
NSO_AUTO_CAPTURE_INFO_ENDPOINT=api/get
NSO_AUTO_CAPTURE_TIMEOUT=30
```

Nếu dùng route `web`, nhớ thêm callback vào CSRF exception:

```
protected $except = [
    'nso-auto-capture/callback',
];
```

Function push
-------------

[](#function-push)

```
use Junoo\NsoAutoCapture\ScreenshotClient;

$client = app(ScreenshotClient::class);

$result = $client->push([
    'id' => 123,
    'username' => 'ninja-account',
    'password' => 'matkhau-goc',
    'server' => 1,
    'charname' => 'TenNhanVat',
]);
```

`push()` mặc định gọi:

```
POST {NSO_AUTO_CAPTURE_API_URL}/push-account

```

Payload gửi đi đúng theo module hiện tại:

```
{
    "callback_url": "https://shop.test/api/capture/nso/callback",
    "charname": "TenNhanVat",
    "id": 123,
    "server": 1,
    "username": "ninja-account",
    "password": "matkhau-goc"
}
```

Get partner info
----------------

[](#get-partner-info)

```
$result = app(ScreenshotClient::class)->get();
```

Package gọi:

```
GET {NSO_AUTO_CAPTURE_API_URL}/api/get

```

Callback event
--------------

[](#callback-event)

Route callback mặc định:

```
POST /nso-auto-capture/callback

```

Function callback
-----------------

[](#function-callback)

Có thể nhận callback qua route package:

```
POST /nso-auto-capture/callback

```

Hoặc gọi trực tiếp trong route/module hiện tại:

```
use Junoo\NsoAutoCapture\ScreenshotClient;

$result = app(ScreenshotClient::class)->callback($request->all());
```

`callback()` normalize payload rồi dispatch event `ScreenshotProcessed`.

Đăng ký listener trong `app/Providers/EventServiceProvider.php`:

```
use App\Listeners\SaveNsoCaptureResult;
use Junoo\NsoAutoCapture\Events\ScreenshotProcessed;

protected $listen = [
    ScreenshotProcessed::class => [
        SaveNsoCaptureResult::class,
    ],
];
```

Listener mẫu:

```
namespace App\Listeners;

use Junoo\NsoAutoCapture\Events\ScreenshotProcessed;

class SaveNsoCaptureResult
{
    public function handle(ScreenshotProcessed $event)
    {
        $data = $event->data;

        $accountId = $data['id'] ?? data_get($data, 'data.id');
        $captures = data_get($data, 'data.CAPTURES', []);
        $info = data_get($data, 'data.INFO', []);

        // Lưu ảnh và update GameAccounts tại đây.
    }
}
```

Payload callback:

```
{
    "id": 123,
    "username": "ninja-account",
    "status": 1,
    "message": "Thành công",
    "data": {
        "id": 123,
        "CAPTURES": {
            "TRANGBI1": "iVBORw0KGgoAAAANSUhEUg...",
            "THONGTIN1": "iVBORw0KGgoAAAANSUhEUg..."
        },
        "INFO": {
            "CHAR_NAME": "tennhanvat",
            "CHAR_LEVEL": 69,
            "CHAR_CLASS": 6,
            "CHAR_XU": 5000000,
            "CHAR_YEN": 10000000,
            "CHAR_XU_IN_BOX": 0
        }
    }
}
```

###  Health Score

20

—

LowBetter than 13% of packages

Maintenance65

Regular maintenance activity

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/117753409?v=4)[Vũ Tùng Duy](/maintainers/xJunoo)[@xJunoo](https://github.com/xJunoo)

### Embed Badge

![Health badge](/badges/junoo-nso-auto-capture/health.svg)

```
[![Health](https://phpackages.com/badges/junoo-nso-auto-capture/health.svg)](https://phpackages.com/packages/junoo-nso-auto-capture)
```

###  Alternatives

[andheiberg/messenger

Basic messaging package for laravel

691.6k](/packages/andheiberg-messenger)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
