From 9b5207c284e80811d7f333b417db1d39d01fe345 Mon Sep 17 00:00:00 2001 From: jbleyel Date: Tue, 31 Mar 2026 10:51:49 +0200 Subject: [PATCH 01/22] add version --- lcd4linux/src/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lcd4linux/src/__init__.py b/lcd4linux/src/__init__.py index b104b5e..8141035 100644 --- a/lcd4linux/src/__init__.py +++ b/lcd4linux/src/__init__.py @@ -23,3 +23,5 @@ def _(txt): localeInit() language.addCallback(localeInit) + +__version__ = "5.0.15" From 57ae2694e326d65cea3c6f9239a74d81ec39ecbd Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Thu, 2 Apr 2026 15:40:01 +0200 Subject: [PATCH 02/22] [LCD4linux] V5.0-r36 cleaup according ruff lint --- lcd4linux/src/Photoframe.py | 8 +- lcd4linux/src/WebConfigSite.py | 4 +- lcd4linux/src/__init__.py | 2 - lcd4linux/src/bluesound.py | 2 +- lcd4linux/src/module.py | 14 +- lcd4linux/src/myFileList.py | 9 +- lcd4linux/src/ping.py | 982 +++++++++++----------- lcd4linux/src/plugin.py | 104 +-- lcd4linux/src/renderer/PixmapLcd4linux.py | 16 +- lcd4linux/src/ymc.py | 2 +- 10 files changed, 570 insertions(+), 573 deletions(-) diff --git a/lcd4linux/src/Photoframe.py b/lcd4linux/src/Photoframe.py index e8f2137..f79fe7b 100644 --- a/lcd4linux/src/Photoframe.py +++ b/lcd4linux/src/Photoframe.py @@ -162,12 +162,12 @@ def frame_init(dev): def frame_switch(dev): # Switch device from Mass Storage to Mini Monitor - CTRL_TYPE_VENDOR = (2 << 5) - CTRL_IN = 0x80 - CTRL_RECIPIENT_DEVICE = 0 +# CTRL_TYPE_VENDOR = (2 << 5) +# CTRL_IN = 0x80 +# CTRL_RECIPIENT_DEVICE = 0 try: sleep(0.5) - s = "\x00" * 251 + # s = "\x00" * 251 dev.ctrl_transfer(0x00 | 0x80, 0x06, 0xfe, 0xfe, 0xfe) # dev.ctrl_transfer(0x00 | 0x80, 0x06, 0xfe, 0xfe, s, 0xfe ) # dev.ctrl_transfer(CTRL_TYPE_VENDOR | CTRL_IN | CTRL_RECIPIENT_DEVICE, 0x04, 0x00, 0x00, 1) diff --git a/lcd4linux/src/WebConfigSite.py b/lcd4linux/src/WebConfigSite.py index a5dbc97..b244d0e 100644 --- a/lcd4linux/src/WebConfigSite.py +++ b/lcd4linux/src/WebConfigSite.py @@ -226,7 +226,7 @@ def action(self, req): V = _l(req.args.get(b"PopText", "")[0]) try: V = _unescape(V) - except Exception as e: + except Exception: L4log("WebIF Error: Parse Text") setPopText(V) L4LElement.setRefresh() @@ -349,7 +349,7 @@ def action(self, req): V = _l(val) try: V = _unescape(V) - except Exception as e: + except Exception: L4log("WebIF Error: Parse Text") ConfObj.value = V else: diff --git a/lcd4linux/src/__init__.py b/lcd4linux/src/__init__.py index 8141035..b104b5e 100644 --- a/lcd4linux/src/__init__.py +++ b/lcd4linux/src/__init__.py @@ -23,5 +23,3 @@ def _(txt): localeInit() language.addCallback(localeInit) - -__version__ = "5.0.15" diff --git a/lcd4linux/src/bluesound.py b/lcd4linux/src/bluesound.py index f458e8f..aa331ff 100644 --- a/lcd4linux/src/bluesound.py +++ b/lcd4linux/src/bluesound.py @@ -34,7 +34,7 @@ def getStatus(self): return r else: return {} - except: + except Exception: print("Bluesound Error") from traceback import format_exc print("Error: %s" % format_exc()) diff --git a/lcd4linux/src/module.py b/lcd4linux/src/module.py index a68668c..27c75c6 100644 --- a/lcd4linux/src/module.py +++ b/lcd4linux/src/module.py @@ -154,24 +154,22 @@ def getstatusoutput(cmd): def L4LVtest(VV): L4Linfo = "/%s/lib/%s/info/enigma2-plugin-extensions-lcd4linux.control" - O = "" + OX = "" OO = False P = "opkg" if exists(L4Linfo % ("var", "opkg")): - O = "var" + OX = "var" elif exists(L4Linfo % ("var", "dpkg")): - O = "var" + OX = "var" P = "dpkg" elif exists("/var/lib/dpkg/status"): (r1, r2) = getstatusoutput("dpkg -s enigma2-plugin-extensions-lcd4linux | grep Version") if r1 == 0: OO = r2.strip().split()[1].startswith(VV[1:]) - if O != "": + if OX != "": try: - f = open(L4Linfo % (O, P)) - B = f.readline() - OO = f.readline().strip().split()[1].startswith(VV[1:]) - f.close() + with open(L4Linfo % (OX, P)) as file: + OO = file.readline().strip().split()[1].startswith(VV[1:]) except Exception: pass return OO diff --git a/lcd4linux/src/myFileList.py b/lcd4linux/src/myFileList.py index ba9546c..7fb259a 100644 --- a/lcd4linux/src/myFileList.py +++ b/lcd4linux/src/myFileList.py @@ -96,8 +96,8 @@ def getSelection(self): return self.l.getCurrentSelection()[0] def getCurrentEvent(self): - l = self.l.getCurrentSelection() - return None if not l or l[0][1] == True else self.serviceHandler.info(l[0][0]).getEvent(l[0][0]) + curr = self.l.getCurrentSelection() + return None if not curr or curr[0][1] is True else self.serviceHandler.info(curr[0][0]).getEvent(curr[0][0]) def getFileList(self): return self.list @@ -272,7 +272,7 @@ def getTSLength(self, path): return "%d:%02d" % (tslen / 60, tslen % 60) if tslen > 0 else "" def byNameFunc(self, a, b): - return cmp(b[0][1], a[0][1]) or cmp(a[1][7], b[1][7]) + return (b[0][1] > a[0][1]) - (b[0][1] < a[0][1]) or (a[1][7] > b[1][7]) - (a[1][7] < b[1][7]) def sortName(self): self.list.sort(self.byNameFunc) @@ -285,7 +285,8 @@ def byDateFunc(self, a, b): stat2 = os_stat(self.current_directory + b[0][0]) except Exception: return 0 - return cmp(b[0][1], a[0][1]) or cmp(stat2.st_ctime, stat1.st_ctime) + return (b[0][1] > a[0][1]) - (b[0][1] < a[0][1]) or (stat2.st_birthtime > stat1.st_birthtime) - (stat2.st_birthtime < stat1.st_birthtime) + return def sortDate(self): self.list.sort(self.byDateFunc) diff --git a/lcd4linux/src/ping.py b/lcd4linux/src/ping.py index 7de62e5..c3ed05e 100644 --- a/lcd4linux/src/ping.py +++ b/lcd4linux/src/ping.py @@ -2,210 +2,210 @@ # -*- coding: utf-8 -*- """ - A pure python ping implementation using raw sockets. - - (This is Python 3 port of https://github.com/jedie/python-ping) - (Tested and working with python 2.7, should work with 2.6+) - - Note that ICMP messages can only be sent from processes running as root - (in Windows, you must run this script as 'Administrator'). - - Derived from ping.c distributed in Linux's netkit. That code is - copyright (c) 1989 by The Regents of the University of California. - That code is in turn derived from code written by Mike Muuss of the - US Army Ballistic Research Laboratory in December, 1983 and - placed in the public domain. They have my thanks. - - Bugs are naturally mine. I'd be glad to hear about them. There are - certainly word - size dependencies here. - - Copyright (c) Matthew Dixon Cowles, . - Distributable under the terms of the GNU General Public License - version 2. Provided with no warranties of any sort. - - Original Version from Matthew Dixon Cowles: - -> ftp://ftp.visi.com/users/mdc/ping.py - - Rewrite by Jens Diemer: - -> http://www.python-forum.de/post-69122.html#69122 - - Rewrite by George Notaras: - -> http://www.g-loaded.eu/2009/10/30/python-ping/ - - Enhancements by Martin Falatic: - -> http://www.falatic.com/index.php/39/pinging-with-python - - Enhancements and fixes by Georgi Kolev: - -> http://github.com/jedie/python-ping/ - - Bug fix by Andrejs Rozitis: - -> http://github.com/rozitis/python-ping/ - - Revision history - ~~~~~~~~~~~~~~~~ - March, 8, 2021 - Little modifications by Mr.Servo @ OpenA.TV - - Ensure compatibility for Python 3 and Python 2 - - May 1, 2014 - ----------- - Little modifications by Mohammad Emami - - Added Python 3 support. For now this project will just support - python 3.x - - Tested with python 3.3 - - version was upped to 0.6 - - March 19, 2013 - -------------- - * Fixing bug to prevent divide by 0 during run-time. - - January 26, 2012 - ---------------- - * Fixing BUG #4 - competability with python 2.x [tested with 2.7] - - Packet data building is different for 2.x and 3.x. - 'cose of the string/bytes difference. - * Fixing BUG #10 - the multiple resolv issue. - - When pinging domain names insted of hosts (for exmaple google.com) - you can get different IP every time you try to resolv it, we should - resolv the host only once and stick to that IP. - * Fixing BUGs #3 #10 - Doing hostname resolv only once. - * Fixing BUG #14 - Removing all 'global' stuff. - - You should not use globul! Its bad for you...and its not thread safe! - * Fix - forcing the use of different times on linux/windows for - more accurate mesurments. (time.time - linux/ time.clock - windows) - * Adding quiet_ping function - This way we'll be able to use this script - as external lib. - * Changing default timeout to 3s. (1second is not enought) - * Switching data syze to packet size. It's easyer for the user to ignore the - fact that the packet headr is 8b and the datasize 64 will make packet with - size 72. - - October 12, 2011 - -------------- - Merged updates from the main project - -> https://github.com/jedie/python-ping - - September 12, 2011 - -------------- - Bugfixes + cleanup by Jens Diemer - Tested with Ubuntu + Windows 7 - - September 6, 2011 - -------------- - Cleanup by Martin Falatic. Restored lost comments and docs. Improved - functionality: constant time between pings, internal times consistently - use milliseconds. Clarified annotations (e.g., in the checksum routine). - Using unsigned data in IP & ICMP header pack/unpack unless otherwise - necessary. Signal handling. Ping-style output formatting and stats. - - August 3, 2011 - -------------- - Ported to py3k by Zach Ware. Mostly done by 2to3; also minor changes to - deal with bytes vs. string changes (no more ord() in checksum() because - >source_string< is actually bytes, added .encode() to data in - send_one_ping()). That's about it. - - March 11, 2010 - -------------- - changes by Samuel Stauffer: - - replaced time.clock with default_timer which is set to - time.clock on windows and time.time on other systems. - - November 8, 2009 - ---------------- - Improved compatibility with GNU/Linux systems. - - Fixes by: - * George Notaras -- http://www.g-loaded.eu - Reported by: - * Chris Hallman -- http://cdhallman.blogspot.com - - Changes in this release: - - Re-use time.time() instead of time.clock(). The 2007 implementation - worked only under Microsoft Windows. Failed on GNU/Linux. - time.clock() behaves differently under the two OSes[1]. - - [1] http://docs.python.org/library/time.html#time.clock - - May 30, 2007 - ------------ - little rewrite by Jens Diemer: - - change socket asterisk import to a normal import - - replace time.time() with time.clock() - - delete "return None" (or change to "return" only) - - in checksum() rename "str" to "source_string" - - December 4, 2000 - ---------------- - Changed the struct.pack() calls to pack the checksum and ID as - unsigned. My thanks to Jerome Poincheval for the fix. - - November 22, 1997 - ----------------- - Initial hack. Doesn't do much, but rather than try to guess - what features I (or others) will want in the future, I've only - put in what I need now. - - December 16, 1997 - ----------------- - For some reason, the checksum bytes are in the wrong order when - this is run under Solaris 2.X for SPARC but it works right under - Linux x86. Since I don't know just what's wrong, I'll swap the - bytes always and then do an htons(). - - =========================================================================== - IP header info from RFC791 - -> http://tools.ietf.org/html/rfc791) - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |Version| IHL |Type of Service| Total Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Identification |Flags| Fragment Offset | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Time to Live | Protocol | Header Checksum | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Source Address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Destination Address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Options | Padding | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - =========================================================================== - ICMP Echo / Echo Reply Message header info from RFC792 - -> http://tools.ietf.org/html/rfc792 - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | Code | Checksum | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Identifier | Sequence Number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Data ... - +-+-+-+-+- - - =========================================================================== - ICMP parameter info: - -> http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml - - =========================================================================== - An example of ping's typical output: - - PING heise.de (193.99.144.80): 56 data bytes - 64 bytes from 193.99.144.80: icmp_seq=0 ttl=240 time=127 ms - 64 bytes from 193.99.144.80: icmp_seq=1 ttl=240 time=127 ms - 64 bytes from 193.99.144.80: icmp_seq=2 ttl=240 time=126 ms - 64 bytes from 193.99.144.80: icmp_seq=3 ttl=240 time=126 ms - 64 bytes from 193.99.144.80: icmp_seq=4 ttl=240 time=127 ms - - ----heise.de PING Statistics---- - 5 packets transmitted, 5 packets received, 0.0% packet loss - round-trip (ms) min/avg/max/med = 126/127/127/127 - - =========================================================================== + A pure python ping implementation using raw sockets. + + (This is Python 3 port of https://github.com/jedie/python-ping) + (Tested and working with python 2.7, should work with 2.6+) + + Note that ICMP messages can only be sent from processes running as root + (in Windows, you must run this script as 'Administrator'). + + Derived from ping.c distributed in Linux's netkit. That code is + copyright (c) 1989 by The Regents of the University of California. + That code is in turn derived from code written by Mike Muuss of the + US Army Ballistic Research Laboratory in December, 1983 and + placed in the public domain. They have my thanks. + + Bugs are naturally mine. I'd be glad to hear about them. There are + certainly word - size dependencies here. + + Copyright (c) Matthew Dixon Cowles, . + Distributable under the terms of the GNU General Public License + version 2. Provided with no warranties of any sort. + + Original Version from Matthew Dixon Cowles: + -> ftp://ftp.visi.com/users/mdc/ping.py + + Rewrite by Jens Diemer: + -> http://www.python-forum.de/post-69122.html#69122 + + Rewrite by George Notaras: + -> http://www.g-loaded.eu/2009/10/30/python-ping/ + + Enhancements by Martin Falatic: + -> http://www.falatic.com/index.php/39/pinging-with-python + + Enhancements and fixes by Georgi Kolev: + -> http://github.com/jedie/python-ping/ + + Bug fix by Andrejs Rozitis: + -> http://github.com/rozitis/python-ping/ + + Revision history + ~~~~~~~~~~~~~~~~ + March, 8, 2021 + Little modifications by Mr.Servo @ OpenA.TV + - Ensure compatibility for Python 3 and Python 2 + + May 1, 2014 + ----------- + Little modifications by Mohammad Emami + - Added Python 3 support. For now this project will just support + python 3.x + - Tested with python 3.3 + - version was upped to 0.6 + + March 19, 2013 + -------------- + * Fixing bug to prevent divide by 0 during run-time. + + January 26, 2012 + ---------------- + * Fixing BUG #4 - competability with python 2.x [tested with 2.7] + - Packet data building is different for 2.x and 3.x. + 'cose of the string/bytes difference. + * Fixing BUG #10 - the multiple resolv issue. + - When pinging domain names insted of hosts (for exmaple google.com) + you can get different IP every time you try to resolv it, we should + resolv the host only once and stick to that IP. + * Fixing BUGs #3 #10 - Doing hostname resolv only once. + * Fixing BUG #14 - Removing all 'global' stuff. + - You should not use globul! Its bad for you...and its not thread safe! + * Fix - forcing the use of different times on linux/windows for + more accurate mesurments. (time.time - linux/ time.clock - windows) + * Adding quiet_ping function - This way we'll be able to use this script + as external lib. + * Changing default timeout to 3s. (1second is not enought) + * Switching data syze to packet size. It's easyer for the user to ignore the + fact that the packet headr is 8b and the datasize 64 will make packet with + size 72. + + October 12, 2011 + -------------- + Merged updates from the main project + -> https://github.com/jedie/python-ping + + September 12, 2011 + -------------- + Bugfixes + cleanup by Jens Diemer + Tested with Ubuntu + Windows 7 + + September 6, 2011 + -------------- + Cleanup by Martin Falatic. Restored lost comments and docs. Improved + functionality: constant time between pings, internal times consistently + use milliseconds. Clarified annotations (e.g., in the checksum routine). + Using unsigned data in IP & ICMP header pack/unpack unless otherwise + necessary. Signal handling. Ping-style output formatting and stats. + + August 3, 2011 + -------------- + Ported to py3k by Zach Ware. Mostly done by 2to3; also minor changes to + deal with bytes vs. string changes (no more ord() in checksum() because + >source_string< is actually bytes, added .encode() to data in + send_one_ping()). That's about it. + + March 11, 2010 + -------------- + changes by Samuel Stauffer: + - replaced time.clock with default_timer which is set to + time.clock on windows and time.time on other systems. + + November 8, 2009 + ---------------- + Improved compatibility with GNU/Linux systems. + + Fixes by: + * George Notaras -- http://www.g-loaded.eu + Reported by: + * Chris Hallman -- http://cdhallman.blogspot.com + + Changes in this release: + - Re-use time.time() instead of time.clock(). The 2007 implementation + worked only under Microsoft Windows. Failed on GNU/Linux. + time.clock() behaves differently under the two OSes[1]. + + [1] http://docs.python.org/library/time.html#time.clock + + May 30, 2007 + ------------ + little rewrite by Jens Diemer: + - change socket asterisk import to a normal import + - replace time.time() with time.clock() + - delete "return None" (or change to "return" only) + - in checksum() rename "str" to "source_string" + + December 4, 2000 + ---------------- + Changed the struct.pack() calls to pack the checksum and ID as + unsigned. My thanks to Jerome Poincheval for the fix. + + November 22, 1997 + ----------------- + Initial hack. Doesn't do much, but rather than try to guess + what features I (or others) will want in the future, I've only + put in what I need now. + + December 16, 1997 + ----------------- + For some reason, the checksum bytes are in the wrong order when + this is run under Solaris 2.X for SPARC but it works right under + Linux x86. Since I don't know just what's wrong, I'll swap the + bytes always and then do an htons(). + + =========================================================================== + IP header info from RFC791 + -> http://tools.ietf.org/html/rfc791) + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |Version| IHL |Type of Service| Total Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Identification |Flags| Fragment Offset | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Time to Live | Protocol | Header Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Options | Padding | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + =========================================================================== + ICMP Echo / Echo Reply Message header info from RFC792 + -> http://tools.ietf.org/html/rfc792 + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Code | Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Identifier | Sequence Number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Data ... + +-+-+-+-+- + + =========================================================================== + ICMP parameter info: + -> http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml + + =========================================================================== + An example of ping's typical output: + + PING heise.de (193.99.144.80): 56 data bytes + 64 bytes from 193.99.144.80: icmp_seq=0 ttl=240 time=127 ms + 64 bytes from 193.99.144.80: icmp_seq=1 ttl=240 time=127 ms + 64 bytes from 193.99.144.80: icmp_seq=2 ttl=240 time=126 ms + 64 bytes from 193.99.144.80: icmp_seq=3 ttl=240 time=126 ms + 64 bytes from 193.99.144.80: icmp_seq=4 ttl=240 time=127 ms + + ----heise.de PING Statistics---- + 5 packets transmitted, 5 packets received, 0.0% packet loss + round-trip (ms) min/avg/max/med = 126/127/127/127 + + =========================================================================== """ #=============================================================================# @@ -221,11 +221,11 @@ __description__ = 'A pure python ICMP ping implementation using raw sockets.' if sys.platform == "win32": - # On Windows, the best timer is time.clock() - default_timer = time.clock + # On Windows, the best timer is time.clock() + default_timer = time.clock else: - # On most other platforms the best timer is time.time() - default_timer = time.time + # On most other platforms the best timer is time.time() + default_timer = time.time NUM_PACKETS = 3 PACKET_SIZE = 64 @@ -242,14 +242,14 @@ class MyStats: - thisIP = "0.0.0.0" - pktsSent = 0 - pktsRcvd = 0 - minTime = 999999999 - maxTime = 0 - totTime = 0 - avrgTime = 0 - fracLoss = 1.0 + thisIP = "0.0.0.0" + pktsSent = 0 + pktsRcvd = 0 + minTime = 999999999 + maxTime = 0 + totTime = 0 + avrgTime = 0 + fracLoss = 1.0 myStats = MyStats # NOT Used globally anymore. @@ -258,343 +258,343 @@ class MyStats: def checksum(source_string): - """ - A port of the functionality of in_cksum() from ping.c - Ideally this would act on the string as a series of 16-bit ints (host - packed), but this works. - Network data is big-endian, hosts are typically little-endian - """ - countTo = (int(len(source_string) / 2)) * 2 - sum = 0 - count = 0 - - # Handle bytes in pairs (decoding as short ints) - loByte = 0 - hiByte = 0 - while count < countTo: - if (sys.byteorder == "little"): - loByte = source_string[count] - hiByte = source_string[count + 1] - else: - loByte = source_string[count + 1] - hiByte = source_string[count] - try: # For Python3 - sum = sum + (hiByte * 256 + loByte) - except: # For Python2 - sum = sum + (ord(hiByte) * 256 + ord(loByte)) - count += 2 - - # Handle last byte if applicable (odd-number of bytes) - # Endianness should be irrelevant in this case - if countTo < len(source_string): # Check for odd length - loByte = source_string[len(source_string) - 1] - try: # For Python3 - sum += loByte - except: # For Python2 - sum += ord(loByte) - - sum &= 0xffffffff # Truncate sum to 32 bits (a variance from ping.c, which - # uses signed ints, but overflow is unlikely in ping) - - sum = (sum >> 16) + (sum & 0xffff) # Add high 16 bits to low 16 bits - sum += (sum >> 16) # Add carry from above (if any) - answer = ~sum & 0xffff # Invert and truncate to 16 bits - answer = socket.htons(answer) - - return answer + """ + A port of the functionality of in_cksum() from ping.c + Ideally this would act on the string as a series of 16-bit ints (host + packed), but this works. + Network data is big-endian, hosts are typically little-endian + """ + countTo = (int(len(source_string) / 2)) * 2 + sum = 0 + count = 0 + + # Handle bytes in pairs (decoding as short ints) + loByte = 0 + hiByte = 0 + while count < countTo: + if (sys.byteorder == "little"): + loByte = source_string[count] + hiByte = source_string[count + 1] + else: + loByte = source_string[count + 1] + hiByte = source_string[count] + try: # For Python3 + sum = sum + (hiByte * 256 + loByte) + except Exception: # For Python2 + sum = sum + (ord(hiByte) * 256 + ord(loByte)) + count += 2 + + # Handle last byte if applicable (odd-number of bytes) + # Endianness should be irrelevant in this case + if countTo < len(source_string): # Check for odd length + loByte = source_string[len(source_string) - 1] + try: # For Python3 + sum += loByte + except Exception: # For Python2 + sum += ord(loByte) + + sum &= 0xffffffff # Truncate sum to 32 bits (a variance from ping.c, which + # uses signed ints, but overflow is unlikely in ping) + + sum = (sum >> 16) + (sum & 0xffff) # Add high 16 bits to low 16 bits + sum += (sum >> 16) # Add carry from above (if any) + answer = ~sum & 0xffff # Invert and truncate to 16 bits + answer = socket.htons(answer) + + return answer #=============================================================================# def do_one(myStats, destIP, hostname, timeout, mySeqNumber, packet_size, quiet=False): - """ - Returns either the delay (in ms) or None on timeout. - """ - delay = None - try: # One could use UDP here, but it's obscure - mySocket = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.getprotobyname("icmp")) - except socket.error as e: - if not quiet: - print("failed. (socket error: '%s')" % e.args[1]) - raise # raise the original error - - my_ID = os.getpid() & 0xFFFF - - sentTime = send_one_ping(mySocket, destIP, my_ID, mySeqNumber, packet_size) - if sentTime == None: - mySocket.close() - return delay - - myStats.pktsSent += 1 - - recvTime, dataSize, iphSrcIP, icmpSeqNumber, iphTTL = receive_one_ping(mySocket, my_ID, timeout) - - mySocket.close() - - if recvTime: - delay = (recvTime - sentTime) * 1000 - if not quiet: - print("%d bytes from %s: icmp_seq=%d ttl=%d time=%d ms" % ( - dataSize, socket.inet_ntoa(struct.pack("!I", iphSrcIP)), icmpSeqNumber, iphTTL, delay) - ) - myStats.pktsRcvd += 1 - myStats.totTime += delay - if myStats.minTime > delay: - myStats.minTime = delay - if myStats.maxTime < delay: - myStats.maxTime = delay - else: - delay = None - if not quiet: - print("Request timed out.") - return delay + """ + Returns either the delay (in ms) or None on timeout. + """ + delay = None + try: # One could use UDP here, but it's obscure + mySocket = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.getprotobyname("icmp")) + except socket.error as e: + if not quiet: + print("failed. (socket error: '%s')" % e.args[1]) + raise # raise the original error + + my_ID = os.getpid() & 0xFFFF + + sentTime = send_one_ping(mySocket, destIP, my_ID, mySeqNumber, packet_size) + if sentTime is None: + mySocket.close() + return delay + + myStats.pktsSent += 1 + + recvTime, dataSize, iphSrcIP, icmpSeqNumber, iphTTL = receive_one_ping(mySocket, my_ID, timeout) + + mySocket.close() + + if recvTime: + delay = (recvTime - sentTime) * 1000 + if not quiet: + print("%d bytes from %s: icmp_seq=%d ttl=%d time=%d ms" % ( + dataSize, socket.inet_ntoa(struct.pack("!I", iphSrcIP)), icmpSeqNumber, iphTTL, delay) + ) + myStats.pktsRcvd += 1 +# test = test +1 + myStats.totTime += delay + if myStats.minTime > delay: + myStats.minTime = delay + if myStats.maxTime < delay: + myStats.maxTime = delay + else: + delay = None + if not quiet: + print("Request timed out.") + return delay #=============================================================================# def send_one_ping(mySocket, destIP, myID, mySeqNumber, packet_size): - """ - Send one ping to the given >destIP<. - """ - #destIP = socket.gethostbyname(destIP) - - # Header is type (8), code (8), checksum (16), id (16), sequence (16) - # (packet_size - 8) - Remove header size from packet size - myChecksum = 0 - - # Make a dummy heder with a 0 checksum. - header = struct.pack( - "!BBHHH", ICMP_ECHO, 0, myChecksum, myID, mySeqNumber - ) - - padBytes = [] - startVal = 0x42 - # 'cose of the string/byte changes in python 2/3 we have - # to build the data differnely for different version - # or it will make packets with unexpected size. - if sys.version[:1] == '2': - bytes = struct.calcsize("d") - data = ((packet_size - 8) - bytes) * "Q" - data = struct.pack("d", default_timer()) + data - else: - for i in range(startVal, startVal + (packet_size - 8)): - padBytes += [(i & 0xff)] # Keep chars in the 0-255 range - #data = bytes(padBytes) - data = bytearray(padBytes) - - # Calculate the checksum on the data and the dummy header. - myChecksum = checksum(header + data) # Checksum is in network order - - # Now that we have the right checksum, we put that in. It's just easier - # to make up a new header than to stuff it into the dummy. - header = struct.pack( - "!BBHHH", ICMP_ECHO, 0, myChecksum, myID, mySeqNumber - ) - - packet = header + data - - sendTime = default_timer() - - try: - mySocket.sendto(packet, (destIP, 1)) # Port number is irrelevant for ICMP - except socket.error as e: - print("General failure (%s)" % (e.args[1])) - return - - return sendTime + """ + Send one ping to the given >destIP<. + """ + #destIP = socket.gethostbyname(destIP) + + # Header is type (8), code (8), checksum (16), id (16), sequence (16) + # (packet_size - 8) - Remove header size from packet size + myChecksum = 0 + + # Make a dummy heder with a 0 checksum. + header = struct.pack( + "!BBHHH", ICMP_ECHO, 0, myChecksum, myID, mySeqNumber + ) + + padBytes = [] + startVal = 0x42 + # 'cose of the string/byte changes in python 2/3 we have + # to build the data differnely for different version + # or it will make packets with unexpected size. + if sys.version[:1] == '2': + bytes = struct.calcsize("d") + data = ((packet_size - 8) - bytes) * "Q" + data = struct.pack("d", default_timer()) + data + else: + for i in range(startVal, startVal + (packet_size - 8)): + padBytes += [(i & 0xff)] # Keep chars in the 0-255 range + #data = bytes(padBytes) + data = bytearray(padBytes) + + # Calculate the checksum on the data and the dummy header. + myChecksum = checksum(header + data) # Checksum is in network order + + # Now that we have the right checksum, we put that in. It's just easier + # to make up a new header than to stuff it into the dummy. + header = struct.pack( + "!BBHHH", ICMP_ECHO, 0, myChecksum, myID, mySeqNumber + ) + + packet = header + data + + sendTime = default_timer() + + try: + mySocket.sendto(packet, (destIP, 1)) # Port number is irrelevant for ICMP + except socket.error as e: + print("General failure (%s)" % (e.args[1])) + return + + return sendTime #=============================================================================# def receive_one_ping(mySocket, myID, timeout): - """ - Receive the ping from the socket. Timeout = in ms - """ - timeLeft = float(timeout) / 1000 - - while True: # Loop while waiting for packet or timeout - startedSelect = default_timer() - whatReady = select.select([mySocket], [], [], timeLeft) - howLongInSelect = (default_timer() - startedSelect) - if whatReady[0] == []: # Timeout - return None, 0, 0, 0, 0 - - timeReceived = default_timer() - - recPacket, addr = mySocket.recvfrom(ICMP_MAX_RECV) - - ipHeader = recPacket[:20] - iphVersion, iphTypeOfSvc, iphLength, \ - iphID, iphFlags, iphTTL, iphProtocol, \ - iphChecksum, iphSrcIP, iphDestIP = struct.unpack( - "!BBHHHBBHII", ipHeader - ) - - icmpHeader = recPacket[20:28] - icmpType, icmpCode, icmpChecksum, \ - icmpPacketID, icmpSeqNumber = struct.unpack( - "!BBHHH", icmpHeader - ) - - if icmpPacketID == myID: # Our packet - dataSize = len(recPacket) - 28 - #print (len(recPacket.encode())) - return timeReceived, (dataSize + 8), iphSrcIP, icmpSeqNumber, iphTTL - - timeLeft = timeLeft - howLongInSelect - if timeLeft <= 0: - return None, 0, 0, 0, 0 + """ + Receive the ping from the socket. Timeout = in ms + """ + timeLeft = float(timeout) / 1000 + + while True: # Loop while waiting for packet or timeout + startedSelect = default_timer() + whatReady = select.select([mySocket], [], [], timeLeft) + howLongInSelect = (default_timer() - startedSelect) + if whatReady[0] == []: # Timeout + return None, 0, 0, 0, 0 + + timeReceived = default_timer() + + recPacket, addr = mySocket.recvfrom(ICMP_MAX_RECV) + + ipHeader = recPacket[:20] + iphVersion, iphTypeOfSvc, iphLength, \ + iphID, iphFlags, iphTTL, iphProtocol, \ + iphChecksum, iphSrcIP, iphDestIP = struct.unpack( + "!BBHHHBBHII", ipHeader + ) + + icmpHeader = recPacket[20:28] + icmpType, icmpCode, icmpChecksum, \ + icmpPacketID, icmpSeqNumber = struct.unpack( + "!BBHHH", icmpHeader + ) + + if icmpPacketID == myID: # Our packet + dataSize = len(recPacket) - 28 + #print (len(recPacket.encode())) + return timeReceived, (dataSize + 8), iphSrcIP, icmpSeqNumber, iphTTL + + timeLeft = timeLeft - howLongInSelect + if timeLeft <= 0: + return None, 0, 0, 0, 0 #=============================================================================# def dump_stats(myStats): - """ - Show stats when pings are done - """ - print("\n----%s PYTHON PING Statistics----" % (myStats.thisIP)) + """ + Show stats when pings are done + """ + print("\n----%s PYTHON PING Statistics----" % (myStats.thisIP)) - if myStats.pktsSent > 0: - myStats.fracLoss = float(myStats.pktsSent - myStats.pktsRcvd) / myStats.pktsSent + if myStats.pktsSent > 0: + myStats.fracLoss = float(myStats.pktsSent - myStats.pktsRcvd) / myStats.pktsSent - print("%d packets transmitted, %d packets received, %0.1f%% packet loss" % ( - myStats.pktsSent, myStats.pktsRcvd, 100.0 * myStats.fracLoss - )) + print("%d packets transmitted, %d packets received, %0.1f%% packet loss" % ( + myStats.pktsSent, myStats.pktsRcvd, 100.0 * myStats.fracLoss + )) - if myStats.pktsRcvd > 0: - print("round-trip (ms) min/avg/max = %d/%0.1f/%d" % ( - myStats.minTime, myStats.totTime / myStats.pktsRcvd, myStats.maxTime - )) + if myStats.pktsRcvd > 0: + print("round-trip (ms) min/avg/max = %d/%0.1f/%d" % ( + myStats.minTime, myStats.totTime / myStats.pktsRcvd, myStats.maxTime + )) - print("") + print("") #=============================================================================# def signal_handler(signum, frame): - """ - Handle exit via signals - """ - #dump_stats() - print("\n(Terminated with signal %d)\n" % (signum)) - sys.exit(0) + """ + Handle exit via signals + """ + #dump_stats() + print("\n(Terminated with signal %d)\n" % (signum)) + sys.exit(0) #=============================================================================# def verbose_ping(hostname, timeout=WAIT_TIMEOUT, count=NUM_PACKETS, - packet_size=PACKET_SIZE, path_finder=False): - """ - Send >count< ping to >destIP< with the given >timeout< and display - the result. - """ - signal.signal(signal.SIGINT, signal_handler) # Handle Ctrl-C - if hasattr(signal, "SIGBREAK"): + packet_size=PACKET_SIZE, path_finder=False): + """ + Send >count< ping to >destIP< with the given >timeout< and display + the result. + """ + signal.signal(signal.SIGINT, signal_handler) # Handle Ctrl-C + if hasattr(signal, "SIGBREAK"): # Handle Ctrl-Break e.g. under Windows - signal.signal(signal.SIGBREAK, signal_handler) + signal.signal(signal.SIGBREAK, signal_handler) - myStats = MyStats() # Reset the stats + myStats = MyStats() # Reset the stats - mySeqNumber = 0 # Starting value + mySeqNumber = 0 # Starting value - try: - destIP = socket.gethostbyname(hostname) - print("\nPYTHON PING %s (%s): %d data bytes" % (hostname, destIP, packet_size)) - except socket.gaierror as e: - print("\nPYTHON PING: Unknown host: %s (%s)" % (hostname, e.args[1])) - print() - return + try: + destIP = socket.gethostbyname(hostname) + print("\nPYTHON PING %s (%s): %d data bytes" % (hostname, destIP, packet_size)) + except socket.gaierror as e: + print("\nPYTHON PING: Unknown host: %s (%s)" % (hostname, e.args[1])) + print() + return - myStats.thisIP = destIP + myStats.thisIP = destIP - for i in range(count): - delay = do_one(myStats, destIP, hostname, timeout, mySeqNumber, packet_size) + for i in range(count): + delay = do_one(myStats, destIP, hostname, timeout, mySeqNumber, packet_size) - if delay == None: - delay = 0 + if delay is None: + delay = 0 - mySeqNumber += 1 + mySeqNumber += 1 - # Pause for the remainder of the MAX_SLEEP period (if applicable) - if (MAX_SLEEP > delay): - time.sleep(float(MAX_SLEEP - delay) / 1000) + # Pause for the remainder of the MAX_SLEEP period (if applicable) + if (MAX_SLEEP > delay): + time.sleep(float(MAX_SLEEP - delay) / 1000) - dump_stats(myStats) + dump_stats(myStats) #=============================================================================# -def quiet_ping(hostname, timeout=WAIT_TIMEOUT, count=NUM_PACKETS, - packet_size=PACKET_SIZE, path_finder=False): - """ - Same as verbose_ping, but the results are returned as tuple - """ - myStats = MyStats() # Reset the stats - mySeqNumber = 0 # Starting value - try: - destIP = socket.gethostbyname(hostname) - except socket.gaierror as e: - return False +def quiet_ping(hostname, timeout=WAIT_TIMEOUT, count=NUM_PACKETS, packet_size=PACKET_SIZE, path_finder=False): + """ + Same as verbose_ping, but the results are returned as tuple + """ + myStats = MyStats() # Reset the stats + mySeqNumber = 0 # Starting value + try: + destIP = socket.gethostbyname(hostname) + except socket.gaierror: + return False - myStats.thisIP = destIP + myStats.thisIP = destIP - # This will send packet that we dont care about 0.5 seconds before it starts - # acrutally pinging. This is needed in big MAN/LAN networks where you sometimes - # loose the first packet. (while the switches find the way... :/ ) - if path_finder: - fakeStats = MyStats() - do_one(fakeStats, destIP, hostname, timeout, - mySeqNumber, packet_size, quiet=True) - time.sleep(0.5) + # This will send packet that we dont care about 0.5 seconds before it starts + # acrutally pinging. This is needed in big MAN/LAN networks where you sometimes + # loose the first packet. (while the switches find the way... :/ ) + if path_finder: + fakeStats = MyStats() + do_one(fakeStats, destIP, hostname, timeout, + mySeqNumber, packet_size, quiet=True) + time.sleep(0.5) - for i in range(count): - delay = do_one(myStats, destIP, hostname, timeout, - mySeqNumber, packet_size, quiet=True) + for i in range(count): + delay = do_one(myStats, destIP, hostname, timeout, + mySeqNumber, packet_size, quiet=True) - if delay == None: - delay = 0 + if delay is None: + delay = 0 - mySeqNumber += 1 + mySeqNumber += 1 - # Pause for the remainder of the MAX_SLEEP period (if applicable) - if (MAX_SLEEP > delay): - time.sleep(float(MAX_SLEEP - delay) / 1000) + # Pause for the remainder of the MAX_SLEEP period (if applicable) + if (MAX_SLEEP > delay): + time.sleep(float(MAX_SLEEP - delay) / 1000) - if myStats.pktsSent > 0: - myStats.fracLoss = float(myStats.pktsSent - myStats.pktsRcvd) / myStats.pktsSent - if myStats.pktsRcvd > 0: - myStats.avrgTime = myStats.totTime / myStats.pktsRcvd + if myStats.pktsSent > 0: + myStats.fracLoss = float(myStats.pktsSent - myStats.pktsRcvd) / myStats.pktsSent + if myStats.pktsRcvd > 0: + myStats.avrgTime = myStats.totTime / myStats.pktsRcvd - # return tuple(max_rtt, min_rtt, avrg_rtt, percent_lost) - return myStats.maxTime, myStats.minTime, myStats.avrgTime, myStats.fracLoss + # return tuple(max_rtt, min_rtt, avrg_rtt, percent_lost) + return myStats.maxTime, myStats.minTime, myStats.avrgTime, myStats.fracLoss #=============================================================================# def main(): - parser = argparse.ArgumentParser(description=__description__) - parser.add_argument('-q', '--quiet', action='store_true', - help='quiet output') - parser.add_argument('-c', '--count', type=int, default=NUM_PACKETS, - help=('number of packets to be sent ' - '(default: %(default)s)')) - parser.add_argument('-W', '--timeout', type=float, default=WAIT_TIMEOUT, - help=('time to wait for a response in seoncds ' - '(default: %(default)s)')) - parser.add_argument('-s', '--packet-size', type=int, default=PACKET_SIZE, - help=('number of data bytes to be sent ' - '(default: %(default)s)')) - parser.add_argument('destination') - args = parser.parse_args() - - ping = verbose_ping - if args.quiet: - ping = quiet_ping - - ping(args.destination, timeout=args.timeout * 1000, count=args.count, - packet_size=args.packet_size) + parser = argparse.ArgumentParser(description=__description__) + parser.add_argument('-q', '--quiet', action='store_true', + help='quiet output') + parser.add_argument('-c', '--count', type=int, default=NUM_PACKETS, + help=('number of packets to be sent ' + '(default: %(default)s)')) + parser.add_argument('-W', '--timeout', type=float, default=WAIT_TIMEOUT, + help=('time to wait for a response in seoncds ' + '(default: %(default)s)')) + parser.add_argument('-s', '--packet-size', type=int, default=PACKET_SIZE, + help=('number of data bytes to be sent ' + '(default: %(default)s)')) + parser.add_argument('destination') + args = parser.parse_args() + + ping = verbose_ping + if args.quiet: + ping = quiet_ping + + ping(args.destination, timeout=args.timeout * 1000, count=args.count, + packet_size=args.packet_size) if __name__ == '__main__': - main() + main() diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index 5ddb9a6..eb38dd3 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*-# -# + # LCD4linux - Pearl DPF LCD Display, Samsung SPF-Line, Grautec-TFT, WLAN-LCDs, internes LCD über Skin # # written by joergm6 @ IHAD @@ -103,7 +103,7 @@ IMAGEDISTRO = BoxInfo.getItem("distro") MODEL = BoxInfo.getItem("machinebuild") ARCH = BoxInfo.getItem("architecture") -except: +except Exception: from boxbranding import getImageDistro, getBoxType, getImageArch IMAGEDISTRO = getImageDistro() MODEL = getBoxType() @@ -117,6 +117,7 @@ from .myFileList import FileList as myFileList from .ping import quiet_ping from .utils import getIPTVProvider, getAudio +from .ymc import YMC # DEPENDING IMPORTS & GLOBALS & INITIALIZATION import ssl @@ -4277,21 +4278,21 @@ def xmlSkin(): xmlInsert(sli[1]) elif xf >= 0 and LCD4linux.xmlType01.value == False: change = True - ok = xmlDelete(1) + # ok = xmlDelete(1) xf = xmlFind(2) if xf == -1 and LCD4linux.xmlType02.value == True: change = True xmlInsert(sli[2]) elif xf >= 0 and LCD4linux.xmlType02.value == False: change = True - ok = xmlDelete(2) + # ok = xmlDelete(2) xf = xmlFind(3) if xf == -1 and LCD4linux.xmlType03.value == True: change = True xmlInsert(sli[3]) elif xf >= 0 and LCD4linux.xmlType03.value == False: change = True - ok = xmlDelete(3) + # ok = xmlDelete(3) return change @@ -5155,11 +5156,11 @@ def MailDecode(Sdecode): if str(LCD4linux.MailIMAPDays.value) == "0": typ, data = mailserver.search(None, 'ALL') else: - l = getlocale() + ll = getlocale() setlocale(LC_ALL, "C") Date = (date.today() - timedelta(int(LCD4linux.MailIMAPDays.value))).strftime(_("%d-%b-%Y")) typ, data = mailserver.search(None, '(SINCE {date})'.format(date=Date)) - setlocale(LC_ALL, l) + setlocale(LC_ALL, ll) ids = data[0] if ids is not None: id_list = ids.split() @@ -5196,7 +5197,6 @@ def MailDecode(Sdecode): del mailserver except Exception: L4log("Mail-Error Close") - if len(PopMail[i]) > 0: PopMail[i] = list(reversed(PopMail[i])) L4logE("currend ID", PopMailUid[i][0]) @@ -8206,7 +8206,7 @@ def LCDrestart(self): getSamsungDevice() TFTCheck(True) rmFile(CrashFile) - PICwetter = [None, None] + # PICwetter = [None, None] rmFile("%stft.bmp" % TMPL) rmFiles(PIC + "*.*") if Briefkasten.qsize() <= 3: @@ -11814,12 +11814,12 @@ def putCover(workaround, ConfigLCD, draw, im): L4logE("Cover Check %s" % pcheck) x2 = int(xx / 2) y2 = int(yy / 2) - l, o = 0, 0 + ll, o = 0, 0 r = xx - 1 u = yy - 1 - while pix[l, y2] == pcheck and l < x2: - l += 1 - l += 1 + while pix[ll, y2] == pcheck and ll < x2: + ll += 1 + ll += 1 while pix[r, y2] == pcheck and r > x2: r -= 1 r -= 1 @@ -11829,9 +11829,9 @@ def putCover(workaround, ConfigLCD, draw, im): while pix[x2, u] == pcheck and u > y2: u -= 1 u -= 1 - if l > 1 or o > 1: - pil_image = pil_image.crop((l, o, r, u)) - L4logE("Cover Trim (%s, %s, %s, %s)" % (l, o, r, u)) + if ll > 1 or o > 1: + pil_image = pil_image.crop((ll, o, r, u)) + L4logE("Cover Trim (%s, %s, %s, %s)" % (ll, o, r, u)) xx, yy = pil_image.size L4log("CoverSize (%s, %s)" % pil_image.size) y = int(float(x) / xx * yy) @@ -12021,12 +12021,12 @@ def putGrab(ConfigFast, ConfigSize, im, draw): L4logE("Grabpixel", pix[0, 0]) x2 = int(xx / 2) y2 = int(yy / 2) - l, o = 0, 0 + ll, o = 0, 0 r = xx - 1 u = yy - 1 - while pix[l, y2] == pcheck and l < x2: - l += 1 - l += 1 + while pix[ll, y2] == pcheck and ll < x2: + ll += 1 + ll += 1 while pix[r, y2] == pcheck and r > x2: r -= 1 r -= 1 @@ -12038,7 +12038,7 @@ def putGrab(ConfigFast, ConfigSize, im, draw): u -= 1 if str(LCD4linux.OSDTransparenz.value) == "2": self.draw[draw].rectangle((0, 0, MAX_W, MAX_H), fill="black") - pix_image = pil_image.crop((l, o, r, u)) + pix_image = pil_image.crop((ll, o, r, u)) xx, yy = pix_image.size self.im[im].paste(pix_image, ((MAX_W - xx) // 2, (MAX_H - yy) // 2)) except Exception: @@ -12191,11 +12191,11 @@ def putPicon(workaround, draw, im): font = ImageFont.truetype(FONT, int(ConfigTextSize), encoding="unic") Channel_list = wrap(self.Lchannel_name, width=int((MAX_W * 2) / int(ConfigTextSize)), break_long_words=False) hadd = 0 - l = 0 + ll = 0 for Channel_line in Channel_list: if PY3: Channel_line = Channel_line.replace('\x87', '').replace('\x86', '') - if l < 3: + if ll < 3: w, h = getFsize(Channel_line, font) TextSize = ConfigTextSize while w > MAX_W: @@ -12203,7 +12203,7 @@ def putPicon(workaround, draw, im): font = ImageFont.truetype(FONT, TextSize, encoding='unic') w, h = getFsize(Channel_line, font) self.draw[draw].text((((MAX_W - w) / 2) + POSX, (POSY + hadd)), Channel_line, font=font, fill="white") - l += 1 + ll += 1 hadd += h else: if (ret, ConfigSize) != self.PiconName[Picon2][0] or ConfigMode == True: @@ -12413,7 +12413,7 @@ def putProgress(workaround, draw, im): except Exception: L4log("Error put Progress") else: # DVB - event_begin, event_end, duration, event_name = self.Levent_begin0, self.Levent_end0, self.Lduration0, self.Levent_name0 + event_begin, event_end, duration = self.Levent_begin0, self.Levent_end0, self.Lduration0 if event_begin != 0: now = int(time()) event_run = now - event_begin @@ -12760,7 +12760,7 @@ def putProg(workaround, draw, im): MAX_W, MAX_H = self.im[im].size if ConfigSplit == True: MAX_W = int(MAX_W / 2) - event_begin, event_end, duration, event_name = self.Levent_begin0, self.Levent_end0, self.Lduration0, self.Levent_name0 + event_begin, event_end, event_name = self.Levent_begin0, self.Levent_end0, self.Levent_name0 if event_begin != 0: begin = strftime("%H:%M", localtime(event_begin)) ende = strftime("%H:%M", localtime(event_end)) @@ -12811,7 +12811,7 @@ def putProgNext(workaround, draw, im): POSY += h lines += 1 else: - event_begin, event_end, duration, event_name = self.Levent_begin1, self.Levent_end1, self.Lduration1, self.Levent_name1 + event_begin, event_end, event_name = self.Levent_begin1, self.Levent_end1, self.Levent_name1 if event_begin != 0: begin = strftime("%H:%M", localtime(event_begin)) ende = strftime("%H:%M", localtime(event_end)) @@ -13059,9 +13059,9 @@ def putOnline(workaround, draw, im): cl = 0 cm = 0 h = 0 - for l in ConfigList: - if len(l) > 1: - T = (Code_utf8(l) + ":").split(":") + for ll in ConfigList: + if len(ll) > 1: + T = (Code_utf8(ll) + ":").split(":") w, h = getFsize(T[0], font) if cm < w: cm = w @@ -13070,9 +13070,9 @@ def putOnline(workaround, draw, im): cl = cm + 10 + h ly = ConfigPos lx = getSplit(ConfigSplit, ConfigAlign, MAX_W, cl) - for l in ConfigList: - if len(l) > 1: - T = (Code_utf8(l) + ":").split(":") + for ll in ConfigList: + if len(ll) > 1: + T = (Code_utf8(ll) + ":").split(":") TT = T[1] if len(T[1]) > 0 else T[0] w, h = getFsize(T[0], font) c = "red" @@ -13171,39 +13171,39 @@ def putDev(workaround, draw, im): w, h = getFsize("MByte", font) if ConfigType == "0": co = 0 - for l in ConfigList: - if len(l) > 0: + for ll in ConfigList: + if len(ll) > 0: co += 1 else: co = 1 ly = ConfigPos lx = getSplit(ConfigSplit, ConfigAlign, MAX_W, (w + 20) * co) Bproz = 0 - for l in ConfigList: - if l not in DeviceRemove and (isdir(l) == True or l.startswith("RAM")): - L4logE("Device", l) + for ll in ConfigList: + if ll not in DeviceRemove and (isdir(ll) is True or ll.startswith("RAM")): + L4logE("Device", ll) G = F = B = B1pixel = B2pixel = 0 - if l.startswith("RAM"): + if ll.startswith("RAM"): G, F, B = getMem() Bproz = int(F * 100 / G) if F > 0 else 0 B1pixel = ((2 * h) * Bproz / 100) Bproz = int(B * 100 / G) if B > 0 else 0 B2pixel = ((2 * h) * Bproz / 100) - if l == "RAM2": + if ll == "RAM2": F += B else: try: - s = statvfs(l) + s = statvfs(ll) G = s.f_bsize * s.f_blocks F = s.f_bsize * s.f_bavail if G == 0 and LCD4linux.DevForceRead.value == True: L4logE("Device force Reading") - glob(normpath(l) + "/*") - s = statvfs(l) + glob(normpath(ll) + "/*") + s = statvfs(ll) G = s.f_bsize * s.f_blocks F = s.f_bsize * s.f_bavail except Exception: - L4log("Error Device", l) + L4log("Error Device", ll) if G > 0: Fproz = int(F * 100 / G) if F > 0 else 0 Fpixel = ((2 * h) * Fproz / 100) @@ -13223,8 +13223,8 @@ def putDev(workaround, draw, im): Einh = "T" ShadowText(draw, lx + 20, ly, "%.1f" % Fe, font, ConfigColor, ConfigShadow) ShadowText(draw, lx + 20, ly + h, "%sB" % Einh, font, ConfigColor, ConfigShadow) - self.draw[draw].rectangle((lx + 8, ly, lx + 18, ly + (2 * h)), outline=LCD4linux.DevBarColor.value, fill=LCD4linux.DevFullColor.value if (Fproz < int(ConfigWarning) and not l.startswith("RAM")) else LCD4linux.DevBarColor.value) - if l.startswith("RAM"): + self.draw[draw].rectangle((lx + 8, ly, lx + 18, ly + (2 * h)), outline=LCD4linux.DevBarColor.value, fill=LCD4linux.DevFullColor.value if (Fproz < int(ConfigWarning) and not ll.startswith("RAM")) else LCD4linux.DevBarColor.value) + if ll.startswith("RAM"): self.draw[draw].rectangle((lx + 8, ly, lx + 18, ly + B1pixel), outline=LCD4linux.DevBackColor.value, fill=LCD4linux.DevBackColor.value) self.draw[draw].rectangle((lx + 8, ly + B1pixel, lx + 14, ly + B1pixel + B2pixel), outline=LCD4linux.DevBackColor.value, fill=LCD4linux.DevBackColor.value) else: @@ -13234,12 +13234,12 @@ def putDev(workaround, draw, im): else: ly += 2 * h + 3 else: - L4log("remove Device", l) - DeviceRemove.append(l) + L4log("remove Device", ll) + DeviceRemove.append(ll) else: - if l not in DeviceRemove: - L4log("remove Device", l) - DeviceRemove.append(l) + if ll not in DeviceRemove: + L4log("remove Device", ll) + DeviceRemove.append(ll) # HDD def putHdd(workaround, draw, im): @@ -13455,7 +13455,7 @@ def addNL(w, d): Info += " (%d min) " % (duration / 60) if Info.strip() == "": Info += event_name + "\n" - event_begin, event_end, duration, event_name = self.Levent_begin1, self.Levent_end1, self.Lduration1, self.Levent_name1 + event_begin, duration, event_name = self.Levent_begin1, self.Lduration1, self.Levent_name1 if event_begin != 0: Info += strftime("%H:%M ", localtime(event_begin)) + event_name else: diff --git a/lcd4linux/src/renderer/PixmapLcd4linux.py b/lcd4linux/src/renderer/PixmapLcd4linux.py index 004d28c..c69d857 100644 --- a/lcd4linux/src/renderer/PixmapLcd4linux.py +++ b/lcd4linux/src/renderer/PixmapLcd4linux.py @@ -1,11 +1,11 @@ +from os import stat, symlink +from os.path import isfile from Components.Renderer.Renderer import Renderer from enigma import ePixmap, eTimer -from Tools.BoundFunction import boundFunction -import os try: from enigma import eMediaDatabase DPKG = True -except: +except ImportError: DPKG = False @@ -28,14 +28,14 @@ def postWidgetCreate(self, instance): def changed(*s): sel = s[0] sel.L4Ltimer.stop() - if os.path.isfile("/tmp/l4ldisplay.png"): + if isfile("/tmp/l4ldisplay.png"): try: - mtime = os.stat("/tmp/l4ldisplay.png").st_mtime + mtime = stat("/tmp/l4ldisplay.png").st_mtime if sel.mTime != mtime: if sel.instance: if sel.swap: - if not os.path.isfile("/tmp/l4ldisplaycp.png"): - os.symlink("/tmp/l4ldisplay.png", "/tmp/l4ldisplaycp.png") + if not isfile("/tmp/l4ldisplaycp.png"): + symlink("/tmp/l4ldisplay.png", "/tmp/l4ldisplaycp.png") sel.instance.setPixmapFromFile("/tmp/l4ldisplaycp.png") else: sel.instance.setPixmapFromFile("/tmp/l4ldisplay.png") @@ -43,6 +43,6 @@ def changed(*s): sel.swap = not sel.swap else: sel.mTime = 0 - except: + except Exception: pass sel.L4Ltimer.start(200, True) diff --git a/lcd4linux/src/ymc.py b/lcd4linux/src/ymc.py index 394248a..fd6d4a1 100644 --- a/lcd4linux/src/ymc.py +++ b/lcd4linux/src/ymc.py @@ -2,7 +2,7 @@ from __future__ import print_function, absolute_import try: import simplejson -except Exception as e: +except ImportError: import json as simplejson from six.moves.urllib.request import urlopen from .plugin import L4logE From 88e57a84c79e8e93d303eb09225ade2857e132d6 Mon Sep 17 00:00:00 2001 From: Hains van den Bosch Date: Mon, 7 Sep 2026 09:08:19 +0200 Subject: [PATCH 03/22] Ccleanup old python2 files Based on: https://github.com/oe-alliance-plugins/LCD4linux/commit/da510a66e0e46563598131b1f9382bb746aca481 --- lcd4linux/src/aarch64/Makefile.am | 3 --- lcd4linux/src/aarch64/dpflib.so | Bin 104808 -> 0 bytes lcd4linux/src/armv7a/Makefile.am | 3 --- lcd4linux/src/armv7a/dpflib.so | Bin 79608 -> 0 bytes lcd4linux/src/armv7ahf/Makefile.am | 3 --- lcd4linux/src/armv7ahf/dpflib.so | Bin 79688 -> 0 bytes lcd4linux/src/cortexa9hf/Makefile.am | 3 --- lcd4linux/src/cortexa9hf/dpflib.so | Bin 79752 -> 0 bytes lcd4linux/src/dinobot/Makefile.am | 3 --- lcd4linux/src/dinobot/dpflib.so | Bin 94640 -> 0 bytes lcd4linux/src/mips/Makefile.am | 3 --- lcd4linux/src/mips/dpflib.so | Bin 86184 -> 0 bytes lcd4linux/src/sh4/Makefile.am | 3 --- lcd4linux/src/sh4/dpflib.so | Bin 83735 -> 0 bytes 14 files changed, 21 deletions(-) delete mode 100644 lcd4linux/src/aarch64/Makefile.am delete mode 100644 lcd4linux/src/aarch64/dpflib.so delete mode 100644 lcd4linux/src/armv7a/Makefile.am delete mode 100644 lcd4linux/src/armv7a/dpflib.so delete mode 100644 lcd4linux/src/armv7ahf/Makefile.am delete mode 100644 lcd4linux/src/armv7ahf/dpflib.so delete mode 100644 lcd4linux/src/cortexa9hf/Makefile.am delete mode 100644 lcd4linux/src/cortexa9hf/dpflib.so delete mode 100644 lcd4linux/src/dinobot/Makefile.am delete mode 100644 lcd4linux/src/dinobot/dpflib.so delete mode 100644 lcd4linux/src/mips/Makefile.am delete mode 100644 lcd4linux/src/mips/dpflib.so delete mode 100644 lcd4linux/src/sh4/Makefile.am delete mode 100644 lcd4linux/src/sh4/dpflib.so diff --git a/lcd4linux/src/aarch64/Makefile.am b/lcd4linux/src/aarch64/Makefile.am deleted file mode 100644 index 98afa29..0000000 --- a/lcd4linux/src/aarch64/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -installdir = $(libdir)/enigma2/python/Plugins/Extensions/LCD4linux - -install_DATA = dpflib.so diff --git a/lcd4linux/src/aarch64/dpflib.so b/lcd4linux/src/aarch64/dpflib.so deleted file mode 100644 index 9d2b5526b849d0512f18369f1578715e488bc5f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104808 zcmeFa3w%`7)jqt>%m626xXh4*gmB3ufP{NUxa5K|T!bJ9A)tbnCLswV5=cyffS?4t z;T1-$QZF?DwV<}5q6M`QQCnKIMQttCTclcT)rxnbAm8(>v(MxtCVl_!_r3q`^81|p zX3kn`uf6tKYp=cbK6}rcY&d<+43A+b=jBzuR>ZcBwkcs*?p#e< zjPl{iw_`^8>tN02T*=GV{P*ih+1~%^E1($*P>(V?vu_&>!OOWiR?lk-k)8PW}}cr5k@APFLO-qq+Z-m>B^h3=vcCo{IN0 zy!o1r_vr%JA2V>t!}|;u%>idSfWFRYhZ8-s1KL~{Z64r!jnCKD0$2G0zzgv{OVbwN zx>&;ufUa| zUxjxy-WTCrgZC=DFUH$>t#$xh*JyaHi$?GgjjzLXy@q+wLqI5(;d2At^@4T$u@U4= zy6AF!y~4$MCE%-E_+|}X`g+25{+YLbaPO(U;TvAOZrSRElWuv*=(_91HLv#SyS;hx z=HD0P?YrT#p3fgHt%-l}FK7HyrCsxj_wHW0{7C-z*qb-JbeEamH$3w#dPyg+lekITMe?R8Xre{WM`8s3#g?Ih)$-m#UeoM;AtvAfM@}lN@ zA3OEC3qL*VeQWXWt{ipy`WNyZJ^cDbi~6r0v??<=c-b%C`F2*z{64>5_Re$J-~2JX z`QV?1&5ilzwi8#K{?@o}-~aZ47b;#UNq+ds{43tEKK{-AV_74=Ogp>xqEByI`{dy* zOQxOvmyd7z#ndOK)!z2!#rcngjEBa3xU8)2jCX!9Ze!Iehrb&2z>L4#@!O+E&&q%5 zmDwZm?mcTyps3=W^}T-a#N6@AC#3|pOg-fnQ}f1Te09p#L*fs<%dYA4<;4g+nD)bB zuL`O)I)6n=eM%Eg-j4Ybkd!-;vkHl(BRQ#^wA%-bh1?Bl_%u() zat?PQ-wQoEYIj5@bmouL4%+=IXdT)0SSR|Q3i-hfqO4=ozQ!9;?H57_;YqAa-Q$Ru8dCNp;ssJ%R8ap*GaozSD_C4yuB0tZ#vO48T=jj zlew-V`dgjI@7am`f=>MKawqirI%)U1PUzov5+`?cqR+XV&>!rCKD`rr|J+IZoYM*a z)1Bzg`7(re``2ro==0Z3{C2dHb~7M2)LuC7;!gPQ?L>Z2C;Wfygr41roFkp^uj|BK zE|oiq!-u8c{i>V`B)pt8M=j(BRlEvZjf!~X%coK=;@VsJRl_8k;LNp)MNhvvT42-n zYX1DLY`2fvt>tL4s@L+1+R2}-_1VJ?#p^@+qPA%I<_R{zS+9Jj+x@uArXSY)4~ZXs zIDcKD`SZ@U8MkWw{f_*JHsMa&Y&8q~LDfU0b76$n0Q;gI*K)GB7{lu+`=TC~e(|dp zPqhh-KW~FP`puVV)34C{|JLm`>jmMTb-S^mKlo3#8K-N0_F-?;T}|gg&h>g;>+_}7 zhwDwgrfE6P>HgK-rsivXnsmpO>UMvk`|H?sP|WrEmzJ|lFNVkIvQ1k5!!vAxqvvcb zKTZ2#q~`xt(?@Cn_h@=eC+*&%?YdJtvO)77)PDZ*G@Eb~`tfy_=AU$djo)csRJLyS zxv@6E(Q_;6v0v8cn}g}v>=(71yh58lQTu0yw)aaNhqq|?(>sate>;BAdUE{mm9N`X zvuxb)=Y?8+|Cu(u$-bz^aHXCLvu(ngTF-JVXPlO^Q}dsv<&=-N341jCdach^-7ii& zT%+xMkvAuJ#c6v-XgPra@6jW80tt5Tkk_*d9>I&zU ztyZOF7Z;Y*)YR71sM_k9ij{RsA@lS#C4~#t!ip8A*VI(ikWy1qxS*^KvMN?CqYg7F zR+gSwR##qC3QWtJQBzi?%8OT)R+dHULDIst)f(59RM%83DO(Eb%9VT;3c<0nrmVQs zF3ev$b=A_PWi_H`w3R8f=hRfxmDxpF0P8sQ%W8^i+ejBe;nG!=m6}@!4*O~fbK28} zOsOq^z&0%in^UK{xUQtU7A~}X0~@6`Y@?;HP?u_pYs>2LYvBEwy0viEtd(_zQ)=f_ z!ISJR6v6>^q2{MOE6P?VUJD6mdSz8{X>oP6;sX00e*#z4}x&n&CchOa2DtgI@rRV+c*t}I+q zSy88!vX`S>Q&3h}27fDzfI2i&S+N9V>~ZOKz=g9=a%NTOs>-r)g%if9+B%Gp8nx7R zC^TAGvclGIRqc{OiO{7w5Nnr}B07asTT)vAM=;)MRe1%SV#BOdW9v|e=q;;RT3k}5 zNVP|S9bhFZN_F33%+{@{EnHm;OT>#6?x9^JM@(TwZBX3%Oa*#m$*Akz)m z^}4ZI??*cHkftBpWG^fnx`Q8TM_*fR%RAhTzDLVB+K#?K^9L?(EB{(ePj5%RMbq=! z(eKvu>UQ+|HGOM4`s13uyB+<2rXOlYe@WAiwxj<=(*swu)&F%(Pj5$W*7W>#^kJI5 zvmN~dO>b&PKdu*;huYCU)bvEXu5|jVPRj|kqj%T*&N|oO-^;@cyf(MvKd9->eul$8 zSnpSa^ge_`FF(hYlh%&@o~Ea_qaW7$30dvvJ9+qnS6(~%8of@=Z%5D5heY-5=tV^$ zMs03KuPnCd+uG3sB{sdG9X-9&rk8K9``y4e(nCoKs$KNcZC3eQY`ua;#c)h1TPN;i`PXrU3A={ zMqdFJT~BRNmgu5)i*hR!a?vkx(bHUX(?w5r(RIp@(kvHUe-%OKVHbUwOHQ7PUge_a zyXbxweUXda-9;~Q(R;Y)7vKG_;Nwi;-W8d(NA&Fi(K@JUG#Dn zJAMT=WbJ0h*=nXFV`7ZiS7k#9QzS~8= z%0=JnqK|UXn_TqKF8VTgMFLB|$ zfp2o*eSmLw;Yq*`xbT6%kGSwu;GUS)_D=zx>cWQupX$O#17G68Gk|Y$;S+#wci}m} z54iBtfFE(;Q-OP|*7j!rPj%sE0H5l@=K^2i!V7?Ja^YtK-|oWC1%AMV{{;9E7rq3z z$1m+SAXlryGh4z+?HP9RWP+2&8Da zY?*?3A(i|Z>oLdwpdRX^9G`Y`%JC`J;eGQn;NOnAQ;*JU!F~3gFzT|NQ~$)er)6IG z!mnB$Mf*huev%zF)OgXeX=Y13>QFCLI;ExY`;)i5cJkzHAyr>cbYNii7yfX|iFF5L zE)xFc@exCXTZ)x>>~FA5>$f}Qy_qc=PoCW4%wZul`8CdAFM~&!;TFT3Gc1I!uB)N} zkuSeLnc&vx3$MDr*=yXNg7TF221Me}K5jk66I?Akv@?K=*c2KbviYFtCVa7*Lg zRb(D$&|^5-8Han3iyFp+_k~e@gGVi7+k2A3Eh^kQk^42o0S@` z(!*<&QW+u8zgRFubU3l@&*C@S<1K7J{oBz-vp075qh2F&2Vi_}OY{Wo{*)^QL}q}7 zwzj?tThJ1Huk75@BwyWaL4j6mySobFT-`wz(`|BIGgg1iHs*D&cBLPEnh)zCk}R?f46^u zSg0N-cE>{Jb*R(iMgQl9_oV}-@3x~~8V4DXy(doI_9gURXdIik1LYgS;fqYKTDX03 zcwYlzvTa^7smm7HGE^RzTg$z4(VUT zhFj>j6YHKApHcQ8)llHb@8-w{U4_HJhRJFlbp<@XAr~-o032x;s#-8!5%<3l+a=C1 z&YdxZ*y%mx#pJyl4=L*hMoxv?dc<`j;+x}ZvQLdQ47Kn&&=qWXH@3cDC-szZ|E%a1 z2Ht`;5O-TubK5caHRz0iFGYu^qIssZeRXul4*36O_`fm~Vf=7xHzb5xwxeGfpH-1H z@OKDpQ@-fA8Tk=$$oRhtWt5M7=D6)c!~57D)VmSmHV3kr5F^D2^#$xtTj%FQ=Z zW5o6obD>+ud!XYE=(zoI=s7q!@&(#0f}U)%`Q+UNg-R_?gP)>0j!TZH7i}HuTsk%m z3hz7O^$e$uJ7D8llu^fxN%aK`qc*(OJ+58`?|)}pJu|qz;JB9G(YSKPMf?8Vj{Z(LHXy?O zQ5X*rQ}E?y&`tX5l=^~yP_Annbk<+3{^>ZjwqyQDsT&yiiEhgodrttDw$kbg*q{Hs zwmOcHdl17rFs3Aq^Fxs-Y?J-Kc@8#n%-snaQ%2MmIR0;poj#2AZ-@P39i32qUsR|6 z)%bYK&c8CJwC3OYkW=q{RYmTBUeR1!WXDQhv=PQyM8^G^P(*yJ$NtZur{nX!82=63 zW)9n)8Q#};xmuf|JpP8O)!N4E@Scdgs0@F@7PXdn(Sz|YB_BE1qxMY2xHw?!oRAU- zw_rPG&z@;U#DlfXyO_TQO54XKG>)k+SWa7`^VkcLLqw-HLy0^Z zS%kgKg;^=p0~Vx|_v@X~ecJFTN0YOTpbq`m$n_=GF!x+mU*N@NEIpq4djh_FTZas(Dc4@5nn#y4Jsv z0=dsZ|0bip_YV7~fJar+;K<W&HvtHW>A>r#86Np*rR16y1!+u;G%Q#0;=UC#Lx1g&R^NFqN;K+8gN%_rQ@BPOq zALGW+El=ylb||w3GWJ8B3f8~!)py|Shj||3$!RwX9-NcK3C*Xn8=$k%Uo9Yx_{ip! zwk7-2MNN>IY~rVMU2ughp>Ap+&bs25$Auq#!RrpTLz}hkKIksxMX(L!o>Im<{9Zo< ze)nKaWem6N@!fxr_K+v6WIP#vo{6=H=l<00;a#5YYFBFaDYzQAPQ}%O>oi=wyHd>Q zyA0E}E29H_qO$h>_hiAwxJJxBqPq!u{x9f-Gp1-?a!iQ*>J*8)BOW{MhQM~@E_=#{>?%C{nJ!jr*NWl0Xs`hOkr1tGdM*ksBef<%i$zjlti`loJ)k|G_ zUDKv6*5cbyZ%02}cQESqLtWHw#2UEMy39L;7(3K41ipt_$0zk{z9oK7_>8{HE%T`Z(&W# zF|}JY4~%R_nGvopc#8T1?#(!c{wagRr!7xwyfGEHt|NKvLv_(J^t+}Np{?YQ`V7Cn zBTaH|>v$a|<8_lBui21^`;WNonMOoGXQOCXMC81O^%C`14qq&XFOWOy*#>kb?MwJ% zJLYn!Q!jP4s*eXo=KqH}AFvMABB*mnx3g6p9~hbbAL{&#aWUI&zbOgr6K0&jHt2KI znO7P?r(D%AEYg~bz4w{m-;|vvhrPo@61Q-h}Lbg z>w0wEL$12FqVE1>Y9G$?;u@AgPpo;=U==j5=4oJGBaQ|krW^a&epdA(=nvVq;9UDp z%5wE-QAh1Jj1b*DK3n(Qs1wijwuIMuIIp4|19`AvS^d7$@=%r=Pbn|TYS=%8Il(W! zqmDimY=F*MX5$L!pt~2;CYA zZT;BCj3tHq0Dg%j&hw2Z-wr;-cnXh%FWS!U?2mfgmoir)hOoc%A7WvY_;b4+bLUf6 zT|bq&A+JG?&!|VEmK8#tYKHAxm#{zSw^m=A(xy*~T29{fDfXAR$K~q|{k4n~<~r2# zOtSk-q0ekvu!jX+&Kd8bp5!*fG-Did;y&h{n<10^b7I}^WG(KVyPW)79FKh4E8Mad zyrfOVTXHaHk7`;pkAwCr7wz3dyY4Q~#Lq>eB7Xzy)Sm|*IrDdPKI5E}p!T(If16A0 zGn@m^7WHqh(~TYQT>~2S3HEJ5J)@sp_X^M)Jw~ywFxNS4Zq)MEfrs;4>)dAV1Il_` z&zowb-LK7zMd;)K-iY~AKO+O$>Ide^$b)_F{u z`_+8J3GZ=!FmB-+iH%F^3rY}E94{#WJEyz~o0(@@?}1ulOWON*Cf4GrWq^)bBfm&| z3?HqXjQNuBL7y25H9gLzKjRvAyuYR&TGtU{+RPKF&^rXZ)gN4PQ)7fpb`1enHO^1Fka5YJZe{gTmvgI2)Cfo3bl;mo4Jnz*u^uZ22zb!q@p)YDnAE~mP zHhqYVzk79Tz|XX8I>*C2_+p+bhXFo^KE*v2*WQine~fSXq26c5f^W6tpyAs=mwXCY zW3{ZtdG#`mCM)$3_8;whuhJtGv=g$!l&$4)-ND%Med&_NxP`nS9ms<%w!Cn9Bdb0=G8M8yTo=(7T!VAn z2$|xSG&Oc3V+i!*fV$`|!|7w)B?j={YYj&bAxRdQ7U zeOL^g!iXiVCqiw;t}9>axrgy5dk2suF#}oUXs30&cTfj$5v{|xK%E!9cGuZs-wRKM z4|y+)wZ@M9u5pNcR*%2_722JGwu&ssn1+5W@kAOj74~m{55;|!_S;7BG2#F*CAn%p z#sK_O4?64y#v%su}dAWr#EU|;}Ece=22XKwwFv!SOh)22afiAL+$-m+i&WrCu zpN9R=WxqZ4u66piDKqkO*hu<`bua2Q@PCnS5aY;MZTA^5_C$B|aR@qdOmV;JUg&xc z^xlE-jr)H1E!^@5bwTX+arm(B)e+xT&BwTaPvpKOn)5^B>@}CZcbfuUML+5M@`JcX zo@Cq`SkKUZ_rhjbGa=p(Yx^2-#dG>(TpOVgkp{UJONw;qUjNE_SQB!Mb^veG!Cr3H z;gVm*pdM_Z-4=2SbUeiSbgkoV6&^1-I(ra_vK7@7O-7u~+rYaZxA^d; zy&jKkFa0${WVPChwin7?33TKB;SY2vnjp3x(D(MQqrRX04OxhbY*o}ZgL4gW1AE!b zTZ;QSp^1@izruYd`y2X9(fWyhnnuz;LcbR}I{o6-^E=d~Psy*q&p2g2M{%}&ej@ip zxQ{(t+AnhPo9+0!cfel?KR|EMt=#rWYhLMK9gKZA(YqljBJ(`gBpg5317=QBhy&dF z+G8eBMK;oA?&ot1;k!GH$j>S8Rg@OeH0Ij`v+UtyUa!?2U z(4Ffw(4c2*8#>o_LJzd1_Xpi=D`j+KE9o8CN;+(9L_CTAfWMDi>5ePrOU|S5E_r-rh#iIuWZ2HNZ7TJU4u z%jP^Kx^SN3_vauh1!XD7yHUF7q9fl59rI|1`rw|ojeoSwl6#pW9h-6go8sh1(wJ{Z zbLE@P{IL>tw6@)G&f~pzR1bZxM&CF7-;wv2KSyeN92-eX|Dlbz-{>?)juShbv&pu7 z9<|Mh!FKc0M8>f8eKgl=-?!-t_#JU;_Y3DE#6b#Vp>JaGeSzMoxC#xiA@ucKB)_wK ziZX@^pJOBCb1t9^ho9d$pe%gvASw&-WXtk)D$D76XUsZd;nOcV>3ilS-dl4#;yVyZ zHLZ2l3xrd+=gcz10CB9fWi6qg3-K_@L+e#Pen-Q(w^zqDyh=FgYo71Z#&*7*Z|4h< zJq2qp86Q|T%h*PnDQw^I5$TL|ht7F^68z&XXFsr9{M4>4{p&94s6JzlJn)0lHu__J zn>HAWZXTAmS#vVJ;o4*WlY{^$4-J=?9tI$zhc`W${xA^Tnqaj-Dp$aDI^-G6My=>yW+`Ja1fKZsq_ zq26JaohP5g*+140Ckxfu=5F{-DB_n_##ZxW&?aM_G)~Drsldv(s6y_?>wEM5qZxiQ zFvi|RJ=QTMsRhl2;k6;0Z#7dU>Z5%AyO70sX(P_ODc?X|Cm&*yYwFnst~Om^uEH7y z-^FV3@;d=-^9}dd_K#5eIIlH~so%%gL4ABLL9f3#&oxbq#Bz=qfi(^HNWf1xIgIw< zSJn?>Po}5LLz)M2x%b6+XfpPM262y#b)a(*>X6?9etVD7*%NK68|yacJm|$etiJck z<``$*;Q8Xi@IAg0D{D&1*7wu9RrAEiA3kT9dp>i;pp#eVZ?nF)VXEu~z$qN(-EA0m z{MqnlkiKM@jDK9K(WdiVhBMhd*BYR!L>+6qPtaQ)Is$<*jR#C+s~B-ap&>&->Wd4c9?e%&*RwGQJa+t++pSIp~+G$mwhg zS6Le|F91KW?zeh>VXrOIS^puXp!Zs(Lh~EGQENjM?u$Qy9LoDtWrw-~{{Z;kky|k) zcfjVU-R!fL1h%sQe%N65@fqAR1T16t8#^u=zCc~VSPQ60O3uL1PB!^y3uFexCVZEb zGy^>3M?Cte58Dm09bBEY-Y4wi4)pngbeBFK<9ijfjWN=|J^?KA2;%5t;iaz+YQO03 zTIjtB^vzbIC=2rm_8RN6B9-LNM9#|8`^R?wZB^o{@zy&XeHcP4;d^G;II}5e z1TW{QvDCi`egb|rc?aK8(5xD2#D7(`?=Zfx?nd3)RCYbDcc4$Z!}oWyZ?Om2JSxII zbdoH5K8dsgv#n)dev(IS*<$7byVuhG^A-84=g_yHr1w_{8>v3)D`b;YopHDX+}-p4rc+AgnYeG?Ib zJ8-|_K6Cp$_m?Ll{wCY8CNcpB!P^L4(lOrb?<@gsOcvb!j?!ez56}an+P+|TyI zpV0=)gY+A8Kso0;`};Mh!+o^2_j&)JKb24VQ-$pQ+>gEs|DWtT`Wj~f1=MjUb=;tB z+~D%*hIT$gncK%9wvBjVEV#!*EMs9E`fZ)7-vCeGTmgPOmm!XI2Eo6QZ=ge0twVcR zsuNk<`;tESZ|F-ub4-k63^3nm-RTQQkN1v3_jdNYL)|*Chq2ARXwAiXP2l7o(BNX4QpO<1v4sB{dZ#%R_6cR@H>;=OT_)74y`r3N>rqEQp&mYo2O-*lMWl zBQ(#c!4o}0%a*PQ@doP@XD7*d4_7M z%StMit_>B3?58t^Dl3+kg@)q!hUr5?RW+n9)84UIjgOX;>pXNOp5}-?Sy=`@h89d) zFiSIrh7PG6YIEa%_@GPXOq(7mtyodEvbLgXWi7h8bj^@b&2ZLAd01vB`aI9j3Iu_r zW*}-pv&PH|*^kY%afu+CkXN<_-3lIEK8?@MtX;JtidU_`V|(2aL~V7}%Gy=c3_^s+ z(lR_Bw5Ci796hu+p?UF%??o$|f!}1~N@=)2DlCrYWvQh+T-Xhz+x++9^ z#j?@bU!CzU1RI_~yi63Sb-3An1|E8f=NoE&<%CM2WI4&v6A!@0q#ib!UleMa(xDK5gf-_d3_wav{_+;J?AH*A4%J3dN z+J0I~0iu<0BSi4ErUyQuHI#R{ZFW?j)A6L+RduX^huc<`)oC$m%A$<)38CrvGa!Sn zC>~1V({CxPtY#SXz*AS5U9`j*RjXE(wxWtpU=7(%`4l;V%b4c4!n4O%K4sc$7)ex} zwP5N3GBU26zON~(u3W3-&#elr;1h$XF?gLJv6RiGpkAxJ63iG*nuUdJ%H{d2q4o^< zRkgJhODfkgZ-vT>FD_$#8(O=n6y0C31dk^jRa#b8TvCn;pFSHJo1LDOlbJa-Yp5;1 z1o@G=$#|7#w5GvJVpra*=`#2v*QTv4s~Z-Ij+JPCEaCI0S0m8#%d61xjGE#VWg)!A zj!qv-Ikw!D7phBCqayo zbMPo=a-(&0lTuDx3WD+)JI(1Q$&Ox9p&wGi5#gH7Y{{iH6&IJ)*bV;p`J)GZ^uUiE z_|XGDdf-P7{OExnJ@BIke)PbP9{AA%KYHN*#~yJ0zeZ?GTPI+zTVAo;Xv53F`M*8f zIRBRiU)+b|%lUu8J!~}ke+>I--1+|=_^pq;Onpt#SLgqH^w+pk{?+#CZ8mJ_+b`}R^7Wy9em~A6uIez2P=H>h! zBZt_&eTUxJwKIO_{~(3hRdoIjl0$a>|B-|L@49|uI5W!st``2EmFxV!sP6dk6~g3OzMB=*-~zcsKb-$x<@~=Y=l@gflvA)M zn{xgSmGgh6T1);jR8(Y_JO6*m;SQA8kn?}09Qw>@({e&-Gv}T)EHq(sCjQ%AyVo4x zwq^E8X{&wgh%bWJFK6B8tRtQOf9RwTnHh|6lQl7&f{r}p|!m|yx()!#E?`w_c+6;I0Y{#fkTmJlI4!`sNuXj2N z*LKw=0r#j!aAa)D|8ttnpj%UOAc-#rx3Shwe0Rw4f14r0bvM47g|CzP;TxZvrJKgx z5YzpESf#!L(B8G{DQW@i^1PJ=&}()Z0V!U?+=)f8kHWm3Ze8$YGq0~(I!b&DU9Zvg zeiVCB(Ykkt&D7<(WKi~D#q1qA8$4ZnUGQ}S)pe6d?eaP90X*koczCbB5fsm@6nO(d zH2FHd=-tiqL(VJ4QHQ?Lq^-7Q%^EcMN3Tw}eC1FVH8x?+B+^$1y~G#|fufvsw29;VkRdtouFT zu>Za8fR#Zc&p(`v8G_{d`$KD=N03GSvAC!3`S|EcRphUr)?E#LFSy*_fSNwjptjZi zK?8tv7o^Ug2cP(Q8b3wJ8vi+TZf}FGtM@;i3?$aTvyRjz{|oT4FV46N(k}P+NCA>) z{1V7!{~QWPF&e>kJOX5!zpe+6;es^yUtq}yL3a9IAu>{s-Tv2!j5bE0 z&R+jVw0ex_*5tnyB;Q!$QMB`%^860Y>C)|G(7Jz5+is2d9xhGv-AQ|`L_bJ(5meT9 z?3$m`a?{G8PquFYIe;E5BF&_X9_&zB(DMNRq%H;`)Mp)Ptm?%_c z-y|D;j_sT(uxY*sA-<2n;weA~b)C5fcrY6}cfFdL1kXfIb=@rBpHZ*tH3GhY&g_=7 z3A{Z%2Uj+l>kV(<61)t=Zv99J{*7D%$rZem)MTMN5J+Ta+50BSYo+nYad*9V8Iu&(${Q4UR z_WFFI;7G6O>xq0FIDkm$d4}|QoR3m^eq$74T*Qw+sBY-<4EkC1nU9_{`m`iNP@i$2 zcvZqbAgbpHV?0;`MQEp|$HQtdkD&+5UgLfa*fK&&^_oDT%F08vUZSxNX0AnXB6)hy zvV8y~77P`F*14t@>1{BcTfhQX*y^gj>J1ZPT}kbe$H8cFj%581)l#>Y@E-9G@@1m_qrh`}uX zhcxC)BL_&>e;Ha1&NV852!5r4sa;~^l6{NvGM!G*>xXuHV&8)|Tt zaXT*M{>P}>*+v79YX1-nn&7#{lc=-CzXF{TJkJ<{Yrk?k^L8uUGu^g9aJAYG!2q`PT%z40x3(n!i>*+v7;|4;!V>1_7O zCSwG!L?bC1iUlvX`^ZQtX1yzni6~1mlFpzft~6ExOE;26KUUhvsjsDB+X~#09SttjI`;rwP{!R&FFsMs5n; zAXv4LGz<*|ZkDKh^&PT` zkuoklo5*zIzl7q9nK|f zIVn@SgkM1n-n>HCYaRCMqwJ!r2sX_}V65jt4vD+&68;_Jr>v)<{34mvm8UmCE%ck|);rg<2jQt4v=ww;7f!n&Rk##F-zVf8{cVeJpVA$3I>DKKWk-s9GWu40)c!+S=3e(xUsY0H09#h;S)M1h8!DfCBvYrn-B^<<$ z(hkp2%6;q|fTsCAKBX(a2Vh$$5Vb)uC3s4hZXfT3P%+JTd=4Cfk5*pg353A#*K}c+ zfKL&4MwH18i{TvqhtCqG^Bg9oJX?~u&hvAQkJm2|rh13zXHh1RDV)h!M(~YmF`6xt zndCi%;8oUadgFb#Y^k=PQo)&DJo&UsL8*>k#wfH-xuY!`ap`!VT6Q z>d-=Xr!|Sa`Yqwz){~?kr_8<9E0lABaFaEkwtr9fpmhhc^GU*o{I}39g)GU*B#n+U zWTI>K4r);4=MzM27@7#AB;6p(MSFftRH7E zgDStQM&qTr=^xC&*2j1PB>_K7Q^5p568#HlMWVq}81heJNne90FU|i3qy&=;X0>$x zShO4LXE4^Y{JY6EKtzZA{BOCzfg&wWB@AVJBpbJ)OGAml6r+%O{fYia)q1Ugyx<_M z*Iy`hu)%y7PzjT{CKzIjMx9W4aH#PtD}O?kG~*_)V981^3^SPEO#cREjp4@cSlPdg zK{Uen97v+S8EOVc8h^%k4f$K>l~INdv^14)95REWjpeu`tfKeF8gBqL&3ExRkSnVG zGNclIN%vHT^Qqm?0JB zu)?>ni;E9^K!PyMPXWf94i~4z`ng!NzJavZ?$Toe z@FNWs+v96W8-Sm7sMwzUka+?FN~=m#Y%lU8S|tz=8(>t0AnsdW3IAaFyTjlrEN~7z zxX+jc(Sdm!Oi$SG^BfIN3LFXqP0w9m@RyJn<6++^{~{(iOAu2fY@x^fp0$)Smyz9F zss!R#rNYYvT%eJoy;k5JH2W}^d#k`QX5Ee6mss@@vV7$gr#wLV*IssgN@CoJ;XtiE z==`|v=K@q#J__Pa5;pxmgBf^kmQ3y{^|u)Ep}6BL8nmng51%uRL-^p+kbdJl2A@#{ zS5Tfe;EO?zBqX9Z4*$&nq(CV$W?UDe7O-iahtJ?L^l`jNoq}uNv-lVReP}Y?60i?6 ziT4Y*5nUDEUBFA>>v%CVxEzhd_Y~?Wtkz4wJmiM>fPhO_Ehu0D8F~xY6FnOrD_}OF zDn3rYd!b-_ynyux!uUP{UdPtt)<2jCC&tTY3BG~ZBz^!H0;j-=KD(qxd&~ggY=))s z&Bi704}@Z$NnJ=vNlZw%1y{MZOh}Y4mwU^EM7g)LZsFkW%NPhK&t3#ULeetu2WP

3cYoZLge7)T5y3pfo*he8BpgQk#U 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

x<$+ zj`&om#mD0?u<;(ZYHbQ$Tl@^R9{3*DZ}H=pv-r+kwD?TyEAgFs-r`-zD17JE zo%;t|`0g4u7C(f&E50-4F6K85`0hP=@t_2JrvmS|lEsZEz6`y>cXI!8Ph#ridr}wA;)nV`RlIXIFE00B?-cLcpDz9r%;P)v zmc`ukm5txq7ITkS_K9y^{1#N;JNMSbhj8IL_s+%qnm*qN!xsMqYdgMkSEy}4?8B%- zKFnOk86j*YeTR?O6ojANv2uPncn56s*gt;rBBYeZ{_&f~{_&f~{&k$k{`s3P6~aA3 zY&QA%oBqw4$CRJD`S^1;&-E)I#>bz#d2S#G8T`3hSF@XWJ5l>LZeGH^!4T+8JPV-r zKH~gcp6{)h0L{_xN|#j6OMttXx8O5|KMd+RSU~OzO5LEPV3ABumcp%*schj-O|G<_df%7BJ8B%$0-< zKhN~cD#9NB%_uah348rK(=#s$0`~cNrf1fW-qp`DJ+qc@H$Ttx%sRrRpJ#gJ#cV3z z=b4_lni?m_-TXY+GjAkp`gyWvZe_CpTg98GVxq0$%~UZ26-R?+ z$;qC1+eWI$lRa}ALFMPko_RZ2O|b4GtDNkacPAn+Y-<|Wnzp8qu;J&)p1GY4gf%$& zFn5sd^YdiSyoYcXKTr0|dkJ^7oqr$UZvJQ4*e?j1exB@^yV#Vr-~pEf4>}f{4^=HW z*)w;)8dd9IiqL93LfG*0WY2umR*NTl<{r|0exB@^j}h+T=gFS=IN`2-p6r>wCfv=> zlRa}U>zaO^?3w!rTYjGGnNJYz?&ry#`6T&!`gyWvK1H~fpC^0fZwLqcJlQj!CLC1V z?UOz8n^Fju12gj&LHoSShD|?D_RMej(~Ce4p6r>&-vFE#=*g2k^ZS9YI27o~lRfj~ zyC}&D^x~}k-T#6W;2duA`A zKa>as0zBC>gHnb`v75=(x|vtQpl&8B#Pc-Ij5k^U_Ys&UduF0En&4y4$HdM=Hzdl* zUZR}rCCbTOqMYm{%E?}$oa`ma$zGy;ve!31CY4{7@^cQ38MGN0NcnlP7c=+~z-AIo z_F_(X5n#a2lf9UsUja_^Gh@dL>jkw!exB^b49^6d=I6;?%m{iR-OmIcGjcWHEI&{7 zVn#Ir4*Pks7c=Hbz&P1kh6dk<0{!KK@!UTQQh(B6{YNOW&!zLQVg_LZIh7132L4c4|y+7(7LOZl%UdB3zoplf9Tz*-E)To;;@! zuJrR{FJ|&BfUEsH*^3ENr!{__?8QtWPraWfdofc9UjY^AJ~87#=x3V|Mp1u3vjKr; zoP6F02H~VXTRBm_*D0ZQTTA+jKPW?-0>)PyM!LS$XDIp3DPc$0CDc$H>C}!#ktlFx zl!p*%-zT5hPB}ZxmLZ&BM-Vs{J3Mzpc?5FvJS@^KbvW78wloeU$oK^aKA!Bwq%&#< zm@yOn1=2vC?8QtZn2eLXn5<HfK;kfk~f6U+?j4IaW!szD@$E|PJ zccz~|9Jh`U4)}MWPpuZhiGKcY-1?Sq$j={+Ti+2*^Ye$})^Wn=e*SRWIzc$g&mWFk z-xChU@rUDiS=1X&cvAC6l-<4LGj6juRbtggm0K+5A9P!qor zqPEp>{NcFOU68ss{&3vtX{zit=9K&X`*!}?e+7A zE{o}ExA);e!CVlL@cUHa-{_+l3YQ(9Eeaqaj3DX4}Umr@`vMA zu0guVAC6m-Z1_30bE?4I%to~A?Sqbu;jhKJU(M!Y&P4Zg-z*@1E#Cba0r_k39!czs zAb*Uu2=7$oJ(G1W1F=UxQewu3kY4&RnZ*2qV1I&xxGFa87YCK+ff=v!?F%*xK1992 zI7_?VAcWnLA%6>j{Q)Bk7Eh#ZaBWQqQI2lh@(jji{sYq6o=D9Q+4px?OW}~CY>!KC z<7d)dqHZrg+TJKQo$dWB+MWpcnbV#cbU)j_MXJ9!)2=ruTK!sG{T8SC;L_SUvWLM! zb!9{B7J~_m>dIE*Esnx!5Lf!fRU*8<7Ty#U{UZyX=bm%! zx#w=@E_IJ1KCIO4ahX4=y12*jI-g<27;R9#q%ZA(zeDuY9^0(HmmqF)RMeN0q6H zd!rQt&QXDMBMdBX+@w@)(-)|{;Ha%MVZ3F3 z*9`nGQrT~@Sh;<96?ne_SBjJQ%SxlVQk3-jJ-~*+trCNCu_G(F%OvJvhgS`F zv6tAyH%#5I^0{Vw`HH40q0TduXp+-LdSIq%n47!NsIZOw~Xy_>@(!Q%<1uE zg!#lyeF%8e<7ZTl!`KUlOnydd^3fGyg`epGYQxl#GhiT7GxIEscDUtMVnN!5!!ziBi3bjt#)S=^131xiKmLjXX2xO((g8E0;|QU2z|6Q> zf^@*lxQ;>RfSExD%uI2>%%B5irZ`|`&;c{^=^nugIbaeakD$>IKS5&jf8wi7$P-0| z)d7VQf748!VxN&GCs z>VQd{BwKY~Bp#%Q>VQc+L=l@&5c2?22TbDUhbST)Fo{PPR0mAr7l}#-%wt3q2TbDe z@B6vIPgxR`o~^_$F{}=l#3!jhb-*P49pUPLNqmZ7b-*M(&9FLP62Hu_I$#pN!mv7E z62D4TE(gCB%E42XgI;`B2TbDhGjWJQhg;$|Ny3TsIfm5%llZ)fMF&jcX~NY3llb=x zs{VQc+$FMqJ5?^Fk9WaS6 zG3+~F65ri{j#wNpiMJV42aJZ*0h9QreSoV2Ch^Ym2s;N%;@voM>>MzO_r8oT&Htmc|1`3&vw9=Z{QDw=N*K(YyFvyqes^w&@fzDHGeKM;X+KZPR1Su1;*5KFJJnV*C4m zC7L#&0L5r2_9b`X8=)*pfvzxUcw*ahU5s#<*fw=(m=oKkZVAh5cGkV*DYMyG_eqem z*;)5Xkh9s@mr#&%*Mt8@LF`g5eg|GMo1J|rA+u*MgrKpD{u9EgAn zD}LA^UGd8VzCZzA-XqDpPJLlul0o7HGBA0e1Hxm>xj;s$FR*>ZGU);tn@VDiysr2z zX+1|;k4&TW>prdLYG^$t*De_?Ni4MPA+1l4)^od6ps)LK#b==o$&N}v0R93Dem+4k zhW9Dx=}|ThkayvqlFVbukwbWfuJ|^A!=yd2Q;BXyo5BYpL=e$D4{NI71=&$h9M(J^ zZEk6{#2B3~7#qh_WtdH2!_)_wKh19i#q4Xojcf|r>` zF-OUo^Guax;qwGOpePeM!T8U>kRm_JTl6`8?qWW_z5_(@oYEIEu^1y*RZy3vKa#?{ zWp?$iOTYimFEnCZa{DD1OYB!G~ukBTmtlF%W1+{+cp3t$c3@=GP@2uT)+%|cQJWV)j56Q%dcu`{y;IsA(Bit-U3Y+yv;p`_dAUZsI)rT?C zNS?+RV|Gg(m|n7z;Z}wllRWe|yNw>;reqcPv)jcRoct$-J7mb7JVl%}J-|6D`7wq& zA4GU=k_RnkucZfa{w0-xk~jNmhMSXrNBBD8FOwDZ+1D_^}0 zblT45Mm{X%ml*D5xHmbI;q?q}O#TPb+`#arWCz1Nlx=hJ3k>%%yft|-@i&tG_T+yd zd{Ym?yOSTpy4~!}4EK4BgGAawWr^SW5hzFe-siX(a`HR822y6o$CBPKH;3lZ~-G5Km{w$(gZ(i0BMC z8D0fWhF5`;;Z@*dc!rz|&ybVn$NE7{XUNIvAGLr#WQfs^4?;AD6eI2m3A#udpd zT%92&!>ho_@G5Y!U2X<`(ObwFa?;I^lc$(TnIR`1Wl(3x$;X&oogpVb$#Uil`7*!~ zO)N)Q6h%?(ys({=~sfG zrQgp2>)ZIZ$cz6u6Wk6#&%Tt9#ZSO0W83e8th3@z+FbXS@O=U5v`BrK7w4AqB|lBf z0|d{Cw~Yb=&y`m-1K1bidhx9IT(^d_l=~NBx}y2?2L#c3U0;|^Jp~HO;F7;D#t`Nz z%a@`8ICN~UUe0C)(a*`(!z*OM_))i(%83!@+=-^0s4q*o&l5-csQB0VmBUxTn-At~ zXDg$UFAP`=}iFK4?)L3QcJsD-1#@#Vwh z1LvI2al&yt>T@jTF;zqq-9IMNN^`)^%gXhnwn5huZ&Yf5qQ2v(Z7^!f|64QAdtyDn zgrb(o5_^xMc6b?9vwGZW>%ekZ9XHfN%6MbI_;#wiQyAONc-*G^p|}m`3Rps&K4YQQ zX^fTH+JIV?*;pXdUcEudob;(ZRG1T_ww9DM^fFpcPU^i(*VQE57al z*a9BqxFn`_>Nz{p_VOiQilJ`smcGbr%@tbPrwMW)DiX6b*92L9PqU!27sJAxGC9xB z*6KaX)>||#|EEj*qMib=77%;O8F7oq{r9e*TV>Vp?|X#skruJ6zb7Hs*<#7?cQtlf zo0#`MYR2Ah70_F~n;H2AaqQPqUO|{o?9{uC^*5CDgtGnydpfw0l=U}yfC^WRvKB(9 zY0B&`l-X;>ti74}{2G}ZK7>Dbn&mHA)4ss8 z_Omai{j|U0(!SsXZIyLLL5A0+wFO*kVY<{R>y9tz+3dj;2ek_OKIT@mJt6ihW=J-{50&{1$(a#dEYQ zz?Yok4ech=h$#FbqRi0vM=YMft!+#zo55e-t0DzzZv-P&~JUF=Ab!iU%* zKEw{K(jRCQAL1It>}wSt;+k!s-!QdZb99xeT_pFq(zdb|kNx$RCaR=3?Ly8ZAx2`?d^xlr`K+-=v$ zpT}uf%KB3GsK6vXxT69LhE}FO&8SxMim;s;Alyz3 zFl?s=7`9UbWM!uYC~@tgb<pon&AfFd@dAb7^yoOwS_5%tsngLZ0ws9d!EFGO{x2KdV~nwuxc z&E@8o7`9UbRG^(2Alyz3Fl?s=7`9Ub4BM#zhV9eC^xa#r=HN~ZFleU+7`9UbcOq=32EK!^e`=r;IrdKtd>3DWQv;8JRB&p5JkNA$ z;QL4?&OGYxT-NC+K+fZuZm?*LQv>8|rv@1IPYp2QpBfNZ?bHA>5u6(6fDpl{0e+K3 zYjR68J&J-%G!ba02F}6gBv`b@YAX3$gpL1C;Dg)vpFv||8~-0bxM_Z#8~;Czpl$sB z&j{Pb|JM<=jsIsQz~62BUxl!3{O?29HvZp=uxS#WcJxL4Zr-4^8rt9)K<( z92s~KpKRklg*(&6|M|M{|I;998~?dDbjFSU^L67tx!A^khHc|Nn^D{NPnm4vKXGj1 zKf~PkPxVPQehTtwHhS>s5{a@$08Xd;%>zL&sm}lt->2*gwHti7MD#%#q7)$hnjup4 zfzI&dtM-KjpIkh<1mEO>}nEC=OH2jve1-Ii&PA{!=!8<3D#4`WyehiZZ%_-k)IOKlAH0{xfJB|Cw{!_)mKD{$v4z z#Ui=1kIcaWX&(VSf`~xBY|yax2OIwhw~hZ2b{qd0PBc9Q7V-a$p!5Eaz4QJ^P`y7A zRPPUEI`{8^)sB&1vlqV-FX#OsH&AX^4c2NqmlKC=|o-cgnXNQkrKZo#{fAc7=x448EXqb=P z3(H8l(QEumQd>^KG6CrV3CYO@FZE~q^w26mu*t(sqZa;;W&k(G*t*V&AH5fiBc4T{ zU?$easLU6K1mxYRFU&jtD=2Ua`q~&nm^SIjf~#XaK*7vYH~(K9V~fcFJ*J*lo0n#Z zWak>8%q_5qrmukWB3@<}TP)E3l~YEq`uuicxKDnI9lr_Xx7hJ>2QL;oe(og0634N8 zJf+PJV?=pk&sVDDHKiYfD5wG)FF4ps2 z4-&_xPTjFgGW8y5@jfl(7!!`%$*z0q8(f|zmOvkIUjZwsl;cgNeIkoLcuwjIa;!TW zJ9|a`HyMPgRggDTwMSKsx7edJOnp$rc#EW<_LX4s4;rSLnf;}!$m?4K+AqomygmsA z%=5Qgp(>|uvCG0_SUG*GM`#~WPD03W`Wxf4^j%unD~ui;z#lxP^@aRg>KtRQ)avyW zG70qhN)HkQdKFsKYf9Wmf9N=+L@$5Dd{N2Xiv7&o3;g;CbDPp1EWBgUyB=pL+U^hYG|$xM8loQ@vFA3TA-g1>abOnlte9^Hx`H|1#_ z9;wO0FK8Z4-?0)01b&eO=)y`gv9DdxLtf*=-<}p$`1L(~$4;>kUM73R$9--fF-{Uv zQnMuS3&4+0J$6Uxel$3-6E(aiOn)hrNVpp>dBaf{4Bg2`FjUkjIUy5tTxb>fS?WO6;eql3EA zBV>kyU_oQ%RRT$z0~|2rix{)!#o}|4Ns@>mI{R#&9=GNvU3A8dd5oTA+_1(Ii|v@l z6mwFb+lr6p%tO+yi_zqDDh(vsa4`YrIsh0d;Jg%aGw(|LIlnPRIlz7fiCwS^NiRbK zd7%VA^&-a-#L!1yEqS@{m*z zdxfI}ZEy$k%76=_t3=BPto9WqL|QIVsU^}HkU(b}kjEG;D1nCgxC139Ax77<#5P>4 z*;slpEvsk#&u9Dx7_9DN8!v80KCb#GF2QY>KeZ8Q*0w+?R2Q>YljiCfzDgQk zq3ghl%7=!?>zWX2e7!dKihD^ekG0P`5WD`O!^wUrhOQZ2`#ciqP6CSSZaQ6jgUUsr zdMwBi?L`DXc}Muhuz<~?A8af(QLvgG2!eZ41LT^#Yz=EBlFw~{=oE3g%0Vf1_^FcA zjxyir)FQQRmt!uG-Hwn%_SB}Wk!Ei|f*f(Tk=1=h`vNjl^!`v3Uk|t(ibOS34?3-Y zJ;@wuf%<9?t{1I?N=S(7p=P=>ZKIP@KE*sLW(E~O=_t&3*|m4&r!PEe5;J;!~8 z2{Ss^eRWa%!lJe|Xw}dX0%4v{T&(!~5I&lp3&Jhhh1O_ZR9mm-TSJJpE@)BM(uEqb zIxSteIk>{{6}wsxB*k>ivFI2BTu5H2Mp!U$dmN;W{_4>-7K=^g3 zvp)BAnNK%le~#|*ko_U$3P+dbi0I0oTp3;E=(?|~>(O;>S4;St8nom1Bbs8+cg`?< z(e!5i|JD>u3mB!C)m%!eL5CeS%gciz+i)=p?TT#4FX-Ju>E$)Q@ zWzvPUDss>VnXQI7)|CB{@RyJ*?>A7=MYC=Ee?tRh!@r<;3XE?NZEkU`DJ%)1YIC9X zNC8Xzf}h^BEptZbS}V3lGPcnsXoWLE_jP43RtVV-J4H55p>$}R&S0J`wMLIVLlKo< zo8#x&xOQLgP}}L+xQ=??Tpd`$e(8O){$XYv?qBEEHe?qEGl@%dCUI%Fe`T}h&%Hu( z3^aIwu`aNdl0UK{?U_r$2F%(sSe6>;Kd1k#waSpalQOLR47O*s?ySpf-9=aY0E1#z z>_#7Cu_}yO)5e~uR~BQ8PHHCrZIB{tpER{+vY=|K_z%MOx;FrBv0NtE-&_4xKP%ow9)VsD3 z^W`Y-)x}J;a6H#KUMaVZ6b4Ly)nmEUBZcDlL~A~qoeo^vvZkf2wNT8Cj1T5KN$eu6 z1BGg(22vA|&#l$TQmz(>3aCXaO;(4;iXAOid+-{q&P=r81p%=#GMUC=ULl)n$uggn z>fm5*h(sg)s!<*h9Qy_ZEbZd*B)n{L;8QVWd#0Y63)xE`gE35O=%? zgh8c)-w_@wRnytAa!!+wT(P=(9Dj-mDNUBf$|MMdk7laFny^|JWeSjUAqX`#aC0te zm^oy1Fbo;YRkGzU0O7)DX+$ZPCI@o^<9Urh!tB^!E{qI$!qI`Tv5|0mWUQDE$A?D7 zGBpXZV_=n=2;-D9#e5BqO0`_5B{P~E9V<_U6JZ%-C|8q>fyrtvQ!Zy}(5mC$7EZ@P z3C9Nu*_wE+I6fNwjvsXnM@Pp7$7=}=jTf_FjO<9JQV9cw3bhGpuuGHKOsN8rs_<$# zlg$levd1)98G$K=X=QUGHR>)@Yju#%6~pK!a+zc0+)x-)nuIZqm1)VaqtaxhnyEVG z$XjK+6d0M-lJYq154hRf@r*MPn2T?UG!P?}rFCm$yfT0Qj1g4}0l2O+11Q&w*(K~7 z)ksm;3fT{%#6J;_&5M8W!-uvuWerkhd{+BtLA9wfHO|+7ch$ z*^}>Cba^*=Vd!;XuT%ZZRv{fnb^(tsi4*cKQ$4=6BU2u29T+c+46e=LNIm`X6quY%w03vT6aI#-TmrcFYK28r`qL1s=fQCx)<*1Uf8;!_3>_b z+B$aix97(@^W*Ix(y)(z#vQr!sgB`=sk`sm-5sC&oxVk>&iL%=qI`G9P4a!`Os&3$ zXZBAm(j;9o*G~&&a*yn_ zf2Dh>qdPxr3Tu0OJ*lSF?rOg)wI*+^VEbJ^>zMUCn1U+WcXjW|r{ZU~jPH6d)zE;3 z=Uo(ggO`54;o(3#GN%4#@exX$$`4H9u70e^52oVU5)CSq*lDLp&Ah zo=UZ^AK%cuUM!V$CAOpO*W2Q^b{$ByZ&=ut>P~6rx^rf0d{$Sy+Jyzbc&RIXURNqU zujStUzA6z)KaH=g8KfeXNR{l@Br-tw9NB0q* z+qLV7!h?(Q3pea~_St9Gr#kb}>CD_Yvu#&@zJK_xj{JHCj^DL5K5Gcw7HVjFcU!81 zG4xgW;m6m+XAe16Z3_CVi?*VJQ*wtvZrAQ{Bs+WOvrY3-YtU)+509@I7vkgK1IZjN zS?^lkG_R>`yraJ<)g1_wziWJo&-&x-{QtWu-kSO#oJ=7saDpFhM8UX8}FLg{*y=UMm^Q7M*rK^-`d@cR_Cs!^GN{%@z(BCH>z=e`yPPX?&?o<-0Wz#0nmz1);_gK ziZz9l0b0M%o9f8>V}&VGu*TSTdL6fEIg`TqRzZioRs zU+&R?GB=|A^PI=Uz=yUj%eR=Og4Sln}@!$UlM0%6{6>ev>DdN|C{O21UUG~`0 zO=n-e`JpQxUUGyerw&4hKmJ-+4A1yQe;+U4w+)E`x#7Tt2=o&DG>>gQuKw>{MK zaAJ_md|t*U`h$$UbJ`xA`PdAk+xSr90V+v(8UB51l;5Wu-`+Vrk2XD)kaC!ro{oA*74g%lVFe z^mozE0z6#5n2)2F0+=(x?qCk|+wip5mC^ic2F+6Yw)5Ma-Rt=dLej#cc_M5^s4eeFD1b<{Y9^a@10Y6bk1XE zqnP5?!~_!=#$)-3-aH@V`$!G{qnkC|r}X6oat_ttMX%Kl=8^?hXizPso@vB+$50e!?k!fXu+KH%g5@AR)5Q9 z^a_}OZ!KQ*;+X(1Xvdh3Z{Da31G}*HLCwO-EqWhMK(Aq=WW>pB_|Y4Kf_yiW!}yl3 z=v77mzRGbH=!g49meZX$31YK`CmessHDu+)@6q!Qf!tcJ$)9-9lNSNr^?o@KFM9GL zkaMI4FM8gjch1pA&w4D0>UKczs3+2ko`>n3b7$<)xsRO##D+~FMH&9lqnc4Ws}uBR zwe`*N6+J~1;D4}2-snN508hsaKK}vbe_CJY_k4M^0y((xkDmSt^cC1E^$3SK(2PUWS?i{q8tV23v_+FQk5i-B=0r+R5_R49&l_#;UMb`-I@U_n~%+FK^F>0P}9n%iC0rK{M%lE%J;Y_SToL)^ll2#$}C>6_e$ zyzi5(F8Wo4>aA3A*xxi(RME2Ihq3>GCvmY1kj55~QhBTdu9M7MNi?K1r8uxek><}t_DycW_KmQt zJBou?<;Er{lNK3tLZ#EX3|{nH4zT%RJcmLmXGU`(33OR0+?w-(a?%`#IjCi%hsH-n zTwxuY1gD7`Gvy-o)_97`m=>OzHzRAczSJ<}%oX zlVwqJx09EKC1UGQFSj10bEBo|WLh^cd1*gC`V=vTLIXzgwMfaAiJ+iM!#M@EC zFP;qyvF@BG!@_lg6XZEGT!!+tvfPn(6c1??oC!Ny?agL$mC7F3>s3Mh&kSmEDH73i ziQ3sac0DS`K~UdZV0N&l$|=e0LP!thCaBzUAv?_NTA4EJ4yiX$u?KRn#|lbtHxya* z3WGP~ii5BbwL%!FBX|(|*>*r!F>a5lmR!NAS@ktf2f6o%xhdyHGX>Ozvd4<#9WPXz zHT6wup0qe9#G&$d?qIb%j^rD7g@%fS3^X=~ zeaIbZ*XCRa+LfG}UcqgsoI}MeWRHRGIIEdUbN~@-;xo+6TTpurh+(QcD5M(-xf7~_ zY#JJJJIbhl4AhB@gPAhyFjVs-cQ8{gQ<*Gg(`W&`d|^cPdimU47s56=gI^+rgfQD$ znKX~uEVr*k4TIFhOnFl3gKKVKtHao)Q^;B+W1FYVGKd}GhPI8^&=zj?Hp<>T!-r-o zB^aaB$zfz@B&VOWWvaq5D%RhXGS%#GMJ(6LQx~{mKWP8L~tM3`~N{?n+`Qn{V#uP+Y3JO+1j)064}B_q2OhlbG8 zI4tz_tXpH{Efc7PY>}CDYXDeLZo59V%R#dPxLMzvzf_+nFgd$Vj6 zXkI-!f_gNP!)C0(LZ*m#W}whLQd-;DygD!c?_1NndS9h^^-yjEEdh4==2q*lVzrE7 zRpGqH_$sGCSJ{fUX>jsJ9rd$(dqplHcaM5Md@OT=&RU_y8cv}IAEr?V!)%Q z(0K-p(-v$JWz%4Wj2eS&xfPgKPR1tu)Hk^sn^QFxFgc1QoLxnwF<~Dp&^GCoQN=_% zr3f@}wtn6T4%1NO&{1-HfDQ=%qlG}rk>$urM-5wwgC%yty@P{g^c_r1D+@K%B{T!_Q!FZR1@rzMMcAYy)u-;T7pr;P$3`ICTxuxSgl;NQAqbzZe;(arNmlX z%waQ;wkCVWs%UOUa@_ov8&va`vgV+009NMO9%Lnt4iWi1j(WlYg$~Km(u{MU0fN?+ z`{T`@8-U( zH^>-s5X~JJu{VGSW3@dkhwhaU_GeewmT(A;Mh3Q_h0K1wk~yA}ftd$fs~IS;ft=|K zBFOYW%Ut_c>;C#Cuh&iIN)V%ARiaaOb_D&nGZu%4E~Z!+fp*kfkgd(!!LCERbSZ;* zj!TSD`-ubFHumlq&E#`3)=cAyF&%TUv3F(1z0Gboz)pQHMg~fn{X#y&8n_uXMFoV0 z+=vcpLmA-XCRf_*2oZHg1jGq66fD$S9wvJ{=Y__3QaAmvhBj$?WUo2r4e8AoG;+}8 zwB+(8ri_wPdDy7q->AyPL0=xmrA5UlpeZ3&?X%fRVNa$wju~DRlcchzd)q58agGUC z-_vQ1Ol}>M>cl)FuIicr z9Q8QvjgDZ9oXJaDggR)oa?|!*-T*qdP13-O>yT2WQ=F8B2Z(4$${Cx_`LkBmFU-F< zQ-Jnu zpQ3#*=7k_=p2boz1jPRyYX^$bV>cj`9Q_4~Gs7V_2LBxRtLY%R9~zd3Kcuu~Av`$Q zG+svgE{xC*;EJg6ToD=4Zo$gs>G^)Aa^`hhNs0B+q(T=KExR;)j5h*UJV4@7KZ#2UO2ATQt{`h;K&ifL?=UR9|LQ^8iO$O%8(6)QSen=fs9%QH-)gaB1pz zl^5C`dXTc=b`bfbOQI6)F0`97OQOl~bdVf}(uoCRrFn|?V62F_G*DQ(Fl&(!76&2h zw$&Sg)OUikxWpe zmC+nkbZdWDU{N#cq*NYlg$l)?F)!%Er5I5_r7^e?*w+rD<1AzTEb`!PJJC~qX5u*WjT;R1BGcx%@{>p$>Nu%d&=1mb1iLIFnni0LP1hJ zp^uF?m8rR))5)3oM)A6&IR^<`CQyNPl(4YCiIyJBOpb^<6yWec32acT;AB>0&QN-K z(>wMa+OloS0SF-36wM+9MjhqQ95385(cf3a5L_lH;%t^g@ccO4o+u1L!yqDa7cvL+ zw2qHmbHTZ`Uu5JJR(p-l70jZuMrobVlffm+5heSweW(#gc0#SlA6t*Q788a?3>^Gi z3i^lYjeRk*(bL#!7C^%!A?$#`)Se!6jB3$KA{)KsJO)r0(aM?}09)O}C?IeM4sKMz zz>HBgP65u~H;Ym=TgtL%9(|qub-)0&Y}t}_WycY`te)*rFO&@nkk*E@=%%Ia!5)e6=3dIb za4=UcWJX||94-d#E>v0b|54*Mm2{mtdNk;bLZ>(K0It?4WC1hWgK#2>MN5l=CS`&v zMw$?l{{!d=wej<;m6zUz=7@r~@t`hg9NMvG%f9OmabUn!T6JWtApN6mlqHRl-^1Yi zIm+D|93LIU@(yG)=NXQwg9=oxT?4BFzPctBG-N(!b0m~_aS)A+7K6@0A)pgt>o`3i zHfTC=XsntU*{z*>`nagvDje9M^)KK!3_Po$*3&Nzz~Dl_{LkZQWXN_LLhn1c<8Yc2 zH#o|<)_ww$Pv@6)t+ZGL%omDL4sI4S=Rcgc=l5PPOj+vp>%Jhj09L^{J%z?&- zDDZG$(3e-1{|mztv>gnGaCm^-mZs-g$iI4BfcJKUuJ54L4Ph;J*vqGn6~|5#seUwx za0|%N3+1B(#1qdtFMF^hN;nab1#!mWSfO?pX!WE7X<^U>-M)ER7-kb(rlOY=oq=n6 zgVTsPjHKwT<*6wnDDy{5P_TqrBOAuGMHv{>w04?wcnr${s%SZZAv13Mq)HT`(wBvy zFsT8@d~^b?Cyu2&^8_hk0UiW;ZABfZIdqlexlG6n0r_-cEIka@En=v6Wwcaf6GN$? z6Geq|YrB;^w5((KVObH=!WsVHc5>=^#K z180L1n17){aj}}tjlr>SMrBMON`{y17zZc5>=@h7#Nm2z`pdhN)Ptx^2?+yaQuvVl z2{<*Jj;#G6Va)ki?t$&nh_Gj10_{@CgU^&-udfX3!7a8ld$de}GEgT_@)&W*D8|EO z=+=Fg3aA%c(&h3!tn`>$jMKD|KPEl_I~B4XvO&N&Z_8CAR}l$C2UXxQ0S7k43YX_G zbr?zGqV@n?jf2>sGd+P)_@PX0N<3s>{4!QzEA7?a$yCItkP)|ctLok{ug`+p}~(9Co0%SB^byk%0PvD0M5mC!KbwIxF*cLNE&(YY1w= zfV$iy5aw{mS=?}7c@})$2W2hzk^`ybS?u)yF-)3aBR}G!?6=?@KB&)vMyS5!J?s)Z z86-UIg3ksZ6YAvv6cvg;@5ARE_lBk{xXMqJwP2?MX`U@+8H;(-RBGgTClnvnHWy6# zpgs#4q565g%q3VFBs2-u1t8@U{JqU(>|~HZ3qJ3IvKD;Ffn1@wnB}5Q295l~KCS&0 zeB1~1S!&w^oE(;LV6j`=cQh&~H;`k+AzcKM(_3l96BY29v<`!vr->9b&vYML<) z#xUr!DoC>)`HJFkZQ_euLp>M+B9V3@AOgjTkz+6P@e^jP<>N)(k1wOknlwp zd^rF`B^bsf0DNw9Z)VU1=liL07F_H=nn8;ghrQE}+c zVn?7YAY?()n5sCGMuL{G(@(hHg5iYItJXS~V3VJ)Z?_8`3P4eIHtbsFKA@~Dc*F-~ zEogO4MYos@-Rrc3Mt+q~Yrh5Ep<-Hx1&vUB>#(8a7yN-}p9SBj8FgAL9%S2srrnq~ z6xD>0f66Dn--56EpqvGbhl*;kw|vC?77RG%q8y)g*x&S1nMQp~YY^TEtk{Ahjfw@W zTd?XtT09o}=>XBE>jFj|b253@6T9F!KB&)vMyP)AEOrT21qrvi;GqC?#0B#K$mE;| zKv6lDxlcVl%Crg>MX4{OW#I{*P@e_o`h8i}g7Y0n^=YxT05K}3k^huWe!m63;Dh=s zXoTvE>Nz$^pIx6xfL~;B#WiiH{jy{8O`qK~O+``avp3;32fQr!gb&JE@JR=X{iDnu?;-XYUi{*+M=B zuzQt1)uIr)P}#1`u&b2qx(rKa@8@0MMfZNmy4owGbEw_5nwp8WWF7>ID(o8#>+Mt}l8 z#~c3ebj8K-6P2a9@N>P1y72S7JL|&dc}MT4NB?~9^}6s2yq7*w5C1~%v^jS|*@%1i zm76+G9KV)b?}>YL3JZvF`K_+$DdOIx(}9A|Q@hijxOe$XZ5&Np0hlw&j$bVGtl`q;P^qO zY4&6JdeXH|M(4W-FkeylKRWnp5qv#IJl%fIfkH{A+1=w~^p^l0^8&jvt5Z7D?Y~p- zr^D&eB>mwCeWf$Ke&vPEbhzRN@|c|W0RIQs!xIs{4?20G_ZB_w;L-bue$Bz7_YeJ! zgGcWlGCjW%si*vDyqI@^XYl6{=VSOM?{)wMd#^ftgWJgWuN-_nGmfW6{u-Uj&@$CN ze+RUB`cb}TdvB|O`H9Tl>^>U%@IB#sq4$inGj7~I18>^NGxw`Jh{!X?;2(7W_rc21 zr{fqX{4%fP2GPd%QqcK9@;}209(qil6HY(&$?|3Qju@Onf7)mCUJ#>mI6`N&pDzUP z;1~Sl@$>ajg*&h--^;wC&f#J3Yk>BH^7V$zvs?m`-|qJ?Iwt3n5jlHA&I>$)n_X-d z_=Vm}PR;>Gh|^En=QECuiJNio=N;VW-0bMIxnIAvVMGOR>T|Jk0l)0%|D=OQ@8vk@ z=)V%7{|gR3djH0+I{eon_@8t5(R(;va`fq6PBd&Mw z==~2j11{}Mq+FE$1)lxRv?K59?IiA;2tQ})f0fSkabQ*WPKPW0^#1xIfL-){98@OuESNB>4gCwiYq_6&56JN)SVHa`jYxoG#y ze)?P{eg^R7aE1&Hd!inq_Z$7HqaVG8?^(d>$^VkTr;lg8=IBK4C3@Y#tzR~u>vtSH zdXLlhg#PploQsCKo;(ZB0Ph5R;dC8kse%40(uLC|8 z?b6$>zFWed7Wf6z<~t7o&T@&~NA&L;JbLfV(+(cJ-|s699=&(%YYra0&+jh;K7GFM zEx_x^|EAzuZi4qrbh!2O$;Fs@@RfkqE62nc@UJ@qeE%8f3gT>^^b^ zIu8ndkWUN!@)_V?I0O7Y0?vAB{ifB^KM{PiOY4>L8?bvmuK`|9KY#1+w@2>b`o4ol z?>S7M-=$qe?=?IR@OtzYIQ-~6mMsn*y|b*vTf~H%ks{{~QoHwJ^qx zoB>{Pe53ceeF*S+`MUQE@Q*n<(fjW{De&p?eEtmZ7ag7G{ak2|KtpG zzU}aB-e>duw;eosPZ+n5)T>|T0bWlJDZz)mxnG7qRmU9M#(Ph=q}4OfxeM@m?a~8|&ZzPo1y9>`&#KXLfcdyxOe!K3$ZzT@E0`&Q3(mpNhbwzV ze-x@UsHN#gs`V}pcT6*U(+v)Y$o(Lj^#rG#F?3No(5X>5_v2{T7yq~cFM?^gs%;Gp zr;ZOXu+~mAAhPzFV8=dkraS%h6hKSoHP@`OJ?OSCUbld^T-Dxjl^p?Rq?0?>5m?i% zOxoA9MK;?98^L9-x}smT)@`v4HnHo6wO3EydmT!5^;Pb3XqUfau6^BFC&{|2xlLTs z_~-P4D0ipBR@|0#l`Ys59>~i5-l0wF`oZ6kuF=T$aPCTnV%O1rwjSu+vn9P{?`D{y z+NFgDE7-#>=O?`M=Kj6CdvHNiI(=x*Cd1ygd*8<1-RXT>w;tSbD1E4RBd+MP^QIJl z2UGAbTbk_Y*@jEcHl;gS+OPI8^t_OsE(%{4fD;ec;9oC^9AcCl$!QHaxWt2qx?MkX z-08;9#YN$*^*D%xgCI4edCtTgtbiu{BQfb6hxXt|iB(PHniUgQ6yj8uvu{zVN~4FJ z-5o3G^Z@VJKQ%ZkX5W(h!&QDE%b|Hyr5twxNoOW#SzL(q z2Z!D^24}&Y@FXYa>|jNH!)(_;rPKLQUa{qDkFqKbLqT;B%f%TSWI-)4d^QnA7CK!> z3t(a~*rD9mP)$a09cZNn;2&rSj>xbDi0IH|1>Fa4`>?|~I0By;tf3Y;b?VO4$PF)) z%WpKHsK|*|9;dG%1u5KdBATs#0Ebx{8269!@G@80r4ulGi(#l%yCTvf)jkC&G1W7V z+Ce^;1sZI$Ik<0jNOWE!l5Y>&g4>lK4i2?x`KX0x7@BZrIe9HWdgpQ6nx}&XIe`i- z1{st_hJx7fI7%j`1PR0y1_j>7W@kRfD`G&Z4LDL>8fhqe|feQE8lZ9LrvF z4bDDiGsRjPFRq@r^V+skPB8LV6Ym1E^JUUZ*KMSkS3P40BjtS~ zHM(c<1U1kd6VyttVCiYSngfD0X9-=dY*HW1r_Y@y;9el9v+9B+|9@oE^o#N^VFmchv) zQhM^n!9Mxo?iZSA)I zpbP6A%q{}O_&B(5!9g9_(6s1Z9OOS^Yf0$bN{B2*CyTL;0D;23ev>n{CkRZeO_$!%+4~j8|4u`6A58Ct_a*`n6#3M5zhZoq4MgaP;=YG( zQ5ew|Hz@R5H15z7#XTE z#PiL?E}?rls=gfUE`2SQ=RMr7m~TcDZs`rb>kR2n-mI9<8=`wh$cY>g6Bo?BW19X| z*HNSZy$k;={|=0u%Yp4mLicBx+t=5@&N=ib)c`>IG}{lLo_EvFDdx^df=JZ+KU?|W A1ONa4 diff --git a/lcd4linux/src/armv7a/Makefile.am b/lcd4linux/src/armv7a/Makefile.am deleted file mode 100644 index 98afa29..0000000 --- a/lcd4linux/src/armv7a/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -installdir = $(libdir)/enigma2/python/Plugins/Extensions/LCD4linux - -install_DATA = dpflib.so diff --git a/lcd4linux/src/armv7a/dpflib.so b/lcd4linux/src/armv7a/dpflib.so deleted file mode 100644 index caeedf10348c9d919f8a9a2ebcfcf6c707fce4d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79608 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%0A;N~tEJyck{|Id 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

vG-3v5B7u9GoxtpQ$02!7GLxr>99P#pW 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 B`1}9> diff --git a/lcd4linux/src/mips/Makefile.am b/lcd4linux/src/mips/Makefile.am deleted file mode 100644 index 98afa29..0000000 --- a/lcd4linux/src/mips/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -installdir = $(libdir)/enigma2/python/Plugins/Extensions/LCD4linux - -install_DATA = dpflib.so diff --git a/lcd4linux/src/mips/dpflib.so b/lcd4linux/src/mips/dpflib.so deleted file mode 100644 index 65816c3b57cdbf2f2be383522e5ea6f1d41a5dd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86184 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 ZXK_<57BeU=1t%?Aib2{{{hGjq;dcN diff --git a/lcd4linux/src/sh4/Makefile.am b/lcd4linux/src/sh4/Makefile.am deleted file mode 100644 index 98afa29..0000000 --- a/lcd4linux/src/sh4/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -installdir = $(libdir)/enigma2/python/Plugins/Extensions/LCD4linux - -install_DATA = dpflib.so diff --git a/lcd4linux/src/sh4/dpflib.so b/lcd4linux/src/sh4/dpflib.so deleted file mode 100644 index 11a67c69b99429f5d5dae784aba4108c232cdef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83735 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 From 5a82e2cb442679eb83c719c1a693211bc1a4fc38 Mon Sep 17 00:00:00 2001 From: oe-alliance python bot Date: Thu, 2 Apr 2026 13:40:38 +0000 Subject: [PATCH 04/22] PEP8 --- lcd4linux/src/Photoframe.py | 6 ++--- lcd4linux/src/WebConfigSite.py | 22 +++++++++---------- lcd4linux/src/WebSite.py | 2 +- lcd4linux/src/dpf.py | 2 +- lcd4linux/src/ping.py | 30 ++++++++++++------------- lcd4linux/src/plugin.py | 40 +++++++++++++++++----------------- lcd4linux/src/utils.py | 22 +++++++++---------- 7 files changed, 62 insertions(+), 62 deletions(-) diff --git a/lcd4linux/src/Photoframe.py b/lcd4linux/src/Photoframe.py index f79fe7b..023ecfa 100644 --- a/lcd4linux/src/Photoframe.py +++ b/lcd4linux/src/Photoframe.py @@ -162,9 +162,9 @@ def frame_init(dev): def frame_switch(dev): # Switch device from Mass Storage to Mini Monitor -# CTRL_TYPE_VENDOR = (2 << 5) -# CTRL_IN = 0x80 -# CTRL_RECIPIENT_DEVICE = 0 +# CTRL_TYPE_VENDOR = (2 << 5) +# CTRL_IN = 0x80 +# CTRL_RECIPIENT_DEVICE = 0 try: sleep(0.5) # s = "\x00" * 251 diff --git a/lcd4linux/src/WebConfigSite.py b/lcd4linux/src/WebConfigSite.py index b244d0e..d3b79a0 100644 --- a/lcd4linux/src/WebConfigSite.py +++ b/lcd4linux/src/WebConfigSite.py @@ -334,17 +334,17 @@ def action(self, req): if _a.find(".") > 0: val = req.args.get(a, "")[0] val = ensure_str(val) -#ConfigSelection +# ConfigSelection ConfObj = eval(_a) if isinstance(ConfObj, ConfigSelection): ConfObj.value = val else: -#ConfigYesNo +# ConfigYesNo if isinstance(ConfObj, ConfigYesNo): val = req.args.get(a, "") ConfObj.value = True if len(val) == 2 else False else: -#ConfigText +# ConfigText if isinstance(ConfObj, ConfigText): V = _l(val) try: @@ -353,12 +353,12 @@ def action(self, req): L4log("WebIF Error: Parse Text") ConfObj.value = V else: -#ConfigSlider +# ConfigSlider if isinstance(ConfObj, ConfigSlider): if val.isdigit(): ConfObj.value = val else: -#ConfigClock +# ConfigClock if isinstance(ConfObj, ConfigClock): t = val.split(":") if len(t) == 2 and t[0].isdigit() and t[1].isdigit(): @@ -411,7 +411,7 @@ def action(self, req): if Cfritz: rmFile(PICfritz) if Cwetter: -# resetWetter(None) # action after changing weather parameters +# resetWetter(None) # action after changing weather parameters pass if Cpicon: if len(LCD4linux.PiconCache.value) > 2: @@ -600,7 +600,7 @@ def action(self, req): if AktCode == 0: AktCode = LL[3] Curr = ConfObj.value -#ConfigSelection +# ConfigSelection html += "\n" if isinstance(ConfObj, ConfigSelection): html += "%s\n" % _l(_(LL[1])) @@ -614,7 +614,7 @@ def action(self, req): html += "\n" html += "\n" else: -#ConfigYesNo +# ConfigYesNo if isinstance(ConfObj, ConfigYesNo): html += "%s\n" % _l(_(LL[1])) Aktiv = "checked" if Curr else "" @@ -622,13 +622,13 @@ def action(self, req): html += "" % (Conf, "checked", Aktiv) html += "\n" else: -#ConfigText +# ConfigText if isinstance(ConfObj, ConfigText): html += "%s\n" % _l(_(LL[1])) html += "" % (Conf, _l(Curr)) if isinstance(ConfObj, ConfigPassword) else "" % (Conf, _l(Curr)) html += "\n" else: -#ConfigSlider +# ConfigSlider if isinstance(ConfObj, ConfigSlider): Min = ConfObj.min Max = ConfObj.max @@ -636,7 +636,7 @@ def action(self, req): html += "" % (Conf, Curr) html += "\n" else: -#ConfigClock +# ConfigClock if isinstance(ConfObj, ConfigClock): html += "%s\n" % _l(_(LL[1])) html += "" % (Conf, Curr[0], Curr[1]) diff --git a/lcd4linux/src/WebSite.py b/lcd4linux/src/WebSite.py index 6e4dc5b..f736c28 100644 --- a/lcd4linux/src/WebSite.py +++ b/lcd4linux/src/WebSite.py @@ -17,7 +17,7 @@ def __init__(self): def render(self, req): req.setHeader('Content-type', 'text/html') req.setHeader('charset', 'UTF-8') -# rendering server response +# rendering server response w = "" command = req.args.get(b"width", None) if command is not None: diff --git a/lcd4linux/src/dpf.py b/lcd4linux/src/dpf.py index ef692d2..6cb9be9 100644 --- a/lcd4linux/src/dpf.py +++ b/lcd4linux/src/dpf.py @@ -37,7 +37,7 @@ def showImage(dev, image): def open(usb): try: d = dpflib.open(usb) -# d.setProperty(PROPERTY_ORIENTATION, 1) +# d.setProperty(PROPERTY_ORIENTATION, 1) print("[LCD4linux] open %s" % usb) except Exception: d = None diff --git a/lcd4linux/src/ping.py b/lcd4linux/src/ping.py index c3ed05e..25014ee 100644 --- a/lcd4linux/src/ping.py +++ b/lcd4linux/src/ping.py @@ -208,7 +208,7 @@ =========================================================================== """ -#=============================================================================# +# =============================================================================# import argparse import os import sys @@ -231,7 +231,7 @@ PACKET_SIZE = 64 WAIT_TIMEOUT = 3000 -#=============================================================================# +# =============================================================================# # ICMP parameters ICMP_ECHOREPLY = 0 # Echo reply (per RFC792) @@ -254,7 +254,7 @@ class MyStats: myStats = MyStats # NOT Used globally anymore. -#=============================================================================# +# =============================================================================# def checksum(source_string): @@ -303,7 +303,7 @@ def checksum(source_string): return answer -#=============================================================================# +# =============================================================================# def do_one(myStats, destIP, hostname, timeout, mySeqNumber, packet_size, quiet=False): @@ -350,14 +350,14 @@ def do_one(myStats, destIP, hostname, timeout, mySeqNumber, packet_size, quiet=F print("Request timed out.") return delay -#=============================================================================# +# =============================================================================# def send_one_ping(mySocket, destIP, myID, mySeqNumber, packet_size): """ Send one ping to the given >destIP<. """ - #destIP = socket.gethostbyname(destIP) + # destIP = socket.gethostbyname(destIP) # Header is type (8), code (8), checksum (16), id (16), sequence (16) # (packet_size - 8) - Remove header size from packet size @@ -380,7 +380,7 @@ def send_one_ping(mySocket, destIP, myID, mySeqNumber, packet_size): else: for i in range(startVal, startVal + (packet_size - 8)): padBytes += [(i & 0xff)] # Keep chars in the 0-255 range - #data = bytes(padBytes) + # data = bytes(padBytes) data = bytearray(padBytes) # Calculate the checksum on the data and the dummy header. @@ -404,7 +404,7 @@ def send_one_ping(mySocket, destIP, myID, mySeqNumber, packet_size): return sendTime -#=============================================================================# +# =============================================================================# def receive_one_ping(mySocket, myID, timeout): @@ -439,14 +439,14 @@ def receive_one_ping(mySocket, myID, timeout): if icmpPacketID == myID: # Our packet dataSize = len(recPacket) - 28 - #print (len(recPacket.encode())) + # print (len(recPacket.encode())) return timeReceived, (dataSize + 8), iphSrcIP, icmpSeqNumber, iphTTL timeLeft = timeLeft - howLongInSelect if timeLeft <= 0: return None, 0, 0, 0, 0 -#=============================================================================# +# =============================================================================# def dump_stats(myStats): @@ -469,18 +469,18 @@ def dump_stats(myStats): print("") -#=============================================================================# +# =============================================================================# def signal_handler(signum, frame): """ Handle exit via signals """ - #dump_stats() + # dump_stats() print("\n(Terminated with signal %d)\n" % (signum)) sys.exit(0) -#=============================================================================# +# =============================================================================# def verbose_ping(hostname, timeout=WAIT_TIMEOUT, count=NUM_PACKETS, @@ -522,7 +522,7 @@ def verbose_ping(hostname, timeout=WAIT_TIMEOUT, count=NUM_PACKETS, dump_stats(myStats) -#=============================================================================# +# =============================================================================# def quiet_ping(hostname, timeout=WAIT_TIMEOUT, count=NUM_PACKETS, packet_size=PACKET_SIZE, path_finder=False): @@ -568,7 +568,7 @@ def quiet_ping(hostname, timeout=WAIT_TIMEOUT, count=NUM_PACKETS, packet_size=PA # return tuple(max_rtt, min_rtt, avrg_rtt, percent_lost) return myStats.maxTime, myStats.minTime, myStats.avrgTime, myStats.fracLoss -#=============================================================================# +# =============================================================================# def main(): diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index eb38dd3..b7dc6e5 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -5152,7 +5152,7 @@ def MailDecode(Sdecode): try: if mailserver is not None: mailserver.select("inbox") -# typ, data = mailserver.search(None, '(SINCE "{date}")'.format(date=Date)) +# typ, data = mailserver.search(None, '(SINCE "{date}")'.format(date=Date)) if str(LCD4linux.MailIMAPDays.value) == "0": typ, data = mailserver.search(None, 'ALL') else: @@ -5745,8 +5745,8 @@ def SetList(self): self.list1.append(getConfigListEntry(_("- Color"), LCD4linux.PopupColor)) self.list1.append(getConfigListEntry(_("- Background Color"), LCD4linux.PopupBackColor)) self.list1.append(getConfigListEntry(_("- Font"), LCD4linux.PopupFont)) -# if LCD4linux.LCDType1.value[0] == "4" or LCD4linux.LCDType2.value[0] == "4": -# self.list1.append(getConfigListEntry(_("Internal TFT Active"), LCD4linux.LCDTFT)) +# if LCD4linux.LCDType1.value[0] == "4" or LCD4linux.LCDType2.value[0] == "4": +# self.list1.append(getConfigListEntry(_("Internal TFT Active"), LCD4linux.LCDTFT)) self.list1.append(getConfigListEntry(_("Active Screen"), LCD4linux.ScreenActive)) self.list1.append(getConfigListEntry(_("Screen Switch Select - Screen"), LCD4linux.ScreenSwitch)) self.list1.append(getConfigListEntry(_("Screen Default after mode change - Screen"), LCD4linux.ScreenDefault)) @@ -5766,9 +5766,9 @@ def SetList(self): self.list1.append(getConfigListEntry(_("Picture Sort"), LCD4linux.BilderSort)) self.list1.append(getConfigListEntry(_("Picture Directory Recursive"), LCD4linux.BilderRecursiv)) self.list1.append(getConfigListEntry(_("Picture Quality for Resizing"), LCD4linux.BilderQuality)) -# self.list1.append(getConfigListEntry(_("Picture JPEG-Quality [%]"), LCD4linux.BilderJPEG)) +# self.list1.append(getConfigListEntry(_("Picture JPEG-Quality [%]"), LCD4linux.BilderJPEG)) self.list1.append(getConfigListEntry(_("Picture Quick Update Time [s]"), LCD4linux.BilderQuick)) -# self.list1.append(getConfigListEntry(_("Picture Quick JPEG-Quality [%]"), LCD4linux.BilderJPEGQuick)) +# self.list1.append(getConfigListEntry(_("Picture Quick JPEG-Quality [%]"), LCD4linux.BilderJPEGQuick)) self.list1.append(getConfigListEntry(_("Picture Type [only Picture]"), LCD4linux.BilderTyp)) self.list1.append(getConfigListEntry(_("Background-Picture Type"), LCD4linux.BilderBackground)) self.list1.append(getConfigListEntry(_("Weather API"), LCD4linux.WetterApi)) @@ -5899,7 +5899,7 @@ def SetList(self): self.list1.append(getConfigListEntry(_("MJPEG Stream LCD 3 enable"), LCD4linux.MJPEGenable3)) self.list1.append(getConfigListEntry(_("MJPEG Stream LCD 3 Port"), LCD4linux.MJPEGport3)) self.list1.append(getConfigListEntry(_("MJPEG Stream LCD 3 Virtual Brightness"), LCD4linux.MJPEGvirtbri3)) -# self.list1.append(getConfigListEntry(_("MJPEG Boundary Mode"), LCD4linux.MJPEGMode)) +# self.list1.append(getConfigListEntry(_("MJPEG Boundary Mode"), LCD4linux.MJPEGMode)) self.list1.append(getConfigListEntry(_("MJPEG Cycle"), LCD4linux.MJPEGCycle)) self.list1.append(getConfigListEntry(_("MJPEG Restart on Error"), LCD4linux.MJPEGRestart)) self.list1.append(getConfigListEntry(_("MJPEG Header Mode"), LCD4linux.MJPEGHeader)) @@ -8013,8 +8013,8 @@ def fileSelected(self, dir, dir1): LCD4linux.MPTextFile.value = dirdir elif sel == LCD4linux.MPCoverFile: LCD4linux.MPCoverFile.value = dirdir -# elif sel == LCD4linux.MPCoverFile2: -# LCD4linux.MPCoverFile2.value = dirdir +# elif sel == LCD4linux.MPCoverFile2: +# LCD4linux.MPCoverFile2.value = dirdir elif sel == LCD4linux.BildFile: LCD4linux.BildFile.value = dirdir elif sel == LCD4linux.Bild2File: @@ -8494,7 +8494,7 @@ def __init__(self, session): self.ExternalIP = getExternalIP() self.timerlist = "" self.pluginlist = "" -# self.onShow.append(self.ServiceChange) +# self.onShow.append(self.ServiceChange) config.misc.standbyCounter.addNotifier(self.standbyQuery, initial_call=False) getBilder() self.Temp = GetTempSensor() @@ -8624,10 +8624,10 @@ def getSonos(self): return if self.SonosSoCo is not None: cti = self.SonosSoCo.get_current_transport_info() -# if LCD4linux.SonosON.value == True: -# cti = {u'current_transport_status': 'OK', u'current_transport_state': 'PLAYING', u'current_transport_speed': '1'} -# else: -# cti = {u'current_transport_status': 'OK', u'current_transport_state': 'STOPPED', u'current_transport_speed': '1'} +# if LCD4linux.SonosON.value == True: +# cti = {u'current_transport_status': 'OK', u'current_transport_state': 'PLAYING', u'current_transport_speed': '1'} +# else: +# cti = {u'current_transport_status': 'OK', u'current_transport_state': 'STOPPED', u'current_transport_speed': '1'} self.SonosInfo = cti.get("current_transport_state", "STOPPED") if self.SonosInfo != "PLAYING" or self.SonosSoCo.is_playing_tv: if self.SonosRunning: @@ -8640,7 +8640,7 @@ def getSonos(self): else: self.SonosTrack = self.SonosSoCo.get_current_track_info() self.Lvol = self.SonosSoCo.volume -# self.SonosTrack = {u'album': 'Sehnsucht', u'artist': 'Rammstein', u'title': 'Eifersucht', u'uri': 'x-sonos-spotify:spotify%3atrack%3a4Ugp6Wu4hVXnbEKT3Nrka0?sid=9&flags=8224&sn=3', u'playlist_position': '10', u'duration': '0:03:35', u'position': '0:01:39', u'album_art': u'http://192.168.0.84:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a4Ugp6Wu4hVXnbEKT3Nrka0%3fsid%3d9%26flags%3d8224%26sn%3d3', u'metadata': 'x-sonos-spotify:spotify%3atrack%3a4Ugp6Wu4hVXnbEKT3Nrka0?sid=9&flags=8224&sn=3/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a4Ugp6Wu4hVXnbEKT3Nrka0%3fsid%3d9%26flags%3d8224%26sn%3d3Eifersuchtobject.item.audioItem.musicTrackRammsteinSehnsucht'} +# self.SonosTrack = {u'album': 'Sehnsucht', u'artist': 'Rammstein', u'title': 'Eifersucht', u'uri': 'x-sonos-spotify:spotify%3atrack%3a4Ugp6Wu4hVXnbEKT3Nrka0?sid=9&flags=8224&sn=3', u'playlist_position': '10', u'duration': '0:03:35', u'position': '0:01:39', u'album_art': u'http://192.168.0.84:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a4Ugp6Wu4hVXnbEKT3Nrka0%3fsid%3d9%26flags%3d8224%26sn%3d3', u'metadata': 'x-sonos-spotify:spotify%3atrack%3a4Ugp6Wu4hVXnbEKT3Nrka0?sid=9&flags=8224&sn=3/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a4Ugp6Wu4hVXnbEKT3Nrka0%3fsid%3d9%26flags%3d8224%26sn%3d3Eifersuchtobject.item.audioItem.musicTrackRammsteinSehnsucht'} if self.SonosRunning is False: self.SonosSoCo = None self.SonosRunning = True @@ -10394,7 +10394,7 @@ def getNumber(actservice): # actservice must be an instance of eServiceReferenc playable = not (service.flags & mask) if playable: number += 1 -# L4logE(" ",service.getPath()) +# L4logE(" ",service.getPath()) if actbouquet: if actbouquet == bouquet and actservice == service: return number @@ -12327,7 +12327,7 @@ def putProgress(workaround, draw, im): else: ms = 1 font = ImageFont.truetype(ConfigFont, int(ConfigSize * ms) + 8, encoding='unic') # 5 -# if self.Lpath and ":0:" not in self.Lpath and "//" not in self.Lpath: # Movie +# if self.Lpath and ":0:" not in self.Lpath and "//" not in self.Lpath: # Movie if self.Llength is not None and self.Llength[0] != -1: isVideoPlaying = 1 try: @@ -13916,7 +13916,7 @@ def getColor(c): if ConfigModule == "0": ConfigModule = ConfigModuleUser font = ImageFont.truetype(ConfigFont, ConfigSize, encoding='unic') -# font1 = ImageFont.truetype(ConfigFont, int(ConfigSize / 1.5), encoding='unic') +# font1 = ImageFont.truetype(ConfigFont, int(ConfigSize / 1.5), encoding='unic') font2 = ImageFont.truetype(ConfigFont, int(ConfigSize / 2), encoding='unic') font3 = ImageFont.truetype(ConfigFont, int(ConfigSize / 3), encoding='unic') font4 = ImageFont.truetype(ConfigFont, int(ConfigSize / 5), encoding='unic') @@ -14464,7 +14464,7 @@ def Sync(L): L4Lkeys = sorted(L4LElist.get().keys()) for E in L4Lkeys: CUR = L4LElist.get(E) -# L4logE("CUR: %s Active %s" % (CUR,ScreenActive[0])) +# L4logE("CUR: %s Active %s" % (CUR,ScreenActive[0])) LCD = str(CUR.get("Lcd", "1")) if getSA(int(LCD)) in str(CUR.get("Screen", "1")) and MODE in CUR.get("Mode", "On"): Typ = CUR.get("Typ", None) @@ -14545,7 +14545,7 @@ def Lput4(LCD, SCR, FUNC, PARA): if not LCD4linux.Enable.value: return tt = time() -# L4logE("MP-Mode", isMediaPlayer) +# L4logE("MP-Mode", isMediaPlayer) L4log("creating LCD-Picture: %s" % ScreenActive) if isdir("%slcd4linux" % TMP) == False: try: @@ -14573,7 +14573,7 @@ def Lput4(LCD, SCR, FUNC, PARA): self.SaveisMediaPlayer = isMediaPlayer isMediaPlayer = "" rmFile(MP3tmp) -# rmFile(GoogleCover) +# rmFile(GoogleCover) if self.SonosRunning: isMediaPlayer, logtext = ("sonos", "detected Sonos") elif self.YMCastRunning: diff --git a/lcd4linux/src/utils.py b/lcd4linux/src/utils.py index 5ad6246..372eb16 100644 --- a/lcd4linux/src/utils.py +++ b/lcd4linux/src/utils.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*-# def getIPTVProvider(url): -# This function determines the name of the IPTV provider by -# the unique value of the substring in the broadcast url-link -# :param url: the url from serviceref -# :param type: url -# :ret: IPTV provider name -# :ret type: String limited to 12 characters +# This function determines the name of the IPTV provider by +# the unique value of the substring in the broadcast url-link +# :param url: the url from serviceref +# :param type: url +# :ret: IPTV provider name +# :ret type: String limited to 12 characters providers = { 'tvshka.net': 'ShuraTV', # shura.tv '1ott.': '1ott', # my.1ott.net @@ -51,11 +51,11 @@ def getIPTVProvider(url): def getAudio(description): -# Returns the picon file for the corresponding audio track -# :param description: audio track description -# :param type: str -# :ret: picon file for audiotrack -# :ret type: str +# Returns the picon file for the corresponding audio track +# :param description: audio track description +# :param type: str +# :ret: picon file for audiotrack +# :ret type: str if "Dolby Digital" in description: return "audio/dolbydigital.png" From c389e4a7cf35d749535e2bf8c46b39ed1d228726 Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Thu, 2 Apr 2026 16:01:35 +0200 Subject: [PATCH 05/22] [LCD4linux] V5.0-r36 cleanup II according ruff lint --- lcd4linux/src/ping.py | 74 ++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 43 deletions(-) diff --git a/lcd4linux/src/ping.py b/lcd4linux/src/ping.py index 25014ee..d3fb860 100644 --- a/lcd4linux/src/ping.py +++ b/lcd4linux/src/ping.py @@ -24,22 +24,22 @@ version 2. Provided with no warranties of any sort. Original Version from Matthew Dixon Cowles: - -> ftp://ftp.visi.com/users/mdc/ping.py + -> ftp://ftp.visi.com/users/mdc/ping.py Rewrite by Jens Diemer: - -> http://www.python-forum.de/post-69122.html#69122 + -> http://www.python-forum.de/post-69122.html#69122 Rewrite by George Notaras: - -> http://www.g-loaded.eu/2009/10/30/python-ping/ + -> http://www.g-loaded.eu/2009/10/30/python-ping/ Enhancements by Martin Falatic: - -> http://www.falatic.com/index.php/39/pinging-with-python + -> http://www.falatic.com/index.php/39/pinging-with-python Enhancements and fixes by Georgi Kolev: - -> http://github.com/jedie/python-ping/ + -> http://github.com/jedie/python-ping/ Bug fix by Andrejs Rozitis: - -> http://github.com/rozitis/python-ping/ + -> http://github.com/rozitis/python-ping/ Revision history ~~~~~~~~~~~~~~~~ @@ -50,8 +50,7 @@ May 1, 2014 ----------- Little modifications by Mohammad Emami - - Added Python 3 support. For now this project will just support - python 3.x + - Added Python 3 support. For now this project will just support python 3.x - Tested with python 3.3 - version was upped to 0.6 @@ -62,12 +61,12 @@ January 26, 2012 ---------------- * Fixing BUG #4 - competability with python 2.x [tested with 2.7] - - Packet data building is different for 2.x and 3.x. + - Packet data building is different for 2.x and 3.x. 'cose of the string/bytes difference. * Fixing BUG #10 - the multiple resolv issue. - - When pinging domain names insted of hosts (for exmaple google.com) - you can get different IP every time you try to resolv it, we should - resolv the host only once and stick to that IP. + - When pinging domain names insted of hosts (for exmaple google.com) + you can get different IP every time you try to resolv it, we should + resolv the host only once and stick to that IP. * Fixing BUGs #3 #10 - Doing hostname resolv only once. * Fixing BUG #14 - Removing all 'global' stuff. - You should not use globul! Its bad for you...and its not thread safe! @@ -83,7 +82,7 @@ October 12, 2011 -------------- Merged updates from the main project - -> https://github.com/jedie/python-ping + -> https://github.com/jedie/python-ping September 12, 2011 -------------- @@ -109,31 +108,31 @@ -------------- changes by Samuel Stauffer: - replaced time.clock with default_timer which is set to - time.clock on windows and time.time on other systems. + time.clock on windows and time.time on other systems. November 8, 2009 ---------------- Improved compatibility with GNU/Linux systems. Fixes by: - * George Notaras -- http://www.g-loaded.eu + * George Notaras -- http://www.g-loaded.eu Reported by: - * Chris Hallman -- http://cdhallman.blogspot.com + * Chris Hallman -- http://cdhallman.blogspot.com Changes in this release: - - Re-use time.time() instead of time.clock(). The 2007 implementation - worked only under Microsoft Windows. Failed on GNU/Linux. - time.clock() behaves differently under the two OSes[1]. + - Re-use time.time() instead of time.clock(). The 2007 implementation + worked only under Microsoft Windows. Failed on GNU/Linux. + time.clock() behaves differently under the two OSes[1]. [1] http://docs.python.org/library/time.html#time.clock May 30, 2007 ------------ little rewrite by Jens Diemer: - - change socket asterisk import to a normal import - - replace time.time() with time.clock() - - delete "return None" (or change to "return" only) - - in checksum() rename "str" to "source_string" + - change socket asterisk import to a normal import + - replace time.time() with time.clock() + - delete "return None" (or change to "return" only) + - in checksum() rename "str" to "source_string" December 4, 2000 ---------------- @@ -155,7 +154,7 @@ =========================================================================== IP header info from RFC791 - -> http://tools.ietf.org/html/rfc791) + -> http://tools.ietf.org/html/rfc791) 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 @@ -175,7 +174,7 @@ =========================================================================== ICMP Echo / Echo Reply Message header info from RFC792 - -> http://tools.ietf.org/html/rfc792 + -> http://tools.ietf.org/html/rfc792 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 @@ -189,7 +188,7 @@ =========================================================================== ICMP parameter info: - -> http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml + -> http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml =========================================================================== An example of ping's typical output: @@ -208,7 +207,6 @@ =========================================================================== """ -# =============================================================================# import argparse import os import sys @@ -267,7 +265,6 @@ def checksum(source_string): countTo = (int(len(source_string) / 2)) * 2 sum = 0 count = 0 - # Handle bytes in pairs (decoding as short ints) loByte = 0 hiByte = 0 @@ -283,7 +280,6 @@ def checksum(source_string): except Exception: # For Python2 sum = sum + (ord(hiByte) * 256 + ord(loByte)) count += 2 - # Handle last byte if applicable (odd-number of bytes) # Endianness should be irrelevant in this case if countTo < len(source_string): # Check for odd length @@ -292,15 +288,12 @@ def checksum(source_string): sum += loByte except Exception: # For Python2 sum += ord(loByte) - sum &= 0xffffffff # Truncate sum to 32 bits (a variance from ping.c, which - # uses signed ints, but overflow is unlikely in ping) - + # uses signed ints, but overflow is unlikely in ping) sum = (sum >> 16) + (sum & 0xffff) # Add high 16 bits to low 16 bits sum += (sum >> 16) # Add carry from above (if any) answer = ~sum & 0xffff # Invert and truncate to 16 bits answer = socket.htons(answer) - return answer # =============================================================================# @@ -483,8 +476,7 @@ def signal_handler(signum, frame): # =============================================================================# -def verbose_ping(hostname, timeout=WAIT_TIMEOUT, count=NUM_PACKETS, - packet_size=PACKET_SIZE, path_finder=False): +def verbose_ping(hostname, timeout=WAIT_TIMEOUT, count=NUM_PACKETS, packet_size=PACKET_SIZE, path_finder=False): """ Send >count< ping to >destIP< with the given >timeout< and display the result. @@ -577,14 +569,11 @@ def main(): parser.add_argument('-q', '--quiet', action='store_true', help='quiet output') parser.add_argument('-c', '--count', type=int, default=NUM_PACKETS, - help=('number of packets to be sent ' - '(default: %(default)s)')) + help=('number of packets to be sent (default: %(default)s)')) parser.add_argument('-W', '--timeout', type=float, default=WAIT_TIMEOUT, - help=('time to wait for a response in seoncds ' - '(default: %(default)s)')) + help=('time to wait for a response in seoncds (default: %(default)s)')) parser.add_argument('-s', '--packet-size', type=int, default=PACKET_SIZE, - help=('number of data bytes to be sent ' - '(default: %(default)s)')) + help=('number of data bytes to be sent (default: %(default)s)')) parser.add_argument('destination') args = parser.parse_args() @@ -592,8 +581,7 @@ def main(): if args.quiet: ping = quiet_ping - ping(args.destination, timeout=args.timeout * 1000, count=args.count, - packet_size=args.packet_size) + ping(args.destination, timeout=args.timeout * 1000, count=args.count, packet_size=args.packet_size) if __name__ == '__main__': From 1ad0a2964248cd9152d4cd1264381b783dd1b309 Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Thu, 2 Apr 2026 16:31:05 +0200 Subject: [PATCH 06/22] [LCD4linux] V5.0-r36 revert version line --- lcd4linux/src/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lcd4linux/src/__init__.py b/lcd4linux/src/__init__.py index b104b5e..b9c6705 100644 --- a/lcd4linux/src/__init__.py +++ b/lcd4linux/src/__init__.py @@ -23,3 +23,5 @@ def _(txt): localeInit() language.addCallback(localeInit) + +__version__ = "5.0.16" From cf0630c032d07559877e9f4f8fa998af69441a38 Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Thu, 2 Apr 2026 16:36:36 +0200 Subject: [PATCH 07/22] [LCD4linux] V5.0-r36 cleanup III according ruff lint --- lcd4linux/src/plugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index b7dc6e5..57373d1 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -13441,7 +13441,7 @@ def addNL(w, d): if self.l4l_info.get("Fav", "") != "": Info += self.l4l_info.get("Fav", "") + " - " if isMediaPlayer == "record": - event_begin, event_end, duration, event_name = self.Levent_begin0, self.Levent_end0, self.Lduration0, self.Levent_name0 + event_begin, duration, event_name = self.Levent_begin0, self.Lduration0, self.Levent_name0 Info += "%s " % self.Lcommand if event_begin != 0: if isMediaPlayer == "record": From 8193beb1bb531db0a7509bf8544ca4cbd7da4f78 Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Thu, 2 Apr 2026 17:37:26 +0200 Subject: [PATCH 08/22] [LCD4linux] V5.0-r36 tiny bugfix --- lcd4linux/src/__init__.py | 2 +- lcd4linux/src/plugin.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lcd4linux/src/__init__.py b/lcd4linux/src/__init__.py index b9c6705..3e75e68 100644 --- a/lcd4linux/src/__init__.py +++ b/lcd4linux/src/__init__.py @@ -24,4 +24,4 @@ def _(txt): localeInit() language.addCallback(localeInit) -__version__ = "5.0.16" +__version__ = "5.0.36" diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index 57373d1..6cd2334 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -118,6 +118,7 @@ from .ping import quiet_ping from .utils import getIPTVProvider, getAudio from .ymc import YMC +from . import __version__ # DEPENDING IMPORTS & GLOBALS & INITIALIZATION import ssl @@ -174,6 +175,11 @@ print("[LCD4linux] libusb found :-)", getEnigmaVersionString()) USBok = True Version = "V5.0-r36" + +parts = __version__.split(".") +lenght = len(parts) +Version = "".join([f"{('V', '.', '-r')[idx]}{parts[idx]}" if idx < lenght else "" for idx in range(3)]) # fill up with '' if something is missing +>>>>>>> 4571caa8 ([LCD4linux] V5.0-r36 tiny bugfix):src/LCD4linux/plugin.py L4LElist = L4Lelement() L4LdoThread = True LCD4enigma2config = resolveFilename(SCOPE_CONFIG) # /etc/enigma2/ From 9ddf7dd6e06394997a0b99457373288547908e0b Mon Sep 17 00:00:00 2001 From: oe-alliance python bot Date: Thu, 2 Apr 2026 15:37:59 +0000 Subject: [PATCH 09/22] PEP8 --- lcd4linux/src/plugin.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index 6cd2334..ae1f1d9 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -178,8 +178,7 @@ parts = __version__.split(".") lenght = len(parts) -Version = "".join([f"{('V', '.', '-r')[idx]}{parts[idx]}" if idx < lenght else "" for idx in range(3)]) # fill up with '' if something is missing ->>>>>>> 4571caa8 ([LCD4linux] V5.0-r36 tiny bugfix):src/LCD4linux/plugin.py +Version = "".join([f"{('V', '.', '-r')[idx]}{parts[idx]}" if idx < lenght else "" for idx in range(3)]) # fill up with '' if something is missing L4LElist = L4Lelement() L4LdoThread = True LCD4enigma2config = resolveFilename(SCOPE_CONFIG) # /etc/enigma2/ From 3b292eb83b2659b6699479f77986d4e9441a8487 Mon Sep 17 00:00:00 2001 From: jbleyel Date: Sat, 4 Apr 2026 23:56:01 +0200 Subject: [PATCH 10/22] Fix F401 --- lcd4linux/src/renderer/PixmapLcd4linux.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lcd4linux/src/renderer/PixmapLcd4linux.py b/lcd4linux/src/renderer/PixmapLcd4linux.py index c69d857..5deeb3c 100644 --- a/lcd4linux/src/renderer/PixmapLcd4linux.py +++ b/lcd4linux/src/renderer/PixmapLcd4linux.py @@ -3,7 +3,7 @@ from Components.Renderer.Renderer import Renderer from enigma import ePixmap, eTimer try: - from enigma import eMediaDatabase + from enigma import eMediaDatabase # noqa: F401 DPKG = True except ImportError: DPKG = False From b3946c47c9f88df36bffd16fa5881449f5520c51 Mon Sep 17 00:00:00 2001 From: jbleyel Date: Sun, 5 Apr 2026 10:48:08 +0200 Subject: [PATCH 11/22] remove six --- lcd4linux/src/Photoframe.py | 2 +- lcd4linux/src/bluesound.py | 2 +- lcd4linux/src/ymc.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lcd4linux/src/Photoframe.py b/lcd4linux/src/Photoframe.py index 023ecfa..53a78f8 100644 --- a/lcd4linux/src/Photoframe.py +++ b/lcd4linux/src/Photoframe.py @@ -5,7 +5,7 @@ from usb.util import get_string from PIL import Image from struct import pack -from six.moves import cStringIO as StringIO +from io import StringIO def write_jpg2frame(dev, pic): diff --git a/lcd4linux/src/bluesound.py b/lcd4linux/src/bluesound.py index aa331ff..7b44e8a 100644 --- a/lcd4linux/src/bluesound.py +++ b/lcd4linux/src/bluesound.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from six.moves.urllib.request import urlopen +from urllib.request import urlopen from xml.etree.ElementTree import fromstring diff --git a/lcd4linux/src/ymc.py b/lcd4linux/src/ymc.py index fd6d4a1..0b8c4e3 100644 --- a/lcd4linux/src/ymc.py +++ b/lcd4linux/src/ymc.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- -from __future__ import print_function, absolute_import +from __future__ import absolute_import try: import simplejson except ImportError: import json as simplejson -from six.moves.urllib.request import urlopen from .plugin import L4logE +from urllib.request import urlopen class YMC: From 67116a5a29619ec3c37245ff969dda3fa8e355ef Mon Sep 17 00:00:00 2001 From: Hains van den Bosch Date: Mon, 7 Sep 2026 09:20:18 +0200 Subject: [PATCH 12/22] [lcd4linux] Sync ymc.py with OE-A --- lcd4linux/src/ymc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lcd4linux/src/ymc.py b/lcd4linux/src/ymc.py index 0b8c4e3..a2a5def 100644 --- a/lcd4linux/src/ymc.py +++ b/lcd4linux/src/ymc.py @@ -4,13 +4,13 @@ import simplejson except ImportError: import json as simplejson -from .plugin import L4logE from urllib.request import urlopen class YMC: def __init__(self, ip): self.IP = ip + self.L4logE = L4logE def Urlget(self, url): f = urlopen(url, timeout=1) @@ -25,7 +25,7 @@ def getPlayInfo(self): return simplejson.loads(content) if resp == 200 else {} except Exception as e: - L4logE("YMC Error: %s" % e) + self.L4logE("YMC Error: %s" % e) return {} def getStatus(self): @@ -33,5 +33,5 @@ def getStatus(self): content, resp = self.Urlget("http://%s/YamahaExtendedControl/v1/main/getStatus" % self.IP) return simplejson.loads(content) if resp == 200 else {} except Exception as e: - L4logE("YMC Error: %s" % e) + self.L4logE("YMC Error: %s" % e) return {} From 59f99f1aab8518b1112701801131c2ca6ac8d7db Mon Sep 17 00:00:00 2001 From: jbleyel Date: Sun, 5 Apr 2026 19:31:07 +0200 Subject: [PATCH 13/22] remove six --- lcd4linux/src/WebConfigSite.py | 31 +++++++++++++++++-------------- lcd4linux/src/WebSite.py | 15 +++++++++++++-- lcd4linux/src/dpf.py | 6 +----- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/lcd4linux/src/WebConfigSite.py b/lcd4linux/src/WebConfigSite.py index d3b79a0..e27e75b 100644 --- a/lcd4linux/src/WebConfigSite.py +++ b/lcd4linux/src/WebConfigSite.py @@ -1,16 +1,10 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import from glob import glob from os import stat from os.path import isfile, join, basename -from six import PY2, ensure_str, ensure_binary from time import time from twisted.web import resource, http -if PY2: - from HTMLParser import HTMLParser - _unescape = HTMLParser().unescape -else: - from html import unescape as _unescape +from html import unescape as _unescape from enigma import eTimer from Components.config import ConfigSelection, ConfigYesNo, ConfigText, ConfigSlider, ConfigClock, ConfigPassword @@ -35,12 +29,21 @@ L4LElement = L4Lelement() +def ensure_binary(s): + if isinstance(s, str): + return s.encode("utf-8") + return s + + +def ensure_str(s): + if isinstance(s, bytes): + return s.decode("utf-8") + return s + + def _exec(command): - if PY2: - exec(command) - else: - variable = command.split(" ", 1)[0] - exec("global %s;%s" % (variable, command)) + variable = command.split(" ", 1)[0] + exec("global %s;%s" % (variable, command)) def _l(st): @@ -457,8 +460,8 @@ def action(self, req): html += "" html += "
\n" html += "

\n" - CCM = "#FFFFFF" if getConfigMode() == False else "#FFCC00" - html += "LCD4linux Config
%s\n" % (CCM, (Version if L4LElement.getVersion() == True else Version + "") + " (%s: Py" + ("2" if PY2 else "3") + ")") % _l(_("Mode")) + CCM = "#FFFFFF" if getConfigMode() is False else "#FFCC00" + html += "LCD4linux Config
%s\n" % (CCM, (Version if L4LElement.getVersion() is True else Version + "") + " (%s: Py" + ("3") + ")") % _l(_("Mode")) if IP is None: html += "
%s!" % _l(_("IP seurity not supported by Box")) html += "

\n" diff --git a/lcd4linux/src/WebSite.py b/lcd4linux/src/WebSite.py index f736c28..36fb27c 100644 --- a/lcd4linux/src/WebSite.py +++ b/lcd4linux/src/WebSite.py @@ -1,11 +1,22 @@ # -*- coding: utf-8 -*- -from __future__ import division, absolute_import +from __future__ import division from os.path import isfile, getmtime -from six import ensure_str, ensure_binary from twisted.web import resource from .plugin import getConfigMode, getTMPL, LCD4linux +def ensure_str(s): + if isinstance(s, bytes): + return s.decode("utf-8") + return s + + +def ensure_binary(s): + if isinstance(s, str): + return s.encode("utf-8") + return s + + class LCD4linuxweb(resource.Resource): title = "LCD4Linux Webinterface" diff --git a/lcd4linux/src/dpf.py b/lcd4linux/src/dpf.py index 6cb9be9..2eecafb 100644 --- a/lcd4linux/src/dpf.py +++ b/lcd4linux/src/dpf.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -from six import PY2 try: from . import dpflib except Exception: @@ -24,10 +23,7 @@ def showImage(dev, image): try: ir = image.convert("RGBA") x, y = image.size - if PY2: - dev.showRGBAImage(0, 0, x, y, ir.tostring()) - else: - dev.showRGBAImage(0, 0, x, y, ir.tobytes()) + dev.showRGBAImage(0, 0, x, y, ir.tobytes()) return True except Exception: print("[LCD4linux] Error writing DPF Device") From 26709c9f39752d2eda9a116bb82cb7c9d8fcc6e2 Mon Sep 17 00:00:00 2001 From: jbleyel Date: Sun, 5 Apr 2026 20:46:59 +0200 Subject: [PATCH 14/22] Sonar fixes --- lcd4linux/src/WebConfigSite.py | 3 ++- lcd4linux/src/ping.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lcd4linux/src/WebConfigSite.py b/lcd4linux/src/WebConfigSite.py index e27e75b..99560a9 100644 --- a/lcd4linux/src/WebConfigSite.py +++ b/lcd4linux/src/WebConfigSite.py @@ -47,7 +47,8 @@ def _exec(command): def _l(st): - st = ensure_str(st, "utf-8", "ignore") + if isinstance(st, bytes): + st = st.decode("utf-8", "ignore") st = st.replace(" [ok]>", "").encode('ascii', 'xmlcharrefreplace') return ensure_str(st) diff --git a/lcd4linux/src/ping.py b/lcd4linux/src/ping.py index d3fb860..a3c92e2 100644 --- a/lcd4linux/src/ping.py +++ b/lcd4linux/src/ping.py @@ -278,7 +278,7 @@ def checksum(source_string): try: # For Python3 sum = sum + (hiByte * 256 + loByte) except Exception: # For Python2 - sum = sum + (ord(hiByte) * 256 + ord(loByte)) + sum = sum + ord(hiByte) * 256 + ord(loByte) count += 2 # Handle last byte if applicable (odd-number of bytes) # Endianness should be irrelevant in this case @@ -392,7 +392,7 @@ def send_one_ping(mySocket, destIP, myID, mySeqNumber, packet_size): try: mySocket.sendto(packet, (destIP, 1)) # Port number is irrelevant for ICMP except socket.error as e: - print("General failure (%s)" % (e.args[1])) + print(f"General failure ({e.args[1]})") return return sendTime From 85cdb4d756cba9fb64dbbc0142eb0d8b7c37fea5 Mon Sep 17 00:00:00 2001 From: atvcaptain Date: Fri, 19 Jun 2026 17:45:21 +0200 Subject: [PATCH 15/22] add display format 240x80 dreamtwo --- lcd4linux/src/plugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index ae1f1d9..7e37f04 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -325,7 +325,7 @@ ] if PNGutilOK: LCDType.insert(14, ("930", _("Internal Vu+ Duo2 LCD 400x240"))) -xmlLCDType = [("96x64", _("96x64")), ("128x32", _("128x32")), ("128x64", _("128x64")), ("132x64", _("132x64")), ("220x176", _("220x176")), ("255x64", _("255x64")), ("400x240", _("400x240")), ("480x320", _("480x320")), ("700x390", _("720x405")), ("800x480", _("800x480"))] +xmlLCDType = [("96x64", _("96x64")), ("128x32", _("128x32")), ("128x64", _("128x64")), ("132x64", _("132x64")), ("220x176", _("220x176")), ("240x80", _("240x80")), ("255x64", _("255x64")), ("400x240", _("400x240")), ("480x320", _("480x320")), ("700x390", _("720x405")), ("800x480", _("800x480"))] WetterType = [("12", _("2 Days 1 Line")), ("22", _("2 Days 2 Line")), ("1", _("4 Days 1 Line")), ("2", _("4 Days 2 Lines")), ("11", _("5 Days 1 Line")), ("21", _("5 Days 2 Lines")), ("3", _("Current")), ("4", _("Current Temperature (+C)")), ("41", _("Current Temperature (-C)")), ("5", _("4 Days Vertical View")), ("51", _("5 Days Vertical View"))] MeteoType = [("1", _("Current")), ("2", _("Current Temperature"))] NetatmoType = [("THCPN", _("All")), ("T", _("Temperature")), ("TH", _("Temperature+Humidity")), ("TC", _("Temperature+Co2")), ("TCP", _("Temperature+Co2+Pressure"))] From 3c2a15fd3eb6e9cee7a06ad3a8af2b990c34d094 Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Wed, 29 Jul 2026 16:15:19 +0200 Subject: [PATCH 16/22] [LCD4linux] V5.0-r37 tiny bugfix in calculation "distance moon-earth" NOTE: LCD4linux still runs on both Python2 and Python3 --- lcd4linux/src/__init__.py | 2 +- lcd4linux/src/plugin.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lcd4linux/src/__init__.py b/lcd4linux/src/__init__.py index 3e75e68..6c50530 100644 --- a/lcd4linux/src/__init__.py +++ b/lcd4linux/src/__init__.py @@ -24,4 +24,4 @@ def _(txt): localeInit() language.addCallback(localeInit) -__version__ = "5.0.36" +__version__ = "5.0.37" diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index 7e37f04..4d020ab 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -10634,10 +10634,10 @@ def MoonDistance(now=None): if now is None: now = datetime.now() diff = now - datetime(2000, 1, 1, 12, 0, 0) - t = diff.days + diff.seconds / 86400 - GM = (134.96341138 + 13.064992953630 * t) * pi / 180 - DD = (297.85020420 + 12.190749117502 * t) * pi / 90 - return 385000.5584 - 20905.3550 * cos(GM) - 3699.1109 * cos(DD - GM) - 2955.9676 * cos(DD) - 569.9251 * cos(2 * GM) + t = diff.total_seconds() / 86400.0 + GM = (134.96341138 + 13.064992953630 * t) * pi / 180.0 + DD = (297.85020420 + 12.190749117502 * t) * pi / 180.0 + return 385000.5584 - 20905.3550 * cos(GM) - 3699.1109 * cos(DD - GM) - 2955.9676 * cos(DD) - 569.9251 * cos(2.0 * GM) def LCD4linuxPIC(self, session): From 7c27d53712f80a1e7cf868992eb828e1c9943459 Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Thu, 27 Aug 2026 18:30:23 +0200 Subject: [PATCH 17/22] [LCD4linux] V5.0-r39 Image.LANCZOS was replaced by Image.Resampling.LANCZOS - Image.LANCZOS has been demoted or marked as deprecated in newer versions of Pillow in favor of Image.Resampling.LANCZOS --- lcd4linux/src/__init__.py | 2 +- lcd4linux/src/plugin.py | 40 +++++++++++++++++++-------------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/lcd4linux/src/__init__.py b/lcd4linux/src/__init__.py index 6c50530..e3d3fd1 100644 --- a/lcd4linux/src/__init__.py +++ b/lcd4linux/src/__init__.py @@ -24,4 +24,4 @@ def _(txt): localeInit() language.addCallback(localeInit) -__version__ = "5.0.37" +__version__ = "5.0.39" diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index 4d020ab..9242cae 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -3082,7 +3082,7 @@ def getpiconres(x, y, full, picon, channelname, channelname2, P2, P2A, P2C): if str(LCD4linux.BilderQuality.value) == "0": pil_image = pil_image.resize((x, y)) else: - pil_image = pil_image.resize((x, y), Image.LANCZOS if PY3 else Image.ANTIALIAS) + pil_image = pil_image.resize((x, y), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS) s = statvfs(P2C) if (s.f_bsize * s.f_bavail / 1024) < 100: L4log("Error: Cache Directory near full") @@ -11117,7 +11117,7 @@ def putWetter(workaround, draw, im): if LCD4linux.BilderQuality.value == "0": pil_image = pil_image.resize((int(int(LCD4linux.WetterIconZoom.value) * Wmulti), y)) else: - pil_image = pil_image.resize((int(int(LCD4linux.WetterIconZoom.value) * Wmulti), y), Image.LANCZOS if PY3 else Image.ANTIALIAS) + pil_image = pil_image.resize((int(int(LCD4linux.WetterIconZoom.value) * Wmulti), y), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS) PY = POSY - int(20 * Wmulti) if ConfigType.startswith("5") else int(POSY + (int(40 * Wmulti) - y) / 2) PX = POSX + int((27 * Wmulti) - int(int(LCD4linux.WetterIconZoom.value) * Wmulti) / 2) self.im[Wim].paste(pil_image, (PX, PY + int(20 * Wmulti))) @@ -11257,7 +11257,7 @@ def putWetter(workaround, draw, im): if str(LCD4linux.BilderQuality.value) == "0": pil_image = pil_image.resize((x, y)) else: - pil_image = pil_image.resize((x, y), Image.LANCZOS if PY3 else Image.ANTIALIAS) + pil_image = pil_image.resize((x, y), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS) xx, yy = pil_image.size PY = 1 - int(10 * Wmulti) else: @@ -11266,7 +11266,7 @@ def putWetter(workaround, draw, im): if str(LCD4linux.BilderQuality.value) == "0": pil_image = pil_image.resize((x, y)) else: - pil_image = pil_image.resize((x, y), Image.LANCZOS if PY3 else Image.ANTIALIAS) + pil_image = pil_image.resize((x, y), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS) PY = int(POSY + (int(34 * Wmulti) - y) / 2) self.im[Wim].paste(pil_image, (POSX, PY + int(20 * Wmulti))) POSYs = POSY + {"2": 79, "1": 67}.get(LCD4linux.WetterWindLines.value, 56) * Wmulti if ConfigType.startswith("3") else POSY @@ -11422,7 +11422,7 @@ def putMeteo(workaround, draw, im): if str(LCD4linux.BilderQuality.value) == "0": pil_image = pil_image.resize((int(40 * Wmulti), y)) else: - pil_image = pil_image.resize((int(40 * Wmulti), y), Image.LANCZOS if PY3 else Image.ANTIALIAS) + pil_image = pil_image.resize((int(40 * Wmulti), y), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS) PY = int(POSY + (int(40 * Wmulti) - y) / 2) imW.paste(pil_image, (POSX, PY + int(15 * Wmulti))) font = ImageFont.truetype(FONT, int(12 * Wmulti), encoding='unic') @@ -11624,7 +11624,7 @@ def putWWW(workaround, draw, im): if str(LCD4linux.BilderQuality.value) == "0": pil_image = pil_image.resize((ConfigSize, y)) else: - pil_image = pil_image.resize((ConfigSize, y), Image.LANCZOS if PY3 else Image.ANTIALIAS) + pil_image = pil_image.resize((ConfigSize, y), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS) POSX = getSplit(False, ConfigAlign, MAX_W, ConfigSize) self.im[im].paste(pil_image, (POSX, ConfigPos)) pil_image.save(WWWpic % (str(PIC) + "p")) @@ -11651,7 +11651,7 @@ def putClock(workaround, draw, im): if str(LCD4linux.BilderQuality.value) == "0": pil_image = pil_image.resize((x, y)) else: - pil_image = pil_image.resize((x, y), Image.LANCZOS if PY3 else Image.ANTIALIAS) + pil_image = pil_image.resize((x, y), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS) POSX = getSplit(ConfigSplit, ConfigAlign, MAX_W, x) if LCD4linux.WetterTransparenz.value == "true": pil_image = pil_image.convert("RGBA") @@ -11694,7 +11694,7 @@ def putClock(workaround, draw, im): if str(LCD4linux.BilderQuality.value) == "0": self.ClockIm[ConfigNum] = self.ClockIm[ConfigNum].resize((x, y)) else: - self.ClockIm[ConfigNum] = self.ClockIm[ConfigNum].resize((x, y), Image.LANCZOS if PY3 else Image.ANTIALIAS) + self.ClockIm[ConfigNum] = self.ClockIm[ConfigNum].resize((x, y), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS) self.ClockName[ConfigNum] = [int(ConfigAnalog), y] self.im[im].paste(self.ClockIm[ConfigNum], (POSX, ConfigPos), self.ClockIm[ConfigNum]) # Weekday in or underneath clockface @@ -11723,7 +11723,7 @@ def putClock(workaround, draw, im): if str(LCD4linux.BilderQuality.value) == "0": pil_image = pil_image.resize((x1, y1)) else: - pil_image = pil_image.resize((x1, y1), Image.LANCZOS if PY3 else Image.ANTIALIAS) + pil_image = pil_image.resize((x1, y1), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS) S = int(strftime("%H")) % 12 pil_image = pil_image.rotate(360 - int(30 * S + int(int(strftime("%M")) / 2)), expand=False).convert("RGBA") # 360/12 self.im[im].paste(pil_image, (POSX + int((x - x1) / 2), ConfigPos + int((y - y1) / 2)), pil_image) @@ -11735,7 +11735,7 @@ def putClock(workaround, draw, im): if str(LCD4linux.BilderQuality.value) == "0": pil_image = pil_image.resize((x1, y1)) else: - pil_image = pil_image.resize((x1, y1), Image.LANCZOS if PY3 else Image.ANTIALIAS) + pil_image = pil_image.resize((x1, y1), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS) pil_image = pil_image.rotate(360 - int(6 * int(strftime("%M"))), expand=False).convert("RGBA") # 360/60 self.im[im].paste(pil_image, (POSX + int((x - x1) / 2), ConfigPos + int((y - y1) / 2)), pil_image) # Seconds: Due to the bad refresh rates, the second hand was deliberately not programmed! @@ -11845,8 +11845,8 @@ def putCover(workaround, ConfigLCD, draw, im): if ConfigSizeH > 0 and y > ConfigSizeH: y = ConfigSizeH x = int(float(y) / yy * xx) - pil_image = pil_image.resize((x, y), Image.LANCZOS if PY3 else Image.ANTIALIAS) - if ConfigTransp == True: + pil_image = pil_image.resize((x, y), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS) + if ConfigTransp is True: self.CoverIm = pil_image.convert("RGBA") else: self.CoverIm = pil_image.convert("RGB", dither=Image.NONE, palette=Image.ADAPTIVE) @@ -11919,7 +11919,7 @@ def putBild(workaround, ConfigLCD, draw, im): elif ConfigAlign == "8": x, y = ConfigSize, ConfigSizeH if str(LCD4linux.BilderQuality.value) == "2": - pil_image = pil_image.resize((x, y), Image.LANCZOS if PY3 else Image.ANTIALIAS) + pil_image = pil_image.resize((x, y), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS) else: pil_image = pil_image.resize((x, y)) if ConfigSizeH > 0: @@ -12228,7 +12228,7 @@ def putPicon(workaround, draw, im): if str(LCD4linux.BilderQuality.value) == "0": self.PiconIm[Picon2] = self.PiconIm[Picon2].resize((ConfigSize, y)) else: - self.PiconIm[Picon2] = self.PiconIm[Picon2].resize((ConfigSize, y), Image.LANCZOS if PY3 else Image.ANTIALIAS) + self.PiconIm[Picon2] = self.PiconIm[Picon2].resize((ConfigSize, y), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS) self.PiconName[Picon2][1] = "" except Exception: self.PiconName[Picon2][1] = "" @@ -13975,7 +13975,7 @@ def getColor(c): elif Mod[5] == "NAModule2": E1 = E2 = self.WIND else: - E1 = self.TEMPERATURE.decode() + E1 = self.TEMPERATURE E2 = self.HUMIDITY if Mod[5] == "NAModule2": ShadowText(draw, POSX, POSY, Mod[0], font, getColor(i), ConfigShadow) @@ -14047,8 +14047,8 @@ def getColor(c): ShadowText(draw, POSX, POSY, self.iT[ConfigStation].split(".")[0], font, ConfigColor[0], ConfigShadow) w, h = getFsize(self.iT[ConfigStation].split(".")[0], font) ShadowText(draw, POSX + w, POSY + int(h / 5 * 2), "." + self.iT[ConfigStation].split(".")[1], font2, ConfigColor[0], ConfigShadow) - ShadowText(draw, POSX + w, POSY, self.TEMPERATURE.decode(), font2, ConfigColor[0], ConfigShadow) - if ConfigName == True: + ShadowText(draw, POSX + w, POSY, self.TEMPERATURE, font2, ConfigColor[0], ConfigShadow) + if ConfigName is True: wn, hn = getFsize(self.iName[ConfigStation], font3) ADD = int(hn / 2) ShadowText(draw, POSX + int((w1 + w2 - wn) / 2), POSY + h - ADD, self.iName[ConfigStation], font3, ConfigColor[0], ConfigShadow) @@ -14663,7 +14663,7 @@ def Lput4(LCD, SCR, FUNC, PARA): if self.BackName[0] != [pil_open, getmtime(pil_open), LCD4linux.BilderBackground.value]: self.BackName[0] = [pil_open, getmtime(pil_open), LCD4linux.BilderBackground.value] if LCD4linux.BilderBackground.value == "1": - self.BackIm[0] = Image.open(pil_open).resize((MAX_W, MAX_H), Image.LANCZOS if PY3 else Image.ANTIALIAS).convert("RGB", dither=Image.NONE, palette=Image.ADAPTIVE) + self.BackIm[0] = Image.open(pil_open).resize((MAX_W, MAX_H), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS).convert("RGB", dither=Image.NONE, palette=Image.ADAPTIVE) else: self.BackIm[0] = Image.open(pil_open).resize((MAX_W, MAX_H)).convert("P") L4log("change Background") @@ -14724,7 +14724,7 @@ def Lput4(LCD, SCR, FUNC, PARA): self.BackIm[1] = self.BackIm[0] else: if LCD4linux.BilderBackground.value == "1": - self.BackIm[1] = Image.open(pil_open).resize((MAX_W, MAX_H), Image.LANCZOS if PY3 else Image.ANTIALIAS).convert("RGB", dither=Image.NONE, palette=Image.ADAPTIVE) + self.BackIm[1] = Image.open(pil_open).resize((MAX_W, MAX_H), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS).convert("RGB", dither=Image.NONE, palette=Image.ADAPTIVE) else: self.BackIm[1] = Image.open(pil_open).resize((MAX_W, MAX_H)).convert("P") L4log("change Background") @@ -14785,7 +14785,7 @@ def Lput4(LCD, SCR, FUNC, PARA): self.BackIm[2] = self.BackIm[0] else: if LCD4linux.BilderBackground.value == "1": - self.BackIm[2] = Image.open(pil_open).resize((MAX_W, MAX_H), Image.LANCZOS if PY3 else Image.ANTIALIAS).convert("RGB", dither=Image.NONE, palette=Image.ADAPTIVE) + self.BackIm[2] = Image.open(pil_open).resize((MAX_W, MAX_H), Image.Resampling.LANCZOS if PY3 else Image.ANTIALIAS).convert("RGB", dither=Image.NONE, palette=Image.ADAPTIVE) else: self.BackIm[2] = Image.open(pil_open).resize((MAX_W, MAX_H)).convert("P") L4log("change Background") From 35bfa6c42f60d14115f5253a8b72f8ff1cdacd78 Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Sun, 6 Sep 2026 16:06:19 +0200 Subject: [PATCH 18/22] [LCD4linux] V5.0-r40 WeatherUnlocked removed and improvements - "WeatherUnlocked" weather service has been removed; it has ceased operations details see here: www.opena.tv/viewtopic.php?p=602172&hilit=weatherunlocked#p602172 - order of "WetterLowColor" and "WetterHighColor" was changed at the user's request details see here: www.opena.tv/viewtopic.php?t=73&hilit=weatherunlocked&start=3740#p606388 - some PIL calls have been split between current Py3-version and old Py2-version - conversion from CRLF to LF - some code improvements NOTE: LCD4linux still runs on both Python2 and Python3 --- lcd4linux/src/WebConfigSite.py | 8 +-- lcd4linux/src/__init__.py | 2 +- lcd4linux/src/data/default.colorlcd800 | 2 +- lcd4linux/src/data/default.lcd | 3 +- lcd4linux/src/data/default.vuduo2 | 2 +- lcd4linux/src/plugin.py | 82 +++++++++++--------------- 6 files changed, 44 insertions(+), 55 deletions(-) diff --git a/lcd4linux/src/WebConfigSite.py b/lcd4linux/src/WebConfigSite.py index 99560a9..83cbe26 100644 --- a/lcd4linux/src/WebConfigSite.py +++ b/lcd4linux/src/WebConfigSite.py @@ -185,7 +185,7 @@ def action(self, req): req.setHeader('Content-Disposition', 'attachment;filename=lcd4config') req.setHeader('Content-Length', str(stat(lcd4config).st_size)) req.setHeader('charset', 'UTF-8') - with open(lcd4config, "r") as f: + with open(lcd4config) as f: html = f.read() return ensure_binary(html) if req.args.get(b"upload.y", None) is not None: @@ -214,7 +214,7 @@ def action(self, req): req.setHeader('Content-Disposition', 'attachment;filename=l4log.txt') req.setHeader('Content-Length', str(stat(lcd4config).st_size)) req.setHeader('charset', 'UTF-8') - with open(lcd4config, "r") as f: + with open(lcd4config) as f: html = f.read() return ensure_binary(html) if command is None: @@ -442,7 +442,7 @@ def action(self, req): html += "\n" html += "