我遇到这个问题很困难。我创建了一个PHP脚本,它从.mov文件中提取数据,解析它,然后只输出我想要的数据。现在,我的问题是我必须为80多个文件执行此操作,我想知道如何从同一目录中读取多个文件(80多个文件),然后运行我在每个文件上创建的脚本,输出数据如此分开?我是否必须完全更改我的代码?
以下是.mov文件外观的示例,(每个都不同;标题不同。)
//[HMS Movie Line-Up File]
//[Version 3]
// Lineup=_2013_05
// Field definitions for movie category lines:
// 1. Category number (not used)
// 2. Movie category name
// 3. Regular price
// 4. Discount price
// 5. Type (Movies or Clips)
// 6. Has synopsis (1 = Yes)
// Field definitions for movie title lines:
// 1. Menu Name
// 2. Selection Number
// 3. Adult or Non-adult (1 = adult)
// 4. Asset Number
// 5. Account Code
// 6. Account Sub-Code
// 7. Rating
// 8. Running Time
// 9. No. of Files
// 10. File Name
// 11. Movie Name
// 12. Medium Type
// 13. Tape Leader Time
// 14. Begin Date
// 15. Expire Date
// 16. Preview Start-Time 1
// 17. Preview Stop-Time 1
// 18. Preview Start-Time 2
// 19. Preview Stop-Time 2
// 20. Preview Start-Time 3
// 21. Preview Stop-Time 3
// 22. Playback Control
// 23. HDMI (1/0, 1 : use HDMI output)
// 24. MoviePackage
// 25. BitRate
// 26. HD/SD content (H for HD content, S for non-HD, H3 is HD with AC3 audio)
// 27. Aspect Ratio (16:9 or 4:3)
// 28. Require HDCP (1/0, 1 is require)
// 29. Movie trailer aduio type (0:MPEG audio, 1:AC3 audio)
[Directory]
1 Category
1.1 hollywoodhd
1.2 mega
1.3 still
1.4 special
1.5 family
[Categories]
1 hollywoodhd 1295 1295 Movies 1
2 mega 1095 1095 Movies 1
3 still 1095 1095 Movies 1
4 special 895 895 Movies 1
5 family 1095 1095 Movies 1
[Titles]
hollywoodhd1 1 0 8046 0 919 PG-13 6712 1 identity_hd "(HD) Identity Thief" Disk 0 04/15/13 11/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd2 3 0 8016 0 930 PG 5347 1 escapep_hd "(HD) Escape from Planet Earth" Disk 0 04/01/13 10/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd3 1 0 8012 0 930 PG-13 5828 1 darkski_hd "(HD) Dark Skies" Disk 0 04/01/13 10/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd3 2 0 8007 0 928 PG-13 5735 1 guilttri_hd "(HD) The Guilt Trip" Disk 0 04/01/13 10/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd3 3 0 8013 0 928 PG-13 7813 1 jackreac_hd "(HD) Jack Reacher" Disk 0 04/01/13 10/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd4 1 0 7993 0 919 PG-13 9500 1 lesmiser_hd "(HD) Les Miserables" Disk 0 03/06/13 09/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd4 2 0 7997 0 919 PG-13 6031 1 mama_hd "(HD) Mama" Disk 0 03/15/13 09/25/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd4 3 0 8018 0 930 PG-13 6930 1 safehave_hd "(HD) Safe Haven" Disk 0 04/01/13 10/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd6 1 0 7971 0 926 PG 5063 1 placetab_hd "(HD) A Place at the Table" Disk 0 03/01/13 09/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd7 3 0 7952 0 928 PG 5470 1 cirqueso_hd "(HD) Cirque du Soleil: Worlds Away" Disk 0 02/01/13 08/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd8 1 0 7948 0 928 PG 5829 1 riseguar_hd "(HD) Rise of the Guardians" Disk 0 02/01/13 08/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd8 3 0 7950 0 928 PG-13 5181 1 funsize_hd "(HD) Fun Size" Disk 0 02/01/13 08/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd9 2 0 7947 0 930 PG-13 6054 1 shanghai_hd "(HD) Shanghai Calling" Disk 0 02/01/13 08/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd12 2 0 7868 0 930 NR 5722 1 package_hd "(HD) The Package" Disk 0 12/01/12 06/05/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
hollywoodhd12 3 0 7851 0 931 PG-13 6045 1 housend_hd "(HD) The House at the End of the Street" Disk 0 11/01/12 06/05/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
mega1 1 0 8060 0 702 PG-13 7413 1 beaucrea "Beautiful Creatures" Disk 0 05/01/13 10/15/13 0 0 0 0 0 0 1 0 0 3480400 S 16:9 0 0
mega1 2 0 8062 0 702 PG-13 6008 1 burtwond "The Incredible Burt Wonderstone" Disk 0 05/01/13 11/01/13 0 0 0 0 0 0 1 0 0 3480400 S 16:9 0 0
mega1 3 0 8063 0 702 PG-13 6850 1 jackgian "Jack the Giant Slayer" Disk 0 05/01/13 11/01/13 0 0 0 0 0 0 1 0 0 3480400 S 16:9 0 0
still1 2 0 7969 0 102 PG 6281 1 parental "Parental Guidance" Disk 0 02/15/13 08/01/13 0 0 0 0 0 0 1 0 0 3480400 S 4:3 0 0
still1 3 0 7977 0 702 PG-13 10162 1 hobbit1 "The Hobbit: An Unexpected Journey" Disk 0 03/01/13 09/01/13 0 0 0 0 0 0 1 0 0 3480400 S 16:9 0 0
still2 1 0 7902 0 702 PG-13 10303 1 cloudatl "Cloud Atlas" Disk 0 02/01/13 09/01/13 0 0 0 0 0 0 1 0 0 3480400 S 16:9 0 0
still2 2 0 7936 0 102 PG 7619 1 lifepi "Life of Pi" Disk 0 01/15/13 07/15/13 0 0 0 0 0 0 1 0 0 3480400 S 4:3 0 0
still3 2 0 7901 0 102 PG 6984 1 chasemav "Chasing Mavericks" Disk 0 01/01/13 07/01/13 0 0 0 0 0 0 1 0 0 3480400 S 16:9 0 0
still3 3 0 7872 0 102 PG-13 5529 1 taken2 "Taken 2" Disk 0 12/01/12 06/05/13 0 0 0 0 0 0 1 0 0 3480400 S 16:9 0 0
family1 1 0 7976 0 702 XXX 2418 1 arctic "Adult title 1" Disk 0 03/01/13 09/01/13 0 0 0 0 0 0 1 0 0 3480400 S 16:9 0 0
special1 1 0 5660 0 902 G 2743 1 fatdance "Fat Burning Hip Hop Dance Party" Disk 0 02/01/10 02/01/13 0 0 0 0 0 0 1 0 0 3500000 S 4:3 0 0
special1 2 0 5659 0 902 G 2731 1 fatgroov "Fat Burning Hip Hop Dance Grooves" Disk 0 02/01/10 02/01/13 0 0 0 0 0 0 1 0 0 3500000 S 4:3 0 0
special1 3 0 2266 0 903 G 4143 1 aladdin "Aladdin" Disk 0 02/01/04 12/31/20 0 0 0 0 0 0 0 0 0 3554800 S 4:3 0 0
special2 1 0 3236 0 913 NR 5028 1 americno "Americano" Disk 0 11/01/05 10/31/15 0 0 0 0 0 0 0 0 0 3500000 S 4:3 0 0
special2 2 0 3410 0 913 NR 6002 1 missbren "Missing Brendan" Disk 0 06/01/06 05/31/17 0 0 0 0 0 0 0 0 0 3500000 S 4:3 0 0
special2 3 0 2407 0 913 NR 5946 1 pointdoo "Point Doom" Disk 0 06/01/06 05/31/17 0 0 0 0 0 0 0 0 0 3500000 S 4:3 0 0
special3 1 0 2267 0 903 G 4528 1 gulliver "Gullivers Travels" Disk 0 02/01/04 12/31/20 0 0 0 0 0 0 0 0 0 3554800 S 4:3 0 0
special3 3 0 2279 0 907 PG 5575 1 princess "The Little Princess" Disk 0 03/01/04 03/31/20 0 0 0 0 0 0 0 0 0 3500000 S 4:3 0 0
special4 1 0 2278 0 907 PG 4915 1 jackbean "Jack And The Beanstalk" Disk 0 03/01/04 03/31/20 0 0 0 0 0 0 0 0 0 3500000 S 4:3 0 0
family1 1 0 7976 0 702 G 2418 1 arctic "To the Arctic" Disk 0 03/01/13 09/01/13 0 0 0 0 0 0 1 0 0 3480400 S 16:9 0 0
family1 1 0 7976 0 702 XXX 2418 1 arctic "Adult title 2" Disk 0 03/01/13 09/01/13 0 0 0 0 0 0 1 0 0 3480400 S 16:9 0 0
这是我的PHP脚本:
<?php
$bg = "bg-body.png";
?>
<html>
<style type="text/css">
body {
background-image: url('<?php echo $bg;?>');
background-repeat: repeat;
background-position: top center;
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Movie List</title>
</html>
<?php
foreach (glob("*.mov") as $filename)
$theData = file_get_contents($filename) or die("Unable to retrieve file data");
$months = ['January' => '_01', 'February' => '_02', 'March' => '_03', 'April' => '_04', 'May' => '_05', 'June' => '_06', 'July' => '_07', 'August' => '_08', 'September' => '_09', 'October' => '_10', 'November' => '_11', 'December' => '_12'];
foreach($months as $key => $month){
if(strpos($filename,$month)!==false){
echo "<div style ='text-align: center; text-shadow: 0 .8px 0 #c4bc2a; margin-top: 30px; margin-bottom: 20px; font:16px verdana,tahoma,sans-serif;
color:#6b8942; font-weight:bold; text-decoration: underline;'>Movie List for $key 2013</div>";
}
}
$string = $theData;
$titles = explode("\n", $string);
function getInfo($string){
$Ratings = ['G', 'PG', 'PG-13', 'R', 'NR', 'XXX'];
$split = preg_split("/\"(.+)\"/", $string, 0, PREG_SPLIT_DELIM_CAPTURE);
if(count($split) == 3){
preg_match("/(".implode("|", $Ratings).")\s/", $split[0], $matches);
$rating = $matches[0];
return ["title" => $split[1], "rating" => $rating];
}
return false;
}
$infolist = array();
foreach($titles as $title){
$info = getInfo($title);
if($info !== false){
$infolist[] = $info;
}
}
usort($infolist, "infosort");
function infosort($lhs,$rhs) {
return strcmp($lhs['rating'], $rhs['rating']);
}
foreach ($infolist as $info) {
echo "<div style ='margin-bottom: 3px; text-align: center;
font:13px Verdana,tahoma,sans-serif;color:green;'>
{$info["title"]} : {$info["rating"]}</div>";
}
echo "<div style='text-align:center; margin-top: 20px;'><img src='shclogo.png'
alt='Logo' width='200' height='133'/></div>";
?>
以下是它的输出:
Movie List for July 2013
Fat Burning Hip Hop Dance Party : G
Fat Burning Hip Hop Dance Grooves : G
Aladdin : G
Gullivers Travels : G
To the Arctic : G
(HD) The Package : NR
Americano : NR
Missing Brendan : NR
Point Doom : NR
Parental Guidance : PG
Life of Pi : PG
Chasing Mavericks : PG
(HD) Cirque du Soleil: Worlds Away : PG
The Little Princess : PG
(HD) Rise of the Guardians : PG
(HD) A Place at the Table : PG
(HD) Escape from Planet Earth : PG
Jack And The Beanstalk : PG
Taken 2 : PG-13
Cloud Atlas : PG-13
Jack the Giant Slayer : PG-13
(HD) Mama : PG-13
(HD) Safe Haven : PG-13
(HD) Les Miserables : PG-13
(HD) Jack Reacher : PG-13
(HD) Dark Skies : PG-13
(HD) The Guilt Trip : PG-13
The Hobbit: An Unexpected Journey : PG-13
(HD) Fun Size : PG-13
The Incredible Burt Wonderstone : PG-13
(HD) Identity Thief : PG-13
(HD) Shanghai Calling : PG-13
Beautiful Creatures : PG-13
(HD) The House at the End of the Street : PG-13
Adult title 2 : XXX
Adult title 1 : XXX
如果我可以在多个文件上运行此脚本并为每个文件生成输出,那么我的项目就完成了。
答案 0 :(得分:0)
在glob()
循环到达
open file1
get metadata1
get metadata2
get metadata3
etc...
open file2
repeat...
或执行多个循环并获取每种类型的元数据并存储它:
open file1
get metadata1
open file2
get metadata2
....
open file1
get metadata2
open file2
get metadata2
...
第一个选项效率会更高,因为您只访问每个文件一次。