Clean Desktop

29 September 2012 #ruby

У многих при работе в интернете на жестком диске образуется свалка из файлов. Когда находишь что-то интересное, качаешь этот файл и он продолжает себе лежать в папке Downloads или на рабочем столе.

Особо организованные люди каждый вечер расчищают эти завалы, определяя, что делать с тем или иным файлом, куда его разместить или же просто удалить. Для упрощения данной задачи было написано довольно много программ, причем что интересно, некоторые из них продаются в AppStore.

В качестве практики программирования, решил написать подобную программу на языке ruby.

Исходный код размещается в репозитории clean-desktop. Разумеется, что для работы скрипта требуется наличие установленного дистрибутива языка ruby.

По умолчанию скрипт настроен на очистку директории Desktop, именно поэтому я решил его назвать именно clean-desktop. Хотя ничто не мешает использовать ее для работы и с другими директориями.

При первом запуске программы в домашней директории создается файл конфигурации ~/.clean в формате yaml. И для изменения поведения данной программы достаточно изменить этот файл.

Параметр dir определяет, какую именно директория будет являться рабочей. Затем приводится несколько отдельных категорий для различных типов файлов (Pictures, Music, Documents, Other), для каждой из которых задается ее расположение и соответствующие ей расширения.

Алгоритм анализа различает отдельные файлы от целых директорий. И если для файлов просто производиться сравнение их расширений с определенными масками для принятия решения о том, куда их переместить, то с директориями все несколько сложнее. Пришлось провести статистический анализ расширений файлов, которые входят в эту директорию и затем, в зависимости от того, какие именно расширения преобладают, принимать решение о дальнейшем их размещении.

Однако возможны случаи, когда алгоритм не может правильно определить категорию, к которой относится директория. К примеру, если загрузить из интернета музыкальный альбом в формате flac. Обычно подобные альбомы представляют собой отдельную директорию, в которой располагаются файлы с музыкой, с описанием альбома, с его обложками и так же помещается файл cue для дальнейшего получения отдельных треков данного альбома. Файлов мало, и все они имеют различные расширения и принять решение о принадлежности данной директории именно к категории Music оказывается довольно сложно.

В подобных случаях файлы и директории просто переносятся в категорию Other, которая была специально для этого создана.