From 753eb34bdef7fb2e1258016146f5043590479f9b Mon Sep 17 00:00:00 2001 From: Bob Mottram <bob@freedombone.net> Date: Sun, 1 Sep 2019 14:13:52 +0100 Subject: [PATCH] Parsing post collections from pleroma --- posts.py | 26 +++++++++++++++++--------- session.py | 6 +++++- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/posts.py b/posts.py index 6ba23a4b..1695cad8 100644 --- a/posts.py +++ b/posts.py @@ -136,9 +136,16 @@ def parseUserFeed(session,feedUrl: str,asHeader: {}, \ nextUrl = feedJson['next'] if nextUrl: - for item in parseUserFeed(session,nextUrl,asHeader, \ - projectVersion,httpPrefix,domain): - yield item + if isinstance(nextUrl, str): + userFeed=parseUserFeed(session,nextUrl,asHeader, \ + projectVersion,httpPrefix,domain) + for item in userFeed: + yield item + elif isinstance(nextUrl, dict): + userFeed=nextUrl + if userFeed.get('orderedItems'): + for item in userFeed['orderedItems']: + yield item def getPersonBox(baseDir: str,session,wfRequest: {},personCache: {}, \ projectVersion: str,httpPrefix: str,domain: str, \ @@ -205,16 +212,16 @@ def getPosts(session,outboxUrl: str,maxPosts: int, \ projectVersion: str,httpPrefix: str,domain: str) -> {}: """Gets public posts from an outbox """ - personPosts={} + personPosts={} if not outboxUrl: return personPosts - asHeader = {'Accept': 'application/activity+json; profile="https://www.w3.org/ns/activitystreams"'} if raw: result = [] i = 0 - for item in parseUserFeed(session,outboxUrl,asHeader, \ - projectVersion,httpPrefix,domain): + userFeed=parseUserFeed(session,outboxUrl,asHeader, \ + projectVersion,httpPrefix,domain) + for item in userFeed: result.append(item) i += 1 if i == maxPosts: @@ -223,8 +230,9 @@ def getPosts(session,outboxUrl: str,maxPosts: int, \ return None i = 0 - for item in parseUserFeed(session,outboxUrl,asHeader, \ - projectVersion,httpPrefix,domain): + userFeed=parseUserFeed(session,outboxUrl,asHeader, \ + projectVersion,httpPrefix,domain) + for item in userFeed: if not item.get('id'): if debug: print('No id') diff --git a/session.py b/session.py index ed886697..89572a21 100644 --- a/session.py +++ b/session.py @@ -27,6 +27,10 @@ def createSession(domain: str, port: int, onionRoute: bool): def getJson(session,url: str,headers: {},params: {}, \ version='1.0.0',httpPrefix='https',domain='testdomain') -> {}: + if not isinstance(url, str): + print('url: '+str(url)) + print('ERROR: getJson url should be a string') + return None sessionParams={} sessionHeaders={} if headers: @@ -46,7 +50,7 @@ def getJson(session,url: str,headers: {},params: {}, \ return result.json() except Exception as e: print('ERROR: getJson failed') - print('url: '+url) + print('url: '+str(url)) print('headers: '+str(sessionHeaders)) print('params: '+str(sessionParams)) print(e)