aensley/media-organizer

将图片和视频(或任何文件)组织成基于日期的文件夹。

1.0.2 2016-07-06 22:03 UTC

This package is not auto-updated.

Last update: 2024-09-21 12:14:09 UTC


README

将图片和视频(或任何文件)组织成基于日期的文件夹。

MIT License Build Status Maintainability Test Coverage Latest Stable Version Packagist Downloads

它做什么

对于急迫的读者描述:这个库将文件从一个地方移动到另一个地方。

详细描述:这个库帮助将文件组织成基于日期的文件夹。日期可以通过多种可配置的方式从每个文件中检索。基于日期的文件夹的结构可以按您的任何方式设计。

这主要编写用于组织JPG图片,但它适用于任何类型的文件。可用的日期检索方法包括

  1. EXIF - 从文件的EXIF数据中检索日期(仅限JPG和TIFF图片)。
  2. 文件名掩码 - 匹配文件名中的日期/时间模式。
  3. 修改时间 - 使用文件的“最后修改”时间。此属性由操作系统设置,通常不如前两种可靠。

安装

使用以下命令安装最新版本

composer require aensley/media-organizer

选项

配置文件

您可以选择任意数量的配置文件进行处理。它们将按顺序处理。每个配置文件都可以有自己的单独选项。可用的选项在代码中有文档说明

记录器

您可以为自定义处理日志消息指定实现PRS-3 Logger Interface的记录器对象。我推荐Monolog(以及monolog-colored-line-formatter,以在bash中获得额外加分)。

否则,您可以为要使用的日志级别指定一个字符串(以下之一:'none', 'error', 'warning', 'info', 'debug'),使用简单的内部记录器。内部记录器直接输出消息后跟换行符 \n

需求

  • PHP >= 7.1

示例用法

简单示例

<?php

require '/path/to/composer/autoload.php';

$organizer = new \Aensley\MediaOrganizer\MediaOrganizer(
	array(
		'images' => array(
			'source_directory' => '/data/unorganized_pictures/',
			'target_directory' => '/data/Organized/Pictures/',
			'valid_extensions' => array('jpg'),
		),
		'videos' => array(
			'source_directory' => '/data/unorganized_videos/',
			'target_directory' => '/data/Organized/Videos/',
			'valid_extensions' => array('mp4'),
			'scan_exif' => false,
		),
	),
	'debug'
);

$organizer->organize();

高级用法

<?php

require '/path/to/composer/autoload.php';

use \Monolog\Logger;
use \Monolog\Handler\StreamHandler;
use \Bramus\Monolog\Formatter\ColoredLineFormatter;
use \Aensley\MediaOrganizer\MediaOrganizer;

$logger = new Logger('mediaOrganizer');
// Colored output in Bash
$handler = new StreamHandler('php://stdout', Logger::DEBUG);
$handler->setFormatter(new ColoredLineFormatter());
$logger->pushHandler($handler);
// Put everything in a log file, too.
$logger->pushHandler(new StreamHandler('/var/log/mediaOrganizer/mediaOrganizer.log', Logger::DEBUG));

$organizer = new MediaOrganizer(
	array(
		'images' => array(
			'source_directory' => '/data/unorganized_pictures/',
			'target_directory' => '/data/Organized/Pictures/',
			'valid_extensions' => array('jpg'),
		),
		'videos' => array(
			'source_directory' => '/data/unorganized_videos/',
			'target_directory' => '/data/Organized/Videos/',
			'valid_extensions' => array('mp4'),
			'scan_exif' => false,
		),
		'gifs' => array(
			'source_directory' => '/data/unorganized_gifs/',
			'target_directory' => '/data/Organized/Gifs/',
			'valid_extensions' => array('gif'),
			'scan_exif' => false,
			'file_name_masks' => false,
			'modified_time' => true,
			'search_recursive' => true,
			'target_mask' => 'Y/F/d',
			'overwrite' => true,
		),
	),
	$logger
);

$organizer->organize();