ofscraper 3.11.dev1__tar.gz → 3.11.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.11.dev1 → ofscraper-3.11.2}/PKG-INFO +7 -8
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/README.md +2 -6
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/__main__.py +1 -1
- ofscraper-3.11.2/ofscraper/actions/actions/download/batch/downloadbatch.py +224 -0
- ofscraper-3.11.2/ofscraper/actions/actions/download/batch/utils/consumer.py +29 -0
- ofscraper-3.11.2/ofscraper/actions/actions/download/batch/utils/queue.py +123 -0
- ofscraper-3.11.2/ofscraper/actions/actions/download/download.py +74 -0
- ofscraper-3.11.2/ofscraper/actions/actions/download/managers/alt_download.py +450 -0
- ofscraper-3.11.2/ofscraper/actions/actions/download/managers/downloadmanager.py +160 -0
- ofscraper-3.11.2/ofscraper/actions/actions/download/managers/main_download.py +355 -0
- ofscraper-3.11.2/ofscraper/actions/actions/download/normal/downloadnormal.py +92 -0
- ofscraper-3.11.2/ofscraper/actions/actions/download/normal/utils/consumer.py +98 -0
- ofscraper-3.11.2/ofscraper/actions/actions/download/runners/download.py +42 -0
- {ofscraper-3.11.dev1/ofscraper/download/utils/progress → ofscraper-3.11.2/ofscraper/actions/actions/download/utils}/chunk.py +7 -9
- ofscraper-3.11.2/ofscraper/actions/actions/download/utils/desc.py +1 -0
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/actions/actions}/download/utils/keyhelpers.py +8 -10
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/actions/actions}/download/utils/text.py +1 -1
- {ofscraper-3.11.dev1/ofscraper/commands/scraper/actions → ofscraper-3.11.2/ofscraper/actions/actions/like}/like.py +1 -1
- ofscraper-3.11.2/ofscraper/actions/actions/metadata/batch/metadatabatch.py +232 -0
- ofscraper-3.11.2/ofscraper/actions/actions/metadata/batch/utils/consumer.py +26 -0
- ofscraper-3.11.2/ofscraper/actions/actions/metadata/batch/utils/queue.py +113 -0
- ofscraper-3.11.2/ofscraper/actions/actions/metadata/managers/metadata.py +221 -0
- ofscraper-3.11.2/ofscraper/actions/actions/metadata/metadata.py +37 -0
- ofscraper-3.11.2/ofscraper/actions/actions/metadata/normal/metadata.py +92 -0
- ofscraper-3.11.2/ofscraper/actions/actions/metadata/normal/utils/consumer.py +86 -0
- ofscraper-3.11.2/ofscraper/actions/actions/metadata/utils/desc.py +1 -0
- ofscraper-3.11.2/ofscraper/actions/manager.py +4 -0
- ofscraper-3.11.dev1/ofscraper/download/utils/check/space.py → ofscraper-3.11.2/ofscraper/actions/utils/buffer.py +7 -7
- {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/general.py +8 -15
- {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/globals.py +29 -9
- {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/log.py +9 -7
- ofscraper-3.11.2/ofscraper/actions/utils/mediasplit.py +13 -0
- ofscraper-3.11.2/ofscraper/actions/utils/params.py +14 -0
- {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/paths/paths.py +8 -7
- ofscraper-3.11.2/ofscraper/actions/utils/progress/convert.py +17 -0
- ofscraper-3.11.2/ofscraper/actions/utils/progress/update.py +6 -0
- {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/send/chunk.py +4 -4
- {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/send/message.py +1 -1
- {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/send/send_bar_msg.py +1 -1
- ofscraper-3.11.2/ofscraper/actions/utils/threads.py +51 -0
- {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/workers.py +2 -3
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/download_retries.py +1 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/media.py +75 -51
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/placeholder.py +7 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/progress/task.py +3 -3
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/progress/transfercol.py +1 -2
- ofscraper-3.11.2/ofscraper/classes/sessionmanager/download.py +133 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/sessionmanager/ofsession.py +4 -6
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/sessionmanager/sessionmanager.py +16 -41
- ofscraper-3.11.2/ofscraper/commands/managers/manager.py +190 -0
- ofscraper-3.11.2/ofscraper/commands/managers/metadata.py +228 -0
- ofscraper-3.11.2/ofscraper/commands/managers/scraper.py +123 -0
- {ofscraper-3.11.dev1/ofscraper/commands → ofscraper-3.11.2/ofscraper/commands/runners}/check.py +63 -34
- {ofscraper-3.11.dev1/ofscraper/commands → ofscraper-3.11.2/ofscraper/commands/runners}/manual.py +22 -30
- {ofscraper-3.11.dev1/ofscraper/commands → ofscraper-3.11.2/ofscraper/commands/runners}/metadata/metadata.py +14 -14
- {ofscraper-3.11.dev1/ofscraper/commands → ofscraper-3.11.2/ofscraper/commands/runners}/scraper/scraper.py +3 -4
- {ofscraper-3.11.dev1/ofscraper/commands/scraper/utils/setup → ofscraper-3.11.2/ofscraper/commands/runners/scraper/utils}/prepare.py +17 -5
- ofscraper-3.11.2/ofscraper/commands/runners/scraper/utils/print.py +6 -0
- {ofscraper-3.11.dev1/ofscraper/commands → ofscraper-3.11.2/ofscraper/commands/runners}/scraper/utils/select.py +5 -5
- {ofscraper-3.11.dev1/ofscraper/commands/utils/setup → ofscraper-3.11.2/ofscraper/commands/utils}/picker.py +5 -5
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/constants.py +6 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/action/download.py +1 -2
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/action/metadata.py +1 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/config.py +3 -1
- ofscraper-3.11.2/ofscraper/const/values/download.py +1 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/general.py +2 -0
- ofscraper-3.11.2/ofscraper/const/values/path/general.py +1 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/prompts.py +1 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/discord.py +1 -1
- ofscraper-3.11.2/ofscraper/const/values/req/mpd.py +6 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/req.py +9 -9
- ofscraper-3.11.2/ofscraper/const/values/rich.py +3 -0
- ofscraper-3.11.2/ofscraper/const/values/system.py +2 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/url/other_url.py +1 -1
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/archive.py +16 -71
- {ofscraper-3.11.dev1/ofscraper/api/utils → ofscraper-3.11.2/ofscraper/data/api/common}/after.py +1 -1
- {ofscraper-3.11.dev1/ofscraper/api/utils → ofscraper-3.11.2/ofscraper/data/api/common}/check.py +2 -2
- ofscraper-3.11.2/ofscraper/data/api/common/logs/logs.py +50 -0
- ofscraper-3.11.2/ofscraper/data/api/common/logs/strings.py +15 -0
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/highlights.py +30 -56
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/labels.py +25 -70
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/me.py +3 -3
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/messages.py +20 -68
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/paid.py +16 -36
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/pinned.py +12 -39
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/profile.py +4 -5
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/streams.py +19 -70
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/subscriptions/individual.py +2 -2
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/subscriptions/lists.py +13 -61
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/subscriptions/subscriptions.py +12 -12
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/timeline.py +20 -78
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/models/retriver.py +4 -4
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/models/selector.py +3 -3
- {ofscraper-3.11.dev1/ofscraper/commands/utils → ofscraper-3.11.2/ofscraper/data/posts}/post.py +11 -11
- {ofscraper-3.11.dev1/ofscraper/commands/utils → ofscraper-3.11.2/ofscraper/data/posts}/scrape_paid.py +26 -5
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/labels.py +3 -3
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/messages.py +4 -4
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/posts.py +8 -5
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/stories.py +5 -5
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/media/filters.py +15 -7
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/media/main.py +56 -20
- ofscraper-3.11.2/ofscraper/filters/media/utils/trace.py +22 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/models/date.py +1 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/models/flags.py +1 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/models/other.py +1 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/models/price.py +1 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/models/subtype.py +1 -1
- ofscraper-3.11.2/ofscraper/filters/models/utils/logs.py +13 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/config.py +67 -14
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/utils/prompt_helpers.py +1 -1
- ofscraper-3.11.2/ofscraper/runner/close/final/final.py +21 -0
- ofscraper-3.11.2/ofscraper/runner/close/final/final_log.py +33 -0
- ofscraper-3.11.2/ofscraper/runner/close/final/final_script.py +44 -0
- ofscraper-3.11.2/ofscraper/runner/close/final/final_user.py +30 -0
- {ofscraper-3.11.dev1/ofscraper/runner → ofscraper-3.11.2/ofscraper/runner/open}/load.py +1 -1
- {ofscraper-3.11.dev1/ofscraper/runner → ofscraper-3.11.2/ofscraper/runner/open}/run.py +2 -2
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/accessors/areas.py +6 -6
- ofscraper-3.11.2/ofscraper/utils/args/helpers/hide_args.py +12 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/advanced_program.py +13 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/content.py +9 -9
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/download.py +14 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/logging.py +1 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/program.py +2 -2
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/common.py +2 -2
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/manual.py +3 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/message_check.py +2 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/metadata.py +26 -28
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/paid_check.py +2 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/post_check.py +5 -2
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/story_check.py +3 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/advanced_processing.py +8 -6
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/advanced_program.py +10 -5
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/advanced_user_filter.py +11 -6
- ofscraper-3.11.2/ofscraper/utils/args/parse/groups/automatic.py +15 -0
- ofscraper-3.11.2/ofscraper/utils/args/parse/groups/check_content.py +17 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/content.py +15 -9
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/download.py +14 -5
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/file.py +15 -7
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/logging.py +11 -5
- ofscraper-3.11.dev1/ofscraper/utils/args/parse/groups/media_type.py → ofscraper-3.11.2/ofscraper/utils/args/parse/groups/media_filter.py +9 -7
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/program.py +9 -4
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/user_list.py +9 -6
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/user_select.py +10 -4
- ofscraper-3.11.2/ofscraper/utils/args/parse/groups/user_sort.py +16 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/request.py +11 -11
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/checkers.py +1 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/data.py +40 -5
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/menu.py +7 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/schema.py +5 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/context/stdout.py +0 -13
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/dates.py +1 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/groups.py +10 -6
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/progress.py +10 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/screens.py +14 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/updater.py +15 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/classes/classes.py +2 -23
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/classes/handlers/discord.py +13 -8
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/classes/handlers/file.py +5 -13
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/classes/handlers/pipe.py +4 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/classes/handlers/rich.py +38 -13
- ofscraper-3.11.2/ofscraper/utils/logs/classes/handlers/text.py +27 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/close.py +7 -15
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/globals.py +1 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/logger.py +7 -7
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/logs.py +1 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/other.py +65 -75
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/stdout.py +106 -51
- ofscraper-3.11.dev1/ofscraper/utils/logs/helpers.py → ofscraper-3.11.2/ofscraper/utils/logs/utils/level.py +0 -3
- ofscraper-3.11.2/ofscraper/utils/logs/utils/trace.py +5 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/me.py +3 -3
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/menu.py +7 -3
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/paths/paths.py +2 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/profiles/data.py +1 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/run.py +6 -4
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/separate.py +1 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/settings.py +10 -3
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/system/network.py +0 -1
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/system/speed.py +8 -2
- ofscraper-3.11.2/ofscraper/utils/system/subprocess.py +16 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/pyproject.toml +5 -2
- ofscraper-3.11.dev1/ofscraper/api/utils/logs.py +0 -8
- ofscraper-3.11.dev1/ofscraper/classes/sessionmanager/download.py +0 -33
- ofscraper-3.11.dev1/ofscraper/commands/metadata/execute.py +0 -88
- ofscraper-3.11.dev1/ofscraper/commands/metadata/normal.py +0 -29
- ofscraper-3.11.dev1/ofscraper/commands/metadata/paid.py +0 -57
- ofscraper-3.11.dev1/ofscraper/commands/metadata/userfirst.py +0 -85
- ofscraper-3.11.dev1/ofscraper/commands/scraper/actions/download.py +0 -82
- ofscraper-3.11.dev1/ofscraper/commands/scraper/execute.py +0 -42
- ofscraper-3.11.dev1/ofscraper/commands/scraper/normal.py +0 -12
- ofscraper-3.11.dev1/ofscraper/commands/scraper/userfirst.py +0 -50
- ofscraper-3.11.dev1/ofscraper/commands/scraper/utils/print.py +0 -8
- ofscraper-3.11.dev1/ofscraper/commands/scraper/utils/setup/runner.py +0 -40
- ofscraper-3.11.dev1/ofscraper/commands/utils/data.py +0 -40
- ofscraper-3.11.dev1/ofscraper/commands/utils/final_log.py +0 -18
- ofscraper-3.11.dev1/ofscraper/commands/utils/shared.py +0 -9
- ofscraper-3.11.dev1/ofscraper/commands/utils/wrappers/normal.py +0 -114
- ofscraper-3.11.dev1/ofscraper/commands/utils/wrappers/user_first.py +0 -91
- ofscraper-3.11.dev1/ofscraper/const/values/progress.py +0 -1
- ofscraper-3.11.dev1/ofscraper/const/values/req/mpd.py +0 -6
- ofscraper-3.11.dev1/ofscraper/download/alt_download.py +0 -284
- ofscraper-3.11.dev1/ofscraper/download/alt_downloadbatch.py +0 -309
- ofscraper-3.11.dev1/ofscraper/download/download.py +0 -70
- ofscraper-3.11.dev1/ofscraper/download/downloadbatch.py +0 -434
- ofscraper-3.11.dev1/ofscraper/download/downloadnormal.py +0 -210
- ofscraper-3.11.dev1/ofscraper/download/main_download.py +0 -272
- ofscraper-3.11.dev1/ofscraper/download/main_downloadbatch.py +0 -289
- ofscraper-3.11.dev1/ofscraper/download/utils/alt/attempt.py +0 -8
- ofscraper-3.11.dev1/ofscraper/download/utils/alt/cache/resume.py +0 -25
- ofscraper-3.11.dev1/ofscraper/download/utils/alt/handlers.py +0 -62
- ofscraper-3.11.dev1/ofscraper/download/utils/alt/item.py +0 -29
- ofscraper-3.11.dev1/ofscraper/download/utils/alt/params.py +0 -6
- ofscraper-3.11.dev1/ofscraper/download/utils/check/forced.py +0 -42
- ofscraper-3.11.dev1/ofscraper/download/utils/check/size.py +0 -30
- ofscraper-3.11.dev1/ofscraper/download/utils/handle_result.py +0 -129
- ofscraper-3.11.dev1/ofscraper/download/utils/main/cache/resume.py +0 -25
- ofscraper-3.11.dev1/ofscraper/download/utils/main/handlers.py +0 -63
- ofscraper-3.11.dev1/ofscraper/download/utils/metadata.py +0 -197
- ofscraper-3.11.dev1/ofscraper/download/utils/progress/progress.py +0 -17
- ofscraper-3.11.dev1/ofscraper/download/utils/resume/resume.py +0 -31
- ofscraper-3.11.dev1/ofscraper/download/utils/total.py +0 -20
- ofscraper-3.11.dev1/ofscraper/filters/media/utils/trace.py +0 -57
- ofscraper-3.11.dev1/ofscraper/filters/models/helpers.py +0 -26
- ofscraper-3.11.dev1/ofscraper/utils/args/parse/groups/automatic.py +0 -11
- ofscraper-3.11.dev1/ofscraper/utils/args/parse/groups/check_content.py +0 -14
- ofscraper-3.11.dev1/ofscraper/utils/args/parse/groups/user_sort.py +0 -14
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/LICENSE +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/__version__.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/__version__.pye +0 -0
- {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/paths/media.py +0 -0
- {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/retries.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/base.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/labels.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/models.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/posts.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/progress/progress.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/sessionmanager/chunk.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/button.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/boolfield.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/datefield.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/mediafield.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/numfield.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/pricefield.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/responsefield.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/selectfield.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/textsearch.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/timefield.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/inputs/filterinput.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/inputs/intergerinput.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/inputs/strinput.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/row_names.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/status.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/table.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/table_console.py +0 -0
- {ofscraper-3.11.dev1/ofscraper/commands/scraper/utils/setup → ofscraper-3.11.2/ofscraper/commands/runners/scraper/utils}/prompt.py +0 -0
- {ofscraper-3.11.dev1/ofscraper/commands/scraper → ofscraper-3.11.2/ofscraper/commands}/utils/scrape_context.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/commands/utils/strings.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/action/like.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/binary.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/date.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/dynamic.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/list.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/live.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/logger.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/path/bytes.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/path/files.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/path/path.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/anon.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/api.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/cdm.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/git.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/like.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/table.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/test/test_constants.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/time.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/url/url.py +0 -0
- {ofscraper-3.11.dev1/ofscraper/api/utils → ofscraper-3.11.2/ofscraper/data/api/common}/cache/read.py +0 -0
- {ofscraper-3.11.dev1/ofscraper/api/utils → ofscraper-3.11.2/ofscraper/data/api/common}/cache/write.py +0 -0
- {ofscraper-3.11.dev1/ofscraper/api/utils → ofscraper-3.11.2/ofscraper/data/api/common}/timeline.py +0 -0
- {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/init.py +0 -0
- /ofscraper-3.11.dev1/ofscraper/api/subscriptions/helpers.py → /ofscraper-3.11.2/ofscraper/data/api/subscriptions/common.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/__init__.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/backup.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/difference.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/merge.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/empty.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/media.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/others.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/profile.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/wrapper.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/transition.py +0 -0
- /ofscraper-3.11.dev1/ofscraper/db/operations_/helpers.py → /ofscraper-3.11.2/ofscraper/db/utils/convert.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/media/sorter.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/models/sort.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/keybindings.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/promptConvert.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/actions.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/area.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/auth.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/binary.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/menu.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/merge.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/model.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/profile.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_strings.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_validators.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompts.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/utils/model_helpers.py +0 -0
- {ofscraper-3.11.dev1/ofscraper/runner → ofscraper-3.11.2/ofscraper/runner/close}/exit.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/__init__.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/actions.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/ads.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/accessors/output.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/accessors/quality.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/accessors/read.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/callbacks/choice.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/callbacks/file.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/callbacks/string.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/callbacks/username.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/globals.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/main.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/mutators/before.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/mutators/change.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/mutators/user.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/mutators/write.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/advanced_processing.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/advanced_user_filter.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/automatic.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/check.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/file.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/media_type.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/user_list.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/user_select.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/user_sort.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/utils/date.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/main.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/manual.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/message.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/metadata.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/paid.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/post.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/story.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/advanced_common.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/main.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/utils/check.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/types/arrow.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/types/choice.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/data.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/file.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/make.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/schema.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/utils/context.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/utils/dict.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/utils/prompt.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/utils/warning/check.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/utils/warning/print.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/utils/warning/warning.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/binaries.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/cache.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/config.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/custom.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/file.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/utils/context.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/utils/wrapper.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/console.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/constants.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/context/exit.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/context/run_async.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/encoding.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/hash.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/empty.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/live.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/panel.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/reader.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/tasks.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/classes/handlers/zmq.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/handle.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/manager.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/merge.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/paths/check.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/paths/common.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/paths/db.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/paths/manage.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/profiles/manage.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/profiles/tools.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/sems.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/string.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/system/free.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/system/priority.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/system/system.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/text.py +0 -0
- {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/zmq.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ofscraper
|
|
3
|
-
Version: 3.11.
|
|
3
|
+
Version: 3.11.2
|
|
4
4
|
Summary: automatically scrape onlyfans
|
|
5
5
|
Author: datawhores
|
|
6
6
|
Author-email: datawhores@riseup.net
|
|
@@ -11,9 +11,11 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
11
11
|
Provides-Extra: pyinstaller
|
|
12
12
|
Requires-Dist: aiofiles (>=23.2.1,<24.0.0)
|
|
13
13
|
Requires-Dist: aiohttp (==3.9.4)
|
|
14
|
+
Requires-Dist: aiolimiter (>=1.1.0,<2.0.0)
|
|
14
15
|
Requires-Dist: aioprocessing (>=2.0.1,<3.0.0)
|
|
15
16
|
Requires-Dist: aiosqlite (>=0.20.0,<0.21.0)
|
|
16
17
|
Requires-Dist: arrow (>=1.3.0,<2.0.0)
|
|
18
|
+
Requires-Dist: async-property (>=0.2.2,<0.3.0)
|
|
17
19
|
Requires-Dist: browser-cookie3 (==0.19.1)
|
|
18
20
|
Requires-Dist: bs4 (>=0.0.2,<0.0.3)
|
|
19
21
|
Requires-Dist: certifi (>=2024.2.2,<2025.0.0)
|
|
@@ -27,6 +29,7 @@ Requires-Dist: httpx[http2] (>=0.27.0,<0.28.0)
|
|
|
27
29
|
Requires-Dist: humanfriendly (>=10.0,<11.0)
|
|
28
30
|
Requires-Dist: idna (==3.7)
|
|
29
31
|
Requires-Dist: inquirerpy (>=0.3.4,<0.4.0)
|
|
32
|
+
Requires-Dist: limiter (>=0.5.0,<0.6.0)
|
|
30
33
|
Requires-Dist: lxml (>=5.1.0,<6.0.0)
|
|
31
34
|
Requires-Dist: more-itertools (>=10.2.0,<11.0.0)
|
|
32
35
|
Requires-Dist: mpegdash (>=0.4.0,<0.5.0)
|
|
@@ -42,7 +45,7 @@ Requires-Dist: requests (>=2.31.0,<3.0.0)
|
|
|
42
45
|
Requires-Dist: rich (>=13.7.1,<14.0.0)
|
|
43
46
|
Requires-Dist: schedule (>=1.2.1,<2.0.0)
|
|
44
47
|
Requires-Dist: setproctitle (>=1.3.3,<2.0.0)
|
|
45
|
-
Requires-Dist: setuptools (>=69.1.1,<
|
|
48
|
+
Requires-Dist: setuptools (>=69.1.1,<71.0.0)
|
|
46
49
|
Requires-Dist: speedtest-cli (>=2.1.3,<3.0.0)
|
|
47
50
|
Requires-Dist: tenacity (>=8.2.3,<9.0.0)
|
|
48
51
|
Requires-Dist: textual (==0.52.1)
|
|
@@ -53,13 +56,9 @@ Requires-Dist: xxhash (>=3.4.1,<4.0.0)
|
|
|
53
56
|
Project-URL: Homepage, https://github.com/datawhores/OF-Scraper
|
|
54
57
|
Description-Content-Type: text/markdown
|
|
55
58
|
|
|
56
|
-
#
|
|
59
|
+
# For auth issues
|
|
57
60
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
https://github.com/datawhores/OF-Scraper/issues/402
|
|
61
|
-
|
|
62
|
-
# Chances are you will find your solution there anyways
|
|
61
|
+
https://github.com/datawhores/OF-Scraper/issues/442
|
|
63
62
|
|
|
64
63
|
# ReadMe
|
|
65
64
|
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# For auth issues
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
https://github.com/datawhores/OF-Scraper/issues/402
|
|
6
|
-
|
|
7
|
-
# Chances are you will find your solution there anyways
|
|
3
|
+
https://github.com/datawhores/OF-Scraper/issues/442
|
|
8
4
|
|
|
9
5
|
# ReadMe
|
|
10
6
|
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import logging
|
|
3
|
+
import logging.handlers
|
|
4
|
+
import os
|
|
5
|
+
import platform
|
|
6
|
+
import threading
|
|
7
|
+
|
|
8
|
+
import aioprocessing
|
|
9
|
+
from aioprocessing import AioPipe
|
|
10
|
+
|
|
11
|
+
import ofscraper.actions.utils.globals as common_globals
|
|
12
|
+
import ofscraper.data.models.selector as selector
|
|
13
|
+
import ofscraper.utils.args.accessors.read as read_args
|
|
14
|
+
import ofscraper.utils.cache as cache
|
|
15
|
+
import ofscraper.utils.context.exit as exit
|
|
16
|
+
import ofscraper.utils.dates as dates
|
|
17
|
+
import ofscraper.utils.live.screens as progress_utils
|
|
18
|
+
import ofscraper.utils.live.updater as progress_updater
|
|
19
|
+
|
|
20
|
+
import ofscraper.utils.system.system as system
|
|
21
|
+
import ofscraper.utils.system.priority as priority
|
|
22
|
+
|
|
23
|
+
from ofscraper.classes.sessionmanager.download import download_session
|
|
24
|
+
from ofscraper.actions.utils.globals import subProcessVariableInit
|
|
25
|
+
from ofscraper.actions.utils.log import (
|
|
26
|
+
final_log,
|
|
27
|
+
final_log_text,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
from ofscraper.actions.utils.paths.paths import setDirectoriesDate
|
|
31
|
+
from ofscraper.actions.utils.send.message import send_msg
|
|
32
|
+
from ofscraper.actions.utils.workers import get_max_workers
|
|
33
|
+
from ofscraper.utils.context.run_async import run
|
|
34
|
+
import ofscraper.utils.logs.stdout as stdout_logs
|
|
35
|
+
import ofscraper.utils.logs.other as other_logs
|
|
36
|
+
|
|
37
|
+
from ofscraper.utils.system.speed import add_pids_to_download_obj
|
|
38
|
+
from ofscraper.actions.utils.buffer import download_log_clear_helper
|
|
39
|
+
from ofscraper.actions.utils.mediasplit import get_mediasplits
|
|
40
|
+
from ofscraper.actions.actions.download.batch.utils.consumer import consumer
|
|
41
|
+
from ofscraper.actions.utils.threads import handle_threads,start_threads
|
|
42
|
+
from ofscraper.actions.actions.download.batch.utils.queue import queue_process
|
|
43
|
+
from ofscraper.actions.actions.download.utils.desc import desc
|
|
44
|
+
platform_name = platform.system()
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def process_dicts(username, model_id, filtered_medialist):
|
|
49
|
+
log = logging.getLogger("shared")
|
|
50
|
+
try:
|
|
51
|
+
common_globals.main_globals()
|
|
52
|
+
download_log_clear_helper()
|
|
53
|
+
with progress_utils.setup_download_progress_live(multi=True):
|
|
54
|
+
mediasplits = get_mediasplits(filtered_medialist)
|
|
55
|
+
num_proc = len(mediasplits)
|
|
56
|
+
log.debug(f"Number of download threads: {num_proc}")
|
|
57
|
+
connect_tuples = [AioPipe() for _ in range(num_proc)]
|
|
58
|
+
stdout_logqueues = [AioPipe() for _ in range(num_proc)]
|
|
59
|
+
|
|
60
|
+
#start stdout/main queues consumers
|
|
61
|
+
log_threads=[]
|
|
62
|
+
for i in range(num_proc):
|
|
63
|
+
thread=stdout_logs.start_stdout_logthread(
|
|
64
|
+
input_=stdout_logqueues[i][0],
|
|
65
|
+
name=f"ofscraper_{model_id}_{i+1}",
|
|
66
|
+
count=1,
|
|
67
|
+
)
|
|
68
|
+
log_threads.append(thread)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
processes = [
|
|
72
|
+
aioprocessing.AioProcess(
|
|
73
|
+
target=process_dict_starter,
|
|
74
|
+
args=(
|
|
75
|
+
username,
|
|
76
|
+
model_id,
|
|
77
|
+
mediasplits[i],
|
|
78
|
+
stdout_logqueues[i][1],
|
|
79
|
+
connect_tuples[i][1],
|
|
80
|
+
dates.getLogDate(),
|
|
81
|
+
selector.get_ALL_SUBS_DICT(),
|
|
82
|
+
read_args.retriveArgs(),
|
|
83
|
+
),
|
|
84
|
+
|
|
85
|
+
)
|
|
86
|
+
for i in range(num_proc)
|
|
87
|
+
]
|
|
88
|
+
add_pids_to_download_obj(map(lambda x: x.pid, processes))
|
|
89
|
+
|
|
90
|
+
task1 = progress_updater.add_download_task(
|
|
91
|
+
desc.format(
|
|
92
|
+
p_count=0,
|
|
93
|
+
v_count=0,
|
|
94
|
+
a_count=0,
|
|
95
|
+
skipped=0,
|
|
96
|
+
mediacount=len(filtered_medialist),
|
|
97
|
+
forced_skipped=0,
|
|
98
|
+
sumcount=0,
|
|
99
|
+
total_bytes_download=0,
|
|
100
|
+
total_bytes=0,
|
|
101
|
+
),
|
|
102
|
+
total=len(filtered_medialist),
|
|
103
|
+
visible=True,
|
|
104
|
+
)
|
|
105
|
+
queue_threads = [
|
|
106
|
+
threading.Thread(
|
|
107
|
+
target=queue_process,
|
|
108
|
+
args=(
|
|
109
|
+
connect_tuples[i][0],
|
|
110
|
+
task1,
|
|
111
|
+
len(filtered_medialist),
|
|
112
|
+
),
|
|
113
|
+
daemon=True,
|
|
114
|
+
)
|
|
115
|
+
for i in range(num_proc)
|
|
116
|
+
]
|
|
117
|
+
start_threads(queue_threads,processes)
|
|
118
|
+
handle_threads(queue_threads,processes,log_threads)
|
|
119
|
+
# for reading completed downloads
|
|
120
|
+
download_log_clear_helper()
|
|
121
|
+
progress_updater.remove_download_task(task1)
|
|
122
|
+
setDirectoriesDate(log)
|
|
123
|
+
final_log(username)
|
|
124
|
+
return final_log_text(username)
|
|
125
|
+
except KeyboardInterrupt as E:
|
|
126
|
+
try:
|
|
127
|
+
with exit.DelayedKeyboardInterrupt():
|
|
128
|
+
[process.terminate() for process in processes or []]
|
|
129
|
+
raise KeyboardInterrupt
|
|
130
|
+
except KeyboardInterrupt:
|
|
131
|
+
with exit.DelayedKeyboardInterrupt():
|
|
132
|
+
raise E
|
|
133
|
+
except:
|
|
134
|
+
with exit.DelayedKeyboardInterrupt():
|
|
135
|
+
raise E
|
|
136
|
+
except Exception as E:
|
|
137
|
+
try:
|
|
138
|
+
with exit.DelayedKeyboardInterrupt():
|
|
139
|
+
[process.terminate() for process in processes or []]
|
|
140
|
+
raise E
|
|
141
|
+
except KeyboardInterrupt:
|
|
142
|
+
with exit.DelayedKeyboardInterrupt():
|
|
143
|
+
raise E
|
|
144
|
+
except Exception:
|
|
145
|
+
with exit.DelayedKeyboardInterrupt():
|
|
146
|
+
raise E
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def process_dict_starter(
|
|
151
|
+
username,
|
|
152
|
+
model_id,
|
|
153
|
+
ele,
|
|
154
|
+
stdout_logqueue,
|
|
155
|
+
pipe_,
|
|
156
|
+
dateDict,
|
|
157
|
+
userNameList,
|
|
158
|
+
argsCopy,
|
|
159
|
+
):
|
|
160
|
+
#queue for file and discord
|
|
161
|
+
file_logqueue=AioPipe()
|
|
162
|
+
subProcessVariableInit(
|
|
163
|
+
dateDict,
|
|
164
|
+
userNameList,
|
|
165
|
+
pipe_,
|
|
166
|
+
argsCopy,
|
|
167
|
+
stdout_logqueue,
|
|
168
|
+
file_logqueue[0]
|
|
169
|
+
)
|
|
170
|
+
common_globals.log.debug(f"{pid_log_helper()} preparing thread")
|
|
171
|
+
priority.setpriority()
|
|
172
|
+
system.setNameAlt()
|
|
173
|
+
plat = platform.system()
|
|
174
|
+
if plat == "Linux":
|
|
175
|
+
import uvloop
|
|
176
|
+
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
|
|
177
|
+
other_logs.start_other_thread(
|
|
178
|
+
input_=file_logqueue[1], name=str(os.getpid()), count=1
|
|
179
|
+
)
|
|
180
|
+
try:
|
|
181
|
+
process_dicts_split(username, model_id, ele)
|
|
182
|
+
except KeyboardInterrupt as E:
|
|
183
|
+
with exit.DelayedKeyboardInterrupt():
|
|
184
|
+
try:
|
|
185
|
+
pipe_.send(None)
|
|
186
|
+
common_globals.log.log(100,None)
|
|
187
|
+
raise E
|
|
188
|
+
except Exception as E:
|
|
189
|
+
raise E
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
@run
|
|
195
|
+
async def process_dicts_split(username, model_id, medialist):
|
|
196
|
+
medialist = list(medialist)
|
|
197
|
+
common_globals.log.debug(f"{pid_log_helper()} starting process")
|
|
198
|
+
common_globals.log.debug(
|
|
199
|
+
f"{pid_log_helper()} process mediasplit from total {len(medialist)}"
|
|
200
|
+
)
|
|
201
|
+
aws = []
|
|
202
|
+
async with download_session() as c:
|
|
203
|
+
for ele in medialist:
|
|
204
|
+
aws.append((c, ele, model_id, username))
|
|
205
|
+
concurrency_limit = get_max_workers()
|
|
206
|
+
lock = asyncio.Lock()
|
|
207
|
+
consumers = [
|
|
208
|
+
asyncio.create_task(consumer(lock,aws)) for _ in range(concurrency_limit)
|
|
209
|
+
]
|
|
210
|
+
|
|
211
|
+
await asyncio.gather(*consumers)
|
|
212
|
+
common_globals.log.debug(f"{pid_log_helper()} download process thread closing")
|
|
213
|
+
# send message directly
|
|
214
|
+
await asyncio.get_event_loop().run_in_executor(common_globals.thread, cache.close)
|
|
215
|
+
common_globals.thread.shutdown()
|
|
216
|
+
common_globals.log.log(100,None)
|
|
217
|
+
await send_msg({"dir_update": common_globals.localDirSet})
|
|
218
|
+
await send_msg(None)
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def pid_log_helper():
|
|
222
|
+
return f"PID: {os.getpid()}"
|
|
223
|
+
|
|
224
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import platform
|
|
2
|
+
import traceback
|
|
3
|
+
|
|
4
|
+
from ofscraper.actions.utils.send.message import send_msg
|
|
5
|
+
from ofscraper.actions.actions.download.runners.download import download
|
|
6
|
+
import ofscraper.actions.utils.globals as common_globals
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
platform_name = platform.system()
|
|
10
|
+
async def consumer(lock,aws):
|
|
11
|
+
while True:
|
|
12
|
+
async with lock:
|
|
13
|
+
if not(bool(aws)):
|
|
14
|
+
break
|
|
15
|
+
data = aws.pop()
|
|
16
|
+
if data is None:
|
|
17
|
+
break
|
|
18
|
+
else:
|
|
19
|
+
try:
|
|
20
|
+
pack = await download(*data,multi=True)
|
|
21
|
+
common_globals.log.debug(f"unpack {pack} count {len(pack)}")
|
|
22
|
+
media_type, num_bytes_downloaded = pack
|
|
23
|
+
await send_msg((media_type, num_bytes_downloaded, 0))
|
|
24
|
+
except Exception as e:
|
|
25
|
+
common_globals.log.info(f"Download Failed because\n{e}")
|
|
26
|
+
common_globals.log.traceback_(traceback.format_exc())
|
|
27
|
+
media_type = "skipped"
|
|
28
|
+
num_bytes_downloaded = 0
|
|
29
|
+
await send_msg((media_type, num_bytes_downloaded, 0))
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import logging
|
|
3
|
+
import logging.handlers
|
|
4
|
+
import platform
|
|
5
|
+
import traceback
|
|
6
|
+
|
|
7
|
+
import ofscraper.actions.utils.globals as common_globals
|
|
8
|
+
|
|
9
|
+
import ofscraper.utils.live.updater as progress_updater
|
|
10
|
+
from ofscraper.actions.utils.log import (
|
|
11
|
+
log_download_progress,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
from ofscraper.actions.utils.paths.paths import addGlobalDir
|
|
15
|
+
from ofscraper.actions.utils.progress.convert import convert_num_bytes
|
|
16
|
+
from ofscraper.actions.actions.download.utils.desc import desc
|
|
17
|
+
|
|
18
|
+
platform_name = platform.system()
|
|
19
|
+
def queue_process(pipe_, task1, total):
|
|
20
|
+
count = 0
|
|
21
|
+
while True:
|
|
22
|
+
try:
|
|
23
|
+
if count == 1:
|
|
24
|
+
break
|
|
25
|
+
try:
|
|
26
|
+
if not pipe_.poll(timeout=1) :
|
|
27
|
+
continue
|
|
28
|
+
results = pipe_.recv()
|
|
29
|
+
if not isinstance(results, list):
|
|
30
|
+
results = [results]
|
|
31
|
+
except Exception as E:
|
|
32
|
+
common_globals.log.traceback_(E)
|
|
33
|
+
common_globals.log.traceback_(traceback.format_exc())
|
|
34
|
+
continue
|
|
35
|
+
for result in results:
|
|
36
|
+
try:
|
|
37
|
+
if isinstance(result, list) or isinstance(result, tuple):
|
|
38
|
+
media_type, num_bytes_downloaded, total_size = result
|
|
39
|
+
with common_globals.count_lock:
|
|
40
|
+
common_globals.total_bytes_downloaded = (
|
|
41
|
+
common_globals.total_bytes_downloaded + num_bytes_downloaded
|
|
42
|
+
)
|
|
43
|
+
common_globals.total_bytes = (
|
|
44
|
+
common_globals.total_bytes + total_size
|
|
45
|
+
)
|
|
46
|
+
if media_type == "images":
|
|
47
|
+
common_globals.photo_count += 1
|
|
48
|
+
|
|
49
|
+
elif media_type == "videos":
|
|
50
|
+
common_globals.video_count += 1
|
|
51
|
+
elif media_type == "audios":
|
|
52
|
+
common_globals.audio_count += 1
|
|
53
|
+
elif media_type == "skipped":
|
|
54
|
+
common_globals.skipped += 1
|
|
55
|
+
elif media_type == "forced_skipped":
|
|
56
|
+
common_globals.forced_skipped += 1
|
|
57
|
+
log_download_progress(media_type)
|
|
58
|
+
progress_updater.update_download_task(
|
|
59
|
+
task1,
|
|
60
|
+
description=desc.format(
|
|
61
|
+
p_count=common_globals.photo_count,
|
|
62
|
+
v_count=common_globals.video_count,
|
|
63
|
+
a_count=common_globals.audio_count,
|
|
64
|
+
skipped=common_globals.skipped,
|
|
65
|
+
forced_skipped=common_globals.forced_skipped,
|
|
66
|
+
total_bytes_download=convert_num_bytes(
|
|
67
|
+
common_globals.total_bytes_downloaded
|
|
68
|
+
),
|
|
69
|
+
total_bytes=convert_num_bytes(
|
|
70
|
+
common_globals.total_bytes
|
|
71
|
+
),
|
|
72
|
+
mediacount=total,
|
|
73
|
+
sumcount=common_globals.video_count
|
|
74
|
+
+ common_globals.audio_count
|
|
75
|
+
+ common_globals.photo_count
|
|
76
|
+
+ common_globals.skipped
|
|
77
|
+
+ common_globals.forced_skipped,
|
|
78
|
+
),
|
|
79
|
+
refresh=True,
|
|
80
|
+
completed=common_globals.video_count
|
|
81
|
+
+ common_globals.audio_count
|
|
82
|
+
+ common_globals.photo_count
|
|
83
|
+
+ common_globals.skipped
|
|
84
|
+
+ common_globals.forced_skipped,
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
elif result is None or result == "None":
|
|
88
|
+
count = count + 1
|
|
89
|
+
elif isinstance(result, dict) and "dir_update" in result:
|
|
90
|
+
addGlobalDir(result["dir_update"])
|
|
91
|
+
elif callable(result):
|
|
92
|
+
job_progress_helper(result)
|
|
93
|
+
except Exception as E:
|
|
94
|
+
common_globals.log.traceback_(E)
|
|
95
|
+
common_globals.log.traceback_(traceback.format_exc())
|
|
96
|
+
#increase skipped
|
|
97
|
+
common_globals.skipped += 1
|
|
98
|
+
except Exception as E:
|
|
99
|
+
common_globals.log.traceback_(E)
|
|
100
|
+
common_globals.log.traceback_(traceback.format_exc())
|
|
101
|
+
#increase skipped
|
|
102
|
+
|
|
103
|
+
def job_progress_helper(funct):
|
|
104
|
+
try:
|
|
105
|
+
funct()
|
|
106
|
+
#probably handle by other thread
|
|
107
|
+
except KeyError:
|
|
108
|
+
pass
|
|
109
|
+
except Exception as E:
|
|
110
|
+
logging.getLogger("shared").debug(E)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
async def ajob_progress_helper(funct):
|
|
114
|
+
try:
|
|
115
|
+
await asyncio.get_event_loop().run_in_executor(
|
|
116
|
+
None,
|
|
117
|
+
funct,
|
|
118
|
+
)
|
|
119
|
+
#probably handle by other thread
|
|
120
|
+
except KeyError:
|
|
121
|
+
pass
|
|
122
|
+
except Exception as E:
|
|
123
|
+
logging.getLogger("shared").debug(E)
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
import pathlib
|
|
3
|
+
|
|
4
|
+
import ofscraper.actions.actions.download.batch.downloadbatch as batch
|
|
5
|
+
import ofscraper.actions.actions.download.normal.downloadnormal as normal
|
|
6
|
+
import ofscraper.utils.args.accessors.read as read_args
|
|
7
|
+
import ofscraper.utils.constants as constants
|
|
8
|
+
import ofscraper.utils.hash as hash
|
|
9
|
+
import ofscraper.utils.settings as settings
|
|
10
|
+
import ofscraper.utils.system.system as system
|
|
11
|
+
from ofscraper.actions.utils.log import empty_log
|
|
12
|
+
from ofscraper.actions.actions.download.utils.text import textDownloader
|
|
13
|
+
from ofscraper.utils.context.run_async import run as run_async
|
|
14
|
+
from ofscraper.runner.close.final.final_user import post_user_process
|
|
15
|
+
from ofscraper.commands.utils.strings import (
|
|
16
|
+
download_activity_str,
|
|
17
|
+
)
|
|
18
|
+
import ofscraper.utils.live.updater as progress_updater
|
|
19
|
+
import ofscraper.utils.config.data as config_data
|
|
20
|
+
import ofscraper.utils.paths.common as common_paths
|
|
21
|
+
from ofscraper.utils.string import format_safe
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
async def downloader(ele=None, posts=None, media=None, **kwargs):
|
|
25
|
+
model_id = ele.id
|
|
26
|
+
username = ele.name
|
|
27
|
+
download_str = download_activity_str.format(username=username)
|
|
28
|
+
path_str = format_safe(
|
|
29
|
+
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]",
|
|
30
|
+
username=username,
|
|
31
|
+
model_id=model_id,
|
|
32
|
+
model_username=username,
|
|
33
|
+
modelusername=username,
|
|
34
|
+
modelid=model_id,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
progress_updater.update_activity_task(description=download_str + path_str)
|
|
38
|
+
logging.getLogger("shared_other").warning(
|
|
39
|
+
download_activity_str.format(username=username)
|
|
40
|
+
)
|
|
41
|
+
progress_updater.update_activity_task(description="")
|
|
42
|
+
return await download_process(username, model_id, media, posts=posts)
|
|
43
|
+
|
|
44
|
+
@run_async
|
|
45
|
+
async def download_process(username, model_id, medialist, posts=None):
|
|
46
|
+
if not read_args.retriveArgs().command == "metadata":
|
|
47
|
+
await textDownloader(posts, username=username)
|
|
48
|
+
data = await download_picker(username, model_id, medialist)
|
|
49
|
+
post_user_process(username, model_id, medialist, posts)
|
|
50
|
+
return data
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
async def download_picker(username, model_id, medialist):
|
|
54
|
+
if len(medialist) == 0:
|
|
55
|
+
out = empty_log(username)
|
|
56
|
+
logging.getLogger("shared").error(out)
|
|
57
|
+
return out
|
|
58
|
+
elif (
|
|
59
|
+
system.getcpu_count() > 1
|
|
60
|
+
and (
|
|
61
|
+
len(medialist)
|
|
62
|
+
>= settings.get_threads() * constants.getattr("DOWNLOAD_THREAD_MIN")
|
|
63
|
+
)
|
|
64
|
+
and settings.not_solo_thread()
|
|
65
|
+
):
|
|
66
|
+
return batch.process_dicts(username, model_id, medialist)
|
|
67
|
+
else:
|
|
68
|
+
return await normal.process_dicts(username, model_id, medialist)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def remove_downloads_with_hashes(username, model_id):
|
|
72
|
+
hash.remove_dupes_hash(username, model_id, "audios")
|
|
73
|
+
hash.remove_dupes_hash(username, model_id, "images")
|
|
74
|
+
hash.remove_dupes_hash(username, model_id, "videos")
|