ofscraper 3.13.dev0__tar.gz → 3.13.dev3__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.dev0 → ofscraper-3.13.dev3}/PKG-INFO +2 -2
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/README.md +1 -1
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/sessionmanager/sessionmanager.py +2 -2
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/utils/scrape_context.py +5 -3
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/open/load.py +1 -1
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/config.py +23 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/data.py +18 -2
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/schema.py +24 -15
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/hash.py +1 -1
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/updater.py +2 -2
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/logs.py +1 -1
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/paths/common.py +7 -4
- ofscraper-3.13.dev3/ofscraper/utils/paths/manage.py +77 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/settings.py +2 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/pyproject.toml +1 -1
- ofscraper-3.13.dev0/ofscraper/commands/scraper/actions/utils/send/send_bar_msg.py +0 -16
- ofscraper-3.13.dev0/ofscraper/utils/paths/manage.py +0 -28
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/LICENSE +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/__main__.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/__version__.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/__version__.pye +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/labels.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/of/base.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/of/media.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/of/posts.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/placeholder.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/sessionmanager/download.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/sessionmanager/ofsession.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/app.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/compose.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/const.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/css.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/boolfield.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/datefield.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/downloadfield.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/mediafield.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/numfield.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/pricefield.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/responsefield.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/selectfield.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/sizefield.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/textsearch.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/timefield.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/inputs/filterinput.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/inputs/intergerinput.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/inputs/strinput.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/sections/sidebar.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/sections/table.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/sections/table_console.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/utils/lock.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/utils/names.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/check.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/db.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/manual.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/metadata/consumer.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/metadata/desc.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/metadata/manager.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/metadata/metadata.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/download.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/managers/alt_download.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/managers/downloadmanager.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/managers/main_download.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/run.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/utils/chunk.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/utils/desc.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/utils/keyhelpers.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/utils/leaky.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/utils/retries.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/utils/text.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/like/like.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/buffer.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/general.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/globals.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/log.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/params.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/paths/media.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/paths/paths.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/progress/convert.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/progress/update.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/retries.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/send/chunk.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/send/message.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/threads.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/workers.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/scraper.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/utils/daemon.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/utils/jobqueue.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/utils/prepare.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/utils/print.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/utils/schedule.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/utils/command.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/utils/strings.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/constants.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/action/download.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/action/like.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/action/metadata.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/binary.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/config.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/date.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/download.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/dynamic.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/general.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/list.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/live.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/logger.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/path/bytes.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/path/files.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/path/general.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/path/path.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/prompts.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/anon.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/api.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/cdm.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/discord.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/git.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/like.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/mpd.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/req.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/rich.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/system.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/table.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/test/test_constants.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/time.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/url/other_url.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/url/url.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/archive.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/after.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/cache/read.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/cache/write.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/check.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/logs/logs.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/logs/strings.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/timeline.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/highlights.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/init.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/labels.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/me.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/messages.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/paid.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/pinned.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/profile.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/streams.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/subscriptions/common.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/subscriptions/individual.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/subscriptions/lists.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/subscriptions/subscriptions.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/timeline.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/models/manager.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/models/models.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/models/utils/retriver.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/posts/post.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/posts/scrape_paid.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/__init__.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/backup.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/difference.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/merge.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/empty.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/labels.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/media.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/messages.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/others.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/posts.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/profile.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/stories.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/wrapper.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/transition.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/utils/convert.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/media/filters.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/media/main.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/date.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/flags.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/other.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/price.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/sort.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/subtype.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/utils/logs.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/close/exit.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/close/final/final.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/close/final/final_log.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/close/final/final_script.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/close/final/final_user.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/manager.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/open/run.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/keybindings.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/promptConvert.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/actions.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/area.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/auth.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/binary.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/menu.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/merge.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/model.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/profile.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_strings.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_validators.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompts.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/utils/model_helpers.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/utils/prompt_helpers.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/__init__.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/actions.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/ads.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/accessors/actions.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/accessors/areas.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/accessors/output.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/accessors/quality.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/accessors/read.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/accessors/time.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/callbacks/choice.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/callbacks/file.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/callbacks/string.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/callbacks/username.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/globals.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/helpers/hide_args.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/main.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/mutators/before.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/mutators/change.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/mutators/user.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/mutators/write.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/advanced_processing.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/advanced_program.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/advanced_user_filter.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/automatic.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/check.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/db.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/download.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/file.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/logging.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/media_content.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/metadata_filters.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/post_content.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/program.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/shared.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/user_list.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/user_select.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/user_sort.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/utils/date.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/utils/retry.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/db.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/main.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/manual.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/message.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/metadata.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/paid.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/post.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/story.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/advanced_common.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/check.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/common.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/db.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/main.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/manual.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/message_check.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/metadata.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/paid_check.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/post_check.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/story_check.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/utils/check.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/advanced_processing.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/advanced_program.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/advanced_user_filter.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/automatic.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/check_content.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/download.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/file.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/logging.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/media_filter.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/post_filter.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/program.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/user_list.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/user_select.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/user_sort.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/types/arrow.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/types/choice.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/data.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/file.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/make.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/request.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/schema.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/utils/context.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/utils/dict.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/utils/prompt.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/utils/warning/check.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/utils/warning/print.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/utils/warning/warning.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/binaries.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/cache.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/checkers.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/config.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/custom.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/file.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/menu.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/utils/context.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/utils/wrapper.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/console.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/constants.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/context/exit.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/context/run_async.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/context/stdout.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/dates.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/encoding.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/classes/progress.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/classes/task.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/classes/transfercol.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/clear.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/empty.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/groups.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/live.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/panel.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/progress.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/screens.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/tasks.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/classes.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/handlers/discord.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/handlers/file.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/handlers/pipe.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/handlers/rich.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/handlers/text.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/handlers/zmq.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/close.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/globals.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/handle.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/logger.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/other.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/stdout.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/utils/level.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/utils/trace.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/manager.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/me.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/menu.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/merge.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/paths/check.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/paths/db.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/paths/paths.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/profiles/data.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/profiles/manage.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/profiles/tools.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/sems.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/separate.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/string.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/system/free.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/system/network.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/system/priority.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/system/speed.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/system/subprocess.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/system/system.py +0 -0
- {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/text.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.dev3
|
|
4
4
|
Summary: automatically scrape onlyfans
|
|
5
5
|
Author: datawhores
|
|
6
6
|
Author-email: datawhores@riseup.net
|
|
@@ -78,7 +78,7 @@ https://github.com/datawhores/OF-Scraper/issues/442
|
|
|
78
78
|
|
|
79
79
|
```Text
|
|
80
80
|
|
|
81
|
-
Docker and binary releases also
|
|
81
|
+
Docker and binary releases also available
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
## Stable
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/sessionmanager/sessionmanager.py
RENAMED
|
@@ -7,7 +7,6 @@ import time
|
|
|
7
7
|
import traceback
|
|
8
8
|
|
|
9
9
|
import aiohttp
|
|
10
|
-
import aiohttp.client_exceptions
|
|
11
10
|
import arrow
|
|
12
11
|
import certifi
|
|
13
12
|
import httpx
|
|
@@ -18,6 +17,7 @@ import ofscraper.utils.auth.request as auth_requests
|
|
|
18
17
|
import ofscraper.utils.config.data as data
|
|
19
18
|
import ofscraper.utils.constants as constants
|
|
20
19
|
from ofscraper.utils.auth.utils.warning.print import print_auth_warning
|
|
20
|
+
import ofscraper.utils.settings as settings
|
|
21
21
|
|
|
22
22
|
TOO_MANY = "too_many"
|
|
23
23
|
AUTH = "auth"
|
|
@@ -481,7 +481,7 @@ class sessionManager:
|
|
|
481
481
|
params=params,
|
|
482
482
|
json=json,
|
|
483
483
|
data=data,
|
|
484
|
-
ssl=ssl.create_default_context(cafile=certifi.where()),
|
|
484
|
+
ssl=False if not settings.get_settings().ssl_validation else ssl.create_default_context(cafile=certifi.where()),
|
|
485
485
|
)
|
|
486
486
|
else:
|
|
487
487
|
r = await self._httpx_funct_async(
|
|
@@ -12,7 +12,7 @@ r"""
|
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
14
|
import logging
|
|
15
|
-
import
|
|
15
|
+
from datetime import datetime
|
|
16
16
|
from contextlib import contextmanager
|
|
17
17
|
|
|
18
18
|
import arrow
|
|
@@ -24,7 +24,7 @@ log = logging.getLogger("shared")
|
|
|
24
24
|
def scrape_context_manager():
|
|
25
25
|
# reset stream if needed
|
|
26
26
|
# Before yield as the enter method
|
|
27
|
-
start =
|
|
27
|
+
start = datetime.now()
|
|
28
28
|
log.warning(
|
|
29
29
|
"""
|
|
30
30
|
==============================
|
|
@@ -33,12 +33,14 @@ def scrape_context_manager():
|
|
|
33
33
|
"""
|
|
34
34
|
)
|
|
35
35
|
yield
|
|
36
|
-
end =
|
|
36
|
+
end = datetime.now()
|
|
37
37
|
log.warning(
|
|
38
38
|
f"""
|
|
39
39
|
===========================
|
|
40
40
|
[bold] Script Finished [/bold]
|
|
41
41
|
Run Time: [bold]{str(arrow.get(end)-arrow.get(start)).split(".")[0]}[/bold]
|
|
42
|
+
Started At: [bold]{str(arrow.get(start).format("YYYY-MM-DD hh:mm:ss"))}[/bold]
|
|
43
|
+
Finished At: [bold]{str(arrow.get(end).format("YYYY-MM-DD hh:mm:ss"))}[/bold]
|
|
42
44
|
===========================
|
|
43
45
|
"""
|
|
44
46
|
)
|
|
@@ -104,6 +104,8 @@ def funct(prompt_):
|
|
|
104
104
|
enable_auto_after: whether to dynamically set --after: default True
|
|
105
105
|
default_user_list: default user list for --action
|
|
106
106
|
default_black_list: default black list for --action
|
|
107
|
+
logs_expire_time: max age for a log before it is autodelete
|
|
108
|
+
ssl_validation: option for whether to validate ssl certificates
|
|
107
109
|
remove_hash_match: remove files if hash matches
|
|
108
110
|
----------------------------------------------------------
|
|
109
111
|
[Response Type]
|
|
@@ -638,6 +640,27 @@ Main user list with all active+expired users can be called main or ofscraper.mai
|
|
|
638
640
|
Active user list can be called active or ofscraper.active
|
|
639
641
|
Expired user list can be called expired or ofscraper.expired
|
|
640
642
|
List are case insensitive\n
|
|
643
|
+
""",
|
|
644
|
+
},
|
|
645
|
+
|
|
646
|
+
{
|
|
647
|
+
"type": "input",
|
|
648
|
+
"name": "logs_expire_time",
|
|
649
|
+
"message": "Logs expire Time",
|
|
650
|
+
"default": data.get_logs_expire(),
|
|
651
|
+
"option_instruction": """
|
|
652
|
+
Logs will auto delete after the selected amount of time has passed
|
|
653
|
+
If value is 'None' or '0' no logs will be touched
|
|
654
|
+
""",
|
|
655
|
+
},
|
|
656
|
+
|
|
657
|
+
{
|
|
658
|
+
"type": "input",
|
|
659
|
+
"name": "ssl_validation",
|
|
660
|
+
"message": "ssl validation",
|
|
661
|
+
"default": data.get_ssl_validation(),
|
|
662
|
+
"option_instruction": """
|
|
663
|
+
Option to disable ssl certificate validation
|
|
641
664
|
""",
|
|
642
665
|
},
|
|
643
666
|
{
|
|
@@ -266,6 +266,22 @@ def get_default_userlist(config=None):
|
|
|
266
266
|
)
|
|
267
267
|
|
|
268
268
|
|
|
269
|
+
@wrapper.config_reader
|
|
270
|
+
def get_logs_expire(config=None):
|
|
271
|
+
return(
|
|
272
|
+
config.get("logs_expire_time")
|
|
273
|
+
if not any(x == config.get("logs_expire_time") for x in [None, ""])
|
|
274
|
+
else config.get("advanced_options", {}).get("logs_expire_time")
|
|
275
|
+
)
|
|
276
|
+
|
|
277
|
+
@wrapper.config_reader
|
|
278
|
+
def get_ssl_validation(config=None):
|
|
279
|
+
val = (
|
|
280
|
+
config.get("ssl_validation")
|
|
281
|
+
if not any(x == config.get("ssl_validation") for x in [None, ""])
|
|
282
|
+
else config.get("advanced_options", {}).get("ssl_validation")
|
|
283
|
+
)
|
|
284
|
+
return val if val else True
|
|
269
285
|
@wrapper.config_reader
|
|
270
286
|
def get_post_download_script(config=None):
|
|
271
287
|
if config is False:
|
|
@@ -293,8 +309,8 @@ def get_post_script(config=None):
|
|
|
293
309
|
val = config.get("post_script")
|
|
294
310
|
elif config.get("advanced_options", {}).get("post_script") is not None:
|
|
295
311
|
val = config.get("advanced_options", {}).get("post_script")
|
|
296
|
-
elif config.get("scripts", {}).get("
|
|
297
|
-
val = config.get("scripts", {}).get("
|
|
312
|
+
elif config.get("scripts", {}).get("post_script") is not None:
|
|
313
|
+
val = config.get("scripts", {}).get("post_script")
|
|
298
314
|
elif config.get("script_options", {}).get("post_script") is not None:
|
|
299
315
|
val = config.get("script_options", {}).get("post_script")
|
|
300
316
|
return val if val is not None else constants_attr.getattr("POST_SCRIPT_DEFAULT")
|
|
@@ -64,8 +64,10 @@ def get_current_config_schema(config: dict = None) -> dict:
|
|
|
64
64
|
"enable_auto_after": data.get_enable_after(config=config),
|
|
65
65
|
"default_user_list": data.get_default_userlist(config=config),
|
|
66
66
|
"default_black_list": data.get_default_blacklist(config=config),
|
|
67
|
+
"logs_expire_time":data.get_logs_expire(config=config),
|
|
68
|
+
"ssl_validation":data.get_ssl_validation(config=config)
|
|
67
69
|
},
|
|
68
|
-
"
|
|
70
|
+
"script_options": {
|
|
69
71
|
"post_download_script": data.get_post_download_script(config=config),
|
|
70
72
|
"post_script": data.get_post_script(config=config),
|
|
71
73
|
},
|
|
@@ -97,20 +99,27 @@ def config_diff(config):
|
|
|
97
99
|
if config.get("config"):
|
|
98
100
|
config = config["config"]
|
|
99
101
|
schema = get_current_config_schema()
|
|
100
|
-
return
|
|
102
|
+
return _config_diff_helper(config, schema)
|
|
101
103
|
|
|
104
|
+
def _config_diff_helper(config, schema):
|
|
105
|
+
# Check for keys in schema but missing in config
|
|
106
|
+
if set(schema.keys()) - set(config.keys()):
|
|
107
|
+
return True
|
|
102
108
|
|
|
103
|
-
|
|
104
|
-
if
|
|
105
|
-
config = config[key]
|
|
106
|
-
schema = schema[key]
|
|
107
|
-
diff = set(schema.keys()) - set(config.keys())
|
|
108
|
-
if len(diff) > 0:
|
|
109
|
+
# Check for keys in config but missing in schema
|
|
110
|
+
if set(config.keys()) - set(schema.keys()):
|
|
109
111
|
return True
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
|
|
113
|
+
for key, schema_value in schema.items():
|
|
114
|
+
if key in config:
|
|
115
|
+
config_value = config[key]
|
|
116
|
+
if isinstance(schema_value, dict):
|
|
117
|
+
if not isinstance(config_value, dict):
|
|
118
|
+
return True
|
|
119
|
+
if _config_diff_helper(config_value, schema_value):
|
|
120
|
+
return True
|
|
121
|
+
elif schema_value != config_value: # Simple value comparison
|
|
122
|
+
return True
|
|
123
|
+
# Keys missing from config are already handled above
|
|
124
|
+
|
|
125
|
+
return False
|
|
@@ -18,7 +18,7 @@ fileHashes = {}
|
|
|
18
18
|
def get_hash(file_data, mediatype=None):
|
|
19
19
|
global fileHashes
|
|
20
20
|
hash = None
|
|
21
|
-
if settings.
|
|
21
|
+
if settings.get_settings().hash is None:
|
|
22
22
|
return
|
|
23
23
|
if isinstance(file_data, placeholder.Placeholders):
|
|
24
24
|
file_data = file_data.trunicated_filepath
|
|
@@ -137,7 +137,7 @@ downloads_pending = set()
|
|
|
137
137
|
def add_download_job_task(*args, **kwargs):
|
|
138
138
|
max_visible = constants.getattr("MAX_PROGRESS_BARS")
|
|
139
139
|
visible = (
|
|
140
|
-
settings.get_settings().download_bars
|
|
140
|
+
settings.get_settings().download_bars
|
|
141
141
|
and len(download_job_progress.tasks) < max_visible
|
|
142
142
|
)
|
|
143
143
|
task = download_job_progress.add_task(*args, visible=visible, **kwargs)
|
|
@@ -160,7 +160,7 @@ def update_download_task(*args, **kwargs):
|
|
|
160
160
|
|
|
161
161
|
|
|
162
162
|
def update_download_job_task(*args, **kwargs):
|
|
163
|
-
if not settings.get_settings().download_bars
|
|
163
|
+
if not settings.get_settings().download_bars:
|
|
164
164
|
return
|
|
165
165
|
download_job_progress.update(*args, **kwargs)
|
|
166
166
|
|
|
@@ -102,7 +102,7 @@ def print_latest_version():
|
|
|
102
102
|
"[bold yellow]OF-Scraper can't check version (probably from zip)[/bold yellow]"
|
|
103
103
|
)
|
|
104
104
|
elif ".dev" in __version__:
|
|
105
|
-
log.error("OF-Scraper up to date[/bold yellow]")
|
|
105
|
+
log.error("[bold yellow]OF-Scraper up to date[/bold yellow]")
|
|
106
106
|
else:
|
|
107
107
|
log.error(
|
|
108
108
|
f"[bold yellow]new version of OF-Scraper available[/bold yellow]: [bold]{new_version}[/bold]"
|
|
@@ -78,15 +78,13 @@ def getlogpath():
|
|
|
78
78
|
path = None
|
|
79
79
|
if not data.get_appendlog():
|
|
80
80
|
path = (
|
|
81
|
-
|
|
82
|
-
/ "logging"
|
|
81
|
+
get_log_folder()
|
|
83
82
|
/ f'{data.get_main_profile()}_{dates_manager.getLogDate().get("day")}'
|
|
84
83
|
/ f'ofscraper_{data.get_main_profile()}_{dates_manager.getLogDate().get("now")}.log'
|
|
85
84
|
)
|
|
86
85
|
else:
|
|
87
86
|
path = (
|
|
88
|
-
|
|
89
|
-
/ "logging"
|
|
87
|
+
get_log_folder()
|
|
90
88
|
/ f'ofscraper_{data.get_main_profile()}_{dates_manager.getLogDate().get("day")}.log'
|
|
91
89
|
)
|
|
92
90
|
path = pathlib.Path(path).resolve()
|
|
@@ -94,6 +92,11 @@ def getlogpath():
|
|
|
94
92
|
return path
|
|
95
93
|
|
|
96
94
|
|
|
95
|
+
def get_log_folder():
|
|
96
|
+
return (
|
|
97
|
+
get_config_home()
|
|
98
|
+
/ "logging")
|
|
99
|
+
|
|
97
100
|
def get_profile_path(name=None):
|
|
98
101
|
if name:
|
|
99
102
|
profile = get_config_home() / name
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
import shutil
|
|
3
|
+
import arrow
|
|
4
|
+
import traceback
|
|
5
|
+
import ofscraper.utils.paths.common as common_paths
|
|
6
|
+
import ofscraper.utils.settings as settings
|
|
7
|
+
import ofscraper.utils.context.stdout as stdout
|
|
8
|
+
import ofscraper.utils.console as console_
|
|
9
|
+
|
|
10
|
+
console=console_.get_shared_console()
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def make_folders():
|
|
14
|
+
common_paths.get_config_folder()
|
|
15
|
+
create_profile_path()
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def create_profile_path(name=None):
|
|
19
|
+
out = common_paths.get_profile_path(name)
|
|
20
|
+
out.mkdir(exist_ok=True, parents=True)
|
|
21
|
+
return out
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def copy_path(source, dst):
|
|
25
|
+
try:
|
|
26
|
+
shutil.copy2(source, dst)
|
|
27
|
+
except OSError as e:
|
|
28
|
+
logging.getLogger("shared").debug("failed to copy with copy2 using copy")
|
|
29
|
+
logging.getLogger("shared").traceback_(e)
|
|
30
|
+
logging.getLogger("shared").traceback_(traceback.format_exc())
|
|
31
|
+
shutil.copy(source, dst)
|
|
32
|
+
except Exception as e:
|
|
33
|
+
raise e
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def cleanup_logs():
|
|
37
|
+
"""
|
|
38
|
+
Performs actions to cleanup logs
|
|
39
|
+
"""
|
|
40
|
+
with stdout.lowstdout():
|
|
41
|
+
delete_old_logs()
|
|
42
|
+
delete_empty_folders()
|
|
43
|
+
|
|
44
|
+
def delete_old_logs():
|
|
45
|
+
"""
|
|
46
|
+
Recursively finds and deletes .log files in the specified folder
|
|
47
|
+
that are older than the given maximum age
|
|
48
|
+
|
|
49
|
+
Also cleans up folder
|
|
50
|
+
"""
|
|
51
|
+
log_path = common_paths.get_log_folder()
|
|
52
|
+
now = arrow.now().float_timestamp
|
|
53
|
+
if not settings.get_settings().logs_expire_time:
|
|
54
|
+
return
|
|
55
|
+
for log_file in log_path.rglob("*.log"): # rglob for recursive globbing
|
|
56
|
+
try:
|
|
57
|
+
if (now - log_file.stat().st_mtime) > settings.get_settings().logs_expire_time:
|
|
58
|
+
log_file.unlink() # pathlib's way to delete a file
|
|
59
|
+
console.print(f"Deleted old log file: {log_file}")
|
|
60
|
+
except OSError as e:
|
|
61
|
+
console.print(f"Error deleting file {log_file}: {e}")
|
|
62
|
+
def delete_empty_folders():
|
|
63
|
+
"""
|
|
64
|
+
Recursively finds and deletes empty folders within thelog folder.
|
|
65
|
+
|
|
66
|
+
"""
|
|
67
|
+
log_path = common_paths.get_log_folder()
|
|
68
|
+
|
|
69
|
+
# Iterate through all directories within the log folder and its subdirectories
|
|
70
|
+
for folder in sorted(log_path.rglob("*"), key=lambda p: len(str(p)), reverse=True):
|
|
71
|
+
if folder.is_dir() and not any(folder.iterdir()):
|
|
72
|
+
try:
|
|
73
|
+
folder.rmdir()
|
|
74
|
+
console.print(f"Deleted empty folder: {folder}")
|
|
75
|
+
except OSError as e:
|
|
76
|
+
console.print(f"Error deleting folder {folder}: {e}")
|
|
77
|
+
|
|
@@ -98,6 +98,8 @@ def setup_settings(mediatype):
|
|
|
98
98
|
)
|
|
99
99
|
merged.auto_resume = get_auto_resume(mediatype)
|
|
100
100
|
merged.cached_disabled = get_auto_after_enabled()
|
|
101
|
+
merged.logs_expire_time=config_data.get_logs_expire()
|
|
102
|
+
merged.ssl_validation=config_data.get_ssl_validation()
|
|
101
103
|
|
|
102
104
|
return merged
|
|
103
105
|
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# import asyncio
|
|
2
|
-
|
|
3
|
-
# import ofscraper.commands.scraper.actions.utils.globals as common_globals
|
|
4
|
-
# import ofscraper.utils.settings as settings
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
# async def send_bar_msg_batch(msg, count, update_count):
|
|
8
|
-
# if not settings.get_settings().download_bars():
|
|
9
|
-
# return
|
|
10
|
-
# await send_msg_alt(msg)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
# async def send_bar_msg(func, count, update_count):
|
|
14
|
-
# if not settings.get_settings().download_bars():
|
|
15
|
-
# return
|
|
16
|
-
# await asyncio.get_event_loop().run_in_executor(common_globals.thread, func)
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
import shutil
|
|
3
|
-
import traceback
|
|
4
|
-
|
|
5
|
-
import ofscraper.utils.paths.common as common_paths
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def make_folders():
|
|
9
|
-
common_paths.get_config_folder()
|
|
10
|
-
create_profile_path()
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def create_profile_path(name=None):
|
|
14
|
-
out = common_paths.get_profile_path(name)
|
|
15
|
-
out.mkdir(exist_ok=True, parents=True)
|
|
16
|
-
return out
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
def copy_path(source, dst):
|
|
20
|
-
try:
|
|
21
|
-
shutil.copy2(source, dst)
|
|
22
|
-
except OSError as e:
|
|
23
|
-
logging.getLogger("shared").debug("failed to copy with copy2 using copy")
|
|
24
|
-
logging.getLogger("shared").traceback_(e)
|
|
25
|
-
logging.getLogger("shared").traceback_(traceback.format_exc())
|
|
26
|
-
shutil.copy(source, dst)
|
|
27
|
-
except Exception as e:
|
|
28
|
-
raise e
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/sections/table_console.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/download.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/run.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/buffer.py
RENAMED
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/general.py
RENAMED
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/globals.py
RENAMED
|
File without changes
|
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/params.py
RENAMED
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/paths/media.py
RENAMED
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/paths/paths.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/retries.py
RENAMED
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/send/chunk.py
RENAMED
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/send/message.py
RENAMED
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/threads.py
RENAMED
|
File without changes
|
{ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/workers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|