Skip to content

Commit c2f4206

Browse files
committed
fix list of stations (-l) for CJK characters
1 parent e4b4d06 commit c2f4206

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

pyradio/main.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from .radio import PyRadio
1212
from .config import PyRadioConfig, SUPPORTED_PLAYERS
1313
from .install import PyRadioUpdate, PyRadioUpdateOnWindows, is_pyradio_user_installed, version_string_to_list, get_github_tag
14+
from .cjkwrap import cjklen, cjkslices, fill
1415
from .log import Log
1516

1617
PATTERN = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
@@ -394,7 +395,7 @@ def shell():
394395
sys.exit()
395396

396397
if args.list:
397-
header_format_string, format_string = get_format_string(pyradio_config.stations)
398+
m_len, header_format_string, format_string = get_format_string(pyradio_config.stations)
398399
header_string = header_format_string.format('[Name]','[URL]','[Encoding]')
399400
print(header_string)
400401
print(len(header_string) * '-')
@@ -403,7 +404,8 @@ def shell():
403404
encoding = a_station[2]
404405
else:
405406
encoding = pyradio_config.default_encoding
406-
print(format_string.format(str(num+1), a_station[0], a_station[1], encoding))
407+
station_name = pad_string(a_station[0], m_len)
408+
print(format_string.format(str(num+1), station_name, a_station[1], encoding))
407409
sys.exit()
408410

409411
#pyradio_config.log.configure_logger(titles=True)
@@ -588,14 +590,22 @@ def open_conf_dir(cnf):
588590
def get_format_string(stations):
589591
len0 = len1 = 0
590592
for n in stations:
591-
if len(n[0]) > len0:
592-
len0 = len(n[0])
593-
if len(n[1]) > len1:
594-
len1 = len(n[1])
595-
num = len(str(len(stations)))
596-
format_string = '{0:>' + str(num) + '.' + str(num) + 's}. ' + '{1:' + str(len0) + '.' + str(len0) + 's} | {2:' + str(len1) + '.' + str(len1) + 's} | {3}'
593+
if cjklen(n[0]) > len0:
594+
len0 = cjklen(n[0])
595+
if cjklen(n[1]) > len1:
596+
len1 = cjklen(n[1])
597+
num = cjklen(str(cjklen(stations)))
598+
# format_string = '{0:>' + str(num) + '.' + str(num) + 's}. ' + '{1:' + str(len0) + '.' + str(len0) + 's} | {2:' + str(len1) + '.' + str(len1) + 's} | {3}'
599+
format_string = '{0:>' + str(num) + '.' + str(num) + 's}. ' + '{1} | {2:' + str(len1) + '.' + str(len1) + 's} | {3}'
597600
header_format_string = '{0:' + str(len0+num+2) + '.' + str(len0+num+2) + 's} | {1:' + str(len1) + '.' + str(len1) + 's} | {2}'
598-
return header_format_string, format_string
601+
return len0, header_format_string, format_string
602+
603+
def pad_string(a_string, width):
604+
st_len = cjklen(a_string)
605+
if st_len > width:
606+
return cjkslices(a_string, width)
607+
diff = width - st_len
608+
return a_string + ' ' * diff
599609

600610
if __name__ == '__main__':
601611
shell()

0 commit comments

Comments
 (0)