コード例 #1
0
ファイル: audiofeeds.py プロジェクト: zsau/quodlibet
def hacky_py2_unpickle_recover(fileobj):
    """Can raise anything"""

    # We just recover the uri and let it refresh the feed later

    def lookup_func(func, mod, name):

        class Feed(list):
            pass

        class Bar(dict):
            pass

        if name == "Feed":
            return Feed
        else:
            return Bar

    with open(FEEDS, "rb") as fileobj:
        feeds = pickle_load(fileobj, lookup_func)

    uris = []
    for item in feeds:
        d = item.__dict__
        if b"uri" in d:
            v = d[b"uri"]
        elif "uri" in d:
            v = d["uri"]
        else:
            continue
        if isinstance(v, bytes):
            v = v.decode("utf-8")
        uris.append(v)

    return [Feed(u) for u in uris]
コード例 #2
0
def hacky_py2_unpickle_recover(fileobj):
    """Can raise anything"""

    # We just recover the uri and let it refresh the feed later

    def lookup_func(func, mod, name):

        class Feed(list):
            pass

        class Bar(dict):
            pass

        if name == "Feed":
            return Feed
        else:
            return Bar

    with open(FEEDS, "rb") as fileobj:
        feeds = pickle_load(fileobj, lookup_func)

    uris = []
    for item in feeds:
        d = item.__dict__
        if b"uri" in d:
            v = d[b"uri"]
        elif "uri" in d:
            v = d["uri"]
        else:
            continue
        if isinstance(v, bytes):
            v = v.decode("utf-8")
        uris.append(v)

    return [Feed(u) for u in uris]
コード例 #3
0
ファイル: qlscrobbler.py プロジェクト: WammKD/quodlibet
 def _load_queue(self):
     try:
         with open(self.SCROBBLER_CACHE_FILE, 'rb') as disk_queue_file:
             disk_queue = pickle_load(disk_queue_file)
         os.unlink(self.SCROBBLER_CACHE_FILE)
         self.queue += disk_queue
     except (EnvironmentError, PickleError):
         pass
コード例 #4
0
ファイル: audiofeeds.py プロジェクト: tonydolan/quodlibet
 def init(klass, library):
     uris = set()
     try:
         with open(FEEDS, "rb") as fileobj:
             feeds = pickle_load(fileobj)
     except (PickleError, EnvironmentError):
         pass
     else:
         for feed in feeds:
             if feed.uri in uris:
                 continue
             klass.__feeds.append(row=[feed])
             uris.add(feed.uri)
     GLib.idle_add(klass.__do_check)
コード例 #5
0
    def __init__(self):
        self.nowplaying_song = None
        self.nowplaying_sent = False
        self.sessionid = None

        self.broken = False

        self.username, self.password, self.base_url = ('', '', '')

        # These need to be set early for _format_song to work
        self.titlepat = Pattern(config_get_title_pattern())
        self.artpat = Pattern(config_get_artist_pattern())

        try:
            with open(self.DUMP, 'rb') as disk_queue_file:
                disk_queue = pickle_load(disk_queue_file)
            os.unlink(self.DUMP)
            self.queue += disk_queue
        except (EnvironmentError, PickleError):
            pass
コード例 #6
0
ファイル: qlscrobbler.py プロジェクト: ZDBioHazard/quodlibet
    def __init__(self):
        self.nowplaying_song = None
        self.nowplaying_sent = False
        self.sessionid = None

        self.broken = False

        self.username, self.password, self.base_url = ('', '', '')

        # These need to be set early for _format_song to work
        self.titlepat = Pattern(config_get_title_pattern())
        self.artpat = Pattern(config_get_artist_pattern())

        try:
            with open(self.DUMP, 'rb') as disk_queue_file:
                disk_queue = pickle_load(disk_queue_file)
            os.unlink(self.DUMP)
            self.queue += disk_queue
        except (EnvironmentError, PickleError):
            pass
コード例 #7
0
ファイル: audiofeeds.py プロジェクト: zsau/quodlibet
    def init(klass, library):
        uris = set()
        feeds = []

        try:
            with open(FEEDS, "rb") as fileobj:
                feeds = pickle_load(fileobj)
        except (PickleError, EnvironmentError):
            try:
                with open(FEEDS, "rb") as fileobj:
                    feeds = hacky_py2_unpickle_recover(fileobj)
            except Exception:
                pass

        for feed in feeds:
            if feed.uri in uris:
                continue
            klass.__feeds.append(row=[feed])
            uris.add(feed.uri)

        GLib.idle_add(klass.__do_check)
コード例 #8
0
    def init(klass, library):
        uris = set()
        feeds = []

        try:
            with open(FEEDS, "rb") as fileobj:
                feeds = pickle_load(fileobj)
        except (PickleError, EnvironmentError):
            try:
                with open(FEEDS, "rb") as fileobj:
                    feeds = hacky_py2_unpickle_recover(fileobj)
            except Exception:
                pass

        for feed in feeds:
            if feed.uri in uris:
                continue
            klass.__feeds.append(row=[feed])
            uris.add(feed.uri)

        GLib.idle_add(klass.__do_check)
コード例 #9
0
ファイル: __init__.py プロジェクト: weblate/quodlibet
    def __init__(self):
        print("logging")
        self.nowplaying_track = None
        self.nowplaying_sent = False

        self.broken = False
        self.offline = False
        self.retries = 0

        self.lb = listenbrainz.ListenBrainzClient()  # XXX logger=xxx

        # These need to be set early for _format_song to work
        self.titlepat = Pattern(config_get_title_pattern())
        self.artpat = Pattern(config_get_artist_pattern())
        self.tags = config_get_tags()

        try:
            with open(self.DUMP, 'rb') as disk_queue_file:
                disk_queue = pickle_load(disk_queue_file)
            os.unlink(self.DUMP)
            self.queue += disk_queue
        except (EnvironmentError, PickleError):
            pass
コード例 #10
0
    def test_invalid(self):
        with self.assertRaises(UnpicklingError):
            pickle_loads(b"")

        with self.assertRaises(UnpicklingError):
            pickle_load(BytesIO(b""))
コード例 #11
0
    def test_pickle_load(self):
        data = {b"foo": u"bar", u"quux": b"baz"}

        for protocol in [0, 1, 2]:
            assert pickle_loads(pickle_dumps(data)) == data
            assert pickle_load(BytesIO(pickle_dumps(data))) == data
コード例 #12
0
    def test_invalid(self):
        with self.assertRaises(UnpicklingError):
            pickle_loads(b"")

        with self.assertRaises(UnpicklingError):
            pickle_load(cBytesIO(b""))
コード例 #13
0
    def test_pickle_load(self):
        data = {b"foo": u"bar", u"quux": b"baz"}

        for protocol in [0, 1, 2]:
            assert pickle_loads(pickle_dumps(data)) == data
            assert pickle_load(cBytesIO(pickle_dumps(data))) == data
コード例 #14
0
ファイル: test_scrobbler.py プロジェクト: WammKD/quodlibet
 def load_queue(self) -> List[Dict]:
     try:
         with open(self.SCROBBLER_CACHE_FILE, 'rb') as f:
             return pickle_load(f)
     except FileNotFoundError:
         return []