56 lines
1.3 KiB
Python
56 lines
1.3 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
"""
|
||
|
|
||
|
Copyright (C) 2014-2016 bromix (plugin.video.youtube)
|
||
|
Copyright (C) 2016-2019 plugin.video.youtube
|
||
|
|
||
|
SPDX-License-Identifier: GPL-2.0-only
|
||
|
See LICENSES/GPL-2.0-only for more information.
|
||
|
"""
|
||
|
|
||
|
import hashlib
|
||
|
|
||
|
from .storage import Storage
|
||
|
from .methods import to_utf8
|
||
|
|
||
|
|
||
|
class SearchHistory(Storage):
|
||
|
def __init__(self, filename, max_items=10):
|
||
|
Storage.__init__(self, filename, max_item_count=max_items)
|
||
|
|
||
|
def is_empty(self):
|
||
|
return self._is_empty()
|
||
|
|
||
|
def list(self):
|
||
|
result = []
|
||
|
|
||
|
keys = self._get_ids(oldest_first=False)
|
||
|
for i, key in enumerate(keys):
|
||
|
if i >= self._max_item_count:
|
||
|
break
|
||
|
item = self._get(key)
|
||
|
|
||
|
if item:
|
||
|
result.append(item[0])
|
||
|
|
||
|
return result
|
||
|
|
||
|
def clear(self):
|
||
|
self._clear()
|
||
|
|
||
|
@staticmethod
|
||
|
def _make_id(search_text):
|
||
|
m = hashlib.md5()
|
||
|
m.update(to_utf8(search_text))
|
||
|
return m.hexdigest()
|
||
|
|
||
|
def rename(self, old_search_text, new_search_text):
|
||
|
self.remove(old_search_text)
|
||
|
self.update(new_search_text)
|
||
|
|
||
|
def remove(self, search_text):
|
||
|
self._remove(self._make_id(search_text))
|
||
|
|
||
|
def update(self, search_text):
|
||
|
self._set(self._make_id(search_text), search_text)
|