Saturday, November 28, 2009

File Processing Scripts Collection V1.0

Here is a collection of useful DOS BATCH and VBSCRIPT scripts for processing, moving, sorting of files.

The code for all scripts can be downloaded in a single ZIP file called: Roy-FileProcScripts.zip

The ZIP archive also contains a nice intro for RoySAC.com, which I recommend to check out :).

ImageFilesSort2Dirs.bat

IMAGES Cleanup/Sorting Batch Script

  1. looks for IMAGE files in current directory  (Extensions JPG, PNG, GIF, BMP, LBM, TGA, PCX, SVG, TIF, IFF)
  2. looks for "-" in file name (assumed to be  the separator between Artist Name and Image Title)
  3. parses string before first "-", trims trailing spaces
  4. checks if directory with that name exists
        4.1 If not, it creates it (artist name)
  5. moves all image files of the artist into the artist dir
   1: @echo off
   2: :: -------------------------------------------------------
   3: :: IMAGES Cleanup/Sorting Batch Script
   4: :: ------------------------------------------------------- 
   5: :: 1. looks for IMAGE files in current directory
   6: :: (Extensions JPG, PNG, GIF, BMP, LBM, TGA, PCX, SVG, TIF, IFF)
   7: :: 2. looks for "-" in file name (assumed to be 
   8: ::    the separator between Artist Name and Image Title)
   9: :: 3. parses string before first "-", trims trailing spaces
  10: :: 4. checks if directory with that name exists
  11: ::   4.1 If not, it creates it (artist name)
  12: :: 5. moves all image files of the artist into the artist dir
  13: :: 
  14: :: Batch Script by Carsten Cumbrowski aka Roy/SAC
  15: :: visit http://www.roysac.com
  16:  
  17:  
  18: setlocal enabledelayedexpansion
  19: CLS
  20: SET DC=DIR /A-D /ON /B
  21: SET EXT=JPG PNG GIF BMP LBM TGA PCX SVG TIF IFF
  22:  
  23: for %%f in (%EXT%) DO SET "DS=!DS!^^&%DC% *.%%f 2^^>NUL"
  24: SET "DS=%DS:~2%"
  25:  
  26: ::only list files with IMAGE extension, exclude directories
  27: for /f "tokens=*" %%A in ('%DS%') do (
  28:  if NOT "%%A"=="File Not Found" (
  29:    call :PERFACTION "%%~A%"
  30:  )
  31: )
  32: echo.
  33: echo Done!
  34: echo.
  35: pause
  36: goto :EOF
  37:  
  38:  
  39: :PERFACTION
  40: ::look for dash in file name, parse str before dash
  41: for /F "tokens=1 delims=-" %%B in ("%~1") do (
  42: ::trim trailing spaces from parsed string  
  43:     set str=%%~B%
  44:     for /l %%a in (1,1,31) do if "!str:~-1!"==" " set str=!str:~0,-1!
  45: )
  46: call :PROCFILE "%str%"
  47: goto :EOF
  48:  
  49:  
  50: :PROCFILE
  51: ::check if directory exists and move file(s)
  52: set f2="%~1"
  53: if {%~x1}=={} (
  54:    echo %f2%
  55:    if NOT exist %f2%  MD %f2%
  56:    FOR %%f in (%EXT%) DO MOVE "%~1*-*.%%f" %f2% 2>NUL
  57: )
  58: goto :EOF
  59:  
  60:  

MoveDirsToAlphaSub.bat


MOVE Subfolders and their content (including their subdirectories) to Destination Folder by First Letter of the Subfolder Name. I created this batch script to be able to sort content that I had in sub directories sorted by group names to an additional sub directory level by letter. I only needed the script to move the files in the sub directory itself, not worrying about additional sub directories that the folder might contains, but I extended the script to move those over as well. Here is an illustration of what the script does, using the example of mod tracker files in sub directories by group name.

Source:
   Ackerlight 
        Ackerlight1.mod
    Backlash
         Backlash1.mod

The script moves everything to a target that will look like the following:

            A         
               Ackerlight 
                  Ackerlight1.mod
            B
               Backlash
                   Backlash1.mod

USAGE of the script:
MOVEDIRSTOALPHASUB.BAT  [SOURCEDIR]  [DESTDIR]
 
[SOURCEDIR] - Optional - Source Directory
[DESTDIR]   - Optional - Destination Directory

   1: @ECHO OFF
   2: CLS
   3: REM ============================================================
   4: REM MOVE Subfolders and their content (including their subdirectories)
   5: REM to Destination Folder by First Letter of the Subfolder Name
   6: REM  
   7: REM Source:
   8: REM   axxxxxx     DIR
   9: REM     xxxxxxx   DIR
  10: REM       yyyyyyy FILE
  11: REM     yyyyyyy   FILE
  12: REM
  13: REM Destination:
  14: REM   A             DIR
  15: REM     axxxxxx     DIR
  16: REM       xxxxxxx   DIR 
  17: REM         yyyyyyy FILE
  18: REM       yyyyyyy   FILE
  19: REM 
  20: REM USAGE:
  21: REM MOVEDIRSTOALPHASUB.BAT  [SOURCEDIR]  [DESTDIR]
  22: REM 
  23: REM [SOURCEDIR] - Optional - Source Directory
  24: REM [DESTDIR]   - Optional - Destination Directory
  25: REM
  26: REM Written by Roy/SAC in 2009
  27: REM 
  28: REM ============================================================
  29:  
  30: REM Backup original directory location
  31: SET ORG=%CD%
  32:  
  33: REM If no source directory is specified
  34: REM use current directory location as source
  35: IF "%~1"=="" (
  36:   SET SROOT=%CD%
  37: ) ELSE (
  38:   SET SROOT=%~1
  39: )
  40: REM If no destination directory is specified
  41: REM use current directory as destination
  42: IF "%~2"=="" (
  43:   SET DROOT=%CD%
  44: ) ELSE (
  45:   SET DROOT=%~2
  46: )
  47:  
  48:  
  49: REM Goto Source Directory
  50: CD /D "%SROOT%"
  51:  
  52: REM Get all Sub-Folders in Source Directory
  53: for /f "tokens=*" %%A in ('DIR /ON /B /AD *.* 2^>NUL') DO CALL :ACTION "%%~A"
  54:  
  55: REM Return to Original Directory
  56: CD /D "%ORG%"
  57: ECHO ===============================================
  58: ECHO DONE! Window Closes Automatically in 10 Seconds
  59: ECHO ===============================================
  60: GOTO :ENDOFAPP
  61:  
  62: REM ===========================================================
  63: REM ACTION - Folder Processing
  64: REM ===========================================================
  65: :ACTION
  66: REM Extract Folder Name
  67: SET STR1="%~nx1"
  68:  
  69: REM Extract First Letter of Folder Name
  70: SET "STR=%STR1:~1,1%"
  71:  
  72: REM Convert Letter to Upper Case
  73: for %%X in ("a=A" "b=B" "c=C" "d=D" "e=E" "f=F" "g=G" "h=H" "i=I"
  74:             "j=J" "k=K" "l=L" "m=M" "n=N" "o=O" "p=P" "q=Q" "r=R"
  75:             "s=S" "t=T" "u=U" "v=V" "w=W" "x=X" "y=Y" "z=Z") do (
  76:     call set "STR=%%STR:%%~X%%"
  77: )
  78:  
  79: REM Jump to destination directory
  80: CD /D "%DROOT%"
  81:  
  82: REM If letter directory does not exist, create it
  83: IF NOT exist "%STR%" MD "%STR%"
  84:  
  85: REM Jump into letter directory
  86: CD /D "%DROOT%\%STR%"
  87:  
  88: REM If target directory does not exist, create it
  89: IF NOT exist "%~nx1" MD "%~nx1"
  90:  
  91: REM copy all files and subfolders from source to target directory
  92: XCOPY /S /E "%SROOT%\%~nx1\*.*" "%DROOT%\%STR%\%~nx1" 2>NUL 
  93:  
  94: REM Jump to source directory
  95: CD /D "%SROOT%\%~nx1"
  96:  
  97: REM Delete all files in source directory
  98: DEL /S /Q *.* 2>NUL
  99:  
 100: REM Jump to root source directory
 101: CD /D "%SROOT%"
 102:  
 103: REM Remove source directory and its sub directories
 104: RMDIR /S /Q "%~nx1" 2>NUL
 105: GOTO :EOF
 106:  
 107:  
 108: REM ===========================================================
 109: REM End of App - Script closes automatically after 10 seconds
 110: REM ===========================================================
 111: :ENDOFAPP
 112:  
 113: FOR /l %%a in (10,-1,1) do (
 114:   TITLE %title% -- closing in %%as&ping -n 2 -w 1 127.0.0.1>NUL
 115: )
 116: TITLE Press any key to close the application&ECHO.

MoveToAlphabetSubFolders.bat


This script simply moves files in a folder to sub folders with the first letter as name. For example, if you have a folder with the following files:

Ackerlight1.mod
Backlash1.mod

The script will move them to subfolders like this:

A
   Ackerlight1.mod
B
   Backlash1.mod

Note: this version of the script overwrites files with the same name in the destination folder. Check out the script below, which does the same as this script, but does not overwrite files in the destination directory.


   1: @ECHO OFF
   2: CLS
   3: IF NOT {%1}=={} (
   4:   CD /d "%~1"
   5: )
   6: ECHO Processing Folder: %CD%
   7:  
   8: FOR %%f IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z REST) DO 
       CALL :MoveFiles "%%f"
   9: GOTO :EOF
  10:  
  11: :MoveFiles
  12: ECHO Processing: %1 ...
  13: IF %1=="REST" Goto :MoveRest
  14: IF NOT EXIST %1 MD %1
  15: REM FOR %%f IN (%1*) DO MOVE "%%f" %1>NUL
  16: move %1* %1\ >NUL 2>&1
  17: GOTO :EOF
  18:  
  19: :MoveRest
  20: IF NOT EXIST 0-9 MD 0-9
  21: MOVE * 0-9>NUL
  22: GOTO :EOF

MoveToAlphabetSubFoldersWithoutOverwrite.bat


This script does the same as the one above with the difference that this script does not overwrite files with the same name that already exist in the destination directory.


   1: @ECHO OFF
   2: CLS
   3: IF NOT {%1}=={} (
   4:   CD /d "%~1"
   5: )
   6: ECHO Processing Folder: %CD%
   7: ECHO ------------------------------------------------------------------------------------------
   8: FOR %%f IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z REST) DO 
        CALL :MoveFiles "%%f"
   9: ECHO ------------------------------------------------------------------------------------------
  10: ECHO Done!
  11: ECHO.
  12: PAUSE
  13: GOTO :EOF
  14:  
  15: :MoveFiles
  16: ECHO Processing: %1 ...
  17: IF %1=="REST" Goto :MoveRest
  18: IF NOT EXIST %1 MD %1
  19: REM FOR %%f IN (%1*) DO MOVE "%%f" %1\ >NUL 2>&1
  20: Echo N|move /-Y %1* %1\ >NUL 2>&1
  21: RmDir "%1">NUL 2>&1
  22: GOTO :EOF
  23:  
  24: :MoveFiles2
  25: Echo N|move /-Y %1* 0-9\ >NUL 2>&1
  26: GOTO :EOF
  27:  
  28: :MoveRest
  29: IF NOT EXIST 0-9 MD 0-9
  30: FOR %%a IN (0 1 2 3 4 5 6 7 8 9 # $ % ~ ! ^ & ( ) - _ + = [ ] { } ' ; , `) DO 
       CALL :MoveFiles2 "%%a"
  31: RmDir "0-9">NUL 2>&1
  32: GOTO :EOF

MoveToSubFoldersByExt.bat


This script requires also the .VBS script “Extensions.vbs” (see below).

It sorts files away into sub directories with the extension name. I used it to sort away tracker modules by file format. For example:

   Ackerlight1.mod
   Backlash1.xm

Would be moved into folders like this:

   MOD
       Ackerlight1.mod

   XM
       Backlash1.xm


   1: @ECHO OFF
   2: CLS
   3: IF NOT {%1}=={} (
   4:   CD /d "%~1"
   5: )
   6: Set WorkP=%CD%
   7: ECHO Processing Folder: %WorkP%!
   8: Call :GetScrPath "extensions.vbs"
   9: Echo [%CmdL%]
  10: FOR /F %%f IN ('%CmdL%') DO CALL :MoveFiles "%%f"
  11: Call :MoveRest
  12: GOTO :EOF
  13:  
  14: :MoveFiles
  15: IF NOT EXIST "%~1" MD "%~1"
  16: FOR %%f IN (*.%~1) DO MOVE "%%f" "%~1\">NUL 2>&1
  17: GOTO :EOF
  18:  
  19: :MoveRest
  20: IF NOT EXIST "NoExtension" MD "NoExtension"
  21: MOVE "*." "NoExtension\">NUL 2>&1
  22: RmDir "NoExtension">NUL 2>&1
  23: GOTO :EOF
  24:  
  25:  
  26: :GetScrPath
  27: Set CmdL=cscript.exe /nologo "%~$PATH:1" "%WorkP%"
  28: GOTO :EOF

extensions.vbs


This is a supporting script for the batch script “MoveToSubFoldersByExt.bat”. It returns a list of all file extensions for the files in the provided directory location.



   1: Dim objCmdlineArguments: Set objCmdlineArguments = Wscript.Arguments
   2: Dim oFso: Set oFso = CreateObject("Scripting.FileSystemObject")
   3: Dim oFile, oFolder, sPath
   4: Dim sExt, a, aExt
   5: Dim sExtensions: sExtensions=""
   6:  
   7:  
   8: If objCmdlineArguments.Unnamed.Count > 0 then
   9:    sPath = objCmdlineArguments.Unnamed(0)
  10:    If Not oFso.FolderExists(sPath) Then
  11:       sPath = oFso.GetAbsolutePathName(".")
  12:    End If
  13: Else
  14:    sPath = oFso.GetAbsolutePathName(".")
  15: End If
  16:  
  17: Set oFolder = oFSO.GetFolder(sPath)
  18:  
  19: 'Process Files in Folder
  20: For each oFile in oFolder.Files
  21:    sExt = LCase(oFso.GetExtensionName(oFile.Name))
  22:    If sExt <> "" And InStr(1,sExtensions,sExt & "|",1) = 0 Then
  23:       sExtensions = sExtensions & sExt & "|"
  24:    End If
  25: Next
  26:  
  27: If sExtensions <> "" Then
  28:   sExtensions = Left(sExtensions,Len(sExtensions)-1)
  29:   If InStr(1,sExtensions,"|",1) > 0 Then
  30:     aExt = Split(sExtensions,"|")
  31:     sExtensions=""
  32:     QSort aExt, LBound(aExt), UBound(aExt)   
  33:     For a = 0 To UBound(aExt) 
  34:       If aExt(a) <> "" Then
  35:         sExtensions = Join(aExt,vbcrlf)
  36:        End If
  37:     Next
  38:   End If
  39:   WScript.Echo sExtensions   
  40: End If
  41:   
  42: Set oFolder = Nothing
  43: Set ofso = Nothing
  44:  
  45:  
  46: Sub QSort(aData, iaDataMin, iaDataMax)
  47:   Dim Temp 
  48:   Dim Buffer 
  49:   Dim iaDataFirst
  50:   Dim iaDataLast
  51:   Dim iaDataMid
  52:  
  53:   iaDataFirst = iaDataMin          ' Start current low and high at actual low/high
  54:   iaDataLast = iaDataMax
  55:  
  56:   If iaDataMax <= iaDataMin Then Exit Sub        ' Error!  
  57:   iaDataMid = (iaDataMin + iaDataMax) \ 2   ' Find the approx midpoint of the array
  58:  
  59:   Temp = aData(iaDataMid)                 ' Pick as a starting point (we are making
  60:                                           ' an assumption that the data *might* be
  61:                                           ' in semi-sorted order already!
  62:  
  63:   Do While (iaDataFirst <= iaDataLast)
  64:       'Comparison here
  65:         Do While aData(iaDataFirst) < Temp
  66:           iaDataFirst = iaDataFirst + 1
  67:           If iaDataFirst = iaDataMax Then Exit Do
  68:       Loop
  69:  
  70:       'Comparison here
  71:        Do While Temp < aData(iaDataLast)
  72:           iaDataLast = iaDataLast - 1
  73:           If iaDataLast = iaDataMin Then Exit Do
  74:       Loop
  75:  
  76:       If (iaDataFirst <= iaDataLast) Then        ' if low is <= high then swap
  77:           Buffer = aData(iaDataFirst)
  78:           aData(iaDataFirst) = aData(iaDataLast)
  79:           aData(iaDataLast) = Buffer
  80:           iaDataFirst = iaDataFirst + 1  
  81:           iaDataLast = iaDataLast - 1 
  82:       End If
  83:   Loop
  84:  
  85:   If iaDataMin < iaDataLast Then                 ' Recurse if necessary
  86:       QSort aData, iaDataMin, iaDataLast
  87:   End If
  88:  
  89:   If iaDataFirst < iaDataMax Then                ' Recurse if necessary
  90:       QSort aData, iaDataFirst, iaDataMax
  91:   End If
  92:  
  93: End Sub 'QSort

MP3FileSort2Dirs.bat


I published this batch script already on my blog. It sorts MP3 files away to sub directories by artist name, assuming that the MP3 files start with the artist name followed by a “-“ character (then followed by the song title for example).

   1: @echo off
   2: :: -------------------------------------------------------
   3: :: MP3 Cleanup/Sorting Batch Script
   4: :: ------------------------------------------------------- 
   5: :: 1. looks for MP3 files in current directory
   6: :: 2. looks for "-" in file name (assumed to be 
   7: ::    the separator between Artist Name and Song Title)
   8: :: 3. parses string before first "-", trims trailing spaces
   9: :: 4. checks if directory with that name exists
  10: ::   4.1 If not, it creates it (artist name)
  11: :: 5. moves file into the directory
  12: :: 
  13: :: Batch Script by Carsten Cumbrowski aka Roy/SAC
  14: :: visit http://www.roysac.com
  15:  
  16: setlocal enabledelayedexpansion
  17: cls
  18: ::only list files with extension MP3, exclude directories
  19: for /f "tokens=*" %%A in ('DIR /A-D /ON /B "*.MP3"^|SORT /REVERSE') do (
  20:   call :PERFACTION "%%~A%"
  21: )
  22: echo.
  23: echo Done!
  24: echo.
  25: pause
  26: goto :EOF
  27:  
  28:  
  29: :PERFACTION
  30: ::look for dash in file name, parse str before dash
  31: for /F "tokens=1 delims=-" %%B in ("%~1") do (
  32: ::trim trailing spaces from parsed string  
  33:     set str=%%~B%
  34:     for /l %%a in (1,1,31) do if "!str:~-1!"==" " set str=!str:~0,-1!
  35: )
  36: call :PROCFILE "%str%"
  37: goto :EOF
  38:  
  39:  
  40: :PROCFILE
  41: ::check of directory exists and move file
  42: set f2="%~1"
  43: if {%~x1}=={} (
  44:    echo %f2%
  45:    if NOT exist %f2%  MD %f2%
  46:    move "%~1*.MP3" %f2%
  47: )
  48: goto :EOF
  49:  
  50:  

MoveFilesAutoRenDup.vbs


This script copies all files from a source directory, including its subfolders to a destination directory without any subfolders. Since the subfolders of the source might contain files with the same name (such as file_id.diz files), this script automatically renames those files, appending [2] to the first duplicate, [3] to the next and so on.


   1: Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
   2: Dim arguments: Set arguments = Wscript.arguments
   3: Const ForAppending = 8, ForReading = 1, ForWriting = 2
   4:  
   5: Dim sTo
   6: Dim sFrom
   7:  
   8: if arguments.unnamed.count = 0 then
   9:   sFrom = "N*A"
  10:   Do While sFrom <> "" and FSO.FolderExists(sFrom) = false
  11:   sFrom = InputBox("Move All Files and Auto Rename Dupes", _
  12:           "Enter Source Directory: ", fso.GetAbsolutePathName("."))
  13:   Loop
  14:   if sFrom = "" then
  15:      WScript.Quit(1)
  16:   End if
  17: else
  18:   sFrom = arguments.unnamed.Item(0)
  19: end if
  20: if not FSO.FolderExists(sFROM) then
  21:    WScript.Quit(2)
  22: end if
  23:  
  24: if arguments.unnamed.count <= 1 then
  25:   sTo="N*A" 
  26:   Do While sTo <> "" and FSO.FolderExists(sTo) = false
  27:   sTo = InputBox("Move All Files and Auto Rename Dupes", _
  28:         "Source Directory: " & vbcrlf & sFrom & vbcrlf & _
  29:         "Enter Destination Directory: ", FSO.GetParentFolderName(sFrom))
  30:   Loop
  31:   if sTo = "" then
  32:      WScript.Quit(1)
  33:   end if
  34: else
  35:   sTo = arguments.unnamed.Item(1)
  36: end if
  37: if not FSO.FolderExists(sTo) then
  38:    WScript.Quit(2)
  39: end if
  40:  
  41:  
  42:  
  43:  
  44: Dim iFilesCount: iFilesCount  = 1
  45: Dim  sSrc, sDest, DC, sExt, sBase, oFOld
  46:  
  47: Set oFold = FSO.GetFolder(sFrom)
  48:  
  49: if lcase(sTo) <> lcase(sFrom) then
  50:   ShowFiles oFold.Path
  51: end if
  52:  
  53: ShowSubFolders oFold
  54:  
  55: Wscript.echo iFilesCount  & " files moved"
  56:  
  57:  
  58: '========================================================
  59:  
  60: Sub ShowSubFolders(Folder)
  61: Dim SubFolder
  62:  
  63:     For Each Subfolder in Folder.SubFolders
  64:           ShowFiles Subfolder.Path
  65:           ShowSubFolders Subfolder
  66:     Next
  67: End Sub
  68:  
  69: '----------------------------------------
  70: Sub ShowFiles(sPath)
  71: Dim oFile, oFolder
  72:  
  73:   iFolderCount = iFolderCount + 1
  74:   Set oFolder = FSO.GetFolder(sPath)
  75:   iFilesCount = iFilesCount + oFolder.Files.count
  76:  
  77:   For each oFile in oFolder.Files
  78:       sDest = FSO.BuildPath(sTo, oFile.Name)
  79:       sExt = FSO.GetExtensionName(sDest)
  80:       sBase = left(oFile.Name,len(oFile.name)-len(sExt)-1)
  81:       DC = 1
  82:       Do While FSO.FileExists(sDest) = true
  83: '           Wscript.sleep 500
  84:            DC = DC + 1
  85:            sDest = FSO.BuildPath(sTo, sBase & "[" & DC & "]." &  sExt)
  86:       Loop
  87:       sSrc = FSO.GetAbsolutePathName(FSO.BuildPath(sPath,oFile.Name))
  88:  
  89:       FSO.MoveFile sSrc, sDest
  90:  
  91:   Next
  92: End Sub
  93:  
  94:  

CleanUp.bat


I published this script also already. It simply checks all subdirectories of the provided path and removes all those that are empty (have no files).


   1: REM CleanUp.bat
   2: @echo off
   3: set Folder="%~1"
   4: if %Folder%=="" @echo Syntax CleanUp Folder&goto :EOF
   5: if not exist %Folder% @echo Syntax CleanUp Folder - %Folder% not found.&goto :EOF
   6: CD /D %Folder%
   7: Echo Processing Folder: %Folder%
   8: setlocal
   9: :: REMOVE EMPTY SUBFOLDERS
  10: for /f "tokens=*" %%A in ('dir /ad /s /b *.* ^|Sort /Reverse') do (
  11:  RmDir "%%A" 2>NUL
  12: )
  13: CD ..
  14: :: REMOVE FOLDER, IF EMPTY
  15: RmDir %Folder% 2>NUL
  16: endlocal

All scripts are freeware, but you are using them at your own risk. I take no responsibility for any damages or losses that result directly or indirectly from the use of those scripts.


Again, you can download the source code of all scripts in this post here: Roy-FileProcScripts.zip


Cheers!


Carsten aka Roy/SAC

Thursday, November 19, 2009

Berlin Wall Video Copyright Issues

Here is now another great example for the current copyright laws being not only outdated and not fit for today’s world we live in, but also how those archaic laws are actually bad for society as a whole.

Let me start from the beginning…

The Beginning of the Story

new-york-times-logo

I was contacted by Emily B. Hager on Saturday, October 31, 2009 via email and via phone.

Emily B. Hager is a video reporter for the New York Times (yes, THE NY Times). She was working on a last minute video  called “The Man Who Opened the Gate”, which was published on Monday, November 2, 2009, together with the article by Roger Cohen titled “The Hinge of History” with a supporting video.

The article is about Harald Jaeger, the Boarder Guard at the border crossing “Bornholmer Strasse'” who opened the gates on November 9, 1989 to let people pass from East Berlin to West Berlin in violation of a direct order by his superior. Emily came across my video “Moments in History – The Fall of the Berlin Wall

I was contacted regarding this video by many others before that and already had posted an article where I addressed many of the very similar questions that I received regarding my video. Emily found the video of mine at the Internet Archive, where I also posted it, among other sites, like YouTube, Vimeo, my blog and over half a dozen other sites. I told her that I have plenty of video footage that she was looking for, mostly from a German Documentary DVD by Spiegel-TV titled "Spiegel TV - Der Fall der Mauer5" (ISBN #: 3-937901-04-3), which I purchased among other Documentary DVDs about the Berlin Wall and East Germany.

I agreed to send her the footage from the events around checkpoint Bornholmer Strasse in original DVD quality MPEG format and also provided her with the contact information at Spiegel to clarify the legal situation with them regarding her commercial use of the footage for the New York Times website. I stated in my previous post already that I am not sure about the copyright situation regarding the content that I used myself in my own video, not the other general footage about this historic significant event.

I asked her to let me know about Spiegel’s response regarding the legal situation of the content that they used in their documentary  in return for me helping her with her own video. I provided her with the contact information that I found been printed on the back of my original documentary DVD.

Spiegel TV
Brandstwiete 19
D-20457 Hamburg
Telefon: +49 (0)40 - 301 08-0
Fax: +49 (0)40 - 301 08-222

Emily obviously finished her video on time, using some of the footage that I provided to her to be published only 2 days later on the NY Times website. I did not hear from Emily for a while after that, however, two days after the video was published at the Times, on November 4, 2009, I received an Email (in German language) from Stephanie Kröner, from the Legal Department at Spiegel TV GmbH in Hamburg, which was basically a Cease and Desist letter, demanding that I delete my Moments in History video at the Internet Archive. They stated “that they found out to their surprise” about my video, no mention of the New York Times.

Original Email from Spiegel TV

(in German language only, sorry)

From: stephanie_kroener AT spiegel-tv DOT de
ent: Wednesday, November 04, 2009 1:37 AM
To: Carsten Cumbrowski
Cc: Ulrich_Meyer AT Spiegel-tv DOT de
Subject: Rechtsverletzung SPIEGEL TV Materialien

Sehr geehrter Herr Cumbrowski,


mit Überraschung mussten wir feststellen, dass Sie unter der Internetadresse http://www.archive.org/details/MomentsInHistory-TheFallOfTheBerlinWall1989
einen Filmbeitrag zum Abruf bereitstellen, ohne über die hierzu erforderlichen Nutzungsrechte zu verfügen. Die Rechte an einem Großteil der dort verwendeten Filmausschnitte stehen ausschließlich der SPIEGEL TV GmbH zu.
Wir weisen Sie hiermit ausdrücklich auf diese Rechtsverletzung hin und fordern Sie zur sofortigen Löschung der betreffenden Filmmaterialien auf. Die Löschung der kompletten Materialien hat bis spätestens zum

        07. November 2009

zu erfolgen. Sollten die betroffenen Materialien bis zur gesetzten Frist nicht vollständig entfernt worden sein, sehen wir uns gezwungen, die notwendigen zivil- und auch strafrechtlichen Schritte einzuleiten.

Mit freundlichen Grüßen

Stephanie Kröner
Rechtsabteilung
SPIEGEL TV GmbH
Brandstwiete 19
20457 Hamburg
Germany
Telefon 040.30108-0
Fax 040.30108-428
http://www.spiegelgruppe.de/

SPIEGEL TV GmbH
Sitz und Registergericht Hamburg HRB 46 100
Geschaeftsfuehrer: Fried von Bismarck, Dirk Pommer, Cassian von Salomon

Because of the very unusual timing I thought that Emily was able to contact Spiegel TV, that they own the rights for at least some of the content that I used in Video and that they did not like my video very much. I deleted the video at the Internet Archive the same day and responded to Stephanie and Ulrich Meyer at Spiegel TV, who was CC’ed in the Email that was sent to me, telling them that I was doing what they demanded.

I did not delete the entire entry at the Internet Archive. I only deleted the video there and updated the video description with some biting remarks regarding the fact why the video is now missing. :)

Since it appears that some of the footage that I used is protected by copyright, I admit that the Public Domain Video section is not the right place for my video, because it does not consist of only Public Domain video footage as I thought.

I included in my response to Spiegel TV more than just the acknowledgement of the fulfillment of their demand, because the story has a little bit more to it than just my video at the Web Archive and I was sure that Spiegel TV had no idea about that.

My Email Response to Spiegel TV

Here is my full Email response (also in German Language, but don’t worry, I also provide the content of my email in English language with additional comments further down below).

From: Carsten Cumbrowski
Sent: Wednesday, November 04, 2009 2:47 AM
To: stephanie_kroener AT spiegel-tv DOT de
Cc: Ulrich_Meye AT spiegel-tv DOT de
Subject: Re: Rechtsverletzung SPIEGEL TV Materialien

Sehr geehrter Spiegel TV,

Ich habe das Video vom Internet Archive auf  http://www.archive.org/details/MomentsInHistory-TheFallOfTheBerlinWall1989 entfernt, wie Sie es von mir verlangt haben.

Damit habe ich ihrer Aufforderung Rechnung getragen. Mit dem offiziellen Teil aus dem Weg, moechte ich gerne ein paar persoenliche Kommentare zu Ihrer Email machen.

Kommentare und Fragen

  • Sie mussten feststellen? Bloedsinn. Emily B. Hager von der New York Times (oder ihrer Rechtsabteilung) hat sie kontaktiert, dank mir. Bitteschoen, (nicht mehr) gern geschehen.
  • Da Urheberrecht fuer einen Teil des verwendeten Materials existiert ist das Internet Archive eh der falsche Ort zur Veroeffentlichung.
  • Damit ist das Video aber nicht aus der Welt. Nach Amerikanischem Urheberrecht, was bei mir Anwendung findet, da ich schon lange nicht mehr in Deutschland angemeldet bin, da ich meinen Wohnsitz heute in den USA habe, faellt mein Video sehr wahrscheinlich unter die "Fair use" Klausel, die es erlaubt Teile eines urheberrechtlich geschuetzten Werkes unter bestimmten Bedingungen zu verwenden.
  • Ich finde es enttaeuschend von Ihnen auf diese Art und Weise zu hoeren. Es handelt sich immerhin nicht darum, dass ich Ihre DVD zum Download bereitgestellt habe, sondern nur ca. 5 minuten des Materials (von ungefaehr 2 Stunden) fuer ein persoenliches Video ueber wichtige Ereignisse der deutschen Geschichte benutzt habe. Ich habe auch keinerlei kommerzielle Interessen mit dem Video verfolgt, nicht einmal indirekt.
  • Dieses Material duerfte meiner Meinung nach nicht einmal durch Copyright geschuetzt sein, da es sich hierbei um wichtigen Belege von bedeutende geschichtlichen Ereignissen handelt. Nicht-kommerzielle Nutzung zum Zwecke der Bildung und Aufklaerung sollte nicht durch kommerzielle Interessen unterbunden und zunichte gemacht werden. Da es sich hierbei offentlichtlich um eine Nachlaessigkeit des Gesetzgebers handelt, sollten Sie stattdessen die soziale Verantwortung uebernehmen, falls denn Spiegel TV GmbH ein Interesse daran hat, im Interesse der Gesellschaft als Ganzes zu handeln.
  • Ich wurde von verschiedensten Personen, Publikationen und Gesellschaften kontaktiert wegen meines Videos. Koennten Sie mir wenigstens den Gefallen tun, mir eine Liste zu schicken mit den verwendeten Video Material fuer die DVD "Der Fall der Mauer" (ISBN 3-937901-04-3) und des Bonus Materials und wer dazu Urheberrechte besitzt oder nicht? Ich weiss zum Beispiel das einiges des Materials um 1961 von Universal Studio's Newsreels stammen, die sich seit laengerem in der Public Domain befinden. Ich plane naemlich noch weitere Videos ueber dieses Thema zu erstellen und es ist unheimlich schwer zu ermitteln wer was fuer Rechte oder nicht besitzt.
  • Ausserdem, was waere notwendig, um das verwendete Video Material fuer die nicht-kommerzielle Nutzung durch Andere zu "clearen"? Zum Beispiel einer Regierung, die das Video fuer die Einweihung einer Mauergedenkstaette verwenden moechte, oder einer oeffentlichen non-profit Kulturverantstaltung zum anlaesslichen Jubilaeum des Mauerfalls in Berlin bei der Deutschen Botschaft in einem anderen Land? Das sind nur zwei Beispiele von vielen, die hier nur zur besseren Erklaerung meiner Frage dienen sollen.

Ich hoffe das Sie sich meine Kommentare einmal durch den Kopf gehen lassen und das Sie mir trotz alledem auf meine Fragen antworten werden.

Vielen Dank. Liebe Gruesse aus Kalifornien.

Carsten Cumbrowski

Geboren April 1974 in Ost Berlin

e: MY EMAIL ADDRESS

I was making them aware of the fact that I believe that they only became aware of my video at the Internet Archive because of the inquiry by the New York Times reporter that I was sending to them. I also expressed my disappointment to hear from them like this. If they had send me a friendly letter without legal threats telling me that they own rights to some of the content in my video with the request to remove it from the Internet Archive, which makes it appear to be public domain, that would have done the trick as well.

I also stated that this does not make my video disappear from the face of this world, because of my publication of it elsewhere. However, I believe that my video publication at those other locations should fall under the fair-use clause (or exception) of the U.S. copyright law.

I made them aware that the laws of the United States and not Germany apply to me even though I am a German citizen, because I am living permanently in the United States now and not in Germany anymore. The fair-use clause does basically permit the use of small amounts of copyrighted material under specific circumstances, which I believe to apply to my situation.

I went ahead that I think that the material should not even be protectable under copyright law, because of their historic significance for society, but that was more as FYI because Spiegel TV is obviously not the right place to do anything about this general problem. But they could for this particular content do something about it, for example release it into the public domain or at least stop sending C&D letters to people who use their footage non-commercially for educational purposes. That is, if Spiegel TV would be interested in what is good for society versus what only being good for them and bad for society in general.

Then I made a request. I asked them to send me a list with the legal situation of the content used in their DVD production and where they or somebody else owns any rights for. I also asked them what the requirements are to use their stuff, using real examples from requests that I received regarding my own short video. It is now over 2 weeks since I send them this request and they still owe me a response to it.

Hearing Back from the NY Times

Meanwhile, I was contacted again by Emily from the New York Times on November 12, 2009. There I found out that she had only brief contact with Spiegel TV, but somebody else than Stephanie Kröner or Ulrich Meyer and that this person promised to get back to her regarding the use of material in the New York Times video, but until then also didn’t do.  Well, the New York Times won’t have a problem if and when Spiegel TV gets back to them. They are a commercial publication and deal with those things on a daily basis. However, what I learned from this fact is that there must be some internal Spiegel TV communication going on across multiple departments, acting independent from each other. So the legal department from Spiegel TV may never heard of the New York Times reporter, but got notified about my video somehow else, but triggered by the inquiry that was made my Emily.

Conclusion anarchist_throws_flowers

As you can see, it is a mess. And I still don’t know what is expected of me or anybody else to do in order to use the historic video footage about the Berlin Wall to educate people and raise awareness of what happened and what did not in non commercial projects. The only SAFE thing to do is not do anything at all. That is probably expected and hoped, but we as society would take more than one step backwards in development and at the same time increase the risk of the development of totalitarian states and governments taking control to enslave its people. It happened before, but I will not sit on my hands doing nothing in order to prevent it from happening once more and so should you.

I know that this story did not come to an end yet so there will be another post of mine, if there are new and noteworthy developments in this matter.

Cheers!

Carsten aka Roy/SAC

p.s. all this attention to my Berlin Wall video has to do with the 20th anniversary of the fall of the Berlin Wall, which just passed 2 weeks ago on Monday, November 9. 2009.

RoySAC.com Updates Brief

I have not posted at my blog for a long while (in comparison to the months before). This was actually not because of the lack of things to write about. There was plenty for me to write, but it seems that I tend to write less, the more is happening. Maybe because of the lack of time that usually concurs with more events happening or maybe it is just that I think too much about all the stuff I should write about that I forget to actually write something altogether.  Well, I need to think about that one :).

I decided now to write about each thing that I consider noteworthy only briefly and consolidated in this and another post to follow. Each thing by itself would probably have warranted its own post, but not at this time.

Downloads Section Expanded

   

I expanded the downloads page of my website to include two new sections.

1. Music Trackers tools for Windows and DOS.

See Tracker Downloads

Tracker music is a staple of the classic demo scene before the computers became powerful and advanced enough to use fully digital recordings of music for programs, demos and games. It was also the limitations of hard disk space and memory that lead to the development of alternatives such as the “Tracker”. The most famous known tracker software is probably the program “Sound Tracker” for the Commodore Amiga. Its file format, the classic “.MOD”, is still a pseudo standard today, including on the PC and supported by virtually all other tracker programs that came later. A tracker uses sound snippets (samples) rather than a full recording of a song, which can be played back at specified times with effects applied to them to change things like the tempo, volume and  octave.  Those settings are arranged in patterns and tracks with one track for each output “channel” for allowing stereo effects. Most of these tools were developed by members of the demoscene and are available for free for anybody who wants to use them. I made the most popular ones for DOS and also some newer ones for MS Windows 32b available for download, including FastTracker 2 by Triton (.XM files) and ScreamTracker 3 by Future Crew (.S3M files).

2. MS DOS Emulators

See Emulator Downloads

During the video capture of old MS DOS intros and cracktros that where created by SAC I became aware of the problems with running those old DOS programs on modern day PCs with operating systems like Windows XP and later. Most won’t run and with the introduction of 64 Bit versions of Windows, not even start, because Microsoft does not support old 16 bit applications with those operating systems anymore.

I had to use MS DOS emulators in order to be able to run and then capture those intros. Again, many of those emulators are free to download and use. Famous examples of DOS emulators that are available for download at my site now are the programs DOS Box and Bochs.

TheDraw Fonts Page

See: Over 100 fonts for the DOS ANSI Editor TheDraw

I am using since 1993 or so the DOS ANSI Editor TheDraw. Although later tools like ACiDDraw provided more features and problems with using the editor under Windows XP and Vista and the emergence of editors for Win32 operating systems, like PabloDraw, I continued to use it to this day. TheDraw provides a nice feature that was appreciated by sysops who were not ANSI artists themselves and could not find one to do custom artwork for their Bulleting Board System, called custom fonts. Unfortunately only too few fonts were made and released though, but I was able to collect over 100 of them. I made them available for download in one single package and also for individual download.

I created a special page where I also show the full character set of each font to show how they look and to show the characters that each font supports. I also added additional information to most of the fonts, like the style and the colors used (for the ANSI fonts). I broke the fonts up into two groups, ASCII fonts (no colors) and ANSI fonts. Those fonts are still a viable option for anybody who needs an ANSI for whatever reason and cannot find an artist who is willing to make one for you (Like me, many oldskool ANSI artists are “retired” today and don’t accept any new art requests by anybody).

My collection also includes fonts that I created myself. I created two fonts for example to be able to quickly create new page headers for my site. Those fonts can also be downloaded and reused by you.

I also provided instruction for how to install and use custom TheDraw fonts. The tool TheDraw itself is also available on my web site at the download section, where you can also find the other editors for download that I mentioned earlier.

Dytec – Dynamic Technologies Homepage

See Dytec Temp Homepage

I was a senior member and at some point in time even leader of the PC section of the German release group Dynamic Technologies, short Dytec, which was founded for the Commodore 64 in East Berlin, Germany in 1990 by a my personal friend with the handle “Fatman”.

Dytec has no official homepage on the Internet and information and productions, like intros, cracktros and dentros created by the different sections for the Commodore 64, Commodore Amiga and PC are scattered all over the Internet. I created a page that provides some historic background of the group and video captures of all productions from all three platforms that I was able to find. I also show some of the ASCII artwork that was used by Dytec PC for its releases, like NFO files and FILE_ID.DIZ.

It’s not the official homepage for the group by any means, but the best there is IMO to compare it to something like that, until a real homepage/site is maybe created for Dynamic Technologies one day.

OldSkool DemoMaker (OSDM) Intros Page

See My OSDM Intros Page

I created a bunch of nice oldskool intros and cracktros for RoySAC.com and other purposes using the cool and free tool called OldSkool DemoMaker by Peace/Testaware. I showcase each of my intros and show the video capture for each of them. Links to download the videos and the intros themselves are also provided.

I also provided some background story and information for each of the productions, including full credits for the music that I used and graphics that I did not create myself.

For all the folks who are interested to learn more about the tool itself, I provided some background information and useful links related to the OSDM in general as well.

FILE_ID.DIZ Collection

Update! See File_ID.DIZ Collection

I almost forgot this to mention. I also created a small collection on the side for FILE_ID.DIZ logos used by scene groups to describe and promote their releases in bulletin board systems and FTP sites.

I have so far already 131 individual File_ID.DIZ ASCII designs collected and added to my collection. File_ID’s are not large, so the whole collection is displayed on just a single page. Check them out!

          ____:_THE_:_        ________  _:_  _____:_
\__ |___/ |______ / ____ \/ | | ___/
D/ i _ | ___ \/ | | / |__| __|_
/ _ | l | \ / | | \ l \ _l |
\___| |_____|__|\/| |_____/\_____\_____|
: .`--' . : `—-' -*GUYS*- . : .
. Dungeon Hack Disk [1/4] .
FROM STRATEGIC SIMULATIONS INC.

Other Things I Already Reported


I already wrote about other additions and changes to my site in previous posts of mine that you might want to check out for more information.



That’s it, regarding news about my Site RoySAC.com 


Cheers!


Carsten aka Roy/SAC