nkanaev / yarr

yet another rss reader
MIT License
2.88k stars 217 forks source link

Old feed items reaapearing as unread occasionally #87

Closed adaszko closed 2 years ago

adaszko commented 2 years ago

Hi 👋 Thank you for creating yarr. I've been using it for ages and it's wonderful! No other feed reader that I know of is so delightfully minimalistic and so easy to self-host thanks to the choice of SQLite and Go.

I have a slight nuisance though with some feed items reappearing as unread from time to time in the reader. Note that the content of the items that reappear do not change (most of the time). They just need to be marked as read by hand. I'm sure other people experience that too and I'm curious what's the way avoid that and only see truly unread items in the reader.

One cause that I've observed is when a RSS feed has <guid isPermalink=false> as e.g. at https://rss.art19.com/you-can-learn-chinese. In such case it's no wonder yarr doesn't try to guess whether an item is read or not because even the server doesn't guarantee whether it's a new item or not. Still, that translates to a suboptimal UX so maybe some workaround be acceptable? Generally, the feed item datetimes are correct, so a I was thinking of a per-feed setting like "do not show feed items older than some designated one". Perhaps there's a better solution. I'm curious to hear your thoughts.

I have around ~250 feeds in my yarr instance and I'm experiencing the issue 3+ times a day.

I should add I'm very much aware of https://github.com/nkanaev/yarr/issues/57 but I subjectively see this as an issue, not a new feature. You may have a different opinion of course.

Best regards!

arsfeld commented 2 years ago

Just want to add that I have the same issue with http://www.questionablecontent.net/QCRSS.xml, it constantly shows old already read items.

nkanaev commented 2 years ago

It is an issue indeed. Currently there are two scenarios i know of when this annoyance occurs:

  1. Old items reappear after server performs cleanup. It is similar to how NetNewsWire does it, though the logic is much simpler.
  2. Content providers changing guids (or any other substitute fields yarr uses as unique key). This results in duplicate entries in feed's timeline (similar to https://github.com/nkanaev/yarr/issues/67).

As of the solutions:

  1. ¯_(ツ)_/¯, it's possible that database cleanup must be reworked to alleviate the issue.
  2. yarr should checks items before adding them to the db, making sure to prevent duplicate entries.

In either case, I'd need a good sample of feeds & entries to tinker with. @adaszko would you be able to provide database exports of the feeds affected?

adaszko commented 2 years ago

It is an issue indeed. Currently there are two scenarios i know of when this annoyance occurs:

  1. Old items reappear after server performs cleanup. It is similar to how NetNewsWire does it, though the logic is much simpler.
  2. Content providers changing guids (or any other substitute fields yarr uses as unique key). This results in duplicate entries in feed's timeline (similar to Duplicate items appearing #67).

As of the solutions:

  1. ¯(ツ)/¯, it's possible that database cleanup must be reworked to alleviate the issue.
  2. yarr should checks items before adding them to the db, making sure to prevent duplicate entries.

In either case, I'd need a good sample of feeds & entries to tinker with. @adaszko would you be able to provide database exports of the feeds affected?

Hi. Thank for your response. Here's a database export of the feed I mentioned above:

sqlite> .mode csv
sqlite> select id, folder_id, title, description, link, feed_link from feeds where id = 8;
id,folder_id,title,description,link,feed_link
8,1,"You Can Learn Chinese","",http://www.MandarinCompanion.com,https://feeds.simplecast.com/JKQ1FyFk

sqlite> select last_refreshed, last_modified, etag from http_states where feed_id = 8;
last_refreshed,last_modified,etag
"2022-01-24 14:02:03","Mon, 24 Jan 2022 13:02:34 GMT",""

sqlite> select error from feed_errors where feed_id = 8;
Run Time: real 0.000 user 0.000063 sys 0.000064

sqlite> select id, guid, title, link, description, author, date, date_updated, date_arrived, status, podcast_url from items where feed_id = 8;

id,guid,title,link,description,author,date,date_updated,date_arrived,status,podcast_url
8020878,0046b194-faa8-464f-a407-fbe29aafa314,"#25 Christmas in China","",,,"2019-12-16 10:00:07+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/5f6e2962-4dd9-4aac-8b11-c2a936f41c78.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020857,01c1b851-ceaf-450b-ba5e-8a76f3c2f1b7,"#46 How to Learn to Read Chinese: Pinyin, Characters, Vocabulary (Part 1 of 4)","",,,"2020-10-05 07:51:28+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/1041a729-8449-43e6-be9e-60f04b87bed8.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020892,070b51ff-e842-44ce-a16a-ba5e421dd80e,"#11 How to Build Reading Fluency","",,,"2019-06-03 09:00:16+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/75aae6ef-c67d-427d-82c8-6df7dd899167.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020864,0dbed21c-5521-4880-980a-6a1af73e860f,"#39 The Future of Learning Chinese","",,,"2020-06-29 07:53:34+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/bd378a77-9356-44ea-b537-a776538460d6.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020852,128874df-f90f-4247-809c-4a8c7ef71fc0,"#51 Behind-the-Scenes Making a Mandarin Companion Graded Reader","",,,"2020-12-14 10:08:51+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/0a146c64-147a-4e84-9aaf-3c73ffc95b82.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020850,12b638b2-b0fb-43c5-b739-5f8e1126496e,"#53 Reality vs. How You Think Your Chinese Sounds","",,,"2021-01-11 10:00:00+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/4e48fd6e-7925-43be-86f7-c3b5aa1730d1.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020883,13ebd219-c681-4316-abba-76f60ecf0460,"#20 Confessions of a Chinese Language Teacher","",,,"2019-10-07 09:00:24+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/e040a34c-7427-41f5-8f59-bffe9fb50189.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020853,185288d6-f896-4b0b-9814-2115d7845586,"#50 What’s Holding You Back From Learning Chinese","",,,"2020-11-30 10:00:00+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/8c6c9beb-6df2-49e3-bfcc-b523f5137ac5.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020871,1e2d2c56-a37d-4b60-a527-1f54c10cb9d0,"#32 COVID-19: A Tale of Two Cities","",,,"2020-03-23 09:00:07+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/eae19928-698b-4f92-8293-9e6afa0e418a.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020855,20fd0c05-79d8-4a41-8cfe-4f65a5df5049,"#48 How to Learn to Read Chinese: Developing Fluency Now (Part 3 of 4)","",,,"2020-11-02 09:00:32+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/629951c0-2286-4209-87b3-558504be13c9.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020890,211b7d98-7c3c-4cfe-a59d-830c5b0c089d,"#13 The Four Keys to Learning Chinese You Need to Know","",,,"2019-07-01 10:00:11+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/7cc44bc1-4f98-48bb-a122-018cfae0ad41.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020851,235d4c32-f69e-4189-a28c-e43569e521e6,"#52 Top 10 Stories of 2020","",,,"2020-12-28 10:00:00+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/737d96da-914f-44dd-b914-bda43d43741d.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020879,26dee649-387b-4978-9a1b-79425bda888f,"#24 The 4 Types of Tone Mistakes","",,,"2019-12-02 11:00:29+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/37575fc6-919c-44ca-8181-bdc01c953b14.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020865,3d6d73be-7c38-422e-b7a9-2a0927c71e61,"#38 How Much Mandarin Do You Need To Speak?","",,,"2020-06-15 09:00:19+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/feb8952c-9086-4012-8402-439f150a2ed4.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020880,3f7774d7-8042-473e-b848-9800ea06a066,"#23 Pinyin Over Characters: the Crippling Crutch","",,,"2019-11-18 11:00:08+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/41d8cf12-64d6-42f8-8f6c-eb9deb0358e8.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020873,3ff64e84-621c-4370-bfaf-26a07217e34f,"#30 Second Language or Foreign Language: What Type of Learner Are You?","",,,"2020-02-24 10:00:13+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/3a482c1d-041b-4396-8b81-8a4d18c42205.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020868,4ac2a050-0511-48ea-a3b8-7efe71723aad,"#35 Don't Be the Girl with the Name Radiohead","",,,"2020-05-04 08:00:44+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/9d5e2c7e-7fce-48a8-b983-f1e605e9b106.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020876,542fc4ab-00e4-4b90-ba3e-fb9f3004fffd,"#27 Can You Learn Chinese from a Textbook?","",,,"2020-01-13 10:21:25+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/bce5265a-d145-4a6c-a5f7-04d1bef69be5.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020877,57d7396a-0e00-423e-bb9c-193ef5ef169a,"#26 End of Year Special","",,,"2019-12-29 11:00:07+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/bbe0d212-fac5-4dbb-b3e7-953231ce78fa.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020895,5c88c7f3-6274-462a-8ab5-29da7b2eb69b,"#8 Tones, Music, and Confidence","",,,"2019-04-22 10:05:04+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/817fdf67-810b-4773-844d-5e504584cbfb.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020869,5c924bc7-96ed-43a1-b31a-6bb3c23e2c82,"#34 Pronouncing Chinese Confidently","",,,"2020-04-20 08:00:10+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/242b7f6f-0831-4596-8821-b02dc0594374.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020887,6f820b73-c703-4e85-a282-c759605e171d,"#16 How to Build Listening Skills","",,,"2019-08-12 09:00:03+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/9138dd6e-ebbe-4f33-9f9a-cf7771382fa9.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020884,72fb6638-07d7-484d-bdb4-52fd4519e538,"#19 How to Find Your Motivation","",,,"2019-09-23 09:00:12+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/7199fd7f-1b19-4bbf-a16d-4cff18965097.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020889,76702ad8-828e-4f5e-b0a1-20e36cb092aa,"#14 How to Pronounce Like a Pro","",,,"2019-07-15 10:00:09+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/27328e97-8f5f-4ca1-a4f5-6ad25b39f100.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020900,7980d480-3644-41aa-902a-3aeac94af787,"#3 Chinese Dual Immersion: It's Been Going On Longer Than You Think","",,,"2019-02-07 16:30:00+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/9d3df4a2-1037-4370-9f84-515fe771c8d8.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020862,8027d82f-43ec-4cb2-90a6-5db7eb5a433f,"#41 How to Use Translation to Learn Chinese","",,,"2020-07-27 09:00:05+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/5bbd70a5-d7f6-44c4-b2db-b9268f6b3ce2.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020854,8109db0c-ad08-40da-8c31-54fea655921f,"#49 How to Learn to Read Chinese: Bridging the Gap to Native Materials (Part 4 of 4)","",,,"2020-11-16 10:00:00+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/5decede8-d36a-437b-91ec-b10a41ff7745.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020899,8200f9fd-9209-44f3-bd5f-a0f134fcea73,"#4 Chinese Language Power Struggles","",,,"2019-02-25 10:00:00+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/2a5f86f8-6fde-4b94-85fb-87db3464f353.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020897,84d2f284-5e82-4286-9088-104cc725743f,"#6 Chinese Immersion: The Home Version","",,,"2019-03-25 09:00:18+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/fb253931-7903-42dd-b867-51093f3013f5.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020886,866348d4-db40-4d0b-9659-67d9c9347d6b,"#17 Bridging the Gap to Higher Levels","",,,"2019-08-26 09:00:10+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/1ac2f472-6920-4443-8fc1-ed56e9b11403.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020881,89989f7a-31bc-4cd2-b88c-400c57df6d5a,"#22 Going from ""Learning to Read"" to ""Reading to Learn""","",,,"2019-11-04 10:00:18+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/f0b8e22b-5f63-4323-9854-c0e18fa3bb69.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020891,915524a2-e89d-486d-b2f1-8528a9e0ee6a,"#12 Knowledge vs Proficiency","",,,"2019-06-16 20:00:16+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/1e9c1b16-d574-4ac4-8130-af0525e437a6.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020885,91b09fe9-7f1e-4e08-9005-6b1bb6e994b8,"#18 The Controversy Between Simplified and Traditional Characters Explained","",,,"2019-09-09 09:00:20+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/19557e6c-d16e-4b72-80ca-8c8ebdd6ef40.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020896,957893ae-9b07-4928-85d8-c62e5cded70d,"#7 The Myth of Learning Chinese Like a Child","",,,"2019-04-08 10:00:03+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/74177423-73aa-4019-9b42-33d58f18a098.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020888,95d6bfe2-6e9a-494a-9c15-eff33df27a6a,"#15 Steven Kaufmann “The Linguist” Interview","",,,"2019-07-29 09:00:04+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/39434702-058f-4376-b83e-bc58983a8d64.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020894,9e5a10ad-9337-43be-a1eb-8e8290aad49c,"#9 Skritter CEO Jacob Gill Interview","",,,"2019-05-06 10:00:09+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/2c6d4fdd-1aa0-4e46-abd0-2b5c63f32107.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020898,a28775f8-91f3-48b1-9f7d-6234c0508bd2,"#5 Writing Characters: Is It Worth Your Time?","",,,"2019-03-11 09:00:11+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/52f023d9-66da-4617-a425-57c4530cfdac.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020856,aa49cf52-ec5e-4d22-8dc9-a2cc776c3594,"#47 How to Learn to Read Chinese: Baby Steps to Real Reading (Part 2 of 4)","",,,"2020-10-19 09:00:00+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/da1144ab-8d15-451d-8191-6651b7ddd6df.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020874,aab43161-e9b5-4ebb-9181-e68dcc637137,"#29 How to Pass the HSK and AP Chinese Tests","",,,"2020-02-10 09:06:22+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/a893cfb1-d1f9-4c20-9388-04a15cd40014.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020858,b3179383-1050-45f7-a2af-080d85b58e35,"#45 The Perils of Taking Chinese Literally","",,,"2020-09-21 09:00:03+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/9ce6b10e-0d37-471f-a4c8-3eb6ef92350c.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020872,b54e309c-dac4-43ea-9955-f0e0d12f46e0,"#31 Extensive Reading and the Path to Fluency","",,,"2020-03-09 09:00:08+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/ae5e21ae-1cd4-4be9-b8c0-3972474ee34f.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020901,b877c0ba-d49e-43da-8f94-ec481eab6b27,"#2 Why Chinese is Taught the Way It Is","",,,"2019-02-07 16:00:00+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/9b6d7e2c-dc77-4dc8-acdb-8607f2f3162d.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020875,b8d78ad5-b97b-45ae-99bb-2b027829859a,"#28 A Method to Remember Thousands of Characters","",,,"2020-01-27 10:00:17+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/a1ab86ed-8eda-49a5-8eb5-b82f86daa866.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020866,bd08fda8-3fe3-4834-a2b7-e1f0bfc296f0,"#37 Chinese Homestay Censorship Vampires","",,,"2020-06-01 09:00:06+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/3ea3b6a3-7e65-4399-a690-bafc5a7e1c01.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020902,bf71c7f9-2057-46c7-b360-f76568cb3f30,"#1 Introduction","",,,"2019-02-04 21:58:00+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/ca211fc9-aa14-4e61-9a04-fadadf32727a.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020870,ca126462-278d-4d26-9cb9-3a7eef65385b,"#33 Writing Chinese: How to Build Your Skills","",,,"2020-04-06 09:00:10+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/8a9af569-9580-4a29-a05b-1596e16c1b18.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020867,d2a9fbaa-6715-4b5f-ad6b-590a275ea534,"#36 How To Find The Perfect Tutor","",,,"2020-05-18 09:00:04+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/5c4ecb40-5016-4ba3-8c80-9a416f3fb59b.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020893,d3a53a7a-008b-4eb6-9b0b-a1c97524c5a5,"#10 The Stages of Learning Chinese","",,,"2019-05-20 10:00:07+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/c9fa08bc-a895-43ae-a868-9146b614636b.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020861,d50d29f4-9f87-46c4-b83d-99a386b391d4,"#42 How to Get a Laugh in Chinese","",,,"2020-08-10 09:00:09+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/5b71c7e7-1c71-4ad8-8384-32f733cd7b00.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020860,dec1ba5c-ebf4-40bd-b205-caa2774612d8,"#43 How to Level Up Your Listening Skills","",,,"2020-08-24 07:00:18+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/aea5af99-9c07-44db-bc32-e27c6b0d585a.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020859,e70eddcb-f285-46ca-815d-1705cf9035de,"#44 Using Chinese at Work with Kaiser Kuo","",,,"2020-09-07 08:09:23+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/13372201-c6d3-452c-a5a7-c16e0baa1870.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020863,ea464207-1c2a-43f0-93d4-fd75d8726628,"#40 How to Set Goals for Learning Chinese","",,,"2020-07-13 09:00:29+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/82360b35-83e4-4691-8086-f18ad070f957.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020882,f3a048a9-8ea3-44db-ae70-01e14fe49afc,"#21 How Important is Chinese Culture When Learning Chinese?","",,,"2019-10-21 10:00:08+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/8a0f2bdc-8a82-4e3c-9abe-e0918d06f3ef.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020846,gid://art19-episode-locator/V0/5UpYWMSYJKJml86wsn-wkKDfNHliL1RcAhJXpBE-6QA,"#57 What’s in a Chinese surname?","",,,"2021-03-08 16:07:26+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/14b7994b-db6f-439b-9b28-a8f1e16aac8a.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020843,gid://art19-episode-locator/V0/6IJemuQTNGCPfKtB2Habe3FV8tC_gdgQ6oayc7Fa1Z0,"#60 How Chinese food can help your Chinese","",,,"2021-04-19 15:18:58+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/00627083-5ade-42e4-bfbd-b2f4a2f53bbf.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
7315188,gid://art19-episode-locator/V0/CgIpDwsRp977RowPDyI9RMDJ6fCfaWL63IdZzPPigk4,"Reading Techniques to Master Chinese","",,,"2021-12-13 12:41:39+00:00",,"2021-12-13 14:25:07.239541+01:00",1,https://rss.art19.com/episodes/40561a29-bfa2-4b71-931f-2802e2c1f62b.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
6158405,gid://art19-episode-locator/V0/Fd0vbiZ4pGRBmVNd5Tg9k13lEt5EdCoqVKzk4b3K6Fw,"#68 Why is Chinese so damn hard?","",,,"2021-08-09 16:14:28+00:00",,"2021-11-08 19:01:35.762538+01:00",1,https://rss.art19.com/episodes/ecdd388c-3e1e-4a22-9533-b87f6db825ec.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
5918026,gid://art19-episode-locator/V0/M-jrVQdbfYPmMR851Tc62r2kQj-c-TX0gnUJuEFHyfc,"#74 Improving your listening skills (Part 2 of 2)","",,,"2021-11-01 14:55:31+00:00",,"2021-11-01 16:01:46.441617+01:00",1,https://rss.art19.com/episodes/ab474bec-806e-4314-a593-96da5a472e6c.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020847,gid://art19-episode-locator/V0/RsXxwyjNF1805PxR7NE3WaojIpUP5xCu1UeIWbhz0ho,"#56 When should you start learning characters?","",,,"2021-02-22 16:03:10+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/793141cc-56e0-4412-878e-f4d372bd388f.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8088216,gid://art19-episode-locator/V0/TtiVD_hYeFIUL3NtjMCDxZDH6GZMY675lBcRutph2vs,"Games for learning Chinese","",,,"2022-01-24 13:00:00+00:00",,"2022-01-24 14:01:53.373358+01:00",1,https://rss.art19.com/episodes/d1fc7be2-95c5-409c-b364-ed0375d9adc2.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
7662567,gid://art19-episode-locator/V0/WORXiHKpNR8Ess3GwNpqLYIQVjpZ2fI9g7Kh1hL8Te4,"#71 Colorful or clean? Swearing in Chinese","",,,"2021-09-20 19:52:29+00:00",,"2021-12-23 12:12:39.737864+01:00",1,https://rss.art19.com/episodes/d4446800-3787-49ac-a427-6bf83723e541.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
6846523,gid://art19-episode-locator/V0/XcX6h9eeiCy_kGdvIxqp3nSYMGjeAs1C5r68b30GZzQ,"#76 Cantonese and the uniqueness of Chinese dialects","",,,"2021-11-29 12:52:15+00:00",,"2021-11-29 14:04:07.424849+01:00",1,https://rss.art19.com/episodes/385661f6-3af5-4ad0-ad76-de747c432e38.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020837,gid://art19-episode-locator/V0/Zhb0wuZyyFGmo-HgBf-bdL_FTVmikKf-L5ycue16r-k,"#66 8 Tips for Using Your Dictionary","",,,"2021-07-12 13:05:07+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/b24878b9-db42-4073-a83e-df39100a0f95.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
5780553,gid://art19-episode-locator/V0/ZtzFFvNBTeoGzjeRhZgDsXs0URVg9Z4j5HjR0NyVFmY,"#67 Pop-up dictionaries: Helpful or not?","",,,"2021-07-26 15:43:13+00:00",,"2021-10-28 10:02:16.440414+02:00",1,https://rss.art19.com/episodes/8e5454e0-b9dc-437d-a51c-f1e9092b2546.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020824,gid://art19-episode-locator/V0/dhdUpRKPz814V8er9dNGaShu1JlRWAOcG9kPolu5Y3Y,"Why typing characters is better than handwriting","",,,"2022-01-10 14:59:49+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/c2549336-37a6-4eaf-887a-319fd4462ba8.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
7699984,gid://art19-episode-locator/V0/g-fovOYESj3EE6brDDpSvnAnOt7dbCJQwpzuRve51WA,"Top 10 Stories of 2021","",,,"2021-12-24 14:10:24+00:00",,"2021-12-27 08:24:38.680145+01:00",1,https://rss.art19.com/episodes/f90b904f-5248-46e7-94c8-b57d99563aab.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020845,gid://art19-episode-locator/V0/gLQxYdpC4SBB5BnD-qcpKQvFyPHga3HV-GLefesWrYQ,"#58 Will Chinese become the next global language?","",,,"2021-03-22 18:02:42+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/1d4d36db-8ad7-412a-bcd6-d813c214dfc7.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020848,gid://art19-episode-locator/V0/gQzMWFgUrEk_I3kam653lgHnIsxQYe3Gg9bJbm85lpI,"#55 Flashcards, spaced repetition software, and building proficiency","",,,"2021-02-08 22:53:54+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/04b5e3ba-d753-4bf0-9610-2ba032a3f4e4.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
7174178,gid://art19-episode-locator/V0/il7mE0n0LKYK4Zb8q2O9ZuBU5IP5pFW9J3eYwOPuNH8,"#70 Reading the News: Do’s and Dont's","",,,"2021-09-06 14:32:44+00:00",,"2021-12-09 13:02:10.602648+01:00",1,https://rss.art19.com/episodes/eb65a8a0-af7d-4740-b35a-4b37e2276b38.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
7439828,gid://art19-episode-locator/V0/lHb3qmS_y4g1v2jfSvkYnPI5SR0-CrNH3dvONiwS-FQ,"#64 Tips and tricks for typing Chinese","",,,"2021-06-15 13:15:05+00:00",,"2021-12-17 07:01:52.239596+01:00",1,https://rss.art19.com/episodes/01b7fd65-b5a5-4972-88a9-c9b34853fdb9.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020830,gid://art19-episode-locator/V0/lgJBOZ7K-nSQP1fkDQMnq0ultTqgmFpERoXHLNORbAw,"#73 Improving your listening skills (Part 1 of 2)","",,,"2021-10-18 09:32:14+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/6daf63d3-7c60-4be7-8072-6e70ca9279bb.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
7000601,gid://art19-episode-locator/V0/oyqhghFCUn8gWz6BlnnPLF6AVUmRPnyunUvXI6JHJOI,"#63 The truth about vocabulary","",,,"2021-06-02 20:45:39+00:00",,"2021-12-04 14:01:58.676094+01:00",1,https://rss.art19.com/episodes/a9cbc3e5-748e-44db-ba43-4d0b2b633eb3.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
6702217,gid://art19-episode-locator/V0/rqhnw5xbOdqXwfOlXIl9nIDn2lNBs_DkLgDLd_lqL_A,"#69 The rivalry: Beijing vs. Shanghai","",,,"2021-08-23 16:11:03+00:00",,"2021-11-25 16:58:02.122383+01:00",1,https://rss.art19.com/episodes/e1295860-e673-4543-ae5d-4415d7fd4af3.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
6532358,gid://art19-episode-locator/V0/tFhPMvp3EKWk6p765Ye9FPqiSd4ziHKkSPERMFQ1CuM,"#62 Make your language learning learner-centric","",,,"2021-05-17 21:33:48+00:00",,"2021-11-20 17:33:24.316448+01:00",1,https://rss.art19.com/episodes/9645048c-b5e9-4cd0-8f67-adc066f169df.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
7941000,gid://art19-episode-locator/V0/tcc2z6eQK-bZqpapLHF9frLie3bzOtR2XgsNt3qXbhM,"#72 The Truth about Chinese subtitles","",,,"2021-10-04 12:58:59+00:00",,"2022-01-03 14:01:47.238665+01:00",1,https://rss.art19.com/episodes/3bc33f25-111f-4d46-9de1-fbedce3303d5.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020844,gid://art19-episode-locator/V0/uPmWq10yTNHFDSCobFB5Ch8MYiZSkF9P4G4SLAq11ak,"#59 Bridging to Breakthrough and Abigail Washburn","",,,"2021-04-05 16:22:25+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/3c269af7-87fc-4278-a756-f3ef1bf17d7c.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
8020849,gid://art19-episode-locator/V0/uy7LjPWYO8f_0nu8HdezFkl28U76ggfI1uc2csQQ_w8,"#54 Putting the Drama into Chinese Class","",,,"2021-01-25 21:38:17+00:00",,"2022-01-22 13:44:42.4267+01:00",1,https://rss.art19.com/episodes/a24ee913-a790-43ad-b74d-b33e577c3f72.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
6359915,gid://art19-episode-locator/V0/xYKeYo-OLvySQchiS70wpeQ_rLUgqrVHQsqQ2enLf7Q,"#75 How to learn similar words the right way","",,,"2021-11-15 16:31:51+00:00",,"2021-11-15 18:01:55.232547+01:00",1,https://rss.art19.com/episodes/97322c5e-2f4d-4206-aa52-3a0c124c7deb.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
7941007,gid://art19-episode-locator/V0/y4r6FX9UmIL6x-maNrOGqRsxVG4kavFTu-m-iGjOMGs,"#65 Going all the way: Graduate studies in Chinese","",,,"2021-06-28 12:23:00+00:00",,"2022-01-03 14:01:47.238665+01:00",1,https://rss.art19.com/episodes/a15e70cf-bf6b-411b-9733-916e0d772ec6.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
5967690,gid://art19-episode-locator/V0/zvbRIJOB31GK-dUlMLBp7h1drqztH034z5KNt7ZPjFg,"#61 National Chinese Language Conference 2021 Report: Hope for all Chinese learners","",,,"2021-05-03 16:57:00+00:00",,"2021-11-03 07:01:48.65271+01:00",1,https://rss.art19.com/episodes/79871a72-cd80-42eb-861f-8238499d4658.mp3?rss_browser=BAhJIglZYXJyBjoGRVQ%3D--c8b829fb714463f659cf4c60631a6345f9a72a99
adaszko commented 2 years ago

Another problematic feed is https://www.the-paper-trail.org/index.xml

sqlite> select * from feeds where title like '%Robinson%';
id|folder_id|title|description|link|feed_link|icon
75||Henry Robinson||https://www.the-paper-trail.org/|https://www.the-paper-trail.org/index.xml|
Run Time: real 0.002 user 0.000878 sys 0.000786

sqlite> select last_refreshed, last_modified, etag from http_states where feed_id = 15;
last_refreshed|last_modified|etag
2021-03-10 09:59:01|Thu, 28 Jan 2021 18:23:05 GMT|W/"60130109-c2c03"
Run Time: real 0.000 user 0.000085 sys 0.000079

sqlite> select error from feed_errors where feed_id = 15;
Run Time: real 0.000 user 0.000062 sys 0.000064

sqlite> select id, guid, title, link, description, author, date, date_updated, date_arrived, status, podcast_url from items where feed_id = 15;
id|guid|title|link|description|author|date|date_updated|date_arrived|status|podcast_url
15|http://aturon.github.io/2015/08/27/epoch|Lock-freedom without garbage collection|http://aturon.github.io/blog/2015/08/27/epoch/|||2015-08-27 07:00:00+00:00|2015-08-27 07:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
14|http://aturon.github.io/2015/09/18/reuse|Specialize to reuse|http://aturon.github.io/blog/2015/09/18/reuse/|||2015-09-18 07:00:00+00:00|2015-09-18 07:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
13|http://aturon.github.io/2015/09/28/impl-trait|Resurrecting impl Trait|http://aturon.github.io/blog/2015/09/28/impl-trait/|||2015-09-28 07:00:00+00:00|2015-09-28 07:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
12|http://aturon.github.io/2016/07/05/rfc-refinement|Refining Rust's RFCs|http://aturon.github.io/blog/2016/07/05/rfc-refinement/|||2016-07-05 07:00:00+00:00|2016-07-05 07:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
11|http://aturon.github.io/2016/07/27/rust-platform|The Rust Platform|http://aturon.github.io/blog/2016/07/27/rust-platform/|||2016-07-27 07:00:00+00:00|2016-07-27 07:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
10|http://aturon.github.io/2016/08/11/futures|Zero-cost futures in Rust|http://aturon.github.io/blog/2016/08/11/futures/|||2016-08-11 07:00:00+00:00|2016-08-11 07:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
9|http://aturon.github.io/2016/08/26/tokio|Expanding the Tokio project|http://aturon.github.io/blog/2016/08/26/tokio/|||2016-08-26 07:00:00+00:00|2016-08-26 07:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
8|http://aturon.github.io/2016/09/07/futures-design|Designing futures for Rust|http://aturon.github.io/blog/2016/09/07/futures-design/|||2016-09-07 07:00:00+00:00|2016-09-07 07:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
7|http://aturon.github.io/2017/02/06/specialization-and-coherence|Specialization, coherence, and API evolution|http://aturon.github.io/blog/2017/02/06/specialization-and-coherence/|||2017-02-06 08:00:00+00:00|2017-02-06 08:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
6|http://aturon.github.io/2017/04/24/negative-chalk|Negative reasoning in Chalk|http://aturon.github.io/blog/2017/04/24/negative-chalk/|||2017-04-24 07:00:00+00:00|2017-04-24 07:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
5|http://aturon.github.io/2017/07/08/lifetime-dispatch|Shipping specialization: a story of soundness|http://aturon.github.io/blog/2017/07/08/lifetime-dispatch/|||2017-07-08 07:00:00+00:00|2017-07-08 07:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
4|http://aturon.github.io/2017/07/26/revisiting-rusts-modules|Revisiting Rust’s modules|http://aturon.github.io/blog/2017/07/26/revisiting-rusts-modules/|||2017-07-26 07:00:00+00:00|2017-07-26 07:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
3|http://aturon.github.io/2017/08/02/modules-part-2|Revisiting Rust’s modules, part 2|http://aturon.github.io/blog/2017/08/02/modules-part-2/|||2017-08-02 07:00:00+00:00|2017-08-02 07:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
2|http://aturon.github.io/2018/01/09/rust-2018|Rust in 2018: a people perspective|http://aturon.github.io/blog/2018/01/09/rust-2018/|||2018-01-09 08:00:00+00:00|2018-01-09 08:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|
1|http://aturon.github.io/2018/01/16/libs-mission|Retooling the Rust Libs Team team for 2018|http://aturon.github.io/blog/2018/01/16/libs-mission/|||2018-01-16 08:00:00+00:00|2018-01-16 08:00:00+00:00|2021-03-10 10:59:01.88906+01:00|1|

Note the bare <guid> tags in the body: https://www.the-paper-trail.org/index.xml There's no isPermalink attribute.


upd (from @nkanaev ) - provided items are from another feed (paper trails has id 75, not 15).

nkanaev commented 2 years ago

I think I get what's happening. Just to confirm - it's mostly feeds whose old items reappear as unread, is that correct @adaszko? If that's the case, it's definitely the database cleanup's fault. I'll see what I can do.

P.S. yarr ignores isPermalink altogether.

adaszko commented 2 years ago

I think I get what's happening. Just to confirm - it's mostly feeds whose old items reappear as unread, is that correct @adaszko.

Yes, that's correct.

If that's the case, it's definitely the database cleanup's fault. I'll see what I can do.

Awesome!

P.S. yarr ignores isPermalink altogether.

I looked for that logic in the code without success. Now I know why 😄

PS. Sorry for the mistake in the database dump above. Let me know if you need anything else to debug.

nkanaev commented 2 years ago

the fix has landed on master branch, will be available in the upcoming release.

adaszko commented 2 years ago

Great! I'm compiling from master usually, so decided to test it right away. I'm on macOS. The compilation started failing for me:

% make build_macos
mkdir -p _output/macos
GOOS=darwin GOARCH=amd64 go build -tags "sqlite_foreign_keys release macos" -ldflags="-s -w -X 'main.Version=2.2' -X 'main.GitHash=b40d930f'" -o _output/macos/yarr src/main.go
# github.com/nkanaev/yarr/src/systray
src/systray/systray_darwin.go:26:13: undefined: MenuItem
src/systray/systray_darwin.go:35:13: undefined: MenuItem
src/systray/systray_nonwindows.go:48:32: undefined: MenuItem
src/systray/systray_nonwindows.go:80:25: undefined: MenuItem
src/systray/systray_nonwindows.go:86:25: undefined: MenuItem
src/systray/systray_nonwindows.go:94:2: undefined: systrayReady
src/systray/systray_nonwindows.go:99:2: undefined: systrayExit
src/systray/systray_nonwindows.go:104:2: undefined: systrayMenuItemSelected
make: *** [build_macos] Error 2
nkanaev commented 2 years ago

@adaszko thanks for pointing out! fixed, could you check once more?

adaszko commented 2 years ago

@adaszko thanks for pointing out! fixed, could you check once more?

Looks good now! I'll be testing the reappearing items in the coming days. Thank you!

adaszko commented 6 months ago

@nkanaev Hey. It looks like it happened again today with this feed: https://bluz71.github.io/feed.xml

image

Is there something else that could be still causing this?

The articles on that feed don't seem to be updated (<updated>2018-06-07T00:00:00+00:00</updated>) so they seem to reapear as unread purely spuriously.

nkanaev commented 6 months ago

@adaszko

adaszko commented 6 months ago

I'm at commit 7ecbbff18a7ea00460d4157632ee09b537afc0b5

Nope, no duplicates (as on the screenshot above).

nkanaev commented 6 months ago

hmm, that is weird. does marking them read and restarting the app show them as unread again after refreshing?

adaszko commented 6 months ago

The answer to that question is no BUT I just noticed the articles are in fact duplicated. It's just the some are marked read and some unread:

image

Note that I haven't purged the database since fixing https://github.com/nkanaev/yarr/issues/146 so it may have something to do with it!

nkanaev commented 6 months ago

The other reason may be changed guids as reported in https://github.com/nkanaev/yarr/issues/67.

adaszko commented 6 months ago

There's no guids in that feed (it's linked above)