Links that end in trailing slash but don't have "/comments/" should add
"/comments" prefix but don't because the regex match succeeds. Fix the
regular expression to be more robust and add prefix for paths like
- /foo/
- /////foo
- /foo/////
- ////foo////
and not add prefix for paths like
- /comments/foo
- /////comments/foo
- /comments/////foo
- ////comments////foo
- ////comments////foo/////
The previous fix failed to consider links like
"redd.it/r/.../comments/...". Those don't really exist in the wild, and
they don't work (when redirects are turned off). Still, play it safe
and don't add "/comments" prefix unless the path has height 1.
Now, redirects should work for
- redd.it/foo
- redd.it/comments/foo
- redd.it/r/bar/comments/foo
even though the only kind of native link that works is
- redd.it/foo
Although I have never seen it in the wild, it is possible to navigate to
"redd.it/comments/...". This should redirect to
"teddit.net/comments/..." in the case of instance teddit.net. However,
the current code redirects it to "teddit.net/comments/comments/...".
Fix it by avoiding adding the prefix if it's already there.
Teddit image urls are different from libreddit. Handle each separately.
Test manually:
- libredd.it: pass
- libreddit.spike.codes: pass
- libreddit.kavin.rocks: pass
- libreddit.insanity.wtf: fail (site doesn't work in general)
- libreddit.dothq.co: pass
- teddit.net: mostly fail
- teddit.ggc-project.de: mostly fail
- teddit.kavin.rocks: mostly fail
- old.reddit.com: fail
- i.reddit.com: fail
- snew.notabug.io: fail (site doesn't work in general)
Teddit image urls have two issues. First, the links almost never work
(404) if the image url is visited directly before visiting the main
page. Once the main page is visited, however, the image url starts
working. I'm guessing this is an issue with teddit instances not
fetching images unless the main page is accessed. Second, some image
links are different/incompatible for some reason. For example,
<https://i.redd.it/htg3owj12ok21.png> turns into
<https://teddit.net/pics/w:null_TpEyuHnjif6578pV0lBuM-kNW1bXqxbvqbOHjhRZVr0.png>.
Libreddit seems to not have this issue.