abstract-webtools 0.1.6.331__tar.gz → 0.1.6.332__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/PKG-INFO +1 -1
  2. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/setup.py +1 -1
  3. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/__init__.py +4 -0
  4. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/DomainManager.py +89 -0
  5. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/__init__.py +8 -0
  6. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/domain_utils/__init__.py +6 -0
  7. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/domain_utils/correct_url_utils.py +37 -0
  8. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/domain_utils/domain_parse_utils.py +137 -0
  9. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/domain_utils/get_strip_utils.py +77 -0
  10. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/__init__.py +1 -0
  11. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/main.py +62 -0
  12. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/specUrl_utils.py +308 -0
  13. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/titles/title_variants.py +39 -0
  14. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/titles/titles.py +165 -0
  15. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/utils.py +30 -0
  16. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/__init__.py +2 -0
  17. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/functions/__init__.py +1 -0
  18. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/functions/tokenizer.py +29 -0
  19. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/src/__init__.py +4 -0
  20. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/src/constants.py +167 -0
  21. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/src/init_imports.py +6 -0
  22. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/src/module_imports.py +4 -0
  23. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/src/pyqt_imports.py +3 -0
  24. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/managers/__init__.py +1 -0
  25. abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/managers/urlManager.py +133 -0
  26. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/imports.py +1 -0
  27. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/__init__.py +1 -0
  28. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/main.py +1 -0
  29. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/imports.py +1 -0
  30. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/__init__.py +13 -0
  31. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/direct_file.py +21 -0
  32. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/facebook.py +19 -0
  33. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/giphy.py +12 -0
  34. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/imgur.py +13 -0
  35. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/instagram.py +14 -0
  36. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/pinterest.py +12 -0
  37. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/reddit.py +11 -0
  38. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/tenor.py +12 -0
  39. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/tiktok.py +14 -0
  40. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/twitch.py +11 -0
  41. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/twitter.py +14 -0
  42. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/vimeo.py +12 -0
  43. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/youtube.py +21 -0
  44. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/url_utils.py +152 -0
  45. abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/imports/functions/titles/__init__.py +2 -0
  46. abstract_webtools-0.1.6.332/src/abstract_webtools/networkManager/main.py +1 -0
  47. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools.egg-info/PKG-INFO +1 -1
  48. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools.egg-info/SOURCES.txt +42 -0
  49. abstract_webtools-0.1.6.332/tests/test.py +274 -0
  50. abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/main.py +0 -7
  51. abstract_webtools-0.1.6.331/src/abstract_webtools/networkManager/__init__.py +0 -2
  52. abstract_webtools-0.1.6.331/tests/test.py +0 -270
  53. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/README.md +0 -0
  54. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/pyproject.toml +0 -0
  55. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/setup.cfg +0 -0
  56. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/__init__.py +0 -0
  57. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/abstract_usurpit.py +0 -0
  58. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/big_user_agent_list.py +0 -0
  59. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/domain_identifier.py +0 -0
  60. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/extention_list.py +0 -0
  61. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/find_dirs.py +0 -0
  62. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/middleManager → abstract_webtools-0.1.6.332/src/abstract_webtools/imports}/__init__.py +0 -0
  63. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager → abstract_webtools-0.1.6.332/src/abstract_webtools/imports}/src/functions/imports.py +0 -0
  64. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/__init__.py +0 -0
  65. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/direct_file.py +0 -0
  66. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/facebook.py +0 -0
  67. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/giphy.py +0 -0
  68. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/imgur.py +0 -0
  69. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/instagram.py +0 -0
  70. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/pinterest.py +0 -0
  71. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/reddit.py +0 -0
  72. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/tenor.py +0 -0
  73. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/tiktok.py +0 -0
  74. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/twitch.py +0 -0
  75. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/twitter.py +0 -0
  76. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/vimeo.py +0 -0
  77. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/functions/providers → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/src}/youtube.py +0 -0
  78. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/src/imports → abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src}/functions/titles/__init__.py +0 -0
  79. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager → abstract_webtools-0.1.6.332/src/abstract_webtools/imports}/src/functions/url_utils.py +0 -0
  80. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/k2s_downloader.py +0 -0
  81. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/main.py +0 -0
  82. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/__init__.py +0 -0
  83. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/browserImmitator.py +0 -0
  84. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/cipherManager.py +0 -0
  85. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/clownworld/__init__.py +0 -0
  86. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/clownworld/get_bolshevid_video.py +0 -0
  87. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/crawlManager.py +0 -0
  88. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/crawlmgr2.py +0 -0
  89. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/curlMgr.py +0 -0
  90. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/domainManager.py +0 -0
  91. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/dynamicRateLimiter.py +0 -0
  92. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/getUa.py +0 -0
  93. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/linkManager/__init__.py +0 -0
  94. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/linkManager/linkManager.py +0 -0
  95. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/meta_dump.py +0 -0
  96. /abstract_webtools-0.1.6.331/src/abstract_webtools/managers/networkManager/main.py → /abstract_webtools-0.1.6.332/src/abstract_webtools/managers/middleManager/__init__.py +0 -0
  97. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/middleManager/imports.py +0 -0
  98. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/middleManager/src/UnifiedWebManage3r.py +0 -0
  99. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/middleManager/src/UnifiedWebManager.py +0 -0
  100. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/middleManager/src/__init__.py +0 -0
  101. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/middleManager/src/legacy_tools.py +0 -0
  102. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/middleManager/src/tool_proxy.py +0 -0
  103. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/mySocketClient.py +0 -0
  104. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/__init__.py +0 -0
  105. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/sslManager → abstract_webtools-0.1.6.332/src/abstract_webtools/managers/networkManager}/main.py +0 -0
  106. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/src/__init__.py +0 -0
  107. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/src/functions/__init__.py +0 -0
  108. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/src/functions/functions.py +0 -0
  109. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/src/imports/__init__.py +0 -0
  110. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/src/imports/imports.py +0 -0
  111. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/src/networkManager.py +0 -0
  112. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/requestManager/__init__.py +0 -0
  113. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/requestManager/requestManager.py +0 -0
  114. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/__init__.py +0 -0
  115. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/main.py +0 -0
  116. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/__init__.py +0 -0
  117. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/functions/__init__.py +0 -0
  118. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/functions/functions.py +0 -0
  119. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/functions/seleneumManager.py +0 -0
  120. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/functions/seleneum_post.py +0 -0
  121. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/imports/__init__.py +0 -0
  122. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/imports/constants.py +0 -0
  123. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/imports/imports.py +0 -0
  124. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/soupManager/__init__.py +0 -0
  125. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/soupManager/asoueces.py +0 -0
  126. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/soupManager/soupManager.py +0 -0
  127. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/__init__.py +0 -0
  128. {abstract_webtools-0.1.6.331/src/abstract_webtools/networkManager → abstract_webtools-0.1.6.332/src/abstract_webtools/managers/sslManager}/main.py +0 -0
  129. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/src/__init__.py +0 -0
  130. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/src/functions/__init__.py +0 -0
  131. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/src/functions/functions.py +0 -0
  132. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/src/imports/__init__.py +0 -0
  133. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/src/imports/imports.py +0 -0
  134. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/src/sslManager.py +0 -0
  135. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/__init__.py +0 -0
  136. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/main.py +0 -0
  137. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/src/TLSAdapter.py +0 -0
  138. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/src/__init__.py +0 -0
  139. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/src/functions/__init__.py +0 -0
  140. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/src/functions/functions.py +0 -0
  141. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/src/imports/__init__.py +0 -0
  142. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/src/imports/imports.py +0 -0
  143. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/__init__.py +0 -0
  144. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/functions/DomainManager.py +0 -0
  145. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/functions/__init__.py +0 -0
  146. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/functions/domain_utils/__init__.py +0 -0
  147. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/functions/domain_utils/correct_url_utils.py +0 -0
  148. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/functions/domain_utils/domain_parse_utils.py +0 -0
  149. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/functions/domain_utils/get_strip_utils.py +0 -0
  150. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/functions/main.py +0 -0
  151. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/functions/specUrl_utils.py +0 -0
  152. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/__init__.py +0 -0
  153. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/constants.py +0 -0
  154. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/functions/__init__.py +0 -0
  155. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/functions/domains/__init__.py +0 -0
  156. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/functions/domains/tokenizer.py +0 -0
  157. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/functions/imports.py +0 -0
  158. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/functions/titles/title_variants.py +0 -0
  159. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/functions/titles/titles.py +0 -0
  160. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/functions/utils.py +0 -0
  161. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/imports.py +0 -0
  162. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/main.py +0 -0
  163. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager → abstract_webtools-0.1.6.332/src/abstract_webtools/managers/userAgentManager}/__init__.py +0 -0
  164. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/main.py +0 -0
  165. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/__init__.py +0 -0
  166. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/functions/__init__.py +0 -0
  167. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/functions/functions.py +0 -0
  168. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/imports/__init__.py +0 -0
  169. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/imports/constants.py +0 -0
  170. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/imports/imports.py +0 -0
  171. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/userAgentManager.py +0 -0
  172. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager.py +0 -0
  173. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/usurpManager/__init__.py +0 -0
  174. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/usurpManager/usurpit.py +0 -0
  175. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/__init__.py +0 -0
  176. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/imports/__init__.py +0 -0
  177. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/imports/constants.py +0 -0
  178. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/imports/documentRegistry.py +0 -0
  179. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/imports/imports.py +0 -0
  180. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/imports/path_utils.py +0 -0
  181. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/main.py +0 -0
  182. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/__init__.py +0 -0
  183. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/__init__.py +0 -0
  184. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/dfssdaff.py +0 -0
  185. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/download_utils.py +0 -0
  186. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/find_js.py +0 -0
  187. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/getyou.py +0 -0
  188. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/imports.py +0 -0
  189. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/nops.py +0 -0
  190. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/zdfcxsfdsdf.py +0 -0
  191. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/info_registry.py +0 -0
  192. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/manager_utils.py +0 -0
  193. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/videoDownloader.py +0 -0
  194. {abstract_webtools-0.1.6.331/src/abstract_webtools/managers/userAgentManager → abstract_webtools-0.1.6.332/src/abstract_webtools/networkManager}/__init__.py +0 -0
  195. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/networkManager/src/__init__.py +0 -0
  196. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/networkManager/src/functions/__init__.py +0 -0
  197. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/networkManager/src/functions/functions.py +0 -0
  198. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/networkManager/src/imports/__init__.py +0 -0
  199. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/networkManager/src/imports/imports.py +0 -0
  200. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/networkManager/src/networkManager.py +0 -0
  201. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/soup_gui.py +0 -0
  202. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/url_grabber_new.py +0 -0
  203. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools.egg-info/dependency_links.txt +0 -0
  204. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools.egg-info/requires.txt +0 -0
  205. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools.egg-info/top_level.txt +0 -0
  206. {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/tests/test_api.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstract_webtools
3
- Version: 0.1.6.331
3
+ Version: 0.1.6.332
4
4
  Summary: Utilities for fetching/parsing web content with requests/urllib3/BS4 and helpers.
5
5
  Home-page: https://github.com/AbstractEndeavors/abstract_webtools
6
6
  Author: putkoff
@@ -5,7 +5,7 @@ README = Path("README.md").read_text(encoding="utf-8")
5
5
 
6
6
  setup(
7
7
  name="abstract_webtools",
8
- version='0.1.6.331', # bump once per release
8
+ version='0.1.6.332', # bump once per release
9
9
  author="putkoff",
10
10
  author_email="partners@abstractendeavors.com",
11
11
  description="Utilities for fetching/parsing web content with requests/urllib3/BS4 and helpers.",
@@ -0,0 +1,4 @@
1
+ from .managers import *
2
+ from .functions import *
3
+ from .imports import *
4
+
@@ -0,0 +1,89 @@
1
+ from ..imports import SingletonMeta,urlparse as _urlparse
2
+ from ..functions import *
3
+ from ..functions.domain_utils import get_parsed_url as _get_parsed_url
4
+ class DomainManager(metaclass=SingletonMeta):
5
+ def __init__(self,domain=None):
6
+ if not hasattr(self, 'initialized'):
7
+ self.initialized = True
8
+ self.domains = {}
9
+ if domain:
10
+ check_domains(domain)
11
+ def check_domains(self,url):
12
+ parsed_url = _get_parsed_url(url)
13
+ domain_name = parsed_url.get('name')
14
+ ext = parsed_url.get('ext')
15
+ if not domain_name in self.domains:
16
+ self.domains[domain_name] = {}
17
+
18
+ path = parsed_url.get('path')
19
+ domain = parsed_url.get('domain')
20
+ http = parsed_url.get('http','https') or 'https'
21
+ parsed_url['http']=http
22
+ if ext not in self.domains[domain_name]:
23
+ self.domains[domain_name][ext] = parsed_url
24
+ if 'paths' not in self.domains[domain_name][ext]:
25
+ self.domains[domain_name][ext]['paths'] = []
26
+
27
+ if path not in self.domains[domain_name][ext].get('paths',[]):
28
+ self.domains[domain_name][ext]['paths'].append(path)
29
+ del self.domains[domain_name][ext]['path']
30
+ else:
31
+ return self.domains[domain_name][ext]
32
+ if 'variants' not in self.domains[domain_name][ext]:
33
+ variants = get_url_variants(domain)
34
+ self.domains[domain_name][ext]['variants'] = variants
35
+ if 'valid_variants' not in self.domains[domain_name][ext]:
36
+ variants = self.domains[domain_name][ext]['variants']
37
+ valid_url_variants = get_valid_url_variants(domain = domain)
38
+ if valid_url_variants and len(valid_url_variants)>0:
39
+ valid_url_variant = valid_url_variants[0]
40
+ http = get_http(valid_url_variant)
41
+ if http:
42
+ self.domains[domain_name][ext]['http']=http
43
+ self.domains[domain_name][ext]['valid_variants'] = valid_url_variants
44
+ if 'full_domain' not in self.domains[domain_name][ext]:
45
+ self.domains[domain_name][ext]['full_domain']=ensure_http(domain)
46
+ if 'domain_valid' not in self.domains[domain_name][ext]:
47
+ valid_url_variants = self.domains[domain_name][ext]['valid_variants']
48
+ self.domains[domain_name][ext]['domain_valid']=False if not valid_url_variants else True
49
+
50
+ return self.domains[domain_name][ext]
51
+ def get_parsed_url(self,url):
52
+ parsed = self.check_domains(url)
53
+ parsed_url = parsed.copy()
54
+ parsed['path'] = get_domain_path(url)
55
+ return parsed
56
+ def urlparse(self,url):
57
+ parsed = self.check_domains(url)
58
+ full_domain = parsed.get('full_domain')
59
+ parsed['path'] = get_domain_path(url)
60
+ domain = get_full_url(parsed_url=parsed)
61
+ parsed = _urlparse(domain)
62
+ return parsed
63
+ domain_mgr = DomainManager()
64
+ ##def parse_url(*args,url=None,parsed=None,**kwargs):
65
+ ##
66
+ ## for arg in args:
67
+ ## if isinstance(arg,str):
68
+ ## url = arg
69
+ ## parsed = domain_mgr.check_domains(url)
70
+ ## elif isinstance(arg,dict) and parsed == None:
71
+ ## parsed=arg
72
+ ## if not url and parsed:
73
+ ## url = parsed.get('full_url')
74
+ ## parsed_url = domain_mgr.urlparse(url)
75
+ ## parsed = domain_mgr.check_domains(url)
76
+ ## full_domain = parsed.get('full_domain')
77
+ ## parsed['path'] = get_domain_path(url)
78
+ ## full_url = get_full_url(parsed_url=parsed)
79
+ ## parsed['full_url'] = full_url
80
+ ## parsed_url = _parse_url(url=full_url)
81
+ ## parsed_url.update(parsed)
82
+ ## return parsed_url
83
+ def get_parsed_url(url):
84
+ parsed_url = domain_mgr.get_parsed_url(url)
85
+ return parsed_url
86
+ def urlparse(url):
87
+ parsed_url = domain_mgr.urlparse(url)
88
+ return parsed_url
89
+ parse_url = get_parsed_url
@@ -0,0 +1,8 @@
1
+ from .domain_utils import *
2
+ from .providers import *
3
+ from .titles import *
4
+ from .DomainManager import *
5
+ from .imports import *
6
+ from .specUrl_utils import *
7
+ from .url_utils import *
8
+ from .utils import *
@@ -0,0 +1,6 @@
1
+ from .correct_url_utils import *
2
+ from .domain_parse_utils import *
3
+ from .get_strip_utils import *
4
+
5
+
6
+
@@ -0,0 +1,37 @@
1
+ from ..imports import *
2
+ def get_correct_url(url=None) -> str:
3
+ """
4
+ Try candidates (HEAD request).
5
+ Return first that resolves with 200.
6
+ """
7
+
8
+ response = requests.get(url, stream=True, timeout=6, allow_redirects=True)
9
+
10
+ if response.status_code == 200:
11
+ return url
12
+
13
+ return None
14
+ def domain_exists(url=None) -> str:
15
+ """
16
+ Try candidates (HEAD request).
17
+ Return first that resolves with 200.
18
+ """
19
+
20
+ response = requests.get(url, stream=True, timeout=6, allow_redirects=True)
21
+
22
+ if response.status_code == 200:
23
+ return True
24
+
25
+ return False
26
+ def get_correct_urls(candidates=None) -> str:
27
+ """
28
+ Try candidates (HEAD request).
29
+ Return first that resolves with 200.
30
+ """
31
+
32
+ urls = []
33
+ for candidate in candidates:
34
+ url = get_correct_url(url=candidate)
35
+ if url:
36
+ urls.append(url)
37
+ return urls
@@ -0,0 +1,137 @@
1
+ from ..titles import *
2
+ from .get_strip_utils import *
3
+ from .correct_url_utils import *
4
+ def sort_longest_first(values):
5
+ seen = set()
6
+ clean = []
7
+ for v in values:
8
+ if v and isinstance(v, str):
9
+ low = v.lower()
10
+ if low not in seen:
11
+ clean.append(v)
12
+ seen.add(low)
13
+ return sorted(clean, key=lambda s: (-len(s), s.lower()))
14
+
15
+ def get_parsed_url(domain, **kwargs):
16
+ parsed_url = dict(kwargs)
17
+ post_variants = []
18
+ # http / www
19
+ http_www = get_http_www(domain)
20
+ parsed_url.update(http_www)
21
+
22
+ http = http_www.get('http')
23
+
24
+ # basic domain pieces
25
+ domain_paths = get_domain_paths(domain, http=http)
26
+ parsed_url.update(domain_paths)
27
+
28
+ domain_name_ext = get_domain_name_ext(domain, http=http)
29
+ parsed_url.update(domain_name_ext)
30
+
31
+ domain_name = parsed_url.get('name')
32
+ domain = parsed_url.get('domain')
33
+ # tokenization
34
+ tokenized_domain = tokenize_domain(domain)
35
+ parsed_url["tokenized_domain"] = tokenized_domain
36
+ app_name = " ".join(tokenized_domain)
37
+ parsed_url["app_name"] = app_name
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+ # author / "i_url"
46
+ parsed_url["author"] = f"@{domain_name.lower()}"
47
+ parsed_url["i_url"] = f"{domain_name}://"
48
+
49
+ # combine with domain
50
+ # compute final title
51
+ title = get_title(parsed_url)
52
+ post_variants=[title,app_name,domain]
53
+ variants = title_variants_from_domain(domain)
54
+ base_variants = list(set([variant for variant in variants if variant not in post_variants]))
55
+ # update the organized variants
56
+ parsed_url["title_variants"] = get_all_title_variants(variants=base_variants,page=title,name=app_name,domain=domain)
57
+
58
+ parsed_url["title"] = pad_or_trim(
59
+ "title",
60
+ string=title,
61
+ title_variants=parsed_url["title_variants"],
62
+ page=title,
63
+ domain=domain,
64
+ name = app_name
65
+ )
66
+
67
+ # get keywords
68
+ keywords_info = get_keywords(parsed_url,page=title,domain=domain,name = app_name)
69
+ parsed_url.update(keywords_info)
70
+
71
+ keywords = parsed_url.get("keywords", [])
72
+
73
+ # FINAL: longest→shortest list with TITLE first, DOMAIN second
74
+ final_variants = [title, parsed_url["domain"]]
75
+
76
+ # remove title/domain from pool
77
+ pool = set(keywords + variants)
78
+ pool.discard(title)
79
+ pool.discard(parsed_url["domain"])
80
+
81
+ # sort longest → shortest
82
+ final_variants += sort_longest_first(pool)
83
+
84
+ parsed_url["title_variants"] = final_variants
85
+
86
+ return parsed_url
87
+
88
+ def get_full_domain(url=None,parsed_url=None):
89
+ parsed_url = parsed_url or get_parsed_url(url)
90
+ http = parsed_url.get("http")
91
+ name = parsed_url.get("name")
92
+ ext = parsed_url.get("ext")
93
+ www = "www." if parsed_url.get("www") else ''
94
+ return f"{http}://{www}{name}{ext}"
95
+ def get_full_url(url=None,parsed_url=None):
96
+ parsed_url = parsed_url or get_parsed_url(url)
97
+ full_domain = get_full_domain(url=url,parsed_url=parsed_url)
98
+ path = parsed_url.get("path")
99
+ path = f"/{path}" if path else ''
100
+ return f"{full_domain}{path}"
101
+ def get_url_variants(domain,http=None):
102
+ parsed_url = get_parsed_url(domain,http=http)
103
+ stripped_url = parsed_url.copy()
104
+ http = parsed_url.get('http','https') or 'https'
105
+ parsed_url['http']=http
106
+ inverse_http = INVERSE_HTTP.get(http)
107
+ ensured_parsed_url = parsed_url.copy()
108
+ ensured_parsed_url['http'] = http
109
+
110
+ www = parsed_url.get('www')
111
+ inverse_www = INVERSE_BOOL.get(www)
112
+ parsed_inv_url = ensured_parsed_url.copy()
113
+ parsed_inv_url['www'] = inverse_www
114
+ inverse_parsed_url = ensured_parsed_url.copy()
115
+ inverse_parsed_url['http'] = inverse_http
116
+ inverse_parsed_inv_url = parsed_inv_url.copy()
117
+ inverse_parsed_inv_url['http'] = inverse_http
118
+ url_variants = [ensured_parsed_url,parsed_inv_url,inverse_parsed_url,inverse_parsed_inv_url]
119
+ for i,url_variant in enumerate(url_variants):
120
+ http = url_variant.get("http")
121
+ name = url_variant.get("name")
122
+ ext = url_variant.get("ext")
123
+ path = url_variant.get("path")
124
+ www = "www." if url_variant.get("www") else ''
125
+ path = f"/{path}" if path else ''
126
+ url_variants[i] = f"{http}://{www}{name}{ext}{path}"
127
+ return url_variants
128
+ def get_valid_url_variants(domain=None,http=None,variants=None):
129
+ url_variants = variants or get_url_variants(domain=domain,http=http)
130
+ return get_correct_urls(url_variants)
131
+ def ensure_http(domain,http=None):
132
+ url_variants = get_url_variants(domain=domain,http=http)
133
+ correct_url = url_variants[0]
134
+ correct_urls = get_correct_urls(url_variants)
135
+ if correct_urls and len(correct_urls) >0:
136
+ correct_url = correct_urls[0]
137
+ return correct_url
@@ -0,0 +1,77 @@
1
+ from ..imports import *
2
+ def get_http(domain):
3
+
4
+ http=None
5
+ if domain.startswith('http'):
6
+ http = 'http'
7
+ if domain.startswith('https'):
8
+ http = f"{http}s"
9
+ return http
10
+ def strip_http(domain,http=None):
11
+ http = http or get_http(domain)
12
+
13
+ domain = domain[len(http or ''):]
14
+
15
+ domain = eatAll(domain,[':','/'])
16
+ return domain
17
+
18
+
19
+ def get_www(domain,http=None):
20
+ http = http or get_http(domain)
21
+ domain = strip_http(domain = domain,http=http)
22
+ if domain.startswith('www.'):
23
+ return True
24
+ return False
25
+ def strip_www(domain,http=None):
26
+ http = http or get_http(domain)
27
+
28
+ domain = strip_http(domain = domain,http=http)
29
+
30
+ www = get_www(domain,http=None)
31
+ if www:
32
+ domain = domain[len('www.'):]
33
+ if http:
34
+
35
+ domain = f"{http}://{domain}"
36
+ return domain
37
+
38
+ def get_http_www(domain):
39
+ http = get_http(domain)
40
+ www = get_www(domain,http=http)
41
+ return {"http":http,"www":www}
42
+ def strip_http_www(domain,http=None):
43
+ domain = strip_www(domain,http=http)
44
+ domain = strip_http(domain,http=http)
45
+ return domain
46
+ def get_stripped_domain(domain,http=None):
47
+ domain = strip_http_www(domain,http=http)
48
+ return domain.split('/')
49
+ def get_domain_paths(domain,http=None):
50
+ domain = strip_http_www(domain,http=http)
51
+ domain_paths = domain.split('/')
52
+ paths = domain_paths[1:] if len(domain_paths)>1 else []
53
+ return {"domain":domain_paths[0],"path":'/'.join(paths)}
54
+ def get_domain(domain,http=None):
55
+ domain_ext = get_domain_paths(domain,http=http)
56
+ return domain_ext.get("domain")
57
+ def get_domain_path(domain,http=None):
58
+ domain_ext = get_domain_paths(domain,http=http)
59
+ return domain_ext.get("path")
60
+ def get_domain_name_ext(domain,http=None):
61
+ domain = get_domain(domain,http=http)
62
+ domain_ext = os.path.splitext(domain)
63
+ return {"name":domain_ext[0],"ext":domain_ext[-1]}
64
+ def get_extension(domain=None,http=None,parsed=None,options=None):
65
+ if parsed:
66
+ try:
67
+ domain = parsed.netloc
68
+ http = parsed.scheme
69
+ except:
70
+ pass
71
+ domain_ext = get_domain_name_ext(domain,http=http)
72
+ return domain_ext.get("ext")
73
+ def get_domain_name(domain,http=None):
74
+ domain_ext = get_domain_name_ext(domain,http=http)
75
+ return domain_ext.get("name")
76
+
77
+ get_extention = get_extension
@@ -0,0 +1,62 @@
1
+ from urllib.parse import urlparse, parse_qs
2
+ import os
3
+ import mimetypes
4
+
5
+ # Provider imports
6
+ from .src.youtube import detect_youtube
7
+ from .src.vimeo import detect_vimeo
8
+ from .src.tiktok import detect_tiktok
9
+ from .src.facebook import detect_facebook
10
+ from .src.twitter import detect_twitter
11
+ from .src.instagram import detect_instagram
12
+ from .src.reddit import detect_reddit
13
+ from .src.twitch import detect_twitch
14
+ from .src.imgur import detect_imgur
15
+ from .src.pinterest import detect_pinterest
16
+ from .src.giphy import detect_giphy
17
+ from .src.tenor import detect_tenor
18
+ from .src.direct_file import detect_direct_file
19
+
20
+ PROVIDERS = [
21
+ detect_direct_file, # always check this first
22
+ detect_youtube,
23
+ detect_vimeo,
24
+ detect_tiktok,
25
+ detect_facebook,
26
+ detect_twitter,
27
+ detect_instagram,
28
+ detect_reddit,
29
+ detect_twitch,
30
+ detect_imgur,
31
+ detect_pinterest,
32
+ detect_giphy,
33
+ detect_tenor
34
+ ]
35
+
36
+ def _clean_url(url: str) -> str:
37
+ if not url:
38
+ return ""
39
+ url = url.strip()
40
+ if url.startswith("//"):
41
+ url = "https:" + url
42
+ return url
43
+
44
+ def get_downloadable_info(url: str):
45
+ url = _clean_url(url)
46
+ parsed = urlparse(url)
47
+ query = parse_qs(parsed.query)
48
+
49
+ for provider in PROVIDERS:
50
+ result = provider(parsed, query) if provider.__code__.co_argcount == 2 else provider(parsed)
51
+ if result:
52
+ result["url"] = url
53
+ return result
54
+
55
+ return {
56
+ "downloadable": False,
57
+ "kind": None,
58
+ "provider": None,
59
+ "id": None,
60
+ "direct": False,
61
+ "url": url,
62
+ }