ofscraper 3.10.dev10__tar.gz → 3.10.2__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.10.dev10 → ofscraper-3.10.2}/PKG-INFO +4 -1
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/README.md +3 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/__version__.py +1 -1
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/subscriptions/individual.py +0 -1
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/subscriptions/lists.py +2 -10
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/subscriptions/subscriptions.py +0 -1
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/media.py +0 -19
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/placeholder.py +15 -1
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/helpers/normal.py +38 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/metadata.py +6 -7
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/scraper/actions/download.py +10 -1
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/scraper/actions/like.py +12 -18
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/scraper/post.py +17 -30
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/scraper/runner.py +1 -1
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/config.py +1 -1
- ofscraper-3.10.2/ofscraper/const/values/like.py +6 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/test_constants.py +1 -1
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/url.py +1 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/db/operations.py +5 -5
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/db/operations_/media.py +23 -14
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/download.py +0 -1
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/downloadnormal.py +80 -55
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/general.py +2 -2
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/progress/chunk.py +3 -3
- {ofscraper-3.10.dev10/ofscraper/filters/media → ofscraper-3.10.2/ofscraper/filters/media/helpers}/helpers.py +107 -161
- ofscraper-3.10.2/ofscraper/filters/media/helpers/sorter.py +3 -0
- ofscraper-3.10.2/ofscraper/filters/media/helpers/trace.py +55 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/filters/media/main.py +65 -23
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/prompt_groups/config.py +5 -5
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/arguments/advanced_program.py +1 -1
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/auth/request.py +30 -3
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/config/data.py +9 -5
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/config/schema.py +1 -1
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/constants.py +3 -3
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/live/empty.py +3 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/live/screens.py +28 -21
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/live/tasks.py +1 -1
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/live/updater.py +9 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/logs/classes.py +1 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/settings.py +2 -2
- ofscraper-3.10.2/ofscraper/utils/string.py +60 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/pyproject.toml +1 -1
- ofscraper-3.10.dev10/ofscraper/const/values/like.py +0 -10
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/LICENSE +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/__main__.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/__version__.pye +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/archive.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/common/logs.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/highlights.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/init.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/labels.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/me.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/messages.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/paid.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/pinned.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/profile.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/subscriptions/helpers.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/api/timeline.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/base.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/labels.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/models.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/multiprocessprogress.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/posts.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/sessionmanager.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/button.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/fields/boolfield.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/fields/datefield.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/fields/mediafield.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/fields/numfield.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/fields/pricefield.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/fields/responsefield.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/fields/selectfield.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/fields/textsearch.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/fields/timefield.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/inputs/filterinput.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/inputs/intergerinput.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/inputs/strinput.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/row_names.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/status.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/table.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/classes/table/table_console.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/check.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/helpers/data.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/helpers/final_log.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/helpers/picker.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/helpers/scrape_paid.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/helpers/shared.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/helpers/strings.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/helpers/user_first.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/manual.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/scraper/scrape_context.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/commands/scraper/scraper.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/constants.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/binary.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/date.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/download.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/files.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/general.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/live.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/logger.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/metadata.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/other_url.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/path.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/prompts.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/req.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/table.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/const/values/time.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/db/__init__.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/db/operations_/helpers.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/db/operations_/labels.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/db/operations_/merge.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/db/operations_/messages.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/db/operations_/others.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/db/operations_/posts.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/db/operations_/profile.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/db/operations_/stories.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/db/operations_/wrapper.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/alt_download.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/alt_downloadbatch.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/downloadbatch.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/main_download.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/main_downloadbatch.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/alt_common.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/classes/retries.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/classes/session.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/globals/globals.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/handle_result.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/keyhelpers.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/log.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/metadata.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/paths/media.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/paths/paths.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/progress/progress.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/send/chunk.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/send/message.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/send/send_bar_msg.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/text.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/download/shared/workers.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/filters/models/date.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/filters/models/flags.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/filters/models/helpers.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/filters/models/other.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/filters/models/price.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/filters/models/sort.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/filters/models/subtype.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/models/retriver.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/models/selector.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/helpers/model_helpers.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/helpers/prompt_helpers.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/keybindings.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/promptConvert.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/prompt_groups/actions.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/prompt_groups/area.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/prompt_groups/auth.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/prompt_groups/binary.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/prompt_groups/menu.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/prompt_groups/merge.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/prompt_groups/model.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/prompt_groups/profile.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/prompt_strings.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/prompt_validators.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/prompts/prompts.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/runner/exit.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/runner/load.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/runner/run.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/__init__.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/actions.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/arguments/advanced_processing.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/arguments/advanced_user_filter.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/arguments/automatic.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/arguments/content.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/arguments/download.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/arguments/file.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/arguments/logging.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/arguments/media_type.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/arguments/program.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/arguments/user_list.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/arguments/user_select.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/arguments/user_sort.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/bundles/advanced_common.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/bundles/common.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/bundles/main.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/bundles/manual.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/bundles/message_check.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/bundles/metadata.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/bundles/paid_check.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/bundles/post_check.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/bundles/story_check.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/commands/main.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/commands/manual.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/commands/message.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/commands/metadata.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/commands/paid.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/commands/post.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/commands/story.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/globals.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/groups/common_args.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/helpers/areas.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/helpers/before.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/helpers/check.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/helpers/date.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/helpers/type.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/output.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/parse.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/quality.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/read.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/user.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/args/write.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/auth/context.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/auth/data.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/auth/file.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/auth/helpers.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/auth/make.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/auth/schema.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/binaries.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/cache.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/checkers.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/config/config.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/config/context.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/config/custom.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/config/file.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/config/menu.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/config/wrapper.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/console.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/context/exit.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/context/run_async.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/context/stdout.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/dates.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/encoding.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/hash.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/live/groups.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/live/live.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/live/panel.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/live/progress.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/logs/close.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/logs/globals.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/logs/handle.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/logs/helpers.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/logs/logger.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/logs/logs.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/logs/other.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/logs/stdout.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/manager.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/me.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/menu.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/merge.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/paths/check.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/paths/common.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/paths/manage.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/paths/paths.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/profiles/data.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/profiles/manage.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/profiles/tools.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/run.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/sems.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/separate.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/system/free.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/system/network.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/system/system.py +0 -0
- {ofscraper-3.10.dev10 → ofscraper-3.10.2}/ofscraper/utils/text.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ofscraper
|
|
3
|
-
Version: 3.10.
|
|
3
|
+
Version: 3.10.2
|
|
4
4
|
Summary: automatically scrape onlyfans
|
|
5
5
|
Author: datawhores
|
|
6
6
|
Author-email: datawhores@riseup.net
|
|
@@ -119,6 +119,9 @@ For detailed instructions on:
|
|
|
119
119
|
|
|
120
120
|
Open a issue in this repo, or you can mention your issue in the [Discord](#discord)
|
|
121
121
|
|
|
122
|
+
**Feature request issues are fine**
|
|
123
|
+
**Bug Report Issues without required material will be closed**
|
|
124
|
+
|
|
122
125
|
### Private Reports
|
|
123
126
|
|
|
124
127
|
A ticket can be created in the ticket channel
|
|
@@ -65,6 +65,9 @@ For detailed instructions on:
|
|
|
65
65
|
|
|
66
66
|
Open a issue in this repo, or you can mention your issue in the [Discord](#discord)
|
|
67
67
|
|
|
68
|
+
**Feature request issues are fine**
|
|
69
|
+
**Bug Report Issues without required material will be closed**
|
|
70
|
+
|
|
68
71
|
### Private Reports
|
|
69
72
|
|
|
70
73
|
A ticket can be created in the ticket channel
|
|
@@ -22,7 +22,7 @@ try:
|
|
|
22
22
|
|
|
23
23
|
__hardcoded__ = None
|
|
24
24
|
__version__ = __hardcoded__ or Version.from_git(
|
|
25
|
-
pattern="(?P<base>\d+\.\d
|
|
25
|
+
pattern="(?P<base>\d+\.\d+(\.((\d+\.\w+)|\w+)|))"
|
|
26
26
|
).serialize(format="{base}+{branch}.{commit}", metadata=False)
|
|
27
27
|
except:
|
|
28
28
|
import pkg_resources
|
|
@@ -15,17 +15,9 @@ import asyncio
|
|
|
15
15
|
import contextvars
|
|
16
16
|
import logging
|
|
17
17
|
import traceback
|
|
18
|
-
from concurrent.futures import ThreadPoolExecutor
|
|
19
|
-
|
|
20
|
-
from rich.console import Group
|
|
21
|
-
from rich.live import Live
|
|
22
|
-
from rich.panel import Panel
|
|
23
|
-
from rich.progress import Progress, SpinnerColumn, TextColumn
|
|
24
|
-
from rich.style import Style
|
|
25
18
|
|
|
26
19
|
import ofscraper.classes.sessionmanager as sessionManager
|
|
27
20
|
import ofscraper.utils.args.read as read_args
|
|
28
|
-
import ofscraper.utils.console as console
|
|
29
21
|
import ofscraper.utils.constants as constants
|
|
30
22
|
import ofscraper.utils.live.screens as progress_utils
|
|
31
23
|
from ofscraper.utils.context.run_async import run
|
|
@@ -108,7 +100,7 @@ async def get_lists():
|
|
|
108
100
|
result, new_tasks_batch = await task
|
|
109
101
|
new_tasks.extend(new_tasks_batch)
|
|
110
102
|
page_count = page_count + 1
|
|
111
|
-
progress_utils.
|
|
103
|
+
progress_utils.update_userlist_task(
|
|
112
104
|
page_task,
|
|
113
105
|
description=f"UserList Pages Progress: {page_count}",
|
|
114
106
|
)
|
|
@@ -209,7 +201,7 @@ async def get_list_users(lists):
|
|
|
209
201
|
result, new_tasks_batch = await task
|
|
210
202
|
new_tasks.extend(new_tasks_batch)
|
|
211
203
|
page_count = page_count + 1
|
|
212
|
-
progress_utils.
|
|
204
|
+
progress_utils.update_userlist_task(
|
|
213
205
|
page_task,
|
|
214
206
|
description=f"UserList Users Pages Progress: {page_count}",
|
|
215
207
|
)
|
|
@@ -402,25 +402,6 @@ class Media(base.base):
|
|
|
402
402
|
return False
|
|
403
403
|
return True
|
|
404
404
|
|
|
405
|
-
# for use in dynamic names
|
|
406
|
-
@property
|
|
407
|
-
def needs_count(self):
|
|
408
|
-
if set(["text", "postid", "post_id"]).isdisjoint(
|
|
409
|
-
[
|
|
410
|
-
name
|
|
411
|
-
for text, name, spec, conv in list(
|
|
412
|
-
string.Formatter().parse(data.get_fileformat())
|
|
413
|
-
)
|
|
414
|
-
]
|
|
415
|
-
):
|
|
416
|
-
return False
|
|
417
|
-
elif len(self._post.post_media) > 1 or self.responsetype in [
|
|
418
|
-
"stories",
|
|
419
|
-
"highlights",
|
|
420
|
-
]:
|
|
421
|
-
return True
|
|
422
|
-
return False
|
|
423
|
-
|
|
424
405
|
@property
|
|
425
406
|
def username(self):
|
|
426
407
|
return self._post.username
|
|
@@ -17,6 +17,7 @@ import ofscraper.utils.paths.common as common_paths
|
|
|
17
17
|
import ofscraper.utils.paths.paths as paths
|
|
18
18
|
import ofscraper.utils.profiles.data as profile_data
|
|
19
19
|
import ofscraper.utils.settings as settings
|
|
20
|
+
from ofscraper.utils.string import parse_safe
|
|
20
21
|
|
|
21
22
|
log = logging.getLogger("shared")
|
|
22
23
|
|
|
@@ -342,7 +343,7 @@ class Placeholders(basePlaceholder):
|
|
|
342
343
|
def _addcount(self, ele, out):
|
|
343
344
|
if not constants.getattr("FILE_COUNT_PLACEHOLDER"):
|
|
344
345
|
return
|
|
345
|
-
elif not ele
|
|
346
|
+
elif not self._needs_count(ele):
|
|
346
347
|
return out
|
|
347
348
|
out = re.sub(" $", "", out)
|
|
348
349
|
# insert count
|
|
@@ -352,6 +353,19 @@ class Placeholders(basePlaceholder):
|
|
|
352
353
|
out = f"{out}_{ele.count}"
|
|
353
354
|
return out
|
|
354
355
|
|
|
356
|
+
def _needs_count(self,ele):
|
|
357
|
+
non_unique=set(["text", "postid", "post_id","ext"])
|
|
358
|
+
file_format=parse_safe(data.get_fileformat())
|
|
359
|
+
|
|
360
|
+
if len(file_format)!=len((non_unique&file_format)):
|
|
361
|
+
return False
|
|
362
|
+
elif len(ele._post.post_media) > 1 or ele.responsetype in [
|
|
363
|
+
"stories",
|
|
364
|
+
"highlights",
|
|
365
|
+
]:
|
|
366
|
+
return True
|
|
367
|
+
return False
|
|
368
|
+
|
|
355
369
|
@property
|
|
356
370
|
def filepath(self):
|
|
357
371
|
return pathlib.Path(self._filepath)
|
|
@@ -12,6 +12,8 @@ from ofscraper.commands.helpers.strings import (
|
|
|
12
12
|
)
|
|
13
13
|
log = logging.getLogger("shared")
|
|
14
14
|
from ofscraper.commands.helpers.data import data_helper
|
|
15
|
+
import ofscraper.filters.media.main as filters
|
|
16
|
+
|
|
15
17
|
|
|
16
18
|
|
|
17
19
|
def get_user_action_function(func):
|
|
@@ -19,10 +21,16 @@ def get_user_action_function(func):
|
|
|
19
21
|
async with session as c:
|
|
20
22
|
data=["[bold yellow]Normal Mode Results[/bold yellow]"]
|
|
21
23
|
for ele in userdata:
|
|
24
|
+
username=ele.name
|
|
25
|
+
model_id=ele.id
|
|
22
26
|
try:
|
|
23
27
|
with progress_utils.setup_api_split_progress_live():
|
|
24
28
|
data_helper(ele)
|
|
25
29
|
all_media, posts, like_posts = await post_media_process(ele, c=c)
|
|
30
|
+
all_media=filters.filtermediaFinal(all_media,username,model_id)
|
|
31
|
+
posts= filters.filterPostFinal(posts)
|
|
32
|
+
like_posts=filters.post_filter_for_like(like_posts)
|
|
33
|
+
|
|
26
34
|
with progress_utils.setup_activity_group_live(revert=False):
|
|
27
35
|
avatar = ele.avatar
|
|
28
36
|
if (
|
|
@@ -47,6 +55,36 @@ def get_user_action_function(func):
|
|
|
47
55
|
|
|
48
56
|
|
|
49
57
|
|
|
58
|
+
def get_user_action_function_meta(func):
|
|
59
|
+
async def wrapper(userdata,session,*args, **kwargs):
|
|
60
|
+
async with session as c:
|
|
61
|
+
data=["[bold yellow]Normal Mode Results[/bold yellow]"]
|
|
62
|
+
for ele in userdata:
|
|
63
|
+
try:
|
|
64
|
+
with progress_utils.setup_api_split_progress_live():
|
|
65
|
+
data_helper(ele)
|
|
66
|
+
all_media, posts, like_posts = await post_media_process(ele, c=c)
|
|
67
|
+
with progress_utils.setup_activity_group_live(revert=False):
|
|
68
|
+
avatar = ele.avatar
|
|
69
|
+
if (
|
|
70
|
+
constants.getattr("SHOW_AVATAR")
|
|
71
|
+
and avatar
|
|
72
|
+
and read_args.retriveArgs ().userfirst
|
|
73
|
+
):
|
|
74
|
+
logging.getLogger("shared_other").warning(avatar_str.format(avatar=avatar))
|
|
75
|
+
data.extend(await func(media=all_media, posts=posts, like_posts=like_posts,ele=ele))
|
|
76
|
+
except Exception as e:
|
|
77
|
+
|
|
78
|
+
log.traceback_(f"failed with exception: {e}")
|
|
79
|
+
log.traceback_(traceback.format_exc())
|
|
80
|
+
|
|
81
|
+
if isinstance(e, KeyboardInterrupt):
|
|
82
|
+
raise e
|
|
83
|
+
finally:
|
|
84
|
+
progress_utils.increment_user_activity()
|
|
85
|
+
return data
|
|
86
|
+
return wrapper
|
|
87
|
+
|
|
50
88
|
|
|
51
89
|
|
|
52
90
|
|
|
@@ -29,7 +29,7 @@ import ofscraper.utils.live.screens as progress_utils
|
|
|
29
29
|
import ofscraper.utils.profiles.tools as profile_tools
|
|
30
30
|
from ofscraper.__version__ import __version__
|
|
31
31
|
from ofscraper.commands.helpers.normal import (
|
|
32
|
-
|
|
32
|
+
get_user_action_function_meta,
|
|
33
33
|
)
|
|
34
34
|
from ofscraper.commands.helpers.user_first import (
|
|
35
35
|
get_userfirst_action_execution_function,
|
|
@@ -38,7 +38,7 @@ from ofscraper.commands.helpers.user_first import (
|
|
|
38
38
|
from ofscraper.commands.helpers.shared import run_metadata_bool
|
|
39
39
|
from ofscraper.commands.helpers.strings import metadata_activity_str,mark_stray_str,all_paid_metadata_str,all_paid_progress_metadata_str
|
|
40
40
|
|
|
41
|
-
from ofscraper.commands.scraper.post import
|
|
41
|
+
from ofscraper.commands.scraper.post import process_areas
|
|
42
42
|
from ofscraper.commands.scraper.scrape_context import scrape_context_manager
|
|
43
43
|
from ofscraper.db.operations_.media import (
|
|
44
44
|
batch_set_media_downloaded,
|
|
@@ -53,7 +53,7 @@ log = logging.getLogger("shared")
|
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
def metadata():
|
|
56
|
-
with progress_utils.setup_activity_progress_live(revert=True):
|
|
56
|
+
with progress_utils.setup_activity_progress_live(revert=True,stop=True,setup=True):
|
|
57
57
|
scrape_paid_data=[]
|
|
58
58
|
userfirst_data=[]
|
|
59
59
|
normal_data=[]
|
|
@@ -73,7 +73,7 @@ def metadata():
|
|
|
73
73
|
|
|
74
74
|
@run
|
|
75
75
|
async def process_users_metadata_normal(userdata, session):
|
|
76
|
-
user_action_funct =
|
|
76
|
+
user_action_funct = get_user_action_function_meta(execute_metadata_action_on_user)
|
|
77
77
|
progress_utils.update_user_activity(description="Users with Updated Metadata")
|
|
78
78
|
return await user_action_funct(userdata, session)
|
|
79
79
|
|
|
@@ -143,11 +143,10 @@ async def execute_metadata_action_on_user(*args,ele=None, media=None,**kwargs):
|
|
|
143
143
|
|
|
144
144
|
model_id = ele.id
|
|
145
145
|
await operations.table_init_create(model_id=model_id, username=username)
|
|
146
|
-
filterMedia = filters.filterMedia(media, username=username, model_id=model_id)
|
|
147
146
|
progress_utils.update_activity_task(
|
|
148
147
|
description=metadata_activity_str.format(username=username)
|
|
149
148
|
)
|
|
150
|
-
data=await download.download_process(username, model_id,
|
|
149
|
+
data=await download.download_process(username, model_id, media)
|
|
151
150
|
metadata_stray_media(username, model_id, media)
|
|
152
151
|
return [data]
|
|
153
152
|
|
|
@@ -185,7 +184,7 @@ async def process_ele_user_first_data_retriver(ele=None, session=None):
|
|
|
185
184
|
model_id = ele.id
|
|
186
185
|
username = ele.name
|
|
187
186
|
await operations.table_init_create(model_id=model_id, username=username)
|
|
188
|
-
media, _, _ = await
|
|
187
|
+
media, _, _ = await process_areas(ele, model_id, c=session)
|
|
189
188
|
return {
|
|
190
189
|
model_id: {
|
|
191
190
|
"username": username,
|
|
@@ -10,6 +10,8 @@ r"""_____ _______ _______ _______ _______ _______ _______ _______
|
|
|
10
10
|
|
|
11
11
|
import logging
|
|
12
12
|
import time
|
|
13
|
+
import pathlib
|
|
14
|
+
|
|
13
15
|
|
|
14
16
|
import ofscraper.classes.placeholder as placeholder
|
|
15
17
|
import ofscraper.download.download as download
|
|
@@ -18,6 +20,10 @@ import ofscraper.utils.live.screens as progress_utils
|
|
|
18
20
|
from ofscraper.commands.helpers.strings import download_activity_str,all_paid_progress_download_str,all_paid_download_str
|
|
19
21
|
from ofscraper.commands.helpers.scrape_paid import process_scrape_paid,process_user_info_printer,process_user
|
|
20
22
|
from ofscraper.utils.context.run_async import run
|
|
23
|
+
import ofscraper.utils.config.data as config_data
|
|
24
|
+
import ofscraper.utils.paths.common as common_paths
|
|
25
|
+
from ofscraper.utils.string import format_safe
|
|
26
|
+
|
|
21
27
|
|
|
22
28
|
|
|
23
29
|
log = logging.getLogger("shared")
|
|
@@ -26,7 +32,10 @@ log = logging.getLogger("shared")
|
|
|
26
32
|
async def downloader(ele=None, posts=None, media=None, **kwargs):
|
|
27
33
|
model_id = ele.id
|
|
28
34
|
username = ele.name
|
|
29
|
-
|
|
35
|
+
download_str=download_activity_str.format(username=username)
|
|
36
|
+
path_str=format_safe(f"\nSaving files to [deep_sky_blue2]{str(pathlib.Path(common_paths.get_save_location(),config_data.get_dirformat(),config_data.get_fileformat()))}[/deep_sky_blue2]",username=username,model_id=model_id,model_username=username,modelusername=username,modelid=model_id)
|
|
37
|
+
|
|
38
|
+
progress_utils.update_activity_task(description=download_str+path_str)
|
|
30
39
|
logging.getLogger("shared_other").warning(download_activity_str.format(username=username))
|
|
31
40
|
return await download.download_process(username, model_id, media, posts=posts)
|
|
32
41
|
|
|
@@ -14,6 +14,7 @@ r"""
|
|
|
14
14
|
import functools
|
|
15
15
|
import logging
|
|
16
16
|
import time
|
|
17
|
+
import random
|
|
17
18
|
|
|
18
19
|
import ofscraper.classes.sessionmanager as sessionManager
|
|
19
20
|
import ofscraper.utils.args.read as read_args
|
|
@@ -22,12 +23,12 @@ import ofscraper.utils.constants as constants
|
|
|
22
23
|
import ofscraper.utils.context.exit as exit
|
|
23
24
|
import ofscraper.utils.live.screens as progress_utils
|
|
24
25
|
from rich.markup import escape
|
|
25
|
-
from rich.text import Text
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
log = logging.getLogger("shared")
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
warning_str="\n[red]Current Like rate can eat through the ~1000 like limit in ~1 hour\nIncreasing the rate could lead to getting logged out[/red]"
|
|
30
|
+
like_str = "Performing Like Action on {name}" + warning_str
|
|
31
|
+
unlike_str = "Performing Unlike Action on {name}"+warning_str
|
|
31
32
|
|
|
32
33
|
|
|
33
34
|
@exit.exit_wrapper
|
|
@@ -114,30 +115,20 @@ def _like(model_id, username,ids: list, like_action: bool):
|
|
|
114
115
|
task2 = progress_utils.add_like_task(like_str, total=None)
|
|
115
116
|
|
|
116
117
|
[tasks.append(functools.partial(like_func, c, id, model_id)) for id in ids]
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
stable_sleep_duration=constants.getattr("STABLE_SLEEP_DURATION_LIKE")
|
|
120
|
-
sleep_duration_50=constants.getattr("SLEEP_DURATION_LIKE_50")
|
|
121
|
-
sleep_duration_60=constants.getattr("SLEEP_DURATION_LIKE_60")
|
|
122
|
-
sleep_duration_common=constants.getattr("COMMON_MULTIPLE_SLEEP_DURATION_LIKE")
|
|
118
|
+
max_duration=constants.getattr("MAX_SLEEP_DURATION_LIKE")
|
|
119
|
+
min_duration=constants.getattr("MIN_SLEEP_DURATION_LIKE")
|
|
123
120
|
failed=0
|
|
124
121
|
post=0
|
|
125
122
|
liked=0
|
|
126
123
|
|
|
127
|
-
for
|
|
124
|
+
for _, func in enumerate(tasks):
|
|
128
125
|
out = func()
|
|
129
126
|
post+=1
|
|
130
127
|
#sleep
|
|
131
128
|
if out == 0:
|
|
132
129
|
sleep_duration = 0
|
|
133
|
-
elif count + 1 % 60 == 0 and count + 1 % 50 == 0:
|
|
134
|
-
sleep_duration = sleep_duration_common
|
|
135
|
-
elif count % 60 == 0:
|
|
136
|
-
sleep_duration = sleep_duration_60 # Divisible by 60 - 1 second sleep
|
|
137
|
-
elif count % 50 == 0:
|
|
138
|
-
sleep_duration = sleep_duration_50 # Divisible by 50 - 30 seconds sleep
|
|
139
130
|
else:
|
|
140
|
-
sleep_duration
|
|
131
|
+
sleep_duration=random.uniform(min_duration, max_duration)
|
|
141
132
|
#values
|
|
142
133
|
if out == 1:
|
|
143
134
|
liked=+1
|
|
@@ -178,7 +169,10 @@ def _toggle_like_requests(c, id, model_id):
|
|
|
178
169
|
if not read_args.retriveArgs().force_like and cache.get(f"liked_status_{id}", None):
|
|
179
170
|
log.debug(f"ID: {id} marked as liked in cache")
|
|
180
171
|
return 0
|
|
181
|
-
|
|
172
|
+
max_duration=constants.getattr("MAX_SLEEP_DURATION_LIKE")
|
|
173
|
+
min_duration=constants.getattr("MIN_SLEEP_DURATION_LIKE")
|
|
174
|
+
|
|
175
|
+
sleep_duration = random.uniform(min_duration, max_duration)
|
|
182
176
|
favorited, id = _like_request(c, id, model_id,sleeper)
|
|
183
177
|
if favorited==None:
|
|
184
178
|
return 3
|
|
@@ -27,7 +27,6 @@ import ofscraper.api.timeline as timeline
|
|
|
27
27
|
import ofscraper.classes.labels as labels
|
|
28
28
|
import ofscraper.classes.media as media
|
|
29
29
|
import ofscraper.classes.posts as posts_
|
|
30
|
-
import ofscraper.classes.sessionmanager as sessionManager
|
|
31
30
|
import ofscraper.db.operations as operations
|
|
32
31
|
import ofscraper.filters.media.main as filters
|
|
33
32
|
import ofscraper.utils.args.read as read_args
|
|
@@ -58,13 +57,13 @@ async def post_media_process(ele, c=None):
|
|
|
58
57
|
|
|
59
58
|
username = ele.name
|
|
60
59
|
model_id = ele.id
|
|
61
|
-
console.get_shared_console().clear()
|
|
62
|
-
console.get_shared_console().clear_live()
|
|
63
60
|
await operations.table_init_create(model_id=model_id, username=username)
|
|
64
61
|
data = await process_areas(ele, model_id, username, c=c)
|
|
65
62
|
return data
|
|
66
63
|
|
|
67
64
|
|
|
65
|
+
|
|
66
|
+
|
|
68
67
|
@free.space_checker
|
|
69
68
|
async def process_messages(model_id, username, c):
|
|
70
69
|
try:
|
|
@@ -331,28 +330,29 @@ async def process_all_paid():
|
|
|
331
330
|
for post in all_posts
|
|
332
331
|
if post.id not in seen and not seen.add(post.id)
|
|
333
332
|
]
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
333
|
+
all_medias = [item for post in new_posts for item in post.all_media]
|
|
334
|
+
insert_media = filters.filtermediaAreas(
|
|
335
|
+
all_medias, model_id=model_id, username=username
|
|
337
336
|
)
|
|
338
|
-
new_posts = filters.
|
|
337
|
+
new_posts = filters.filterPostFinal(new_posts)
|
|
339
338
|
await operations.make_post_table_changes(
|
|
340
339
|
new_posts,
|
|
341
340
|
model_id=model_id,
|
|
342
341
|
username=username,
|
|
343
342
|
)
|
|
344
343
|
await batch_mediainsert(
|
|
345
|
-
|
|
344
|
+
insert_media,
|
|
346
345
|
model_id=model_id,
|
|
347
346
|
username=username,
|
|
348
347
|
downloaded=False,
|
|
349
348
|
)
|
|
349
|
+
final_medias=filters.filtermediaFinal(insert_media,username,model_id)
|
|
350
350
|
|
|
351
351
|
output[model_id] = dict(
|
|
352
|
-
model_id=model_id, username=username, posts=new_posts, medias=
|
|
352
|
+
model_id=model_id, username=username, posts=new_posts, medias=final_medias
|
|
353
353
|
)
|
|
354
354
|
log.debug(
|
|
355
|
-
f"[bold]Paid media count {username}_{model_id}[/bold] {len(
|
|
355
|
+
f"[bold]Paid media count {username}_{model_id}[/bold] {len(final_medias)}"
|
|
356
356
|
)
|
|
357
357
|
progress_utils.increment_activity_count(total=None)
|
|
358
358
|
|
|
@@ -408,35 +408,22 @@ async def process_labels(model_id, username, c):
|
|
|
408
408
|
log.traceback_(traceback.format_exc())
|
|
409
409
|
|
|
410
410
|
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
411
414
|
@run
|
|
412
|
-
async def
|
|
415
|
+
async def process_areas(ele, model_id, username, c=None):
|
|
413
416
|
try:
|
|
414
417
|
username = ele.name
|
|
415
|
-
output = []
|
|
416
418
|
medias, posts, like_post = await process_tasks(model_id, username, ele, c=c)
|
|
419
|
+
insert_medias=filters.filtermediaAreas(medias)
|
|
417
420
|
await batch_mediainsert(
|
|
418
|
-
|
|
421
|
+
insert_medias,
|
|
419
422
|
model_id=model_id,
|
|
420
423
|
username=username,
|
|
421
424
|
downloaded=False,
|
|
422
425
|
)
|
|
423
|
-
|
|
424
|
-
return (medias, posts, like_post)
|
|
425
|
-
except Exception as E:
|
|
426
|
-
log.traceback_(E)
|
|
427
|
-
log.traceback_(traceback.format_exc())
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
@run
|
|
431
|
-
async def process_areas(ele, model_id, username, c=None):
|
|
432
|
-
|
|
433
|
-
media, posts, like_post = await process_areas_helper(ele, model_id, c=c)
|
|
434
|
-
try:
|
|
435
|
-
return (
|
|
436
|
-
filters.filterMedia(media, model_id=model_id, username=username),
|
|
437
|
-
filters.filterPost(posts),
|
|
438
|
-
filters.post_filter_for_like(like_post),
|
|
439
|
-
)
|
|
426
|
+
return (insert_medias, posts, like_post)
|
|
440
427
|
except Exception as E:
|
|
441
428
|
log.traceback_(E)
|
|
442
429
|
log.traceback_(traceback.format_exc())
|
|
@@ -43,7 +43,7 @@ def runner():
|
|
|
43
43
|
user_first_data=[
|
|
44
44
|
]
|
|
45
45
|
scrape_paid_data=[]
|
|
46
|
-
with progress_utils.setup_activity_group_live(setup=True,revert=False):
|
|
46
|
+
with progress_utils.setup_activity_group_live(setup=True,revert=False,stop=True):
|
|
47
47
|
if read_args.retriveArgs().scrape_paid:
|
|
48
48
|
scrape_paid_data=download_action.scrape_paid_all()
|
|
49
49
|
|
|
@@ -9,7 +9,7 @@ KEY_DEFAULT = "cdrm"
|
|
|
9
9
|
DIR_FORMAT_DEFAULT = "{model_username}/{responsetype}/{mediatype}/"
|
|
10
10
|
FILE_FORMAT_DEFAULT = "{filename}.{ext}"
|
|
11
11
|
METADATA_DEFAULT = "{configpath}/{profile}/.data/{model_username}_{model_id}"
|
|
12
|
-
|
|
12
|
+
FILE_SIZE_MAX_DEFAULT = 0
|
|
13
13
|
FILE_SIZE_MIN_DEFAULT = 0
|
|
14
14
|
TEXTLENGTH_DEFAULT = 0
|
|
15
15
|
SPACE_REPLACER_DEFAULT = " "
|
|
@@ -38,6 +38,7 @@ DIGITALCRIMINALS = (
|
|
|
38
38
|
|
|
39
39
|
DEVIINT = "https://raw.githubusercontent.com/deviint/onlyfans-dynamic-rules/main/dynamicRules.json"
|
|
40
40
|
SNEAKY = "https://raw.githubusercontent.com/SneakyOvis/onlyfans-dynamic-rules/main/rules.json"
|
|
41
|
+
GROWIK="https://raw.githubusercontent.com/Growik/onlyfans-dynamic-rules/main/rules.json"
|
|
41
42
|
|
|
42
43
|
donateEP = "https://www.buymeacoffee.com/excludedBittern"
|
|
43
44
|
|
|
@@ -158,12 +158,12 @@ def get_group_difference(model_id=None, username=None, db_path=None):
|
|
|
158
158
|
groupB = [
|
|
159
159
|
"profile_username_constraint_modified",
|
|
160
160
|
"stories_model_id_constraint_added",
|
|
161
|
-
"media_model_id_constraint_added",
|
|
162
161
|
"labels_model_id_constraint_added",
|
|
163
162
|
"posts_model_id_constraint_added",
|
|
164
163
|
"others_model_id_constraint_added",
|
|
165
164
|
"products_model_id_constraint_added",
|
|
166
165
|
"messages_model_id_constraint_added",
|
|
166
|
+
"media_post_id_constraint_added",
|
|
167
167
|
"media_bool_changes",
|
|
168
168
|
]
|
|
169
169
|
return set((groupA + groupB)).difference(set(changes))
|
|
@@ -189,6 +189,8 @@ def create_backup_transition(model_id=None, username=None, db_path=None, **kwarg
|
|
|
189
189
|
return new_backup_path
|
|
190
190
|
|
|
191
191
|
|
|
192
|
+
|
|
193
|
+
|
|
192
194
|
async def add_column_tables(model_id=None, username=None, db_path=None, **kwargs):
|
|
193
195
|
missing = get_group_difference(
|
|
194
196
|
model_id=model_id, username=username, db_path=db_path
|
|
@@ -300,11 +302,10 @@ async def modify_tables_constraints_and_columns(
|
|
|
300
302
|
username=username,
|
|
301
303
|
db_path=db_path,
|
|
302
304
|
)
|
|
303
|
-
|
|
304
|
-
if "media_model_id_constraint_added" in missing or "media_bool_changes" in missing:
|
|
305
|
+
if "media_post_id_constraint_added" in missing or "media_bool_changes" in missing:
|
|
305
306
|
await rebuild_media_table(model_id=model_id, username=username, db_path=db_path)
|
|
306
307
|
await add_flag_schema(
|
|
307
|
-
"
|
|
308
|
+
"media_post_id_constraint_added",
|
|
308
309
|
model_id=model_id,
|
|
309
310
|
username=username,
|
|
310
311
|
db_path=db_path,
|
|
@@ -365,7 +366,6 @@ async def modify_tables_constraints_and_columns(
|
|
|
365
366
|
db_path=db_path,
|
|
366
367
|
)
|
|
367
368
|
|
|
368
|
-
|
|
369
369
|
def check_backup(model_id, username, new_path, db_path=None, **kwargs):
|
|
370
370
|
if not new_path.absolute().exists():
|
|
371
371
|
raise Exception("Backup db was not created")
|