2018-04-18 15:09:24 +02:00
from beets . plugins import BeetsPlugin
2018-11-11 12:14:58 +01:00
from beets import config
2018-04-18 15:09:24 +02:00
import os
2018-11-11 12:14:58 +01:00
rename_cache = os . path . expanduser ( ' ~/beets_mv3u_renames ' )
music_root = config [ ' directory ' ] . get ( )
2018-04-18 15:09:24 +02:00
class MV3U ( BeetsPlugin ) :
def __init__ ( self ) :
super ( MV3U , self ) . __init__ ( )
2018-04-28 17:28:24 +02:00
self . register_listener ( ' item_moved ' , self . add_rename )
2018-11-11 11:09:27 +01:00
self . register_listener ( ' item_copied ' , self . add_rename )
2018-04-28 17:28:24 +02:00
self . register_listener ( ' import_task_created ' , self . clear_persistence )
2018-11-11 11:09:27 +01:00
#self.register_listener('import', self.mv3u)
2018-04-28 17:28:24 +02:00
"""
2018-11-11 11:09:27 +01:00
This has been moved to a standalone program because I felt like it . ¯ \_ ( ツ ) _ / ¯
"""
def mv3u ( self ) :
2018-04-18 15:09:24 +02:00
playlist_dir = self . config [ ' playlists ' ] . get ( )
if not playlist_dir :
return
for pl in os . listdir ( playlist_dir ) :
pl = os . path . join ( playlist_dir , pl )
p2 = None
with open ( pl , ' r ' ) as p :
p2 = [ l . replace ( src , dst ) for l in p ]
with open ( pl , ' w ' ) as p :
p . write ( ' ' . join ( p2 ) )
#print(f'Changed entry {src} to {dst} in {pl}')
2018-04-28 17:28:24 +02:00
def clear_persistence ( self , task , session ) :
if os . path . isfile ( rename_cache ) :
os . remove ( rename_cache )
def add_rename ( self , item ) :
2018-11-11 12:14:58 +01:00
src = item . path . decode ( ) . replace ( music_root , ' ' )
dst = item . destination ( ) . decode ( ) . replace ( music_root , ' ' )
2018-04-28 17:28:24 +02:00
with open ( rename_cache , ' a ' ) as cache :
cache . write ( f ' { src } \t \t { dst } \n ' )
2018-11-11 11:09:27 +01:00
'''
2018-04-28 17:28:24 +02:00
def mv3u ( self , lib , paths ) :
def read_renames ( ) - > dict :
with open ( rename_cache ) as cache :
return dict ( [ line . rstrip ( ' \n ' ) . split ( ' \t \t ' ) for line in cache ] )
2018-11-11 11:09:27 +01:00
'''
#print(read_renames())
2018-04-18 15:09:24 +02:00