regex.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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. regexpUrlImgurSingle = `^http(s?):\/\/(i\.)?imgur\.com\/[A-Za-z0-9]+(\.gifv)?$`
  11. regexpUrlImgurAlbum = `^http(s?):\/\/imgur\.com\/(a\/|gallery\/|r\/[^\/]+\/)[A-Za-z0-9]+(#[A-Za-z0-9]+)?$`
  12. regexpUrlStreamable = `^http(s?):\/\/(www\.)?streamable\.com\/([0-9a-z]+)$`
  13. regexpUrlGfycat = `^http(s?):\/\/gfycat\.com\/(gifs\/detail\/)?[A-Za-z]+$`
  14. regexpUrlFlickrPhoto = `^http(s)?:\/\/(www\.)?flickr\.com\/photos\/([0-9]+)@([A-Z0-9]+)\/([0-9]+)(\/)?(\/in\/album-([0-9]+)(\/)?)?$`
  15. regexpUrlFlickrAlbum = `^http(s)?:\/\/(www\.)?flickr\.com\/photos\/(([0-9]+)@([A-Z0-9]+)|[A-Za-z0-9]+)\/(albums\/(with\/)?|(sets\/)?)([0-9]+)(\/)?$`
  16. regexpUrlFlickrAlbumShort = `^http(s)?:\/\/((www\.)?flickr\.com\/gp\/[0-9]+@[A-Z0-9]+\/[A-Za-z0-9]+|flic\.kr\/s\/[a-zA-Z0-9]+)$`
  17. regexpUrlGoogleDrive = `^http(s?):\/\/drive\.google\.com\/file\/d\/[^/]+\/view$`
  18. regexpUrlGoogleDriveFolder = `^http(s?):\/\/drive\.google\.com\/(drive\/folders\/|open\?id=)([^/]+)$`
  19. regexpUrlTistory = `^http(s?):\/\/t[0-9]+\.daumcdn\.net\/cfile\/tistory\/([A-Z0-9]+?)(\?original)?$`
  20. regexpUrlTistoryLegacy = `^http(s?):\/\/[a-z0-9]+\.uf\.tistory\.com\/(image|original)\/[A-Z0-9]+$`
  21. 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]+$`
  22. regexpUrlPossibleTistorySite = `^http(s)?:\/\/[0-9a-zA-Z\.-]+\/(m\/)?(photo\/)?[0-9]+$`
  23. regexpUrlRedditPost = `^http(s?):\/\/(www\.)?reddit\.com\/r\/([0-9a-zA-Z'_]+)?\/comments\/([0-9a-zA-Z'_]+)\/?([0-9a-zA-Z'_]+)?(.*)?$`
  24. regexpUrlMastodonPost1 = `^http(s)?:\/\/([0-9a-zA-Z\.-]+)?\/@([0-9a-zA-Z'_]+)?\/([0-9]+)?$`
  25. regexpUrlMastodonPost2 = `^http(s)?:\/\/([0-9a-zA-Z\.-]+)?\/web\/statuses\/([0-9]+)?$`
  26. )
  27. var (
  28. regexUrlTwitter *regexp.Regexp
  29. regexUrlTwitterStatus *regexp.Regexp
  30. regexUrlInstagram *regexp.Regexp
  31. regexUrlImgurSingle *regexp.Regexp
  32. regexUrlImgurAlbum *regexp.Regexp
  33. regexUrlStreamable *regexp.Regexp
  34. regexUrlGfycat *regexp.Regexp
  35. regexUrlFlickrPhoto *regexp.Regexp
  36. regexUrlFlickrAlbum *regexp.Regexp
  37. regexUrlFlickrAlbumShort *regexp.Regexp
  38. regexUrlGoogleDrive *regexp.Regexp
  39. regexUrlGoogleDriveFolder *regexp.Regexp
  40. regexUrlTistory *regexp.Regexp
  41. regexUrlTistoryLegacy *regexp.Regexp
  42. regexUrlTistoryLegacyWithCDN *regexp.Regexp
  43. regexUrlPossibleTistorySite *regexp.Regexp
  44. regexUrlRedditPost *regexp.Regexp
  45. regexUrlMastodonPost1 *regexp.Regexp
  46. regexUrlMastodonPost2 *regexp.Regexp
  47. )
  48. func compileRegex() error {
  49. var err error
  50. regexUrlTwitter, err = regexp.Compile(regexpUrlTwitter)
  51. if err != nil {
  52. return err
  53. }
  54. regexUrlTwitterStatus, err = regexp.Compile(regexpUrlTwitterStatus)
  55. if err != nil {
  56. return err
  57. }
  58. regexUrlInstagram, err = regexp.Compile(regexpUrlInstagram)
  59. if err != nil {
  60. return err
  61. }
  62. regexUrlImgurSingle, err = regexp.Compile(regexpUrlImgurSingle)
  63. if err != nil {
  64. return err
  65. }
  66. regexUrlImgurAlbum, err = regexp.Compile(regexpUrlImgurAlbum)
  67. if err != nil {
  68. return err
  69. }
  70. regexUrlStreamable, err = regexp.Compile(regexpUrlStreamable)
  71. if err != nil {
  72. return err
  73. }
  74. regexUrlGfycat, err = regexp.Compile(regexpUrlGfycat)
  75. if err != nil {
  76. return err
  77. }
  78. regexUrlFlickrPhoto, err = regexp.Compile(regexpUrlFlickrPhoto)
  79. if err != nil {
  80. return err
  81. }
  82. regexUrlFlickrAlbum, err = regexp.Compile(regexpUrlFlickrAlbum)
  83. if err != nil {
  84. return err
  85. }
  86. regexUrlFlickrAlbumShort, err = regexp.Compile(regexpUrlFlickrAlbumShort)
  87. if err != nil {
  88. return err
  89. }
  90. regexUrlGoogleDrive, err = regexp.Compile(regexpUrlGoogleDrive)
  91. if err != nil {
  92. return err
  93. }
  94. regexUrlGoogleDriveFolder, err = regexp.Compile(regexpUrlGoogleDriveFolder)
  95. if err != nil {
  96. return err
  97. }
  98. regexUrlTistory, err = regexp.Compile(regexpUrlTistory)
  99. if err != nil {
  100. return err
  101. }
  102. regexUrlTistoryLegacy, err = regexp.Compile(regexpUrlTistoryLegacy)
  103. if err != nil {
  104. return err
  105. }
  106. regexUrlTistoryLegacyWithCDN, err = regexp.Compile(regexpUrlTistoryLegacyWithCDN)
  107. if err != nil {
  108. return err
  109. }
  110. regexUrlPossibleTistorySite, err = regexp.Compile(regexpUrlPossibleTistorySite)
  111. if err != nil {
  112. return err
  113. }
  114. regexUrlRedditPost, err = regexp.Compile(regexpUrlRedditPost)
  115. if err != nil {
  116. return err
  117. }
  118. regexUrlMastodonPost1, err = regexp.Compile(regexpUrlMastodonPost1)
  119. if err != nil {
  120. return err
  121. }
  122. regexUrlMastodonPost2, err = regexp.Compile(regexpUrlMastodonPost2)
  123. if err != nil {
  124. return err
  125. }
  126. return nil
  127. }