Fix parsing of spaces in APIv2; improve no-worsening of Spaces
This commit is contained in:
parent
433dd5e0bb
commit
412574e46f
@ -27,11 +27,11 @@ func (p Profile) SaveSpace(s scraper.Space) error {
|
||||
short_url=case when short_url == "" then :short_url else short_url end,
|
||||
state=:state,
|
||||
title=:title,
|
||||
updated_at=:updated_at,
|
||||
updated_at=max(:updated_at, updated_at),
|
||||
is_available_for_replay=:is_available_for_replay,
|
||||
replay_watch_count=:replay_watch_count,
|
||||
live_listeners_count=:live_listeners_count,
|
||||
is_details_fetched=:is_details_fetched
|
||||
is_details_fetched=(is_details_fetched or :is_details_fetched)
|
||||
`, &s)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error saving space (space ID %q, value: %#v):\n %w", s.ID, s, err)
|
||||
|
@ -38,8 +38,11 @@ func TestNoWorseningSpace(t *testing.T) {
|
||||
|
||||
space := create_space_from_id(rand.Int())
|
||||
space.ShortUrl = "Some Short Url"
|
||||
space.Title = "Debating Somebody"
|
||||
space.CreatedAt = scraper.TimestampFromUnix(1000)
|
||||
space.UpdatedAt = scraper.TimestampFromUnix(2000)
|
||||
space.CreatedById = scraper.UserID(-1)
|
||||
space.IsDetailsFetched = true
|
||||
|
||||
// Save the space
|
||||
err := profile.SaveSpace(space)
|
||||
@ -47,8 +50,11 @@ func TestNoWorseningSpace(t *testing.T) {
|
||||
|
||||
// Worsen the space, then re-save
|
||||
space.ShortUrl = ""
|
||||
space.Title = ""
|
||||
space.CreatedAt = scraper.TimestampFromUnix(0)
|
||||
space.UpdatedAt = scraper.TimestampFromUnix(0)
|
||||
space.CreatedById = scraper.UserID(0)
|
||||
space.IsDetailsFetched = false
|
||||
err = profile.SaveSpace(space)
|
||||
require.NoError(err)
|
||||
|
||||
@ -57,6 +63,9 @@ func TestNoWorseningSpace(t *testing.T) {
|
||||
require.NoError(err)
|
||||
|
||||
assert.Equal(new_space.ShortUrl, "Some Short Url")
|
||||
assert.Equal(new_space.Title, "Debating Somebody")
|
||||
assert.Equal(new_space.CreatedAt, scraper.TimestampFromUnix(1000))
|
||||
assert.Equal(new_space.UpdatedAt, scraper.TimestampFromUnix(2000))
|
||||
assert.Equal(new_space.CreatedById, scraper.UserID(-1))
|
||||
assert.True(new_space.IsDetailsFetched)
|
||||
}
|
||||
|
@ -249,7 +249,14 @@ func (api_result APIV2Result) ToTweetTrove(ignore_null_entries bool) TweetTrove
|
||||
ret.Tweets[main_tweet.ID] = main_tweet
|
||||
} else if api_result.Result.Card.Legacy.Name == "3691233323:audiospace" {
|
||||
space := api_result.Result.Card.ParseAsSpace()
|
||||
main_tweet.Spaces = []Space{space}
|
||||
// Attach it to the Tweet that linked it
|
||||
main_tweet.SpaceID = space.ID
|
||||
// Put it in the trove; avoid clobbering
|
||||
if existing_space, is_ok := ret.Spaces[space.ID]; !is_ok || !existing_space.IsDetailsFetched {
|
||||
ret.Spaces[space.ID] = space
|
||||
}
|
||||
|
||||
// main_tweet.Spaces = []Space{space}
|
||||
|
||||
// Remove it from the Urls
|
||||
for i, url := range main_tweet.Urls {
|
||||
|
@ -444,6 +444,7 @@ func TestAPIV2ParseTweetWithPoll(t *testing.T) {
|
||||
*/
|
||||
func TestAPIV2ParseTweetWithSpace(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
require := require.New(t)
|
||||
data, err := os.ReadFile("test_responses/api_v2/tweet_with_audiospaces_card.json")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
@ -457,11 +458,14 @@ func TestAPIV2ParseTweetWithSpace(t *testing.T) {
|
||||
|
||||
assert.Len(trove.Tweets, 1)
|
||||
tweet, ok := trove.Tweets[1497647006445146113]
|
||||
require.True(t, ok)
|
||||
require.True(ok)
|
||||
assert.Len(tweet.Urls, 0)
|
||||
assert.Len(tweet.Spaces, 1)
|
||||
assert.Equal(tweet.SpaceID, SpaceID("1dRJZlRNZDzKB"))
|
||||
|
||||
require.Len(trove.Spaces, 1)
|
||||
s, is_ok := trove.Spaces["1dRJZlRNZDzKB"]
|
||||
require.True(is_ok)
|
||||
|
||||
s := tweet.Spaces[0]
|
||||
assert.Equal(SpaceID("1dRJZlRNZDzKB"), s.ID)
|
||||
assert.Equal("https://t.co/5RLbEwQgvH", s.ShortUrl)
|
||||
assert.False(s.IsDetailsFetched)
|
||||
|
Loading…
x
Reference in New Issue
Block a user