Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Prelude ()
- import KS
- import System.IO.Unsafe
- mainSeg = "Music"
- flacSeg = "Flacs"
- mp3Seg = "MusicMP3s"
- [musicDir, flacDir, mp3Dir, logFile] = map (unsafePerformIO . inHomeDir)
- [mainSeg, flacSeg, mp3Seg, "Desktop/flactwist-noMP3"]
- main = do
- writeFile logFile ""
- flacs <- listFlacs
- mapM_ frobFlac flacs
- listFlacs :: IO [FilePath]
- listFlacs = do
- flacs <- lines $^ readProcess "find" [musicDir, "-name", "*.flac"] ""
- mapM canonicalizePath flacs
- frobFlac :: FilePath -> IO ()
- frobFlac flac = do
- move flac flac'
- existsMP3 <- doesFileExist mp3
- if existsMP3
- then move mp3 mp3'
- else record flac'
- where
- flac' = replaceDir flac mainSeg flacSeg
- mp3 = replaceDir mp3' mainSeg mp3Seg
- mp3' = replaceExtension flac "mp3"
- move :: FilePath -> FilePath -> IO ()
- move src dest = do
- createDirectoryIfMissing True . dropFileName $ dest
- renameFile src dest
- record :: String -> IO ()
- record = appendFile logFile . (++ "\n") . decodeString
- replaceDir path seg rep = joinPath . map replace . splitDirectories $ path
- where replace x = if x == seg then rep else x
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement