Пример #1
0
    def refresh(self):
        playlists = {}

        encoding = sys.getfilesystemencoding()
        for path in glob.glob(os.path.join(self._playlists_dir, b'*.m3u*')):
            relpath = os.path.basename(path)
            uri = translator.path_to_playlist_uri(relpath)
            name = os.path.splitext(relpath)[0].decode(encoding, 'replace')
            tracks = translator.parse_m3u(path)
            playlists[uri] = Playlist(uri=uri, name=name, tracks=tracks)

        self._playlists = playlists

        logger.info('Loaded %d M3U playlists from %s', len(playlists),
                    self._playlists_dir)
Пример #2
0
 def _save_m3u(self, playlist, encoding=sys.getfilesystemencoding()):
     if playlist.name:
         name = self._sanitize_m3u_name(playlist.name, encoding)
         uri = translator.path_to_playlist_uri(
             name.encode(encoding) + b'.m3u')
         path = translator.playlist_uri_to_path(uri, self._playlists_dir)
     elif playlist.uri:
         uri = playlist.uri
         path = translator.playlist_uri_to_path(uri, self._playlists_dir)
         name, _ = os.path.splitext(os.path.basename(path).decode(encoding))
     else:
         raise ValueError('M3U playlist needs name or URI')
     translator.save_m3u(path, playlist.tracks, 'latin1')
     # assert playlist name matches file name/uri
     return playlist.replace(uri=uri, name=name)
Пример #3
0
 def _save_m3u(self, playlist, encoding=sys.getfilesystemencoding()):
     if playlist.name:
         name = self._sanitize_m3u_name(playlist.name, encoding)
         uri = translator.path_to_playlist_uri(
             name.encode(encoding) + b'.m3u')
         path = translator.playlist_uri_to_path(uri, self._playlists_dir)
     elif playlist.uri:
         uri = playlist.uri
         path = translator.playlist_uri_to_path(uri, self._playlists_dir)
         name, _ = os.path.splitext(os.path.basename(path).decode(encoding))
     else:
         raise ValueError('M3U playlist needs name or URI')
     translator.save_m3u(path, playlist.tracks, 'latin1')
     # assert playlist name matches file name/uri
     return playlist.replace(uri=uri, name=name)
Пример #4
0
    def refresh(self):
        playlists = {}

        encoding = sys.getfilesystemencoding()
        for path in glob.glob(os.path.join(self._playlists_dir, b'*.m3u*')):
            relpath = os.path.basename(path)
            uri = translator.path_to_playlist_uri(relpath)
            name = os.path.splitext(relpath)[0].decode(encoding, 'replace')
            tracks = translator.parse_m3u(path)
            playlists[uri] = Playlist(uri=uri, name=name, tracks=tracks)

        self._playlists = playlists

        logger.info(
            'Loaded %d M3U playlists from %s',
            len(playlists), self._playlists_dir)
Пример #5
0
    def _save_m3u(self, playlist, encoding=sys.getfilesystemencoding()):
        if playlist.name:
            name = self._sanitize_m3u_name(playlist.name, encoding)
            uri = translator.path_to_playlist_uri(
                name.encode(encoding) + b'.m3u')
            path = translator.playlist_uri_to_path(uri, self._playlists_dir)
        elif playlist.uri:
            uri = playlist.uri
            path = translator.playlist_uri_to_path(uri, self._playlists_dir)
            name, _ = os.path.splitext(os.path.basename(path).decode(encoding))
        else:
            raise ValueError('M3U playlist needs name or URI')
        extended = any(track.name for track in playlist.tracks)

        with open(path, 'w') as file_handle:
            if extended:
                file_handle.write('#EXTM3U\n')
            for track in playlist.tracks:
                if extended and track.name:
                    self._write_m3u_extinf(file_handle, track)
                file_handle.write(track.uri + '\n')

        # assert playlist name matches file name/uri
        return playlist.copy(uri=uri, name=name)
Пример #6
0
    def _save_m3u(self, playlist, encoding=sys.getfilesystemencoding()):
        if playlist.name:
            name = self._sanitize_m3u_name(playlist.name, encoding)
            uri = translator.path_to_playlist_uri(
                name.encode(encoding) + b'.m3u')
            path = translator.playlist_uri_to_path(uri, self._playlists_dir)
        elif playlist.uri:
            uri = playlist.uri
            path = translator.playlist_uri_to_path(uri, self._playlists_dir)
            name, _ = os.path.splitext(os.path.basename(path).decode(encoding))
        else:
            raise ValueError('M3U playlist needs name or URI')
        extended = any(track.name for track in playlist.tracks)

        with open(path, 'w') as file_handle:
            if extended:
                file_handle.write('#EXTM3U\n')
            for track in playlist.tracks:
                if extended and track.name:
                    self._write_m3u_extinf(file_handle, track)
                file_handle.write(track.uri + '\n')

        # assert playlist name matches file name/uri
        return playlist.copy(uri=uri, name=name)