Page 1 of 1

ttrss-python - A client library written in python

Posted: 02 Apr 2013, 17:14
by Vassius
I have started working on a simple client library written in Python to interact with the API of TT-RSS. So far it only has some basic functionality, but development is ongoing. The purpose of this library is to abstract away all the JSON handling and http communication, so that you can focus on the stuff that matters to your script or application.

If anyone finds this useful, I'd very much appreciate some feature requests, bug reports or just general feedback.

The library is available as a "pip install ttrss-python", or as a source download from my Github account at https://github.com/Vassius/ttrss-python

Documentation can be found here: https://ttrss-python.readthedocs.org/en/latest/ (this always applies to the latest trunk code in Github).

Short usage example taken from the README:

Code: Select all

from ttrss.client import TTRClient
client = TTRClient('http://url-to-rss-installation', 'username', 'super-secret-password', auto_login=True)
cats = client.get_categories()
cat = cats[0]
cat.title
u'News'
feeds = cat.feeds()
feed = feeds[0]
feed.title
u'MacRumors: Mac News and Rumors - All Stories'
headlines = feed.headlines()
# etc...


Happy coding! :)

Re: ttrss-python - A client library written in python

Posted: 03 Apr 2013, 04:01
by joseph-mx
nice one, vassius!!
i am started to read more on python. seem to be getting popular soon. 8)

Re: ttrss-python - A client library written in python

Posted: 03 Apr 2013, 08:40
by fox
Stickied.

Re: ttrss-python - A client library written in python

Posted: 03 Apr 2013, 15:26
by Vassius
joseph-mx wrote:nice one, vassius!!
i am started to read more on python. seem to be getting popular soon. 8)

Thanks :)
Good luck with your Python learning, I'm sure you'll enjoy it!

fox wrote:Stickied.

Cool, thanks!

Re: ttrss-python - A client library written in python

Posted: 03 Apr 2013, 17:30
by Firehand
I started a python version of the updater which parse all needed php files for variables (defines) and even evaluates expressions like VERSION . "Tiny Tiny RSS". Converted alot of PHP code (i am reading PHP code for 1st time). Everything worked fine until i realized that in some point i have to run all PHP plugins :D. So i hit the wall. I dont wanna write a new lexer and convert PHP code to python. Well, at least i understood how some of the tt-rss parts work and a little PHP :D

Re: ttrss-python - A client library written in python

Posted: 05 Apr 2013, 10:06
by Vassius
The first versions used the cookie based authentication, which was removed in tt-rss 1.7.6. I just released ttrss-python 0.1.4 to PyPI to fix the broken authentication with newer server versions. It's of course backwards compatible with older tt-rss versions.

Re: ttrss-python - A client library written in python

Posted: 10 Sep 2013, 00:03
by Vassius
After quite a long break from development, I have now released version 0.3 to PyPI. It now has basic support for labels.

ttrss-python is pretty much feature-complete by now, but I would love some feature requests, bug reports or other feedback.

Hope you enjoy this library!

Re: ttrss-python - A client library written in python

Posted: 06 Oct 2013, 01:32
by Vassius
I have just released version 0.4 to PyPI.

Now with Python 3 support!

Re: ttrss-python - A client library written in python

Posted: 29 Jul 2014, 20:04
by gonzaenz
hi,

i found some problems trying to connect into https.

>>> from ttrss.client import TTRClient
>>> tt = TTRClient("https://server.org/tt-rss","user", "pass")
>>> tt.login()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/gonzo/Documents/dev/rss_parse/lib/python2.7/site-packages/ttrss/client.py", line 50, in login
'password': self.password
File "/Users/gonzo/Documents/dev/rss_parse/lib/python2.7/site-packages/ttrss/client.py", line 75, in _get_json
r = self._session.post(self.url, data=json.dumps(data))
File "/Users/gonzo/Documents/dev/rss_parse/lib/python2.7/site-packages/requests/sessions.py", line 498, in post
return self.request('POST', url, data=data, **kwargs)
File "/Users/gonzo/Documents/dev/rss_parse/lib/python2.7/site-packages/requests/sessions.py", line 456, in request
resp = self.send(prep, **send_kwargs)
File "/Users/gonzo/Documents/dev/rss_parse/lib/python2.7/site-packages/requests/sessions.py", line 559, in send
r = adapter.send(request, **kwargs)
File "/Users/gonzo/Documents/dev/rss_parse/lib/python2.7/site-packages/requests/adapters.py", line 382, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: [Errno 1] _ssl.c:507: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

after some googling i find out that requests is validating SSL certificates. I'm using a self-signed certificate and some how requests is not using keychain(i'm using osx).

the workaround i found so far it is to disable the cerficate verification

>>> from ttrss.client import TTRClient
>>> tt = TTRClient("https://server.org/tt-rss","user", "pass")
>>> tt.__dict__['_session'].verify
True
>>> tt.__dict__['_session'].verify=False # don't verify certificates
>>> tt.__dict__['_session'].verify
False
>>> tt.login()
>>> a=tt.get_categories()
>>> pprint(a)
[<ttrss.client.Category object at 0x100f72dd0>,
<ttrss.client.Category object at 0x100f72f90>,
<ttrss.client.Category object at 0x100f72cd0>,
<ttrss.client.Category object at 0x100f72b90>,
<ttrss.client.Category object at 0x100f72f10>,
<ttrss.client.Category object at 0x100f727d0>,
<ttrss.client.Category object at 0x100f72750>,
<ttrss.client.Category object at 0x100f72fd0>,
<ttrss.client.Category object at 0x100f72f50>,
<ttrss.client.Category object at 0x100f72ed0>,
<ttrss.client.Category object at 0x100f78110>,
<ttrss.client.Category object at 0x100f78150>]

another option is to set enviroment variable REQUESTS_CA_BUNDLE pointing to certificate path. i have not tried it yet.

reference: http://docs.python-requests.org/en/late ... rification

hope it helps