Add and edit some files
- Add python scrypt for create bdd - edit some files for use directory instead hard coded server root directory - add composer files
This commit is contained in:
parent
d2de9134c7
commit
2aa9c5cf10
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
fontawesome/*
|
||||||
|
vendor/*
|
17
README.md
Normal file
17
README.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
## For Install it ##
|
||||||
|
|
||||||
|
You'll need
|
||||||
|
* composer
|
||||||
|
|
||||||
|
Then, download and extract the zip file for download fontawesome on server ROOT
|
||||||
|
```
|
||||||
|
wget https://use.fontawesome.com/releases/v5.15.1/fontawesome-free-5.15.1-web.zip
|
||||||
|
unzip fontawesome-free-5.15.1-web.zip
|
||||||
|
rm fontawesome-free-5.15.1-web.zip
|
||||||
|
mv fontawesome-free-5.15.1-web fontawesome
|
||||||
|
```
|
||||||
|
|
||||||
|
And download composer packages
|
||||||
|
```
|
||||||
|
composer install
|
||||||
|
```
|
6
composer.json
Normal file
6
composer.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"require": {
|
||||||
|
"php-ffmpeg/php-ffmpeg": "^0.16.0",
|
||||||
|
"daverandom/resume": "^0.0.3"
|
||||||
|
}
|
||||||
|
}
|
636
composer.lock
generated
Normal file
636
composer.lock
generated
Normal file
@ -0,0 +1,636 @@
|
|||||||
|
{
|
||||||
|
"_readme": [
|
||||||
|
"This file locks the dependencies of your project to a known state",
|
||||||
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
|
"This file is @generated automatically"
|
||||||
|
],
|
||||||
|
"content-hash": "b42c827937c1319b1e2c6401cea9c0fa",
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "alchemy/binary-driver",
|
||||||
|
"version": "v5.2.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/alchemy-fr/BinaryDriver.git",
|
||||||
|
"reference": "e0615cdff315e6b4b05ada67906df6262a020d22"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/alchemy-fr/BinaryDriver/zipball/e0615cdff315e6b4b05ada67906df6262a020d22",
|
||||||
|
"reference": "e0615cdff315e6b4b05ada67906df6262a020d22",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"evenement/evenement": "^3.0|^2.0|^1.0",
|
||||||
|
"php": ">=5.5",
|
||||||
|
"psr/log": "^1.0",
|
||||||
|
"symfony/process": "^2.3|^3.0|^4.0|^5.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^4.0|^5.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-0": {
|
||||||
|
"Alchemy": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Nicolas Le Goff",
|
||||||
|
"email": "legoff.n@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Romain Neutron",
|
||||||
|
"email": "imprec@gmail.com",
|
||||||
|
"homepage": "http://www.lickmychip.com/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Phraseanet Team",
|
||||||
|
"email": "info@alchemy.fr",
|
||||||
|
"homepage": "http://www.phraseanet.com/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jens Hausdorf",
|
||||||
|
"email": "mail@jens-hausdorf.de",
|
||||||
|
"homepage": "https://jens-hausdorf.de",
|
||||||
|
"role": "Maintainer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A set of tools to build binary drivers",
|
||||||
|
"keywords": [
|
||||||
|
"binary",
|
||||||
|
"driver"
|
||||||
|
],
|
||||||
|
"time": "2020-02-12T19:35:11+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "daverandom/resume",
|
||||||
|
"version": "v0.0.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/DaveRandom/Resume.git",
|
||||||
|
"reference": "3d1c11b6c4315dd8d25d6f567c5ea392c7c60edb"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/DaveRandom/Resume/zipball/3d1c11b6c4315dd8d25d6f567c5ea392c7c60edb",
|
||||||
|
"reference": "3d1c11b6c4315dd8d25d6f567c5ea392c7c60edb",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^6.2"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"DaveRandom\\Resume\\": "src/"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"src/functions.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"mit"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Chris Wright",
|
||||||
|
"email": "me@daverandom.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Tiny library to facilitate resumable downloads",
|
||||||
|
"time": "2018-01-28T03:18:55+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "doctrine/cache",
|
||||||
|
"version": "1.10.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/doctrine/cache.git",
|
||||||
|
"reference": "13e3381b25847283a91948d04640543941309727"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/doctrine/cache/zipball/13e3381b25847283a91948d04640543941309727",
|
||||||
|
"reference": "13e3381b25847283a91948d04640543941309727",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "~7.1 || ^8.0"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"doctrine/common": ">2.2,<2.4"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"alcaeus/mongo-php-adapter": "^1.1",
|
||||||
|
"doctrine/coding-standard": "^6.0",
|
||||||
|
"mongodb/mongodb": "^1.1",
|
||||||
|
"phpunit/phpunit": "^7.0",
|
||||||
|
"predis/predis": "~1.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.9.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Guilherme Blanco",
|
||||||
|
"email": "guilhermeblanco@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Roman Borschel",
|
||||||
|
"email": "roman@code-factory.org"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Benjamin Eberlei",
|
||||||
|
"email": "kontakt@beberlei.de"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jonathan Wage",
|
||||||
|
"email": "jonwage@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Johannes Schmitt",
|
||||||
|
"email": "schmittjoh@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
|
||||||
|
"homepage": "https://www.doctrine-project.org/projects/cache.html",
|
||||||
|
"keywords": [
|
||||||
|
"abstraction",
|
||||||
|
"apcu",
|
||||||
|
"cache",
|
||||||
|
"caching",
|
||||||
|
"couchdb",
|
||||||
|
"memcached",
|
||||||
|
"php",
|
||||||
|
"redis",
|
||||||
|
"xcache"
|
||||||
|
],
|
||||||
|
"time": "2020-07-07T18:54:01+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "evenement/evenement",
|
||||||
|
"version": "v3.0.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/igorw/evenement.git",
|
||||||
|
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
|
||||||
|
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^6.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-0": {
|
||||||
|
"Evenement": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Igor Wiedler",
|
||||||
|
"email": "igor@wiedler.ch"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Événement is a very simple event dispatching library for PHP",
|
||||||
|
"keywords": [
|
||||||
|
"event-dispatcher",
|
||||||
|
"event-emitter"
|
||||||
|
],
|
||||||
|
"time": "2017-07-23T21:35:13+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "neutron/temporary-filesystem",
|
||||||
|
"version": "2.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/romainneutron/Temporary-Filesystem.git",
|
||||||
|
"reference": "3c55497da8d7762fb4dcabc91d54a5de510e3c99"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/romainneutron/Temporary-Filesystem/zipball/3c55497da8d7762fb4dcabc91d54a5de510e3c99",
|
||||||
|
"reference": "3c55497da8d7762fb4dcabc91d54a5de510e3c99",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^5.6 || ^7.0",
|
||||||
|
"symfony/filesystem": "^2.3 || ^3.0 || ^4.0 || ^5.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"symfony/phpunit-bridge": "^5.0.4"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-0": {
|
||||||
|
"Neutron": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Romain Neutron",
|
||||||
|
"email": "imprec@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony filesystem extension to handle temporary files",
|
||||||
|
"time": "2020-02-17T15:27:36+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "php-ffmpeg/php-ffmpeg",
|
||||||
|
"version": "v0.16",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/PHP-FFMpeg/PHP-FFMpeg.git",
|
||||||
|
"reference": "4175c02b7d9f7e1a02cec2ba73474266ba2c5fa1"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/PHP-FFMpeg/PHP-FFMpeg/zipball/4175c02b7d9f7e1a02cec2ba73474266ba2c5fa1",
|
||||||
|
"reference": "4175c02b7d9f7e1a02cec2ba73474266ba2c5fa1",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"alchemy/binary-driver": "^1.5 || ~2.0.0 || ^5.0",
|
||||||
|
"doctrine/cache": "^1.0",
|
||||||
|
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
|
||||||
|
"neutron/temporary-filesystem": "^2.1.1",
|
||||||
|
"php": "^5.3.9 || ^7.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"sami/sami": "~1.0",
|
||||||
|
"silex/silex": "~1.0",
|
||||||
|
"symfony/phpunit-bridge": "^5.0.4"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"php-ffmpeg/extras": "A compilation of common audio & video drivers for PHP-FFMpeg"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "0.7-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-0": {
|
||||||
|
"FFMpeg": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Romain Neutron",
|
||||||
|
"email": "imprec@gmail.com",
|
||||||
|
"homepage": "http://www.lickmychip.com/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Phraseanet Team",
|
||||||
|
"email": "info@alchemy.fr",
|
||||||
|
"homepage": "http://www.phraseanet.com/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Patrik Karisch",
|
||||||
|
"email": "patrik@karisch.guru",
|
||||||
|
"homepage": "http://www.karisch.guru"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Romain Biard",
|
||||||
|
"email": "romain.biard@gmail.com",
|
||||||
|
"homepage": "https://www.strime.io/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jens Hausdorf",
|
||||||
|
"email": "hello@jens-hausdorf.de",
|
||||||
|
"homepage": "https://jens-hausdorf.de"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "FFMpeg PHP, an Object Oriented library to communicate with AVconv / ffmpeg",
|
||||||
|
"keywords": [
|
||||||
|
"audio",
|
||||||
|
"audio processing",
|
||||||
|
"avconv",
|
||||||
|
"avprobe",
|
||||||
|
"ffmpeg",
|
||||||
|
"ffprobe",
|
||||||
|
"video",
|
||||||
|
"video processing"
|
||||||
|
],
|
||||||
|
"time": "2020-03-29T09:57:10+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/log",
|
||||||
|
"version": "1.1.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/log.git",
|
||||||
|
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
|
||||||
|
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.1.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Log\\": "Psr/Log/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "http://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for logging libraries",
|
||||||
|
"homepage": "https://github.com/php-fig/log",
|
||||||
|
"keywords": [
|
||||||
|
"log",
|
||||||
|
"psr",
|
||||||
|
"psr-3"
|
||||||
|
],
|
||||||
|
"time": "2020-03-23T09:12:05+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/filesystem",
|
||||||
|
"version": "v5.2.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/filesystem.git",
|
||||||
|
"reference": "fa8f8cab6b65e2d99a118e082935344c5ba8c60d"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/filesystem/zipball/fa8f8cab6b65e2d99a118e082935344c5ba8c60d",
|
||||||
|
"reference": "fa8f8cab6b65e2d99a118e082935344c5ba8c60d",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.2.5",
|
||||||
|
"symfony/polyfill-ctype": "~1.8"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Component\\Filesystem\\": ""
|
||||||
|
},
|
||||||
|
"exclude-from-classmap": [
|
||||||
|
"/Tests/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Fabien Potencier",
|
||||||
|
"email": "fabien@symfony.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony Filesystem Component",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"time": "2020-11-30T17:05:38+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/polyfill-ctype",
|
||||||
|
"version": "v1.22.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||||
|
"reference": "c6c942b1ac76c82448322025e084cadc56048b4e"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e",
|
||||||
|
"reference": "c6c942b1ac76c82448322025e084cadc56048b4e",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.1"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-ctype": "For best performance"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-main": "1.22-dev"
|
||||||
|
},
|
||||||
|
"thanks": {
|
||||||
|
"name": "symfony/polyfill",
|
||||||
|
"url": "https://github.com/symfony/polyfill"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Polyfill\\Ctype\\": ""
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"bootstrap.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Gert de Pagter",
|
||||||
|
"email": "BackEndTea@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony polyfill for ctype functions",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"keywords": [
|
||||||
|
"compatibility",
|
||||||
|
"ctype",
|
||||||
|
"polyfill",
|
||||||
|
"portable"
|
||||||
|
],
|
||||||
|
"time": "2021-01-07T16:49:33+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/polyfill-php80",
|
||||||
|
"version": "v1.22.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/polyfill-php80.git",
|
||||||
|
"reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91",
|
||||||
|
"reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.1"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-main": "1.22-dev"
|
||||||
|
},
|
||||||
|
"thanks": {
|
||||||
|
"name": "symfony/polyfill",
|
||||||
|
"url": "https://github.com/symfony/polyfill"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Polyfill\\Php80\\": ""
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"bootstrap.php"
|
||||||
|
],
|
||||||
|
"classmap": [
|
||||||
|
"Resources/stubs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Ion Bazan",
|
||||||
|
"email": "ion.bazan@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Nicolas Grekas",
|
||||||
|
"email": "p@tchwork.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"keywords": [
|
||||||
|
"compatibility",
|
||||||
|
"polyfill",
|
||||||
|
"portable",
|
||||||
|
"shim"
|
||||||
|
],
|
||||||
|
"time": "2021-01-07T16:49:33+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/process",
|
||||||
|
"version": "v5.2.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/process.git",
|
||||||
|
"reference": "bd8815b8b6705298beaa384f04fabd459c10bedd"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/process/zipball/bd8815b8b6705298beaa384f04fabd459c10bedd",
|
||||||
|
"reference": "bd8815b8b6705298beaa384f04fabd459c10bedd",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.2.5",
|
||||||
|
"symfony/polyfill-php80": "^1.15"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Component\\Process\\": ""
|
||||||
|
},
|
||||||
|
"exclude-from-classmap": [
|
||||||
|
"/Tests/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Fabien Potencier",
|
||||||
|
"email": "fabien@symfony.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony Process Component",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"time": "2020-12-08T17:03:37+00:00"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": [],
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": []
|
||||||
|
}
|
401
listBDD.py
Executable file
401
listBDD.py
Executable file
@ -0,0 +1,401 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
#from tmdbv3api import TMDb
|
||||||
|
from __future__ import print_function
|
||||||
|
from iso639 import languages
|
||||||
|
import tmdbv3api
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import locale
|
||||||
|
from datetime import datetime
|
||||||
|
import sqlite3
|
||||||
|
import argparse
|
||||||
|
import re
|
||||||
|
import wget
|
||||||
|
|
||||||
|
class ForeColors:
|
||||||
|
RED = '\033[31m'
|
||||||
|
GREEN = '\033[32m'
|
||||||
|
YELLOW = '\033[33m'
|
||||||
|
BLUE = '\033[34m'
|
||||||
|
MAGENTA = '\033[35m'
|
||||||
|
CYAN = '\033[36m'
|
||||||
|
LIRED = '\033[91m'
|
||||||
|
LIGREEN = '\033[92m'
|
||||||
|
LIYELLOW = '\033[93m'
|
||||||
|
LIBLUE = '\033[94m'
|
||||||
|
LIMAGENTA = '\033[95m'
|
||||||
|
LICYAN = '\033[96m'
|
||||||
|
END = '\033[0m'
|
||||||
|
BOLD = '\033[1m'
|
||||||
|
UNDERLINE = '\033[4m'
|
||||||
|
|
||||||
|
class BackColors:
|
||||||
|
RED = '\033[41m'
|
||||||
|
GREEN = '\033[42m'
|
||||||
|
YELLOW = '\033[43m'
|
||||||
|
BLUE = '\033[44m'
|
||||||
|
MAGENTA = '\033[45m'
|
||||||
|
CYAN = '\033[46m'
|
||||||
|
LIRED = '\033[101m'
|
||||||
|
LIGREEN = '\033[102m'
|
||||||
|
LIYELLOW = '\033[103m'
|
||||||
|
LIBLUE = '\033[104m'
|
||||||
|
LIMAGENTA = '\033[105m'
|
||||||
|
LICYAN = '\033[106m'
|
||||||
|
END = '\033[0m'
|
||||||
|
BOLD = '\033[1m'
|
||||||
|
UNDERLINE = '\033[4m'
|
||||||
|
|
||||||
|
locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("-p", "--purge", action="store_true", help="delete non existing film and saga if empty")
|
||||||
|
parser.add_argument("-s", "--symbolic", action="store_true", help="use symbolic path")
|
||||||
|
parser.add_argument("-q", "--quiet", action="store_true", help="quite mode reduce verbosity")
|
||||||
|
parser.add_argument("-d", "--database", default='bdd.db', help="Database location")
|
||||||
|
parser.add_argument("path", nargs='?', default='list/', help="defined the directory or the file to add in database")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
path = args.path
|
||||||
|
|
||||||
|
if not args.symbolic:
|
||||||
|
path = os.path.realpath(path)
|
||||||
|
|
||||||
|
if args.quiet:
|
||||||
|
print("Quiet mode")
|
||||||
|
def printr(*args):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
def printr(*args):
|
||||||
|
print(*args)
|
||||||
|
|
||||||
|
bdd = args.database
|
||||||
|
|
||||||
|
|
||||||
|
img_url='http://image.tmdb.org/t/p/original/'
|
||||||
|
|
||||||
|
img_dir= '/var/www/html/img'
|
||||||
|
|
||||||
|
|
||||||
|
nbFiles = 0
|
||||||
|
nbExist = 0
|
||||||
|
nbAdd = 0
|
||||||
|
|
||||||
|
def query_yes_no(question, default="yes"):
|
||||||
|
"""Ask a yes/no question via raw_input() and return their answer.
|
||||||
|
|
||||||
|
"question" is a string that is presented to the user.
|
||||||
|
"default" is the presumed answer if the user just hits <Enter>.
|
||||||
|
It must be "yes" (the default), "no" or None (meaning
|
||||||
|
an answer is required of the user).
|
||||||
|
|
||||||
|
The "answer" return value is True for "yes" or False for "no".
|
||||||
|
"""
|
||||||
|
valid = {"yes": True, "y": True, "ye": True,
|
||||||
|
"no": False, "n": False}
|
||||||
|
if default is None:
|
||||||
|
prompt = " [y/n] "
|
||||||
|
elif default == "yes":
|
||||||
|
prompt = " [Y/n] "
|
||||||
|
elif default == "no":
|
||||||
|
prompt = " [y/N] "
|
||||||
|
else:
|
||||||
|
raise ValueError("invalid default answer: '%s'" % default)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
sys.stdout.write(question + prompt)
|
||||||
|
choice = input().lower()
|
||||||
|
if default is not None and choice == '':
|
||||||
|
return valid[default]
|
||||||
|
elif choice in valid:
|
||||||
|
return valid[choice]
|
||||||
|
else:
|
||||||
|
sys.stdout.write("Please respond with 'yes' or 'no' "
|
||||||
|
"(or 'y' or 'n').\n")
|
||||||
|
|
||||||
|
def browse(path):
|
||||||
|
|
||||||
|
files = []
|
||||||
|
files_path = []
|
||||||
|
ext = [".mkv", ".avi", ".mp4"]
|
||||||
|
global nbFiles
|
||||||
|
|
||||||
|
if os.path.isdir(path):
|
||||||
|
|
||||||
|
# r=root, d=directories, f = files
|
||||||
|
for r, d, f in os.walk(path):
|
||||||
|
for file in f:
|
||||||
|
if os.path.splitext(file)[1].lower() in ext:
|
||||||
|
files_path.append(os.path.join(r, file))
|
||||||
|
file = os.path.splitext(file)[0]
|
||||||
|
files.append(file)
|
||||||
|
nbFiles+=1
|
||||||
|
elif os.path.isfile(path):
|
||||||
|
if os.path.splitext(path)[1].lower() in ext:
|
||||||
|
files_path.append(path)
|
||||||
|
file = os.path.basename(path)
|
||||||
|
file = os.path.splitext(file)[0]
|
||||||
|
files.append(file)
|
||||||
|
|
||||||
|
return files, files_path
|
||||||
|
|
||||||
|
def createTable():
|
||||||
|
|
||||||
|
conn = sqlite3.connect(bdd)
|
||||||
|
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
cursor.execute("""
|
||||||
|
CREATE TABLE IF NOT EXISTS sagas(
|
||||||
|
id INTEGER PRIMARY KEY UNIQUE NOT NULL,
|
||||||
|
name TEXT,
|
||||||
|
poster_path TEXT
|
||||||
|
)
|
||||||
|
""")
|
||||||
|
|
||||||
|
cursor.execute("""
|
||||||
|
CREATE TABLE IF NOT EXISTS movies(
|
||||||
|
id INTEGER PRIMARY KEY UNIQUE NOT NULL,
|
||||||
|
title TEXT,
|
||||||
|
release_date DATE,
|
||||||
|
overview TEXT,
|
||||||
|
original_language TEXT,
|
||||||
|
original_title TEXT,
|
||||||
|
file_name TEXT,
|
||||||
|
file_path TEXT,
|
||||||
|
poster_path TEXT,
|
||||||
|
sagaID INTEGER,
|
||||||
|
CONSTRAINT movies_sagas_FK FOREIGN KEY (sagaID) REFERENCES sagas(id)
|
||||||
|
)
|
||||||
|
""")
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def searchMovie(file_name):
|
||||||
|
|
||||||
|
# create an instance of the IMDb class
|
||||||
|
tmdb = tmdbv3api.TMDb()
|
||||||
|
m = tmdbv3api.Movie()
|
||||||
|
|
||||||
|
tmdb.language = 'fr'
|
||||||
|
tmdb.debug = False
|
||||||
|
tmdb.api_key = '64f8b9bb9ba42cfe74ee0e9da1fa1690'
|
||||||
|
|
||||||
|
year = None
|
||||||
|
|
||||||
|
if re.search(r'\([0-9]*\)', file_name):
|
||||||
|
|
||||||
|
name = (re.findall(r'(.*) \([0-9]*\)', file_name))[0]
|
||||||
|
year = (re.findall(r'\(([0-9]*)\)', file_name))[0]
|
||||||
|
|
||||||
|
else:
|
||||||
|
name = file_name
|
||||||
|
|
||||||
|
printr (name)
|
||||||
|
printr (year)
|
||||||
|
|
||||||
|
movies = m.search(name)
|
||||||
|
movie = None
|
||||||
|
|
||||||
|
if not movies:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if year != None:
|
||||||
|
for n in movies:
|
||||||
|
if hasattr(n, 'release_date'):
|
||||||
|
if n.release_date.split('-')[0] == year:
|
||||||
|
movie = n
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
movie = movies[0]
|
||||||
|
|
||||||
|
return movie
|
||||||
|
|
||||||
|
def add():
|
||||||
|
|
||||||
|
tmdb = tmdbv3api.TMDb()
|
||||||
|
m = tmdbv3api.Movie()
|
||||||
|
|
||||||
|
tmdb.language = 'fr'
|
||||||
|
tmdb.debug = False
|
||||||
|
tmdb.api_key = '64f8b9bb9ba42cfe74ee0e9da1fa1690'
|
||||||
|
|
||||||
|
global nbAdd
|
||||||
|
global nbExist
|
||||||
|
|
||||||
|
|
||||||
|
conn = sqlite3.connect(bdd)
|
||||||
|
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
files, files_path = browse(path)
|
||||||
|
|
||||||
|
|
||||||
|
for file_name, file_path in zip(files, files_path):
|
||||||
|
|
||||||
|
cursor.execute("""SELECT * FROM movies WHERE file_path=?""", (file_path,))
|
||||||
|
|
||||||
|
result = cursor.fetchone()
|
||||||
|
|
||||||
|
if result:
|
||||||
|
print(ForeColors.GREEN + "{} alredy exist for movie {} {}".format(file_path,ForeColors.END,result[1]))
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
printr(file_name)
|
||||||
|
|
||||||
|
movie = searchMovie(file_name)
|
||||||
|
|
||||||
|
if not movie:
|
||||||
|
print(ForeColors.MAGENTA + '{} Aucun resultat'.format(file_path) + ForeColors.END)
|
||||||
|
continue
|
||||||
|
|
||||||
|
id = movie.id
|
||||||
|
title = movie.title
|
||||||
|
release_date = movie.release_date
|
||||||
|
overview = movie.overview
|
||||||
|
original_language = movie.original_language
|
||||||
|
original_title = movie.original_title
|
||||||
|
poster_path = movie.poster_path
|
||||||
|
|
||||||
|
printr("Movie : {}".format(title))
|
||||||
|
|
||||||
|
printr(release_date)
|
||||||
|
|
||||||
|
if not os.path.isdir(img_dir):
|
||||||
|
os.mkdir(img_dir)
|
||||||
|
|
||||||
|
if poster_path != None:
|
||||||
|
if not os.path.isfile(img_dir+poster_path):
|
||||||
|
wget.download(img_url+poster_path, out=img_dir, bar=None)
|
||||||
|
|
||||||
|
detail = m.details(movie.id)
|
||||||
|
|
||||||
|
if detail.belongs_to_collection != None:
|
||||||
|
sagaID = detail.belongs_to_collection['id']
|
||||||
|
sagaNAME = detail.belongs_to_collection['name']
|
||||||
|
sagaPATH = detail.belongs_to_collection['poster_path']
|
||||||
|
if sagaPATH != None:
|
||||||
|
if not os.path.isfile(img_dir+sagaPATH):
|
||||||
|
wget.download(img_url+sagaPATH, out=img_dir, bar=None)
|
||||||
|
else:
|
||||||
|
printr("No Saga")
|
||||||
|
sagaID = 0
|
||||||
|
|
||||||
|
|
||||||
|
cursor.execute("""SELECT * FROM movies WHERE id=?""", (id,))
|
||||||
|
|
||||||
|
result = cursor.fetchone()
|
||||||
|
|
||||||
|
if result:
|
||||||
|
print(ForeColors.LIRED + "{} find for Movie {} {} {} and his alredy exist at {}".format(file_path, ForeColors.END, title, ForeColors.LIRED, result[7]) + ForeColors.END)
|
||||||
|
nbExist+=1
|
||||||
|
else:
|
||||||
|
if detail.belongs_to_collection != None:
|
||||||
|
cursor.execute("""SELECT 1 FROM sagas WHERE id=?""", (sagaID,))
|
||||||
|
|
||||||
|
if cursor.fetchone():
|
||||||
|
printr("{} alredy exist".format(sagaNAME))
|
||||||
|
|
||||||
|
else:
|
||||||
|
cursor.execute("""INSERT INTO sagas VALUES(?, ?, ?)""", (sagaID, sagaNAME, sagaPATH))
|
||||||
|
printr("Saga added")
|
||||||
|
|
||||||
|
|
||||||
|
cursor.execute("""INSERT INTO movies VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""", (id, title, release_date, overview, original_language, original_title, file_name, file_path, poster_path, sagaID))
|
||||||
|
print(ForeColors.LIBLUE + "{} find for Movie {} {}".format(file_path, ForeColors.END, title))
|
||||||
|
nbAdd+=1
|
||||||
|
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
printr()
|
||||||
|
|
||||||
|
|
||||||
|
#cursor.execute("""SELECT id, title, release_date, overview, original_language, original_title, poster_path FROM movies""")
|
||||||
|
#for row in cursor:
|
||||||
|
# print('{0} :\n{1}\n{2}\n{3}\n{4}\n{5}\n{6}'.format(row[0], row[1], row[2], row[3], row[4], row[5], row[6]))
|
||||||
|
# print()
|
||||||
|
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def purge():
|
||||||
|
|
||||||
|
delarray = []
|
||||||
|
|
||||||
|
compt = 0
|
||||||
|
|
||||||
|
conn = sqlite3.connect(bdd)
|
||||||
|
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
cursor.execute("SELECT id, title, file_path, poster_path, sagaID FROM movies")
|
||||||
|
|
||||||
|
result = cursor.fetchall()
|
||||||
|
|
||||||
|
for file in result:
|
||||||
|
if not os.path.isfile(file[2]):
|
||||||
|
delarray.append(file)
|
||||||
|
compt+=1
|
||||||
|
|
||||||
|
for title in delarray:
|
||||||
|
print(title[1])
|
||||||
|
|
||||||
|
if compt > 0:
|
||||||
|
if query_yes_no("Do you want to delete this {} entry".format(compt), "no"):
|
||||||
|
for title in delarray:
|
||||||
|
cursor.execute("""DELETE FROM movies WHERE id=?""", (title[0],))
|
||||||
|
|
||||||
|
if title[4] != 0:
|
||||||
|
|
||||||
|
cursor.execute("""SELECT name FROM sagas WHERE id=?""", (title[4],))
|
||||||
|
|
||||||
|
sagaNAME = cursor.fetchone()[0]
|
||||||
|
|
||||||
|
cursor.execute("""SELECT 1 FROM movies WHERE sagaID=?""", (title[4],))
|
||||||
|
|
||||||
|
if cursor.fetchone():
|
||||||
|
printr("Found Movie in {} not delete it".format(sagaNAME))
|
||||||
|
else:
|
||||||
|
cursor.execute("""DELETE FROM sagas WHERE id=?""", (title[4],))
|
||||||
|
printr("{} deleted".format(sagaNAME))
|
||||||
|
|
||||||
|
|
||||||
|
if query_yes_no("Do you want to delete their images", "yes"):
|
||||||
|
for title in delarray:
|
||||||
|
if title[3] != None:
|
||||||
|
if os.path.isfile(img_dir+title[3]):
|
||||||
|
print("Del image "+title[3])
|
||||||
|
os.remove(img_dir+title[3])
|
||||||
|
else:
|
||||||
|
print("Nothing to purge")
|
||||||
|
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
createTable()
|
||||||
|
|
||||||
|
if args.purge == True:
|
||||||
|
print("Purge mode")
|
||||||
|
purge()
|
||||||
|
else:
|
||||||
|
print("Add mode")
|
||||||
|
add()
|
||||||
|
print("Nombre de fichiers : {}".format(nbFiles))
|
||||||
|
print("Nombre de fichiers déjà existant : {}".format(nbExist))
|
||||||
|
print("Nombre de fichiers ajouter : {}".format(nbAdd))
|
||||||
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace DaveRandom\Resume;
|
namespace DaveRandom\Resume;
|
||||||
|
|
||||||
require __DIR__ . '/../../vendor/autoload.php';
|
require __DIR__ . '../vendor/autoload.php';
|
||||||
|
|
||||||
include "function.php";
|
include "function.php";
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ setlocale (LC_TIME, 'fr_FR.utf8');
|
|||||||
|
|
||||||
$images_folder = '/img';
|
$images_folder = '/img';
|
||||||
|
|
||||||
$bdd = '/var/www/html/bdd.db';
|
$bdd = '../bdd.db';
|
||||||
|
|
||||||
$output_video_folder = 'vid/';
|
$output_video_folder = 'vid/';
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ function convert($id, $video, $audio) {
|
|||||||
|
|
||||||
function MediaInfo($file) {
|
function MediaInfo($file) {
|
||||||
|
|
||||||
require '/var/www/html/vendor/autoload.php';
|
require '../vendor/autoload.php';
|
||||||
|
|
||||||
$ffprobe = FFMpeg\FFProbe::create();
|
$ffprobe = FFMpeg\FFProbe::create();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user