MCPcopy Create free account
hub / github.com/Syncplay/syncplay / Room

Class Room

syncplay/server.py:539–674  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

537
538
539class Room(object):
540 STATE_PAUSED = 0
541 STATE_PLAYING = 1
542
543 def __init__(self, name, roomsdbhandle):
544 self._name = name
545 self._roomsDbHandle = roomsdbhandle
546 self._watchers = {}
547 self._playState = self.STATE_PAUSED
548 self._setBy = None
549 self._playlist = []
550 self._playlistIndex = None
551 self._lastUpdate = time.time()
552 self._lastSavedUpdate = 0
553 self._position = 0
554 self._permanent = False
555
556 def __str__(self, *args, **kwargs):
557 return self.getName()
558
559 def roomsCanPersist(self):
560 return self._roomsDbHandle is not None
561
562 def isPersistent(self):
563 return self.roomsCanPersist() and not self.isMarkedAsTemporary()
564
565 def isMarkedAsTemporary(self):
566 roomName = self.getName().lower()
567 return roomName.endswith("-temp") or "-temp:" in roomName
568
569 def isPlaylistEmpty(self):
570 return len(self._playlist) == 0
571
572 def isPermanent(self):
573 return self._permanent
574
575 def isNotPermanent(self):
576 return not self.isPermanent()
577
578 def sanitizeFilename(self, filename, blacklist="<>:/\\|?*\"", placeholder="_"):
579 return ''.join([c if c not in blacklist and ord(c) >= 32 else placeholder for c in filename])
580
581 def writeToDb(self):
582 if not self.isPersistent():
583 return
584 processed_playlist = getListAsMultilineString(self._playlist)
585 self._roomsDbHandle.saveRoom(self._name, processed_playlist, self._playlistIndex, self._position, self._lastSavedUpdate)
586
587 def loadRoom(self, room):
588 name, playlist, playlistindex, position, lastupdate = room
589 self._name = name
590 self._playlist = convertMultilineStringToList(playlist)
591 self._playlistIndex = playlistindex
592 self._position = position
593 self._lastSavedUpdate = lastupdate
594
595 def getName(self):
596 return self._name

Callers 2

loadRoomsMethod · 0.85
_getRoomMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected