PHPackages                             libcast/assetdistribution - 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. libcast/assetdistribution

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

libcast/assetdistribution
=========================

PHP component that can publish digital assets (video, audio...) across multiple services. Currently supports YouTube, Vimeo and Dailymotion.

v2.0.1(10y ago)101.4k4MITPHP

Since Oct 8Pushed 10y ago3 watchersCompare

[ Source](https://github.com/bricev/AssetDistributor)[ Packagist](https://packagist.org/packages/libcast/assetdistribution)[ Docs](http://libcast.com)[ RSS](/packages/libcast-assetdistribution/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (3)Dependencies (9)Versions (6)Used By (0)

AssetDistributor
================

[](#assetdistributor)

[![Scrutinizer Code Quality](https://camo.githubusercontent.com/131bf848a65e60ee919eb254d8ed42a45ba5cf0772607873fef8e42e8b2f542f/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f6272696365762f41737365744469737472696275746f722f6261646765732f7175616c6974792d73636f72652e706e673f623d7632)](https://scrutinizer-ci.com/g/bricev/AssetDistributor/?branch=v2)[![Build Status](https://camo.githubusercontent.com/2e21e3377f631528090cbabb857ead488510a3a34baf31afdb0d327a7d1259fb/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f6272696365762f41737365744469737472696275746f722f6261646765732f6275696c642e706e673f623d7632)](https://scrutinizer-ci.com/g/bricev/AssetDistributor/build-status/v2)

AssetDistributor is a PHP component that can publish digital assets (video, audio...) across multiple services.

Currently, AssetDistributor can publish videos across YouTube, Vimeo and DailyMotion. Feel free to help and integrate new Adapters for new services.

### Vocabulary

[](#vocabulary)

- `Asset` — describes a digital media of one of the following type : `audio`, `document`, `image` or `video`.
- `Adapter` — implements a `service` to `upload`, `update` or `delete` `Asset` objetcs from.
- `AdapterCollection` — contains multiple `Adapter` objects and is traversable
- `Owner` — handles an `AdapterCollection` and the corresponding `services` account credentials.

### Installation

[](#installation)

The component may be added through composer :

```
composer require libcast/assetdistributor

```

### Configuration

[](#configuration)

All your application oAuth credentials or any other configuration must be stored in a PHP configuration file. You may have a look on `example/configuration.ini` as an example.

### Usage

[](#usage)

First create an `Owner` called "me" to bear accounts credentials and an `AdapterCollection`

```
$cache = new \Doctrine\Common\Cache\FilesystemCache('/tmp'); // Doctrine Cache is a dependency
$owner = new Owner('me', $cache);
```

Then create an `Asset` from an existing file

```
$asset = AssetFactory::build(
    "$root/tests/video.mp4",        // path to file of a Flysystem\File object
    'My Video',                     // optional title
    'This is an awesome video',     // optional description
    ['test', 'asset-distributor']   // optional array of tags
);
$asset->setVisibility('private');
```

You may create an `AdapterCollection` manually:

```
/** @var string $configPath Path to the PHP configuration file */

$adapters = new AdapterCollection;
$adapters[] = new YouTubeAdapter($owner, $configPath);
$adapters[] = new VimeoAdapter($owner, $configPath);
```

You also can retrieve the `AdapterCollection` from the cache:

```
$adapters = AdapterCollection::retrieveFromCache($owner, $configPath);
```

Or you can create an `AdapterCollection` based on the `Asset` :

```
$adapters = AdapterCollection::buildForAsset($asset, $owner, $configPath);
```

Once created, the `AdapterCollection` must be affiliated to the `Owner`

```
$owner->setAdapters($adapters);
```

At this point, you may manipulate your `Asset` across all services like this:

```
// Upload the Asset on all services
$owner->upload($asset);

$asset->setTitle('Different title');
$asset->addTag('foobar');

// Update the Asset on all services
$owner->update($asset);

// Delete the Asset on all services
$owner->delete($asset);
```

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity23

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 90.9% 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 ~295 days

Total

4

Last Release

3672d ago

Major Versions

v1.0.0 → v2.x-dev2016-03-06

### Community

Maintainers

![](https://www.gravatar.com/avatar/148a43ea1996ff017ce021a6e9e515ab3b2ca729c1ad2fdb84c59a8db78ef5aa?d=identicon)[bricev](/maintainers/bricev)

---

Top Contributors

[![bricev](https://avatars.githubusercontent.com/u/4078270?v=4)](https://github.com/bricev "bricev (30 commits)")[![cmerot](https://avatars.githubusercontent.com/u/138213?v=4)](https://github.com/cmerot "cmerot (3 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/libcast-assetdistribution/health.svg)

```
[![Health](https://phpackages.com/badges/libcast-assetdistribution/health.svg)](https://phpackages.com/packages/libcast-assetdistribution)
```

###  Alternatives

[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)[setono/sylius-feed-plugin

Plugin to generate feeds within the Sylius ecommerce platform

26458.2k](/packages/setono-sylius-feed-plugin)[numero2/contao-storelocator

Contao Plugin for managing stores (or in common address data) and providing a frontend-search based on geo data

121.5k](/packages/numero2-contao-storelocator)

PHPackages © 2026

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