Nochmal Filmliste leider
Hallo ich habe leider jetzt gerade das Problem bei meiner Filmliste, dass ich die Bildhöhe und Bildbreite nicht anzeigen lassen kann, weil das Format der Filme Apple Quicktime Format ist und diese nicht in den Eigenschaften Details angezeigt werden. Die Filmliste soll den Namen des Filmes, den relativen Pfad (falls vorhanden) sowie die Bildhöhe und Breite des Films in eine .TXT Datei eintragen.
Vielen Dank an colinardo das er mir so gut geholfen hat :D
Nun habe ich diese Details mit dem Programm MediaInfo ausgelesen, mir immer von einem Film anzeigen lassen, wie kann ich den Code:
So umändern, dass das die werte von Bildhöhe und Bildbreite mit MediaInfo ausliest und diese dann mit in die Filmliste einträgt?
Vielen Dank an colinardo das er mir so gut geholfen hat :D
Nun habe ich diese Details mit dem Programm MediaInfo ausgelesen, mir immer von einem Film anzeigen lassen, wie kann ich den Code:
function Add-ExtendedFileProperties{
<#
.SYNOPSIS
Fügt erweiterte Eigenschaften von Dateien an das Objekt in der Pipline hinzu
.DESCRIPTION
Extrahiert erweiterte Eigenschaften von Dateien wie z.B. Exif-Daten, Musik- bzw. Filmdetails
.EXAMPLE
Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties -PropertyExtended
"Bildhöhe","Bildbreite","Bitrate" | ft Name,Bildhöhe,Bildbreite,Bitrate
Fügt alle nur die Eigenschaften "Bildhöhe","Bildbreite","Bitrate" als
zusätzliche Spalten dem Objekt in der Pipline hinzu
.EXAMPLE
Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties | fl *
Fügt alle verfügbaren erweiterten Eigenschaften dem Objekt in der Pipline hinzu
.PARAMETER PropertyExtended
Mit diesem Parameter geben sie eine Komma-Separierte Liste von Eigenschaften an welche sie erhalten möchten.
-PropertyExtended "Bildhöhe","Bildbreite","Bitrate"
#>
param(
[Parameter(Mandatory=$true,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)]
$fileItem,
[String[]] $PropertyExtended = "ALL"
)
begin
{
$shellObject = New-Object -Com Shell.Application
$itemProperties = $null
}
process
{
if($fileItem.PsIsContainer)
{
$fileItem
return
}
$directoryName = $fileItem.DirectoryName
$filename = $fileItem.Name
$folderObject = $shellObject.NameSpace($directoryName)
$item = $folderObject.ParseName($filename)
if(-not $itemProperties)
{
$itemProperties = @{}
$counter = 0
$columnName = ""
if ($PropertyExtended -eq "ALL"){
#get all properties
do {
$columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter)
if($columnName) { $itemProperties[$counter] = $columnName }
$counter++
}while($columnName)
}else{
#get user defined properties
do {
$columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter)
foreach($name in $PropertyExtended){
if ($columnName.toLower() -eq $name.toLower()){
$itemProperties[$counter] = $columnName
}
}
$counter++
}while($columnName)
}
}
foreach($itemProperty in $itemProperties.Keys)
{
$fileItem | Add-Member NoteProperty $itemProperties[$itemProperty] `
$folderObject.GetDetailsOf($item, $itemProperty) -ErrorAction `
SilentlyContinue
}
$fileItem
}
}
$startDir = "\\Server\Freigabe"
$filmliste = "C:\filmliste.txt"
Get-ChildItem $startDir -Recurse | ?{$_.PSIsContainer -eq $false} | Add-ExtendedFileProperties -PropertyExtended
"Bildhöhe","Bildbreite" | select Name,@{Name="Relativer Pfad";e={$relDir =
$_.DirectoryName.Replace($startDir,""); if ($relDir -ne ""){echo
".$relDir"}}},Bildhöhe,Bildbreite | out-file $filmliste -Encoding UTF8
So umändern, dass das die werte von Bildhöhe und Bildbreite mit MediaInfo ausliest und diese dann mit in die Filmliste einträgt?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 224044
Url: https://administrator.de/forum/nochmal-filmliste-leider-224044.html
Ausgedruckt am: 06.04.2025 um 14:04 Uhr
2 Kommentare
Neuester Kommentar
Hello again scoorpyn,
habe mir mal die MediaInfo-Ausgabe angesehen und ein paar Zeilen dazu geschrieben.
Zuerst lädst du dir die CommandLine-Version von MediaInfo hier herunter:http://mediaarea.net/download/binary/mediainfo/0.7.65/MediaInfo_CLI_0.7 ...
Dann musst du in Zeile 83 des folgenden Scripts den Pfad zur heruntergeladenen "MediaInfo.exe" eintragen, und deine Pfad natürlich anpassen.
probiers mal aus...
Grüße Uwe
habe mir mal die MediaInfo-Ausgabe angesehen und ein paar Zeilen dazu geschrieben.
Zuerst lädst du dir die CommandLine-Version von MediaInfo hier herunter:http://mediaarea.net/download/binary/mediainfo/0.7.65/MediaInfo_CLI_0.7 ...
Dann musst du in Zeile 83 des folgenden Scripts den Pfad zur heruntergeladenen "MediaInfo.exe" eintragen, und deine Pfad natürlich anpassen.
function Add-ExtendedFileProperties{
<#
.SYNOPSIS
Fügt erweiterte Eigenschaften von Dateien an das Objekt in der Pipline hinzu
.DESCRIPTION
Extrahiert erweiterte Eigenschaften von Dateien wie z.B. Exif-Daten, Musik- bzw. Filmdetails
.EXAMPLE
Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties -PropertyExtended "Bildhöhe","Bildbreite","Bitrate" | ft Name,Bildhöhe,Bildbreite,Bitrate
Fügt alle nur die Eigenschaften "Bildhöhe","Bildbreite","Bitrate" als zusätzliche Spalten dem Objekt in der Pipline hinzu
.EXAMPLE
Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties | fl *
Fügt alle verfügbaren erweiterten Eigenschaften dem Objekt in der Pipline hinzu
.PARAMETER PropertyExtended
Mit diesem Parameter geben sie eine Komma-Separierte Liste von Eigenschaften an welche sie erhalten möchten.
-PropertyExtended "Bildhöhe","Bildbreite","Bitrate"
#>
param(
[Parameter(Mandatory=$true,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)]
$fileItem,
[String[]] $PropertyExtended = "ALL"
)
begin
{
$shellObject = New-Object -Com Shell.Application
$itemProperties = $null
}
process
{
if($fileItem.PsIsContainer)
{
$fileItem
return
}
$directoryName = $fileItem.DirectoryName
$filename = $fileItem.Name
$folderObject = $shellObject.NameSpace($directoryName)
$item = $folderObject.ParseName($filename)
if(-not $itemProperties)
{
$itemProperties = @{}
$counter = 0
$columnName = ""
if ($PropertyExtended -eq "ALL"){
#get all properties
do {
$columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter)
if($columnName) { $itemProperties[$counter] = $columnName }
$counter++
}while($columnName)
}else{
#get user defined properties
do {
$columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter)
foreach($name in $PropertyExtended){
if ($columnName.toLower() -eq $name.toLower()){
$itemProperties[$counter] = $columnName
}
}
$counter++
}while($columnName)
}
}
foreach($itemProperty in $itemProperties.Keys)
{
$fileItem | Add-Member NoteProperty $itemProperties[$itemProperty] `
$folderObject.GetDetailsOf($item, $itemProperty) -ErrorAction `
SilentlyContinue
}
$fileItem
}
}
Function getMediaInfo($strPath){
$info = & $mediaInfoPath $strPath | ?{$_ -match "(Width|Height)"} | select -First 2 | %{$_.Split(":")[1].trim().Split(" ")}
$obj = New-Object PSObject -Property @{"Bildbreite"=$info;"Bildhöhe"=$info[1]} -ErrorAction SilentlyContinue
$obj
}
$mediaInfoPath = "C:\Program Files (x86)\K-Lite Codec Pack\Tools\cmd\mediainfo.exe"
$startDir = "\\Server\Freigabe"
$filmliste = "C:\filmliste.txt"
$list = Get-ChildItem $startDir -Recurse | ?{$_.PSIsContainer -eq $false} | Add-ExtendedFileProperties -PropertyExtended "Bildhöhe","Bildbreite" | select Name,Fullname,@{Name="Relativer Pfad";e={$relDir = $_.DirectoryName.Replace($startDir,""); if ($relDir -ne ""){echo ".$relDir"}}},Bildhöhe,Bildbreite
$list | %{if($_.Bildbreite -eq ""){$objInfo = getMediaInfo $_.FullName;$_.Bildbreite = $objInfo.Bildbreite;$_.Bildhöhe = $objInfo.Bildhöhe};$_} | select "Name","Relativer Pfad","Bildhöhe","Bildbreite" | ft -AutoSize | out-file $filmliste -Encoding UTF8
Grüße Uwe
Hey, nur der Vollständigkeit halber- es geht auch als einfache Batch:
lg.
@ECHO OFF &SETLOCAL
cd videofolder
for %%a in (*) do (
set "fname=%%~a"
for /f "delims=" %%b in ('mediainfo "--inform=General;%%Movie%%" "%%~a"') do set "title=%%b"
for /f "delims=" %%b in ('mediainfo "--inform=Video;%%Width%%x%%Height%%" "%%~a"') do set "resolution=%%b"
SETLOCAL ENABLEDELAYEDEXPANSION
echo("!fname!","%cd%","!resolution!","!title!"
endlocal
)