-Музыка

 -Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в dimzon541

 -Интересы

.net ajax c# development fallout futurama java javascript nightwish o/r mapping rpg sci-fi vbscript web 2.0 windows communication foundation windows presentation foundation xaml xml алгоритмы сжатия аудио/видео альтернативная история

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 17.03.2006
Записей:
Комментариев:
Написано: 3362


Переход на Linux - скрипт для каталогизации видео

Четверг, 03 Февраля 2011 г. 05:09 + в цитатник
Переписал таки на Python...
  1. #!/usr/bin/env python
  2. #encoding: UTF-8
  3.  
  4. ## [CONFIG] ############################################
  5. duplicateFilePath = u"/home/dimzon/!test/duplicates.txt"
  6. locationFileName = u"ku-ku.txt"
  7. folderPathAll = u"/home/dimzon/!test/all"
  8. folderPathByFirstLetter = u"/home/dimzon/!test/by_letter"
  9. folderPathByYear = u"/home/dimzon/!test/by_year"
  10. sourceFolders = [\
  11.     u"/home/dimzon/!test/drives/1", \
  12.     u"/home/dimzon/!test/drives/2", \
  13.     u"/home/dimzon/!test/drives/3" ]
  14. ## [/CONFIG] ###########################################
  15.  
  16.  
  17. import os,re
  18.  
  19. def get_first_letter( fileName ):
  20.     ltr = fileName[0].upper()
  21.     if "0123456789.,!@#$_()[]{}-".count(ltr):
  22.         return "(0-9)"
  23.     return ltr
  24.  
  25. reYear = re.compile(r"(?<=\D)(?:19|20)\d{2}(?=\D)", re.UNICODE )
  26.  
  27. def get_years(fileName):
  28.     return reYear.findall( fileName )
  29.    
  30.  
  31. def clean_symlinks( folderPath ):
  32.     for i in os.listdir( folderPath ):
  33.         j = os.path.join( folderPath, i )
  34.         if os.path.islink( j ):
  35.             os.unlink( j )
  36.         elif os.path.isdir( j ):
  37.             clean_symlinks( j )
  38.             if len( os.listdir( j ) ) == 0 :
  39.                 print 11
  40.                 os.rmdir( j )
  41.            
  42. print 'Processing...'
  43.  
  44. clean_symlinks( folderPathAll )
  45. clean_symlinks( folderPathByFirstLetter )
  46. clean_symlinks( folderPathByYear )
  47.  
  48. knownFilms = {}
  49. for f in sourceFolders:
  50.     print f
  51.     for i in os.listdir( f ):
  52.         j = os.path.join( f, i )
  53.         if os.path.isdir( j ):
  54.             with open( os.path.join( j, locationFileName ) , 'w' ) as loc:
  55.                 loc.write( j.encode('utf-8') )
  56.             key = i.upper( )
  57.             if key in knownFilms :
  58.                 knownFilms[key][1].append( j )
  59.             else:
  60.                 knownFilms[key]=( i.strip() , [ j ] )
  61.  
  62. with open( duplicateFilePath , 'w' ) as loc:
  63.     for i in knownFilms.values():
  64.         if len(i[1]) != 1 :
  65.             loc.write( ('### ' + i[0] + '\n\r').encode('utf-8') )
  66.             for j in i[1] :
  67.                 loc.write( (j + '\n\r').encode('utf-8') )
  68.             loc.write( '\n\r\n\r' )
  69.  
  70. for i in knownFilms.values():
  71.     os.symlink( i[1][0] , os.path.join( folderPathAll , i[0] ) )
  72.     f = os.path.join( folderPathByFirstLetter , get_first_letter( i[0] ) )
  73.     if not os.path.exists( f ) :
  74.         os.mkdir( f )
  75.     os.symlink( i[1][0] , os.path.join( f , i[0] ) )
  76.     dt = get_years( i[0] )
  77.     for y in dt :
  78.         f = os.path.join( folderPathByYear , y )
  79.         if not os.path.exists( f ) :
  80.             os.mkdir( f )
  81.         os.symlink( i[1][0] , os.path.join( f , i[0] ) )
  82.  
  83. print 'Done!'
Рубрики:  жисть
девелопмент
всячина

penpub   обратиться по имени Среда, 20 Апреля 2011 г. 17:49 (ссылка)
Извини, что публикую в комменты, но это важно... Я не смог отправить тебе лично сообщение, поэтому пишу здесь.

Мой блог окончательно и бесповоротно уехал с ЛиРу и переехал на http://dikobras.com/

Как читатель,ты для меня очень ценен и я хочу, чтобы ты подписался на его новую версию, так как блог будет интереснее, посты будут лучше и публиковаться они будут чаще.

Более того, теперь мой блог можно читать в дороге с любого мобильного устройства.

Буду рад тебя видеть в числе подписчиков и участников дискуссий. Начинается новая жизнь.
Ответить С цитатой В цитатник
 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку