final tweaks and renames for twitter likes

This commit is contained in:
Dima Gerasimov 2020-01-11 17:22:23 +00:00
parent 14a5a91685
commit a660829ec7

View file

@ -81,13 +81,20 @@ class Tweet(NamedTuple):
class Like(NamedTuple): class Like(NamedTuple):
raw: Json raw: Json
# TODO need to make permalink/link/url consistent across my stuff..
@property
def permalink(self) -> str:
# doesn'tseem like link it export is more specific...
return f'https://twitter.com/i/web/status/{self.tid}'
@property @property
def tid(self) -> Tid: def tid(self) -> Tid:
return self.raw['tweetId'] return self.raw['tweetId']
@property @property
def text(self) -> str: def text(self) -> Optional[str]:
return self.raw['fullText'] # ugh. I think none means that tweet was deleted?
return self.raw.get('fullText')
class ZipExport: class ZipExport:
@ -113,22 +120,23 @@ class ZipExport:
# TODO ugh. would be nice to unify Tweet/Like interface # TODO ugh. would be nice to unify Tweet/Like interface
# however, akeout only got tweetId, full text and url # however, akeout only got tweetId, full text and url
for r in self.raw('like.js'): for r in self.raw('like.js'):
yield Like(r) assert set(r.keys()) == {'like'}
yield Like(r['like'])
def tweets_all() -> List[Tweet]: def tweets() -> List[Tweet]:
return list(sorted(ZipExport().tweets(), key=lambda t: t.dt)) return list(sorted(ZipExport().tweets(), key=lambda t: t.dt))
def likes_all() -> List[Like]: def likes() -> List[Like]:
return list(ZipExport().likes()) return list(ZipExport().likes())
def predicate(p) -> List[Tweet]: def predicate(p) -> List[Tweet]:
return [t for t in tweets_all() if p(t)] return [t for t in tweets() if p(t)]
def predicate_date(p) -> List[Tweet]: def predicate_date(p) -> List[Tweet]: # TODO rename to by_date?
return predicate(lambda t: p(t.dt.date())) return predicate(lambda t: p(t.dt.date()))
# TODO move these to private tests? # TODO move these to private tests?