regex.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package main
  2. import (
  3. "regexp"
  4. )
  5. //TODO: Reddit short url ... https://redd.it/post_code
  6. const (
  7. regexpUrlTwitter = `^http(s?):\/\/pbs(-[0-9]+)?\.twimg\.com\/media\/[^\./]+\.(jpg|png)((\:[a-z]+)?)$`
  8. regexpUrlTwitterStatus = `^http(s?):\/\/(www\.)?twitter\.com\/([A-Za-z0-9-_\.]+\/status\/|statuses\/|i\/web\/status\/)([0-9]+)$`
  9. regexpUrlInstagram = `^http(s?):\/\/(www\.)?instagram\.com\/p\/[^/]+\/(\?[^/]+)?$`
  10. regexpUrlInstagramReel = `^http(s?):\/\/(www\.)?instagram\.com\/reel\/[^/]+\/(\?[^/]+)?$`
  11. regexpUrlImgurSingle = `^http(s?):\/\/(i\.)?imgur\.com\/[A-Za-z0-9]+(\.gifv)?$`
  12. regexpUrlImgurAlbum = `^http(s?):\/\/imgur\.com\/(a\/|gallery\/|r\/[^\/]+\/)[A-Za-z0-9]+(#[A-Za-z0-9]+)?$`
  13. regexpUrlStreamable = `^http(s?):\/\/(www\.)?streamable\.com\/([0-9a-z]+)$`
  14. regexpUrlGfycat = `^http(s?):\/\/gfycat\.com\/(gifs\/detail\/)?[A-Za-z]+$`
  15. regexpUrlFlickrPhoto = `^http(s)?:\/\/(www\.)?flickr\.com\/photos\/([0-9]+)@([A-Z0-9]+)\/([0-9]+)(\/)?(\/in\/album-([0-9]+)(\/)?)?$`
  16. regexpUrlFlickrAlbum = `^http(s)?:\/\/(www\.)?flickr\.com\/photos\/(([0-9]+)@([A-Z0-9]+)|[A-Za-z0-9]+)\/(albums\/(with\/)?|(sets\/)?)([0-9]+)(\/)?$`
  17. regexpUrlFlickrAlbumShort = `^http(s)?:\/\/((www\.)?flickr\.com\/gp\/[0-9]+@[A-Z0-9]+\/[A-Za-z0-9]+|flic\.kr\/s\/[a-zA-Z0-9]+)$`
  18. regexpUrlTistory = `^http(s?):\/\/t[0-9]+\.daumcdn\.net\/cfile\/tistory\/([A-Z0-9]+?)(\?original)?$`
  19. regexpUrlTistoryLegacy = `^http(s?):\/\/[a-z0-9]+\.uf\.tistory\.com\/(image|original)\/[A-Z0-9]+$`
  20. regexpUrlTistoryLegacyWithCDN = `^http(s)?:\/\/[0-9a-z]+.daumcdn.net\/[a-z]+\/[a-zA-Z0-9\.]+\/\?scode=mtistory&fname=http(s?)%3A%2F%2F[a-z0-9]+\.uf\.tistory\.com%2F(image|original)%2F[A-Z0-9]+$`
  21. regexpUrlPossibleTistorySite = `^http(s)?:\/\/[0-9a-zA-Z\.-]+\/(m\/)?(photo\/)?[0-9]+$`
  22. regexpUrlRedditPost = `^http(s?):\/\/(www\.)?reddit\.com\/r\/([0-9a-zA-Z'_]+)?\/comments\/([0-9a-zA-Z'_]+)\/?([0-9a-zA-Z'_]+)?(.*)?$`
  23. )
  24. var (
  25. regexUrlTwitter *regexp.Regexp
  26. regexUrlTwitterStatus *regexp.Regexp
  27. regexUrlInstagram *regexp.Regexp
  28. regexUrlInstagramReel *regexp.Regexp
  29. regexUrlImgurSingle *regexp.Regexp
  30. regexUrlImgurAlbum *regexp.Regexp
  31. regexUrlStreamable *regexp.Regexp
  32. regexUrlGfycat *regexp.Regexp
  33. regexUrlFlickrPhoto *regexp.Regexp
  34. regexUrlFlickrAlbum *regexp.Regexp
  35. regexUrlFlickrAlbumShort *regexp.Regexp
  36. regexUrlTistory *regexp.Regexp
  37. regexUrlTistoryLegacy *regexp.Regexp
  38. regexUrlTistoryLegacyWithCDN *regexp.Regexp
  39. regexUrlPossibleTistorySite *regexp.Regexp
  40. regexUrlRedditPost *regexp.Regexp
  41. )
  42. func compileRegex() error {
  43. var err error
  44. if regexUrlTwitter, err = regexp.Compile(regexpUrlTwitter); err != nil {
  45. return err
  46. }
  47. if regexUrlTwitterStatus, err = regexp.Compile(regexpUrlTwitterStatus); err != nil {
  48. return err
  49. }
  50. if regexUrlInstagram, err = regexp.Compile(regexpUrlInstagram); err != nil {
  51. return err
  52. }
  53. if regexUrlInstagramReel, err = regexp.Compile(regexpUrlInstagramReel); err != nil {
  54. return err
  55. }
  56. if regexUrlImgurSingle, err = regexp.Compile(regexpUrlImgurSingle); err != nil {
  57. return err
  58. }
  59. if regexUrlImgurAlbum, err = regexp.Compile(regexpUrlImgurAlbum); err != nil {
  60. return err
  61. }
  62. if regexUrlStreamable, err = regexp.Compile(regexpUrlStreamable); err != nil {
  63. return err
  64. }
  65. if regexUrlGfycat, err = regexp.Compile(regexpUrlGfycat); err != nil {
  66. return err
  67. }
  68. if regexUrlFlickrPhoto, err = regexp.Compile(regexpUrlFlickrPhoto); err != nil {
  69. return err
  70. }
  71. if regexUrlFlickrAlbum, err = regexp.Compile(regexpUrlFlickrAlbum); err != nil {
  72. return err
  73. }
  74. if regexUrlFlickrAlbumShort, err = regexp.Compile(regexpUrlFlickrAlbumShort); err != nil {
  75. return err
  76. }
  77. if regexUrlTistory, err = regexp.Compile(regexpUrlTistory); err != nil {
  78. return err
  79. }
  80. if regexUrlTistoryLegacy, err = regexp.Compile(regexpUrlTistoryLegacy); err != nil {
  81. return err
  82. }
  83. if regexUrlTistoryLegacyWithCDN, err = regexp.Compile(regexpUrlTistoryLegacyWithCDN); err != nil {
  84. return err
  85. }
  86. if regexUrlPossibleTistorySite, err = regexp.Compile(regexpUrlPossibleTistorySite); err != nil {
  87. return err
  88. }
  89. if regexUrlRedditPost, err = regexp.Compile(regexpUrlRedditPost); err != nil {
  90. return err
  91. }
  92. return nil
  93. }