51 lines
1.6 KiB
Python

import logging
import asyncio
import json
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk, GLib
class KlippyFiles:
filelist = []
files = {}
def __init__(self, screen):
self._screen = screen
GLib.idle_add(self.ret_files)
def _callback(self, result, method, params):
if method == "server.files.list":
if isinstance(result['result'],list):
for item in result['result']:
self.filelist.append(item['filename'])
self.files[item['filename']] = {
"size": item['size'],
"modified": item['modified']
}
#self.get_file_data(item['filename'])
#files = [asyncio.create_task(self.get_file_data(file)) for file in self.files]
#await asyncio.gather(files)
#files = [GLib.idle_add(self.ret_file_data, file) for file in self.files]
if method == "get_file_metadata":
print("Got metadata for %s" % (result['result']['filename']))
#print(json.dumps(result, indent=4))
def ret_files(self):
self._screen._ws.klippy.get_file_list(self._callback)
def ret_file_data (self, filename):
print("Getting file info for %s" % (filename))
self._screen._ws.klippy.get_file_metadata(filename, self._callback)
def get_file_list(self):
return self.filelist
def get_file_info(self, filename):
if filename not in self.files:
return None
return self.files[filename]