refine code style for hash definition in song_url function
add timeout and retry logic for some non-downloadable songs