ofscraper 3.13.dev4__tar.gz → 3.13.dev6__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.
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/PKG-INFO +4 -4
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/sessionmanager/download.py +11 -22
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/sessionmanager/ofsession.py +1 -2
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/sessionmanager/sessionmanager.py +186 -104
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/check.py +5 -5
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/manual.py +1 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/metadata/metadata.py +1 -4
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/download/download.py +1 -5
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/download/managers/alt_download.py +58 -23
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/download/managers/downloadmanager.py +3 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/download/managers/main_download.py +60 -26
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/download/run.py +0 -2
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/download/utils/chunk.py +4 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/like/like.py +3 -3
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/utils/globals.py +1 -37
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/scraper.py +4 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/utils/schedule.py +2 -2
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/utils/command.py +6 -6
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/action/download.py +1 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/config.py +1 -2
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/req/req.py +4 -3
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/system.py +1 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/common/timeline.py +1 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/highlights.py +1 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/me.py +2 -2
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/messages.py +1 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/profile.py +2 -2
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/posts/scrape_paid.py +1 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/filters/media/filters.py +0 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/filters/media/main.py +6 -4
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/main/close/final/final_log.py +0 -2
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/main/open/load.py +0 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/prompt_groups/config.py +8 -26
- ofscraper-3.13.dev6/ofscraper/utils/args/accessors/actions.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/logging.py +2 -2
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/auth/make.py +1 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/auth/request.py +7 -7
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/config/data.py +6 -33
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/config/schema.py +1 -3
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/live/updater.py +11 -15
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/logs/classes/classes.py +0 -14
- ofscraper-3.13.dev6/ofscraper/utils/logs/classes/handlers/discord.py +146 -0
- ofscraper-3.13.dev6/ofscraper/utils/logs/classes/handlers/file.py +47 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/logs/close.py +0 -22
- ofscraper-3.13.dev6/ofscraper/utils/logs/logger.py +49 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/logs/logs.py +2 -2
- ofscraper-3.13.dev6/ofscraper/utils/logs/other.py +49 -0
- ofscraper-3.13.dev6/ofscraper/utils/logs/stdout.py +53 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/logs/utils/level.py +0 -4
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/paths/common.py +1 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/paths/manage.py +5 -3
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/settings.py +0 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/system/network.py +1 -1
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/system/subprocess.py +2 -2
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/text.py +1 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/pyproject.toml +4 -4
- ofscraper-3.13.dev4/ofscraper/commands/scraper/actions/utils/buffer.py +0 -21
- ofscraper-3.13.dev4/ofscraper/utils/logs/classes/handlers/discord.py +0 -242
- ofscraper-3.13.dev4/ofscraper/utils/logs/classes/handlers/file.py +0 -18
- ofscraper-3.13.dev4/ofscraper/utils/logs/classes/handlers/pipe.py +0 -72
- ofscraper-3.13.dev4/ofscraper/utils/logs/classes/handlers/rich.py +0 -136
- ofscraper-3.13.dev4/ofscraper/utils/logs/classes/handlers/zmq.py +0 -72
- ofscraper-3.13.dev4/ofscraper/utils/logs/logger.py +0 -42
- ofscraper-3.13.dev4/ofscraper/utils/logs/other.py +0 -241
- ofscraper-3.13.dev4/ofscraper/utils/logs/stdout.py +0 -277
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/LICENSE +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/README.md +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/__main__.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/__version__.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/__version__.pye +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/labels.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/of/base.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/of/media.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/of/posts.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/placeholder.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/app.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/compose.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/const.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/css.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/fields/boolfield.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/fields/datefield.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/fields/downloadfield.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/fields/mediafield.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/fields/numfield.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/fields/pricefield.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/fields/responsefield.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/fields/selectfield.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/fields/sizefield.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/fields/textsearch.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/fields/timefield.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/inputs/filterinput.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/inputs/intergerinput.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/inputs/strinput.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/sections/sidebar.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/sections/table.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/sections/table_console.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/utils/lock.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/table/utils/names.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/db.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/metadata/consumer.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/metadata/desc.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/metadata/manager.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/download/utils/desc.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/download/utils/keyhelpers.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/download/utils/leaky.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/download/utils/retries.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/download/utils/text.py +0 -0
- /ofscraper-3.13.dev4/ofscraper/commands/scraper/utils/daemon.py → /ofscraper-3.13.dev6/ofscraper/commands/scraper/actions/utils/buffer.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/utils/general.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/utils/log.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/utils/params.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/utils/paths/media.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/utils/paths/paths.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/utils/progress/convert.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/utils/progress/update.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/utils/retries.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/utils/send/chunk.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/utils/send/message.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/utils/threads.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/utils/workers.py +0 -0
- /ofscraper-3.13.dev4/ofscraper/const/values/req/like.py → /ofscraper-3.13.dev6/ofscraper/commands/scraper/utils/daemon.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/utils/jobqueue.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/utils/prepare.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/utils/print.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/utils/scrape_context.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/utils/strings.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/constants.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/action/like.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/action/metadata.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/binary.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/date.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/download.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/dynamic.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/general.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/list.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/live.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/logger.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/path/bytes.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/path/files.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/path/general.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/path/path.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/prompts.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/req/anon.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/req/api.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/req/cdm.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/req/discord.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/req/git.py +0 -0
- /ofscraper-3.13.dev4/ofscraper/utils/args/accessors/actions.py → /ofscraper-3.13.dev6/ofscraper/const/values/req/like.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/req/mpd.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/rich.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/table.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/test/test_constants.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/time.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/url/other_url.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/const/values/url/url.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/archive.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/common/after.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/common/cache/read.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/common/cache/write.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/common/check.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/common/logs/logs.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/common/logs/strings.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/init.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/labels.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/paid.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/pinned.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/streams.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/subscriptions/common.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/subscriptions/individual.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/subscriptions/lists.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/subscriptions/subscriptions.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/api/timeline.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/models/manager.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/models/models.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/models/utils/retriver.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/data/posts/post.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/__init__.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/backup.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/difference.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/merge.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/operations.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/operations_/empty.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/operations_/labels.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/operations_/media.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/operations_/messages.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/operations_/others.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/operations_/posts.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/operations_/profile.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/operations_/stories.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/operations_/wrapper.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/transition.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/db/utils/convert.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/filters/models/date.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/filters/models/flags.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/filters/models/other.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/filters/models/price.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/filters/models/sort.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/filters/models/subtype.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/filters/models/utils/logs.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/main/close/exit.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/main/close/final/final.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/main/close/final/final_script.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/main/close/final/final_user.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/main/manager.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/main/open/run.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/keybindings.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/promptConvert.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/prompt_groups/actions.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/prompt_groups/area.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/prompt_groups/auth.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/prompt_groups/binary.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/prompt_groups/menu.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/prompt_groups/merge.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/prompt_groups/model.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/prompt_groups/profile.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/prompt_strings.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/prompt_validators.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/prompts.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/utils/model_helpers.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/prompts/utils/prompt_helpers.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/__init__.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/actions.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/ads.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/accessors/areas.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/accessors/output.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/accessors/quality.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/accessors/read.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/accessors/time.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/callbacks/choice.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/callbacks/file.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/callbacks/string.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/callbacks/username.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/globals.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/helpers/hide_args.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/main.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/mutators/before.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/mutators/change.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/mutators/user.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/mutators/write.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/advanced_processing.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/advanced_program.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/advanced_user_filter.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/automatic.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/check.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/db.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/download.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/file.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/media_content.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/metadata_filters.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/post_content.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/program.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/shared.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/user_list.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/user_select.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/user_sort.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/utils/date.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/arguments/utils/retry.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/commands/db.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/commands/main.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/commands/manual.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/commands/message.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/commands/metadata.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/commands/paid.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/commands/post.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/commands/story.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/group_bundles/advanced_common.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/group_bundles/check.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/group_bundles/common.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/group_bundles/db.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/group_bundles/main.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/group_bundles/manual.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/group_bundles/message_check.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/group_bundles/metadata.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/group_bundles/paid_check.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/group_bundles/post_check.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/group_bundles/story_check.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/group_bundles/utils/check.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/advanced_processing.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/advanced_program.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/advanced_user_filter.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/automatic.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/check_content.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/download.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/file.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/logging.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/media_filter.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/post_filter.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/program.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/user_list.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/user_select.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/parse/groups/user_sort.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/types/arrow.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/args/types/choice.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/auth/data.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/auth/file.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/auth/schema.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/auth/utils/context.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/auth/utils/dict.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/auth/utils/prompt.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/auth/utils/warning/check.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/auth/utils/warning/print.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/auth/utils/warning/warning.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/binaries.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/cache.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/checkers.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/config/config.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/config/custom.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/config/file.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/config/menu.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/config/utils/context.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/config/utils/wrapper.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/console.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/constants.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/context/exit.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/context/run_async.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/context/stdout.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/dates.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/encoding.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/hash.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/live/classes/progress.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/live/classes/task.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/live/classes/transfercol.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/live/clear.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/live/empty.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/live/groups.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/live/live.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/live/panel.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/live/progress.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/live/screens.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/live/tasks.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/logs/classes/handlers/text.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/logs/globals.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/logs/handle.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/logs/utils/trace.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/manager.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/me.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/menu.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/merge.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/paths/check.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/paths/db.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/paths/paths.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/profiles/data.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/profiles/manage.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/profiles/tools.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/sems.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/separate.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/string.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/system/free.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/system/priority.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/system/speed.py +0 -0
- {ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/utils/system/system.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: ofscraper
|
|
3
|
-
Version: 3.13.
|
|
3
|
+
Version: 3.13.dev6
|
|
4
4
|
Summary: automatically scrape onlyfans
|
|
5
5
|
Author: datawhores
|
|
6
6
|
Author-email: datawhores@riseup.net
|
|
@@ -11,7 +11,6 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.13
|
|
12
12
|
Provides-Extra: pyinstaller
|
|
13
13
|
Requires-Dist: aiofiles (>=23.2.1,<24.0.0)
|
|
14
|
-
Requires-Dist: aiohttp (==3.10.11)
|
|
15
14
|
Requires-Dist: aiolimiter (>=1.1.0,<2.0.0)
|
|
16
15
|
Requires-Dist: aioprocessing (>=2.0.1,<3.0.0)
|
|
17
16
|
Requires-Dist: aiosqlite (>=0.20.0,<0.21.0)
|
|
@@ -26,7 +25,9 @@ Requires-Dist: diskcache (>=5.6.3,<6.0.0)
|
|
|
26
25
|
Requires-Dist: dunamai (>=1.19.2,<2.0.0)
|
|
27
26
|
Requires-Dist: faust-cchardet (>=2.1.19,<3.0.0)
|
|
28
27
|
Requires-Dist: filelock (>=3.13.1,<4.0.0)
|
|
29
|
-
Requires-Dist: httpx
|
|
28
|
+
Requires-Dist: httpx-aiohttp (>=0.1.2,<0.2.0)
|
|
29
|
+
Requires-Dist: httpx-curl-cffi (>=0.1.3,<0.2.0)
|
|
30
|
+
Requires-Dist: httpx[http2] (>=0.28.1,<0.29.0)
|
|
30
31
|
Requires-Dist: humanfriendly (>=10.0,<11.0)
|
|
31
32
|
Requires-Dist: idna (==3.7)
|
|
32
33
|
Requires-Dist: inquirerpy (>=0.3.4,<0.4.0)
|
|
@@ -51,7 +52,6 @@ Requires-Dist: speedtest-cli (>=2.1.3,<3.0.0)
|
|
|
51
52
|
Requires-Dist: tenacity (>=8.2.3,<9.0.0)
|
|
52
53
|
Requires-Dist: textual (==1.0.0)
|
|
53
54
|
Requires-Dist: tqdm (>=4.66.4,<5.0.0)
|
|
54
|
-
Requires-Dist: ua-generator (>=2.0.5,<3.0.0)
|
|
55
55
|
Requires-Dist: uvloop (>=0.19.0,<0.20.0) ; sys_platform == "linux" or sys_platform == "linux2"
|
|
56
56
|
Requires-Dist: win32-setctime (>=1.1.0,<2.0.0)
|
|
57
57
|
Requires-Dist: xxhash (>=3.4.1,<4.0.0)
|
|
@@ -14,24 +14,30 @@ from ofscraper.classes.sessionmanager.sessionmanager import (
|
|
|
14
14
|
)
|
|
15
15
|
from ofscraper.commands.scraper.actions.download.utils.leaky import LeakyBucket
|
|
16
16
|
import ofscraper.utils.settings as settings
|
|
17
|
+
from ofscraper.commands.scraper.actions.download.utils.chunk import get_chunk_timeout
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
class download_session(sessionManager.sessionManager):
|
|
20
21
|
def __init__(
|
|
21
22
|
self, sem_count=None, retries=None, wait_min=None, wait_max=None, log=None
|
|
22
23
|
) -> None:
|
|
23
|
-
sem_count = sem_count or common_globals.sem
|
|
24
24
|
retries = retries or get_download_req_retries()
|
|
25
25
|
wait_min = wait_min or constants.getattr("OF_MIN_WAIT_API")
|
|
26
26
|
wait_max = wait_max or constants.getattr("OF_MAX_WAIT_API")
|
|
27
|
+
read_timeout=get_chunk_timeout()
|
|
27
28
|
log = log or common_globals.log
|
|
28
29
|
self.leaky_bucket = LeakyBucket(settings.get_settings().download_limit, 1)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
29
34
|
super().__init__(
|
|
30
35
|
sem_count=sem_count,
|
|
31
36
|
retries=retries,
|
|
32
37
|
wait_min=wait_min,
|
|
33
38
|
wait_max=wait_max,
|
|
34
39
|
log=log,
|
|
40
|
+
read_timeout=read_timeout
|
|
35
41
|
)
|
|
36
42
|
|
|
37
43
|
@contextlib.asynccontextmanager
|
|
@@ -56,19 +62,6 @@ class download_session(sessionManager.sessionManager):
|
|
|
56
62
|
t.request = t.request
|
|
57
63
|
return t
|
|
58
64
|
|
|
59
|
-
async def _aio_funct(self, method, *args, **kwargs):
|
|
60
|
-
# public function forces context manager use
|
|
61
|
-
r = await self._session._request(method, *args, **kwargs)
|
|
62
|
-
r.text_ = r.text
|
|
63
|
-
r.json_ = r.json
|
|
64
|
-
r.iter_chunked = self.chunk_with_limit(r.content.iter_chunked)
|
|
65
|
-
r.iter_chunks = self.chunk_with_limit(r.content.iter_chunks)
|
|
66
|
-
r.request = r.request_info
|
|
67
|
-
r.status_code = r.status
|
|
68
|
-
r.read_ = r.content.read
|
|
69
|
-
r.eof = r.content.at_eof
|
|
70
|
-
return r
|
|
71
|
-
|
|
72
65
|
async def factoryasync(self, input):
|
|
73
66
|
if callable(input):
|
|
74
67
|
return input()
|
|
@@ -87,14 +80,10 @@ class download_session(sessionManager.sessionManager):
|
|
|
87
80
|
|
|
88
81
|
|
|
89
82
|
class cdm_session(sessionManager.sessionManager):
|
|
90
|
-
def __init__(self,
|
|
91
|
-
|
|
92
|
-
sem_count = sem_count or common_globals.sem
|
|
93
|
-
super().__init__(sem_count=sem_count, backend=backend)
|
|
83
|
+
def __init__(self, sem_count=None) -> None:
|
|
84
|
+
super().__init__(sem_count=sem_count)
|
|
94
85
|
|
|
95
86
|
|
|
96
87
|
class cdm_session_manual(ofsessionmanager.OFSessionManager):
|
|
97
|
-
def __init__(self,
|
|
98
|
-
|
|
99
|
-
sem_count = sem_count or common_globals.sem
|
|
100
|
-
super().__init__(sem_count=sem_count, backend=backend)
|
|
88
|
+
def __init__(self, sem_count=None) -> None:
|
|
89
|
+
super().__init__(sem_count=sem_count)
|
|
@@ -15,7 +15,7 @@ from ofscraper.classes.sessionmanager.sessionmanager import (
|
|
|
15
15
|
class OFSessionManager(sessionManager):
|
|
16
16
|
def __init__(
|
|
17
17
|
self,
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
connect_timeout=None,
|
|
20
20
|
total_timeout=None,
|
|
21
21
|
read_timeout=None,
|
|
@@ -50,7 +50,6 @@ class OFSessionManager(sessionManager):
|
|
|
50
50
|
wait_max if wait_max is not None else constants.getattr("OF_MAX_WAIT_API")
|
|
51
51
|
)
|
|
52
52
|
super().__init__(
|
|
53
|
-
backend,
|
|
54
53
|
connect_timeout,
|
|
55
54
|
total_timeout,
|
|
56
55
|
read_timeout,
|
{ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/classes/sessionmanager/sessionmanager.py
RENAMED
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import contextlib
|
|
3
3
|
import logging
|
|
4
|
-
import ssl
|
|
5
4
|
import threading
|
|
6
5
|
import time
|
|
7
6
|
import traceback
|
|
8
7
|
|
|
9
|
-
import aiohttp
|
|
10
8
|
import arrow
|
|
11
|
-
import certifi
|
|
12
9
|
import httpx
|
|
13
10
|
import tenacity
|
|
14
11
|
from tenacity import AsyncRetrying, Retrying, retry_if_not_exception_type
|
|
15
12
|
|
|
16
13
|
import ofscraper.utils.auth.request as auth_requests
|
|
17
|
-
import ofscraper.utils.config.data as data
|
|
18
14
|
import ofscraper.utils.constants as constants
|
|
19
15
|
from ofscraper.utils.auth.utils.warning.print import print_auth_warning
|
|
20
|
-
|
|
21
|
-
import
|
|
16
|
+
# from httpx_curl_cffi import AsyncCurlTransport, CurlOpt
|
|
17
|
+
from httpx_aiohttp import AiohttpTransport
|
|
18
|
+
from aiohttp import ClientSession
|
|
19
|
+
import aiohttp
|
|
20
|
+
|
|
22
21
|
|
|
23
22
|
|
|
24
23
|
TOO_MANY = "too_many"
|
|
@@ -27,7 +26,6 @@ FORCED_NEW = "get_new_sign"
|
|
|
27
26
|
SIGN = "get_sign"
|
|
28
27
|
COOKIES = "get_cookies_str"
|
|
29
28
|
HEADERS = "create_header"
|
|
30
|
-
AGENT=str(ua_generator.generate())
|
|
31
29
|
|
|
32
30
|
|
|
33
31
|
def is_rate_limited(exception, sleeper):
|
|
@@ -52,6 +50,7 @@ def check_400(exception):
|
|
|
52
50
|
time.sleep(8)
|
|
53
51
|
|
|
54
52
|
|
|
53
|
+
|
|
55
54
|
def is_provided_exception_number(exception, *numbers):
|
|
56
55
|
return (
|
|
57
56
|
isinstance(exception, aiohttp.ClientResponseError)
|
|
@@ -70,7 +69,6 @@ def is_provided_exception_number(exception, *numbers):
|
|
|
70
69
|
)
|
|
71
70
|
)
|
|
72
71
|
|
|
73
|
-
|
|
74
72
|
class SessionSleep:
|
|
75
73
|
def __init__(self, sleep=None, difmin=None):
|
|
76
74
|
self._sleep = None
|
|
@@ -164,7 +162,6 @@ class CustomTenacity(AsyncRetrying):
|
|
|
164
162
|
class sessionManager:
|
|
165
163
|
def __init__(
|
|
166
164
|
self,
|
|
167
|
-
backend=None,
|
|
168
165
|
connect_timeout=None,
|
|
169
166
|
total_timeout=None,
|
|
170
167
|
read_timeout=None,
|
|
@@ -188,17 +185,15 @@ class sessionManager:
|
|
|
188
185
|
):
|
|
189
186
|
connect_timeout = connect_timeout or constants.getattr("CONNECT_TIMEOUT")
|
|
190
187
|
total_timeout = total_timeout or constants.getattr("TOTAL_TIMEOUT")
|
|
191
|
-
read_timeout = read_timeout or constants.getattr("CHUNK_READ_TIMEOUT")
|
|
192
188
|
pool_timeout = pool_timeout or constants.getattr("POOL_CONNECT_TIMEOUT")
|
|
193
189
|
limit = limit or constants.getattr("MAX_CONNECTIONS")
|
|
194
190
|
keep_alive = keep_alive or constants.getattr("KEEP_ALIVE")
|
|
195
191
|
keep_alive_exp = keep_alive_exp or constants.getattr("KEEP_ALIVE_EXP")
|
|
196
192
|
proxy = proxy or constants.getattr("PROXY")
|
|
197
193
|
proxy_auth = proxy_auth or constants.getattr("PROXY_AUTH")
|
|
198
|
-
self._backend = backend or data.get_backend()
|
|
199
194
|
self._connect_timeout = connect_timeout
|
|
200
195
|
self._total_timeout = total_timeout
|
|
201
|
-
self._read_timeout
|
|
196
|
+
self._read_timeout=read_timeout
|
|
202
197
|
self._pool_connect_timeout = pool_timeout
|
|
203
198
|
self._connect_limit = limit
|
|
204
199
|
self._keep_alive = keep_alive
|
|
@@ -226,36 +221,31 @@ class sessionManager:
|
|
|
226
221
|
if self._session:
|
|
227
222
|
return
|
|
228
223
|
if async_:
|
|
229
|
-
self.
|
|
230
|
-
|
|
231
|
-
self.
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
),
|
|
244
|
-
)
|
|
224
|
+
self._session = httpx.AsyncClient(
|
|
225
|
+
http2=True,
|
|
226
|
+
proxy=self._proxy,
|
|
227
|
+
limits=httpx.Limits(
|
|
228
|
+
max_keepalive_connections=self._keep_alive,
|
|
229
|
+
max_connections=self._connect_limit,
|
|
230
|
+
keepalive_expiry=self._keep_alive_exp,
|
|
231
|
+
),
|
|
232
|
+
transport=AiohttpTransport(
|
|
233
|
+
client=lambda: ClientSession( proxy=self._proxy,
|
|
234
|
+
connector=aiohttp.TCPConnector(limit=self._connect_limit)),
|
|
235
|
+
)
|
|
236
|
+
|
|
237
|
+
)
|
|
245
238
|
else:
|
|
246
|
-
self.
|
|
247
|
-
|
|
248
|
-
self.
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
)
|
|
257
|
-
elif self._backend == "aio":
|
|
258
|
-
raise Exception("aiohttp is async only")
|
|
239
|
+
self._session = httpx.Client(
|
|
240
|
+
http2=True,
|
|
241
|
+
proxy=self._proxy,
|
|
242
|
+
limits=httpx.Limits(
|
|
243
|
+
max_keepalive_connections=self._keep_alive,
|
|
244
|
+
max_connections=self._connect_limit,
|
|
245
|
+
keepalive_expiry=self._keep_alive_exp,
|
|
246
|
+
),
|
|
247
|
+
)
|
|
248
|
+
self._async = async_
|
|
259
249
|
return self._session
|
|
260
250
|
|
|
261
251
|
# https://github.com/aio-libs/aiohttp/issues/1925
|
|
@@ -353,13 +343,7 @@ class sessionManager:
|
|
|
353
343
|
):
|
|
354
344
|
headers = self._create_headers(
|
|
355
345
|
headers, url, SIGN in actions, FORCED_NEW in actions
|
|
356
|
-
)
|
|
357
|
-
elif not headers or not "user-agent" in headers:
|
|
358
|
-
headers=headers or {}
|
|
359
|
-
headers.update({"user-agent":AGENT})
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
346
|
+
)
|
|
363
347
|
|
|
364
348
|
cookies = self._create_cookies() if COOKIES in actions else None
|
|
365
349
|
r = self._httpx_funct(
|
|
@@ -368,7 +352,7 @@ class sessionManager:
|
|
|
368
352
|
total_timeout or self._total_timeout,
|
|
369
353
|
connect=connect_timeout or self._connect_timeout,
|
|
370
354
|
pool=pool_connect_timeout or self._pool_connect_timeout,
|
|
371
|
-
read=read_timeout or self._read_timeout
|
|
355
|
+
read=read_timeout or self._read_timeout
|
|
372
356
|
),
|
|
373
357
|
url=url,
|
|
374
358
|
follow_redirects=redirects,
|
|
@@ -450,9 +434,9 @@ class sessionManager:
|
|
|
450
434
|
),
|
|
451
435
|
reraise=True,
|
|
452
436
|
):
|
|
437
|
+
await sem.acquire()
|
|
453
438
|
with _:
|
|
454
439
|
r = None
|
|
455
|
-
await sem.acquire()
|
|
456
440
|
try:
|
|
457
441
|
await sleeper.async_do_sleep()
|
|
458
442
|
if (
|
|
@@ -466,51 +450,28 @@ class sessionManager:
|
|
|
466
450
|
)
|
|
467
451
|
|
|
468
452
|
)
|
|
469
|
-
|
|
470
|
-
headers= headers or {}
|
|
471
|
-
headers.update({"user-agent":AGENT})
|
|
472
|
-
|
|
453
|
+
|
|
473
454
|
|
|
474
455
|
cookies = self._create_cookies() if COOKIES in actions else None
|
|
475
456
|
json = json
|
|
476
457
|
params = params
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
data=data,
|
|
495
|
-
ssl=False if not settings.get_settings().ssl_validation else ssl.create_default_context(cafile=certifi.where()),
|
|
496
|
-
)
|
|
497
|
-
else:
|
|
498
|
-
r = await self._httpx_funct_async(
|
|
499
|
-
method,
|
|
500
|
-
timeout=httpx.Timeout(
|
|
501
|
-
total_timeout or self._total_timeout,
|
|
502
|
-
connect=connect_timeout or self._connect_timeout,
|
|
503
|
-
pool=pool_connect_timeout or self._pool_connect_timeout,
|
|
504
|
-
read=read_timeout or self._read_timeout,
|
|
505
|
-
),
|
|
506
|
-
follow_redirects=redirects,
|
|
507
|
-
url=url,
|
|
508
|
-
cookies=cookies,
|
|
509
|
-
headers=headers,
|
|
510
|
-
json=json,
|
|
511
|
-
params=params,
|
|
512
|
-
data=data,
|
|
513
|
-
)
|
|
458
|
+
r = await self._httpx_funct_async(
|
|
459
|
+
method,
|
|
460
|
+
timeout=httpx.Timeout(
|
|
461
|
+
total_timeout or self._total_timeout,
|
|
462
|
+
connect=connect_timeout or self._connect_timeout,
|
|
463
|
+
pool=pool_connect_timeout or self._pool_connect_timeout,
|
|
464
|
+
read=read_timeout or self._read_timeout
|
|
465
|
+
|
|
466
|
+
),
|
|
467
|
+
follow_redirects=redirects,
|
|
468
|
+
url=url,
|
|
469
|
+
cookies=cookies,
|
|
470
|
+
headers=headers,
|
|
471
|
+
json=json,
|
|
472
|
+
params=params,
|
|
473
|
+
data=data,
|
|
474
|
+
)
|
|
514
475
|
if r.status_code == 404:
|
|
515
476
|
pass
|
|
516
477
|
elif not r.ok:
|
|
@@ -532,6 +493,119 @@ class sessionManager:
|
|
|
532
493
|
yield r
|
|
533
494
|
sem.release()
|
|
534
495
|
|
|
496
|
+
@contextlib.asynccontextmanager
|
|
497
|
+
async def requests_async_stream(
|
|
498
|
+
self,
|
|
499
|
+
url=None,
|
|
500
|
+
wait_min=None,
|
|
501
|
+
wait_max=None,
|
|
502
|
+
wait_min_exponential=None,
|
|
503
|
+
wait_max_exponential=None,
|
|
504
|
+
retries=None,
|
|
505
|
+
method="get",
|
|
506
|
+
headers=None,
|
|
507
|
+
cookies=None,
|
|
508
|
+
json=None,
|
|
509
|
+
params=None,
|
|
510
|
+
redirects=True,
|
|
511
|
+
data=None,
|
|
512
|
+
log=None,
|
|
513
|
+
sem=None,
|
|
514
|
+
total_timeout=None,
|
|
515
|
+
connect_timeout=None,
|
|
516
|
+
pool_connect_timeout=None,
|
|
517
|
+
read_timeout=None,
|
|
518
|
+
sleeper=None,
|
|
519
|
+
exceptions=[],
|
|
520
|
+
actions=[],
|
|
521
|
+
*args,
|
|
522
|
+
**kwargs,
|
|
523
|
+
):
|
|
524
|
+
wait_min = wait_min or self._wait_min
|
|
525
|
+
wait_max = wait_max or self._wait_max
|
|
526
|
+
wait_min_exponential = wait_min_exponential or self._wait_min_exponential
|
|
527
|
+
wait_max_exponential = wait_max_exponential or self._wait_max_exponential
|
|
528
|
+
log = log or self._log
|
|
529
|
+
retries = retries or self._retries
|
|
530
|
+
sem = sem or self._sem
|
|
531
|
+
sleeper = sleeper or self._sleeper
|
|
532
|
+
exceptions = exceptions or []
|
|
533
|
+
actions = actions or []
|
|
534
|
+
async for _ in CustomTenacity(
|
|
535
|
+
wait_exponential=tenacity.wait.wait_exponential(
|
|
536
|
+
multiplier=2, min=wait_min_exponential, max=wait_max_exponential
|
|
537
|
+
),
|
|
538
|
+
retry=retry_if_not_exception_type((KeyboardInterrupt)),
|
|
539
|
+
wait_random=tenacity.wait_random(min=wait_min, max=wait_max),
|
|
540
|
+
stop=tenacity.stop.stop_after_attempt(retries),
|
|
541
|
+
before=lambda x: (
|
|
542
|
+
log.debug(f"[bold]attempt: {x.attempt_number}[bold] for {url}")
|
|
543
|
+
if x.attempt_number > 1
|
|
544
|
+
else None
|
|
545
|
+
),
|
|
546
|
+
reraise=True,
|
|
547
|
+
):
|
|
548
|
+
with _:
|
|
549
|
+
r = None
|
|
550
|
+
try:
|
|
551
|
+
await sem.acquire()
|
|
552
|
+
await sleeper.async_do_sleep()
|
|
553
|
+
if (
|
|
554
|
+
SIGN in actions
|
|
555
|
+
or FORCED_NEW in actions
|
|
556
|
+
or HEADERS in actions
|
|
557
|
+
):
|
|
558
|
+
headers = (
|
|
559
|
+
self._create_headers(
|
|
560
|
+
headers, url, SIGN in actions, FORCED_NEW in actions
|
|
561
|
+
)
|
|
562
|
+
|
|
563
|
+
)
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
cookies = self._create_cookies() if COOKIES in actions else None
|
|
567
|
+
json = json
|
|
568
|
+
params = params
|
|
569
|
+
r = await self._httpx_funct_async_stream(
|
|
570
|
+
method,
|
|
571
|
+
timeout=httpx.Timeout(
|
|
572
|
+
total_timeout or self._total_timeout,
|
|
573
|
+
connect=connect_timeout or self._connect_timeout,
|
|
574
|
+
pool=pool_connect_timeout or self._pool_connect_timeout,
|
|
575
|
+
read=read_timeout or self._read_timeout
|
|
576
|
+
),
|
|
577
|
+
follow_redirects=redirects,
|
|
578
|
+
url=url,
|
|
579
|
+
cookies=cookies,
|
|
580
|
+
headers=headers,
|
|
581
|
+
json=json,
|
|
582
|
+
params=params,
|
|
583
|
+
data=data,
|
|
584
|
+
)
|
|
585
|
+
if r.status_code == 404:
|
|
586
|
+
pass
|
|
587
|
+
elif not r.ok:
|
|
588
|
+
log.debug(f"[bold]failed: [bold] {r.url}")
|
|
589
|
+
log.debug(f"[bold]status: [bold] {r.status}")
|
|
590
|
+
log.debug(f"[bold]response text [/bold]: {await r.text_()}")
|
|
591
|
+
log.debug(f"response headers {dict(r.headers)}")
|
|
592
|
+
log.debug(f"requests headers mode{dict(r.request.headers)}")
|
|
593
|
+
r.raise_for_status()
|
|
594
|
+
yield r
|
|
595
|
+
except Exception as E:
|
|
596
|
+
# only call from sync req like "me"
|
|
597
|
+
# check_400(E)
|
|
598
|
+
log.traceback_(E)
|
|
599
|
+
log.traceback_(traceback.format_exc())
|
|
600
|
+
if TOO_MANY in exceptions:
|
|
601
|
+
await async_is_rate_limited(E, sleeper)
|
|
602
|
+
raise E
|
|
603
|
+
finally:
|
|
604
|
+
sem.release()
|
|
605
|
+
await r.aclose()
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
|
|
535
609
|
@property
|
|
536
610
|
def sleep(self):
|
|
537
611
|
return self._sleeper._sleep
|
|
@@ -551,6 +625,27 @@ class sessionManager:
|
|
|
551
625
|
t.read_ = t.aread
|
|
552
626
|
t.request = t.request
|
|
553
627
|
return t
|
|
628
|
+
|
|
629
|
+
async def _httpx_funct_async_stream(self, *args, **kwargs):
|
|
630
|
+
auth=kwargs.pop("auth",None)
|
|
631
|
+
follow_redirects=kwargs.pop("follow_redirects",None)
|
|
632
|
+
req=self._session.build_request(*args, **kwargs)
|
|
633
|
+
t = await self._session.send(
|
|
634
|
+
request=req,
|
|
635
|
+
follow_redirects=follow_redirects,
|
|
636
|
+
stream=True,
|
|
637
|
+
auth=auth,
|
|
638
|
+
)
|
|
639
|
+
t.ok = not t.is_error
|
|
640
|
+
t.json_ = lambda: self.factoryasync(t.json)
|
|
641
|
+
t.text_ = lambda: self.factoryasync(t.text)
|
|
642
|
+
t.status = t.status_code
|
|
643
|
+
t.iter_chunked = t.aiter_bytes
|
|
644
|
+
t.iter_chunks = t.aiter_bytes
|
|
645
|
+
t.read_ = t.aread
|
|
646
|
+
t.request = t.request
|
|
647
|
+
return t
|
|
648
|
+
|
|
554
649
|
|
|
555
650
|
def _httpx_funct(self, method, **kwargs):
|
|
556
651
|
t = self._session.request(method.upper(), **kwargs)
|
|
@@ -564,19 +659,6 @@ class sessionManager:
|
|
|
564
659
|
t.read_ = t.read
|
|
565
660
|
return t
|
|
566
661
|
|
|
567
|
-
async def _aio_funct(self, method, *args, **kwargs):
|
|
568
|
-
# public function forces context manager use
|
|
569
|
-
r = await self._session._request(method, *args, **kwargs)
|
|
570
|
-
r.text_ = r.text
|
|
571
|
-
r.json_ = r.json
|
|
572
|
-
r.iter_chunked = r.content.iter_chunked
|
|
573
|
-
r.iter_chunks = r.content.iter_chunks
|
|
574
|
-
r.request = r.request_info
|
|
575
|
-
r.status_code = r.status
|
|
576
|
-
r.read_ = r.content.read
|
|
577
|
-
r.eof = r.content.at_eof
|
|
578
|
-
return r
|
|
579
|
-
|
|
580
662
|
async def factoryasync(self, input):
|
|
581
663
|
if callable(input):
|
|
582
664
|
return input()
|
|
@@ -247,7 +247,7 @@ async def post_check_retriver():
|
|
|
247
247
|
user_dict = {}
|
|
248
248
|
links = list(url_helper())
|
|
249
249
|
async with manager.Manager.aget_ofsession(
|
|
250
|
-
|
|
250
|
+
|
|
251
251
|
sem_count=constants.getattr("API_REQ_CHECK_MAX"),
|
|
252
252
|
) as c:
|
|
253
253
|
for ele in links:
|
|
@@ -446,7 +446,7 @@ async def message_checker_runner():
|
|
|
446
446
|
async def message_check_retriver():
|
|
447
447
|
links = list(url_helper())
|
|
448
448
|
async with manager.Manager.aget_ofsession(
|
|
449
|
-
|
|
449
|
+
|
|
450
450
|
) as c:
|
|
451
451
|
for item in links:
|
|
452
452
|
num_match = re.search(
|
|
@@ -523,7 +523,7 @@ async def purchase_check_retriver():
|
|
|
523
523
|
user_dict = {}
|
|
524
524
|
auth_requests.make_headers()
|
|
525
525
|
async with manager.Manager.aget_ofsession(
|
|
526
|
-
|
|
526
|
+
|
|
527
527
|
sem_count=constants.getattr("API_REQ_CHECK_MAX"),
|
|
528
528
|
) as c:
|
|
529
529
|
for name in settings.get_settings().check_usernames:
|
|
@@ -578,7 +578,7 @@ async def stories_checker_runner():
|
|
|
578
578
|
async def stories_check_retriver():
|
|
579
579
|
user_dict = {}
|
|
580
580
|
async with manager.Manager.aget_ofsession(
|
|
581
|
-
|
|
581
|
+
|
|
582
582
|
sem_count=constants.getattr("API_REQ_CHECK_MAX"),
|
|
583
583
|
) as c:
|
|
584
584
|
for user_name in settings.get_settings().check_usernames:
|
|
@@ -662,7 +662,7 @@ async def get_paid_ids(model_id, user_name):
|
|
|
662
662
|
paid = oldpaid
|
|
663
663
|
else:
|
|
664
664
|
async with manager.Manager.aget_ofsession(
|
|
665
|
-
|
|
665
|
+
sem_count=constants.getattr("API_REQ_CHECK_MAX")
|
|
666
666
|
) as c:
|
|
667
667
|
paid = await paid_.get_paid_posts(model_id, user_name, c=c)
|
|
668
668
|
set_check(paid, model_id, paid_.API)
|
|
@@ -239,7 +239,7 @@ async def paid_failback(post_id, model_id, username):
|
|
|
239
239
|
)
|
|
240
240
|
post_id = str(post_id)
|
|
241
241
|
async with manager.Manager.aget_ofsession(
|
|
242
|
-
|
|
242
|
+
|
|
243
243
|
sem_count=constants.getattr("API_REQ_CHECK_MAX"),
|
|
244
244
|
) as c:
|
|
245
245
|
data = await paid.get_paid_posts(username, model_id, c=c) or []
|
|
@@ -48,7 +48,6 @@ import ofscraper.utils.context.exit as exit
|
|
|
48
48
|
from ofscraper.classes.sessionmanager.download import download_session
|
|
49
49
|
from ofscraper.commands.scraper.actions.utils.log import final_log, final_log_text
|
|
50
50
|
from ofscraper.commands.scraper.actions.utils.paths.paths import setDirectoriesDate
|
|
51
|
-
from ofscraper.commands.scraper.actions.utils.buffer import download_log_clear_helper
|
|
52
51
|
|
|
53
52
|
from ofscraper.commands.scraper.actions.utils.workers import get_max_workers
|
|
54
53
|
from ofscraper.utils.context.run_async import run
|
|
@@ -192,7 +191,7 @@ class metadataCommandManager(commmandManager):
|
|
|
192
191
|
and avatar
|
|
193
192
|
and settings.get_settings().userfirst
|
|
194
193
|
):
|
|
195
|
-
logging.getLogger("
|
|
194
|
+
logging.getLogger("shared").warning(
|
|
196
195
|
avatar_str.format(avatar=avatar)
|
|
197
196
|
)
|
|
198
197
|
data.extend(
|
|
@@ -294,7 +293,6 @@ def metadata():
|
|
|
294
293
|
|
|
295
294
|
@run
|
|
296
295
|
async def process_dicts(username, model_id, medialist):
|
|
297
|
-
download_log_clear_helper()
|
|
298
296
|
task1 = None
|
|
299
297
|
with progress_utils.setup_metadata_progress_live():
|
|
300
298
|
common_globals.mainProcessVariableInit()
|
|
@@ -337,7 +335,6 @@ async def process_dicts(username, model_id, medialist):
|
|
|
337
335
|
common_globals.thread.shutdown()
|
|
338
336
|
|
|
339
337
|
setDirectoriesDate()
|
|
340
|
-
download_log_clear_helper()
|
|
341
338
|
progress_updater.remove_metadata_task(task1)
|
|
342
339
|
final_log(username)
|
|
343
340
|
return final_log_text(username)
|
{ofscraper-3.13.dev4 → ofscraper-3.13.dev6}/ofscraper/commands/scraper/actions/download/download.py
RENAMED
|
@@ -22,7 +22,6 @@ from ofscraper.classes.sessionmanager.download import download_session
|
|
|
22
22
|
from ofscraper.commands.scraper.actions.utils.log import final_log, final_log_text
|
|
23
23
|
|
|
24
24
|
from ofscraper.commands.scraper.actions.utils.paths.paths import setDirectoriesDate
|
|
25
|
-
from ofscraper.commands.scraper.actions.utils.buffer import download_log_clear_helper
|
|
26
25
|
|
|
27
26
|
from ofscraper.commands.scraper.actions.utils.workers import get_max_workers
|
|
28
27
|
from ofscraper.utils.context.run_async import run
|
|
@@ -45,7 +44,7 @@ async def downloader(username=None, model_id=None, posts=None, media=None, **kwa
|
|
|
45
44
|
)
|
|
46
45
|
|
|
47
46
|
progress_updater.update_activity_task(description=download_str + path_str)
|
|
48
|
-
logging.getLogger("
|
|
47
|
+
logging.getLogger("shared").warning(
|
|
49
48
|
download_activity_str.format(username=username)
|
|
50
49
|
)
|
|
51
50
|
progress_updater.update_activity_task(description="")
|
|
@@ -71,7 +70,6 @@ async def download_model_deleted_process(
|
|
|
71
70
|
@run
|
|
72
71
|
async def process_dicts(username, model_id, medialist, posts):
|
|
73
72
|
log_text_array = []
|
|
74
|
-
download_log_clear_helper()
|
|
75
73
|
log_text_array.append(await textDownloader(posts, username=username))
|
|
76
74
|
logging.getLogger("shared").info("Downloading in single thread mode")
|
|
77
75
|
common_globals.mainProcessVariableInit()
|
|
@@ -103,7 +101,6 @@ async def process_dicts(username, model_id, medialist, posts):
|
|
|
103
101
|
try:
|
|
104
102
|
|
|
105
103
|
aws = []
|
|
106
|
-
|
|
107
104
|
async with download_session() as c:
|
|
108
105
|
for ele in medialist:
|
|
109
106
|
aws.append((c, ele, model_id, username))
|
|
@@ -139,7 +136,6 @@ async def process_dicts(username, model_id, medialist, posts):
|
|
|
139
136
|
common_globals.thread.shutdown()
|
|
140
137
|
|
|
141
138
|
setDirectoriesDate()
|
|
142
|
-
download_log_clear_helper()
|
|
143
139
|
final_log(username, log=logging.getLogger("shared"))
|
|
144
140
|
progress_updater.remove_download_task(task1)
|
|
145
141
|
log_text_array.append(final_log_text(username))
|