iheanyi / bandcamp-dl

Simple python script to download Bandcamp albums
The Unlicense
956 stars 108 forks source link

Certain Unicode character cause an unusual progress bar error #142

Closed edent closed 5 years ago

edent commented 6 years ago

Python version: 3.5.2 on Ubuntu

Bandcamp-dl version: bandcamp-dl 0.0.8-12

Bancamp-dl options: None

url:

options: None

Describe the issue:

Normally the progress bar stays confined to a single line. Certain characters trigger a weird behaviour where it prints out the progress line-by-line. Perhaps the output needs sanitising?

(1/1) [                                                  ] :: Downloading: 03 - ノヮノ
(1/1) [                                                  ] :: Downloading: 03 - ノヮノ
(1/1) [=                                                 ] :: Downloading: 03 - ノヮノ
(1/1) [=                                                 ] :: Downloading: 03 - ノヮノ
(1/1) [==                                                ] :: Downloading: 03 - ノヮノ
(1/1) [==                                                ] :: Downloading: 03 - ノヮノ
(1/1) [===                                               ] :: Downloading: 03 - ノヮノ
(1/1) [===                                               ] :: Downloading: 03 - ノヮノ
(1/1) [====                                              ] :: Downloading: 03 - ノヮノ
(1/1) [====                                              ] :: Downloading: 03 - ノヮノ
(1/1) [=====                                             ] :: Downloading: 03 - ノヮノ
(1/1) [=====                                             ] :: Downloading: 03 - ノヮノ
(1/1) [======                                            ] :: Downloading: 03 - ノヮノ
(1/1) [======                                            ] :: Downloading: 03 - ノヮノ
(1/1) [=======                                           ] :: Downloading: 03 - ノヮノ
(1/1) [=======                                           ] :: Downloading: 03 - ノヮノ
(1/1) [========                                          ] :: Downloading: 03 - ノヮノ
(1/1) [========                                          ] :: Downloading: 03 - ノヮノ
(1/1) [=========                                         ] :: Downloading: 03 - ノヮノ
(1/1) [=========                                         ] :: Downloading: 03 - ノヮノ
(1/1) [==========                                        ] :: Downloading: 03 - ノヮノ
(1/1) [==========                                        ] :: Downloading: 03 - ノヮノ
(1/1) [===========                                       ] :: Downloading: 03 - ノヮノ
(1/1) [===========                                       ] :: Downloading: 03 - ノヮノ
(1/1) [============                                      ] :: Downloading: 03 - ノヮノ
(1/1) [============                                      ] :: Downloading: 03 - ノヮノ
(1/1) [=============                                     ] :: Downloading: 03 - ノヮノ
(1/1) [=============                                     ] :: Downloading: 03 - ノヮノ
(1/1) [==============                                    ] :: Downloading: 03 - ノヮノ
(1/1) [==============                                    ] :: Downloading: 03 - ノヮノ
(1/1) [===============                                   ] :: Downloading: 03 - ノヮノ
(1/1) [===============                                   ] :: Downloading: 03 - ノヮノ
(1/1) [================                                  ] :: Downloading: 03 - ノヮノ
(1/1) [================                                  ] :: Downloading: 03 - ノヮノ
(1/1) [=================                                 ] :: Downloading: 03 - ノヮノ
(1/1) [=================                                 ] :: Downloading: 03 - ノヮノ
(1/1) [==================                                ] :: Downloading: 03 - ノヮノ
(1/1) [==================                                ] :: Downloading: 03 - ノヮノ
(1/1) [===================                               ] :: Downloading: 03 - ノヮノ
(1/1) [===================                               ] :: Downloading: 03 - ノヮノ
(1/1) [====================                              ] :: Downloading: 03 - ノヮノ
(1/1) [====================                              ] :: Downloading: 03 - ノヮノ
(1/1) [=====================                             ] :: Downloading: 03 - ノヮノ
(1/1) [=====================                             ] :: Downloading: 03 - ノヮノ
(1/1) [======================                            ] :: Downloading: 03 - ノヮノ
(1/1) [======================                            ] :: Downloading: 03 - ノヮノ
(1/1) [=======================                           ] :: Downloading: 03 - ノヮノ
(1/1) [=======================                           ] :: Downloading: 03 - ノヮノ
(1/1) [========================                          ] :: Downloading: 03 - ノヮノ
(1/1) [========================                          ] :: Downloading: 03 - ノヮノ
(1/1) [=========================                         ] :: Downloading: 03 - ノヮノ
(1/1) [=========================                         ] :: Downloading: 03 - ノヮノ
(1/1) [==========================                        ] :: Downloading: 03 - ノヮノ
(1/1) [==========================                        ] :: Downloading: 03 - ノヮノ
(1/1) [===========================                       ] :: Downloading: 03 - ノヮノ
(1/1) [===========================                       ] :: Downloading: 03 - ノヮノ
(1/1) [============================                      ] :: Downloading: 03 - ノヮノ
(1/1) [============================                      ] :: Downloading: 03 - ノヮノ
(1/1) [=============================                     ] :: Downloading: 03 - ノヮノ
(1/1) [=============================                     ] :: Downloading: 03 - ノヮノ
(1/1) [==============================                    ] :: Downloading: 03 - ノヮノ
(1/1) [==============================                    ] :: Downloading: 03 - ノヮノ
(1/1) [===============================                   ] :: Downloading: 03 - ノヮノ
(1/1) [===============================                   ] :: Downloading: 03 - ノヮノ
(1/1) [================================                  ] :: Downloading: 03 - ノヮノ
(1/1) [================================                  ] :: Downloading: 03 - ノヮノ
(1/1) [=================================                 ] :: Downloading: 03 - ノヮノ
(1/1) [=================================                 ] :: Downloading: 03 - ノヮノ
(1/1) [==================================                ] :: Downloading: 03 - ノヮノ
(1/1) [==================================                ] :: Downloading: 03 - ノヮノ
(1/1) [===================================               ] :: Downloading: 03 - ノヮノ
(1/1) [===================================               ] :: Downloading: 03 - ノヮノ
(1/1) [====================================              ] :: Downloading: 03 - ノヮノ
(1/1) [====================================              ] :: Downloading: 03 - ノヮノ
(1/1) [=====================================             ] :: Downloading: 03 - ノヮノ
(1/1) [=====================================             ] :: Downloading: 03 - ノヮノ
(1/1) [======================================            ] :: Downloading: 03 - ノヮノ
(1/1) [======================================            ] :: Downloading: 03 - ノヮノ
(1/1) [=======================================           ] :: Downloading: 03 - ノヮノ
(1/1) [=======================================           ] :: Downloading: 03 - ノヮノ
(1/1) [========================================          ] :: Downloading: 03 - ノヮノ
(1/1) [========================================          ] :: Downloading: 03 - ノヮノ
(1/1) [=========================================         ] :: Downloading: 03 - ノヮノ
(1/1) [=========================================         ] :: Downloading: 03 - ノヮノ
(1/1) [==========================================        ] :: Downloading: 03 - ノヮノ
(1/1) [==========================================        ] :: Downloading: 03 - ノヮノ
(1/1) [===========================================       ] :: Downloading: 03 - ノヮノ
(1/1) [===========================================       ] :: Downloading: 03 - ノヮノ
(1/1) [============================================      ] :: Downloading: 03 - ノヮノ
(1/1) [============================================      ] :: Downloading: 03 - ノヮノ
(1/1) [=============================================     ] :: Downloading: 03 - ノヮノ
(1/1) [=============================================     ] :: Downloading: 03 - ノヮノ
(1/1) [==============================================    ] :: Downloading: 03 - ノヮノ
(1/1) [==============================================    ] :: Downloading: 03 - ノヮノ
(1/1) [===============================================   ] :: Downloading: 03 - ノヮノ
(1/1) [===============================================   ] :: Downloading: 03 - ノヮノ
(1/1) [================================================  ] :: Downloading: 03 - ノヮノ
(1/1) [================================================  ] :: Downloading: 03 - ノヮノ
(1/1) [================================================= ] :: Downloading: 03 - ノヮノ
(1/1) [================================================= ] :: Downloading: 03 - ノヮノ
(1/1) [==================================================] :: Downloading: 03 - ノヮノ
(1/1) [==================================================] :: Encoding: 03 - ノヮノ
(1/1) [==================================================] :: Finished: 03 - ノヮノ 
Evolution0 commented 5 years ago

Hm.. somewhere along the line the title is getting mangled, I can tell it gets the correct title because track_meta shows: 'title': '(ノ◕ヮ◕)ノ-・゚✧', and it displays correctly in terminal (So its not a unicode rendering issue either)

Evolution0 commented 5 years ago

Tracing it all the way back it seems like slugify is breaking it.

Evolution0 commented 5 years ago

Switching to the newer and actively developed python-slugify seems to fix it, though it gives up even trying to use the original title at all and just romanizes any japanese for example. Looks like I need to add a check to see if a filename is valid for Windows/Linux and if so not bother to slugify it.

Its been so long I actually can't remember why I slugify things.. it was in the original codebase..

In the mean time using the --no-slugify argument should make it work properly.

Evolution0 commented 5 years ago

Note to self: Check out pathvalidate