• 3 Posts
  • 78 Comments
Joined 1 year ago
cake
Cake day: June 26th, 2023

help-circle







  • BookLibConnect and AaxAudioConverter. I use them do download my Audible purchases. They are both written using WPF (or some other Windows API only GUI lib) and thus cannot be run on Linux. I might rewrite them using the newest C# cross platform library, but that library does not compile native on Linux, only on Windows… (Unless you use the community maintained version).

    I did try to find replacement for both for them but their ease of use and the conversion tool for axx to m4b made it preferable to just install Windows in a VM.

    As for WinSCP, it is a SFTP/FPT client that is really nice and I did miss it initially as well. But Nautilus file manager has both SFTP and FTP support built into it. And if you want a dedicated client, I can recommend Terminus (but I am not a heavy user, rclone in terminal does most of my heavy lifting).





  • It’s because there is no clear indication of where a block ends.

    Here is some sample code. I find it difficult to tell how many indentations I have or where I need to write if I want to continue at a certain level.

    import time
    import aiohttp
    
    """
    Retreives the data from RSS URL and return the status codes as well as the data. Return -1 if something went wrong.
    """
    async def get_rss_feed(rss_url):
        async with aiohttp.ClientSession() as session:
            try:
                retry_count = 0
                while retry_count < 5:
                    async with session.get(rss_url) as resp:
                        if resp.status == 200:
                            return {'status': resp.status, 'data': await resp.text()}
                        else:
                            retry_count += 1
                            time.sleep(60)
                if retry_count == 5:
                    raise ValueError('To many failed connection attempts', retry_count)
            except aiohttp.InvalidURL as error:
                return {'status': -1, 'data': f"Error: {rss_url} is not a valid URL.", 'error': error}
            except aiohttp.ClientConnectorError as error:
                return {'status': -1, 'data': f"Error: Could not connect to {rss_url}.", 'error': error}
            except ValueError as error:
                return {'status': -1, 'data': f"Error: Could not connect to {rss_url} after {retry_count} attempts.", 'error': error}