See my [previous comment](https://github.com/Freeseer/freeseer/pull/404#discussion_r7390018). Try iterating over the list returned by `get_presentations()` instead.

How it is currently implemented is very inefficient (and also a bit confusing to understand - why iterate over the length if you want to iterate over the presentations). Whenever you call a method like `get_presentation_speaker(i)`, that method will then call `get_presentation()` which in turn calls `get_presentations()` which returns a list.

Instead, you can call `get_presentations()` from the start in your loop and iterate over the presentations in the list. You then pass the presentation to a method like `get_presentation_speaker(presentation)` which will return the info ready to be used (no encoding/decoding necessary). Also, if you clean all the presentations once at the start when you get the feed data, then you can use that as the presentation list instead of cleaning the presentations whenever you're trying to get a presentation attribute.