PHPackages                             kev-ac/wmspanel-ppv-parser - 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. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. kev-ac/wmspanel-ppv-parser

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

kev-ac/wmspanel-ppv-parser
==========================

Parses pay-per-view json payload and creates media signatures for WMSPanel PPV framework.

v0.3.2(3y ago)118GPL-3.0-onlyPHPPHP &gt;=7.4

Since May 16Pushed 3y ago1 watchersCompare

[ Source](https://github.com/kev-ac/wmspanel-ppv-parser)[ Packagist](https://packagist.org/packages/kev-ac/wmspanel-ppv-parser)[ RSS](/packages/kev-ac-wmspanel-ppv-parser/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (9)Dependencies (1)Versions (10)Used By (0)

PPV framework parser for WMSPanel
=================================

[](#ppv-framework-parser-for-wmspanel)

[![CI](https://github.com/kev-ac/wmspanel-ppv-parser/actions/workflows/ci.yml/badge.svg)](https://github.com/kev-ac/wmspanel-ppv-parser/actions/workflows/ci.yml)

This library presents functionality for the WMSPanel PPV framework.

Pass the JSON payload of the media servers in and receive structured data of your viewership back.
The library is able to validate requests by passing your PPV token.

You can also generate media signatures for playback.

Installation
------------

[](#installation)

Require the library with composer:

`composer require kev-ac/wmspanel-ppv-parser`

Usage
-----

[](#usage)

Instantiate the main class without validation:

`$parser = new KevAc\WmsPanel\PpvParser\PpvParser();`

Instantiate the main class with validation:

`$parser = new KevAc\WmsPanel\PpvParser\PpvParser("YOURTOKEN", true);`

Receive structured data:

`$data = $parser->parse($yourPpvPayloadAsJsonString);`

Generate response with DenyList (and Solution if token is specified above):

`$response = $parser->generateResponse($arrayWithDeniedIds, $yourPpvPayloadAsJsonString);`

Generate media signature for playback

With client IP:
`$playbackUrl = MediaSignature::createForUrl("YOUR_PLAYBACK_URL", "YOUR_KEY", "YOUR_USER_ID", 20);`
*The last parameters specifies the duration the url is valid in minutes.*

Without client IP:
`$playbackUrl = MediaSignature::createForUrl("YOUR_PLAYBACK_URL", "YOUR_KEY", "YOUR_USER_ID", 20, "127.0.0.1");`

Data structure
--------------

[](#data-structure)

All types of data are wrapped in entities with getter methods.
The main level of the resulting data is an array with VHost entities. Usually there is only one VHost entity but could be more if you have more than one domain name for one single server.

Below each VHost are the Application, Stream and Player data.
For ease of use Player information is also exposed on Application level.

Sample response
---------------

[](#sample-response)

You'll find a sample structured response here: [sample-response.txt](sample-response.txt)

### License

[](#license)

This library is licensed under GNU General Public License v3.0.

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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.

###  Release Activity

Cadence

Every ~1 days

Total

9

Last Release

1444d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/36725471b5ea17391046446ae2ad3d4ca60c3674771bf34df20ed1d19a84406a?d=identicon)[kev-ac](/maintainers/kev-ac)

---

Top Contributors

[![kev-ac](https://avatars.githubusercontent.com/u/60135953?v=4)](https://github.com/kev-ac "kev-ac (15 commits)")

---

Tags

parserwmspanel

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/kev-ac-wmspanel-ppv-parser/health.svg)

```
[![Health](https://phpackages.com/badges/kev-ac-wmspanel-ppv-parser/health.svg)](https://phpackages.com/packages/kev-ac-wmspanel-ppv-parser)
```

###  Alternatives

[nikic/php-parser

A PHP parser written in PHP

17.4k902.6M1.8k](/packages/nikic-php-parser)[doctrine/lexer

PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.

11.2k910.8M118](/packages/doctrine-lexer)[erusev/parsedown

Parser for Markdown.

15.0k151.8M729](/packages/erusev-parsedown)[league/commonmark

Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)

2.9k404.0M702](/packages/league-commonmark)[masterminds/html5

An HTML5 parser and serializer.

1.8k242.8M229](/packages/masterminds-html5)[sabberworm/php-css-parser

Parser for CSS Files written in PHP

1.8k191.2M65](/packages/sabberworm-php-css-parser)

PHPackages © 2026

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