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.
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/PKG-INFO +1 -1
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/setup.py +1 -1
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/__init__.py +4 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/DomainManager.py +89 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/__init__.py +8 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/domain_utils/__init__.py +6 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/domain_utils/correct_url_utils.py +37 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/domain_utils/domain_parse_utils.py +137 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/domain_utils/get_strip_utils.py +77 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/__init__.py +1 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/providers/main.py +62 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/specUrl_utils.py +308 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/titles/title_variants.py +39 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/titles/titles.py +165 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/functions/utils.py +30 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/__init__.py +2 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/functions/__init__.py +1 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/functions/tokenizer.py +29 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/src/__init__.py +4 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/src/constants.py +167 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/src/init_imports.py +6 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/src/module_imports.py +4 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/imports/src/pyqt_imports.py +3 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/managers/__init__.py +1 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/imports/src/managers/urlManager.py +133 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/imports.py +1 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/__init__.py +1 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/main.py +1 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/imports.py +1 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/__init__.py +13 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/direct_file.py +21 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/facebook.py +19 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/giphy.py +12 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/imgur.py +13 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/instagram.py +14 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/pinterest.py +12 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/reddit.py +11 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/tenor.py +12 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/tiktok.py +14 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/twitch.py +11 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/twitter.py +14 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/vimeo.py +12 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/providers/youtube.py +21 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/functions/url_utils.py +152 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/managers/urlManager/src/imports/functions/titles/__init__.py +2 -0
- abstract_webtools-0.1.6.332/src/abstract_webtools/networkManager/main.py +1 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools.egg-info/PKG-INFO +1 -1
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools.egg-info/SOURCES.txt +42 -0
- abstract_webtools-0.1.6.332/tests/test.py +274 -0
- abstract_webtools-0.1.6.331/src/abstract_webtools/managers/urlManager/main.py +0 -7
- abstract_webtools-0.1.6.331/src/abstract_webtools/networkManager/__init__.py +0 -2
- abstract_webtools-0.1.6.331/tests/test.py +0 -270
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/README.md +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/pyproject.toml +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/setup.cfg +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/abstract_usurpit.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/big_user_agent_list.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/domain_identifier.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/extention_list.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/find_dirs.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/k2s_downloader.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/main.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/browserImmitator.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/cipherManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/clownworld/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/clownworld/get_bolshevid_video.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/crawlManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/crawlmgr2.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/curlMgr.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/domainManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/dynamicRateLimiter.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/getUa.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/linkManager/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/linkManager/linkManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/meta_dump.py +0 -0
- /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
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/middleManager/imports.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/middleManager/src/UnifiedWebManage3r.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/middleManager/src/UnifiedWebManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/middleManager/src/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/middleManager/src/legacy_tools.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/middleManager/src/tool_proxy.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/mySocketClient.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/__init__.py +0 -0
- {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
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/src/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/src/functions/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/src/functions/functions.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/src/imports/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/src/imports/imports.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/networkManager/src/networkManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/requestManager/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/requestManager/requestManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/main.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/functions/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/functions/functions.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/functions/seleneumManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/functions/seleneum_post.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/imports/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/imports/constants.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/seleneumManager/src/imports/imports.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/soupManager/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/soupManager/asoueces.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/soupManager/soupManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/__init__.py +0 -0
- {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
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/src/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/src/functions/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/src/functions/functions.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/src/imports/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/src/imports/imports.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/sslManager/src/sslManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/main.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/src/TLSAdapter.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/src/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/src/functions/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/src/functions/functions.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/src/imports/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/tlsAdapter/src/imports/imports.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/functions/DomainManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/functions/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/functions/main.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/functions/specUrl_utils.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/constants.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/functions/__init__.py +0 -0
- {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
- {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
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/functions/imports.py +0 -0
- {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
- {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
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/functions/utils.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/imports/imports.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/urlManager/src/main.py +0 -0
- {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
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/main.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/functions/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/functions/functions.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/imports/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/imports/constants.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/imports/imports.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager/src/userAgentManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/userAgentManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/usurpManager/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/usurpManager/usurpit.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/imports/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/imports/constants.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/imports/documentRegistry.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/imports/imports.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/imports/path_utils.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/main.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/dfssdaff.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/download_utils.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/find_js.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/getyou.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/imports.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/nops.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/back/zdfcxsfdsdf.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/info_registry.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/manager_utils.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/managers/videoDownloader/src/videoDownloader.py +0 -0
- {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
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/networkManager/src/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/networkManager/src/functions/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/networkManager/src/functions/functions.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/networkManager/src/imports/__init__.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/networkManager/src/imports/imports.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/networkManager/src/networkManager.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/soup_gui.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools/url_grabber_new.py +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools.egg-info/dependency_links.txt +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools.egg-info/requires.txt +0 -0
- {abstract_webtools-0.1.6.331 → abstract_webtools-0.1.6.332}/src/abstract_webtools.egg-info/top_level.txt +0 -0
- {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.
|
|
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.
|
|
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,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,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 @@
|
|
|
1
|
+
from .main import *
|
|
@@ -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
|
+
}
|