ofscraper 3.13.4__tar.gz → 3.13.5.dev2__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.
Files changed (427) hide show
  1. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/PKG-INFO +1 -1
  2. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/of/media.py +27 -31
  3. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/of/postcollection.py +1 -1
  4. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/of/posts.py +22 -3
  5. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/placeholder.py +2 -3
  6. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/sessionmanager/sessionmanager.py +57 -67
  7. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/fields/sizefield.py +2 -3
  8. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/check.py +11 -9
  9. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/db.py +2 -3
  10. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/manual.py +6 -8
  11. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/metadata/consumer.py +11 -5
  12. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/metadata/manager.py +8 -12
  13. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/metadata/metadata.py +6 -6
  14. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/download/download.py +5 -4
  15. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/download/managers/alt_download.py +10 -9
  16. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/download/managers/downloadmanager.py +6 -1
  17. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/download/managers/main_download.py +7 -4
  18. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/download/run.py +17 -10
  19. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/download/utils/ffmpeg.py +24 -11
  20. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/download/utils/keyhelpers.py +6 -4
  21. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/like/like.py +35 -37
  22. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/utils/general.py +0 -5
  23. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/scraper.py +3 -4
  24. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/utils/schedule.py +1 -0
  25. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/profile.py +1 -0
  26. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/subscriptions/lists.py +5 -5
  27. ofscraper-3.13.5.dev2/ofscraper/data/models/manager.py +380 -0
  28. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/posts/scrape_paid.py +2 -2
  29. ofscraper-3.13.5.dev2/ofscraper/filters/models/date.py +85 -0
  30. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/main/close/final/final.py +3 -3
  31. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/main/open/load.py +5 -5
  32. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/prompt_groups/actions.py +7 -5
  33. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/prompt_groups/area.py +1 -2
  34. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/prompt_groups/config.py +33 -30
  35. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/prompt_groups/model.py +20 -18
  36. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/prompt_validators.py +4 -3
  37. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/utils/prompt_helpers.py +1 -2
  38. ofscraper-3.13.4/ofscraper/scripts/final_user_script.py → ofscraper-3.13.5.dev2/ofscraper/scripts/after_download_action_script.py +21 -27
  39. ofscraper-3.13.5.dev2/ofscraper/scripts/after_download_script.py +88 -0
  40. ofscraper-3.13.5.dev2/ofscraper/scripts/after_like_action_script.py +101 -0
  41. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/scripts/final_script.py +11 -9
  42. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/scripts/naming_script.py +11 -10
  43. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/scripts/skip_download_script.py +14 -9
  44. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/actions.py +18 -20
  45. ofscraper-3.13.5.dev2/ofscraper/utils/args/accessors/output.py +5 -0
  46. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/accessors/time.py +5 -6
  47. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/main.py +0 -1
  48. ofscraper-3.13.5.dev2/ofscraper/utils/args/mutators/before.py +11 -0
  49. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/mutators/user.py +5 -9
  50. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/program.py +1 -11
  51. ofscraper-3.13.5.dev2/ofscraper/utils/args/parse/arguments/scripts.py +53 -0
  52. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/user_list.py +1 -1
  53. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/user_select.py +4 -2
  54. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/scripts.py +6 -2
  55. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/config/data.py +98 -53
  56. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/config/menu.py +3 -0
  57. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/config/schema.py +4 -9
  58. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/logs/logger.py +4 -0
  59. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/logs/logs.py +1 -2
  60. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/menu.py +2 -0
  61. ofscraper-3.13.5.dev2/ofscraper/utils/of_env/load.py +72 -0
  62. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/main.py +20 -9
  63. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/prompts.py +5 -3
  64. ofscraper-3.13.5.dev2/ofscraper/utils/of_env/values/system.py +40 -0
  65. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/paths/common.py +1 -2
  66. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/settings.py +74 -16
  67. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/system/free.py +2 -2
  68. ofscraper-3.13.5.dev2/ofscraper/utils/system/subprocess.py +57 -0
  69. ofscraper-3.13.4/ofscraper/commands/scraper/actions/utils/paths/media.py +0 -11
  70. ofscraper-3.13.4/ofscraper/commands/scraper/actions/utils/send/message.py +0 -56
  71. ofscraper-3.13.4/ofscraper/data/models/manager.py +0 -176
  72. ofscraper-3.13.4/ofscraper/filters/models/date.py +0 -83
  73. ofscraper-3.13.4/ofscraper/utils/args/accessors/output.py +0 -4
  74. ofscraper-3.13.4/ofscraper/utils/args/callbacks/arguments/env.py +0 -73
  75. ofscraper-3.13.4/ofscraper/utils/args/mutators/before.py +0 -12
  76. ofscraper-3.13.4/ofscraper/utils/args/mutators/change.py +0 -8
  77. ofscraper-3.13.4/ofscraper/utils/args/parse/arguments/scripts.py +0 -50
  78. ofscraper-3.13.4/ofscraper/utils/config/custom.py +0 -20
  79. ofscraper-3.13.4/ofscraper/utils/of_env/values/system.py +0 -25
  80. ofscraper-3.13.4/ofscraper/utils/system/subprocess.py +0 -19
  81. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.dockerignore +0 -0
  82. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.gitattributes +0 -0
  83. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  84. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  85. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.github/actions/retry-artifact-operation/action.yml +0 -0
  86. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.github/dependabot.yml +0 -0
  87. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.github/workflows/codecov.yml +0 -0
  88. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.github/workflows/commit_bundler.yml +0 -0
  89. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.github/workflows/docker-daily.yml +0 -0
  90. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.github/workflows/docker-purge.yml +0 -0
  91. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.github/workflows/package-builder-release.yml +0 -0
  92. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.github/workflows/package-delete.yml +0 -0
  93. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.github/workflows/publish-release-binaries.yml +0 -0
  94. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.github/workflows/publish-release-dockers.yml +0 -0
  95. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.gitignore +0 -0
  96. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/.gitmodules +0 -0
  97. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/CHANGES.md +0 -0
  98. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/Dockerfile +0 -0
  99. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/LICENSE +0 -0
  100. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/README.md +0 -0
  101. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/cosign.pub +0 -0
  102. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/crypto +0 -0
  103. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/docker-compose.yml +0 -0
  104. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/donate/btc +0 -0
  105. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/donate/eth +0 -0
  106. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/media/browser_tools_open.png +0 -0
  107. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/media/dp.png +0 -0
  108. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/media/example.png +0 -0
  109. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/media/headers.png +0 -0
  110. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/media/icon.png +0 -0
  111. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/media/init.png +0 -0
  112. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/media/list_or_username.png +0 -0
  113. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/media/main_menu.png +0 -0
  114. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/media/network_tab.png +0 -0
  115. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/media/request_headers.png +0 -0
  116. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/media/xhr_tab.png +0 -0
  117. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/__main__.py +0 -0
  118. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/__version__.py +0 -0
  119. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/labels.py +0 -0
  120. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/of/base.py +0 -0
  121. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/sessionmanager/cert.py +0 -0
  122. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/sessionmanager/ofsession.py +0 -0
  123. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/sessionmanager/sleepers.py +0 -0
  124. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/app.py +0 -0
  125. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/compose.py +0 -0
  126. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/const.py +0 -0
  127. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/css.py +0 -0
  128. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/fields/boolfield.py +0 -0
  129. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/fields/datefield.py +0 -0
  130. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/fields/downloadfield.py +0 -0
  131. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/fields/mediafield.py +0 -0
  132. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/fields/numfield.py +0 -0
  133. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/fields/pricefield.py +0 -0
  134. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/fields/responsefield.py +0 -0
  135. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/fields/selectfield.py +0 -0
  136. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/fields/textsearch.py +0 -0
  137. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/fields/timefield.py +0 -0
  138. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/inputs/filterinput.py +0 -0
  139. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/inputs/intergerinput.py +0 -0
  140. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/inputs/strinput.py +0 -0
  141. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/sections/sidebar.py +0 -0
  142. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/sections/table.py +0 -0
  143. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/sections/table_console.py +0 -0
  144. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/utils/lock.py +0 -0
  145. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/classes/table/utils/names.py +0 -0
  146. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/metadata/desc.py +0 -0
  147. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/download/utils/chunk.py +0 -0
  148. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/download/utils/desc.py +0 -0
  149. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/download/utils/leaky.py +0 -0
  150. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/download/utils/retries.py +0 -0
  151. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/download/utils/text.py +0 -0
  152. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/utils/buffer.py +0 -0
  153. {ofscraper-3.13.4/ofscraper/commands/scraper/actions/utils/send → ofscraper-3.13.5.dev2/ofscraper/commands/scraper/actions/utils}/chunk.py +0 -0
  154. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/utils/globals.py +0 -0
  155. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/utils/log.py +0 -0
  156. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/utils/params.py +0 -0
  157. {ofscraper-3.13.4/ofscraper/commands/scraper/actions/utils/paths → ofscraper-3.13.5.dev2/ofscraper/commands/scraper/actions/utils}/paths.py +0 -0
  158. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/utils/progress/convert.py +0 -0
  159. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/utils/progress/update.py +0 -0
  160. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/utils/retries.py +0 -0
  161. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/utils/threads.py +0 -0
  162. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/actions/utils/workers.py +0 -0
  163. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/utils/daemon.py +0 -0
  164. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/utils/jobqueue.py +0 -0
  165. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/utils/prepare.py +0 -0
  166. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/scraper/utils/print.py +0 -0
  167. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/utils/command.py +0 -0
  168. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/utils/scrape_context.py +0 -0
  169. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/commands/utils/strings.py +0 -0
  170. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/archive.py +0 -0
  171. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/common/after.py +0 -0
  172. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/common/cache/read.py +0 -0
  173. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/common/cache/write.py +0 -0
  174. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/common/check.py +0 -0
  175. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/common/logs/logs.py +0 -0
  176. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/common/logs/strings.py +0 -0
  177. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/common/timeline.py +0 -0
  178. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/highlights.py +0 -0
  179. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/init.py +0 -0
  180. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/labels.py +0 -0
  181. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/me.py +0 -0
  182. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/messages.py +0 -0
  183. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/paid.py +0 -0
  184. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/pinned.py +0 -0
  185. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/streams.py +0 -0
  186. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/subscriptions/common.py +0 -0
  187. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/subscriptions/individual.py +0 -0
  188. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/subscriptions/subscriptions.py +0 -0
  189. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/api/timeline.py +0 -0
  190. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/models/models.py +0 -0
  191. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/models/utils/retriver.py +0 -0
  192. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/data/posts/post.py +0 -0
  193. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/__init__.py +0 -0
  194. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/backup.py +0 -0
  195. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/difference.py +0 -0
  196. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/merge.py +0 -0
  197. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/operations.py +0 -0
  198. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/operations_/empty.py +0 -0
  199. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/operations_/labels.py +0 -0
  200. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/operations_/media.py +0 -0
  201. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/operations_/messages.py +0 -0
  202. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/operations_/others.py +0 -0
  203. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/operations_/posts.py +0 -0
  204. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/operations_/profile.py +0 -0
  205. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/operations_/stories.py +0 -0
  206. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/operations_/wrapper.py +0 -0
  207. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/transition.py +0 -0
  208. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/db/utils/convert.py +0 -0
  209. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/filters/media/filters.py +0 -0
  210. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/filters/media/main.py +0 -0
  211. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/filters/models/flags.py +0 -0
  212. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/filters/models/other.py +0 -0
  213. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/filters/models/price.py +0 -0
  214. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/filters/models/sort.py +0 -0
  215. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/filters/models/subtype.py +0 -0
  216. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/filters/models/utils/logs.py +0 -0
  217. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/main/close/exit.py +0 -0
  218. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/main/close/final/final_log.py +0 -0
  219. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/main/manager.py +0 -0
  220. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/main/open/run.py +0 -0
  221. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/keybindings.py +0 -0
  222. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/promptConvert.py +0 -0
  223. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/prompt_groups/auth.py +0 -0
  224. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/prompt_groups/menu.py +0 -0
  225. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/prompt_groups/merge.py +0 -0
  226. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/prompt_groups/profile.py +0 -0
  227. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/prompt_strings.py +0 -0
  228. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/prompts.py +0 -0
  229. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/prompts/utils/model_helpers.py +0 -0
  230. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/__init__.py +0 -0
  231. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/ads.py +0 -0
  232. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/accessors/actions.py +0 -0
  233. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/accessors/areas.py +0 -0
  234. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/accessors/quality.py +0 -0
  235. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/accessors/read.py +0 -0
  236. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/callbacks/arguments/post.py +0 -0
  237. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/callbacks/arguments/username.py +0 -0
  238. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/callbacks/parse/choice.py +0 -0
  239. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/callbacks/parse/file.py +0 -0
  240. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/callbacks/parse/string.py +0 -0
  241. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/callbacks/parse/username.py +0 -0
  242. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/globals.py +0 -0
  243. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/helpers/hide_args.py +0 -0
  244. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/mutators/write.py +0 -0
  245. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/advanced_processing.py +0 -0
  246. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/advanced_program.py +0 -0
  247. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/advanced_user_filter.py +0 -0
  248. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/automatic.py +0 -0
  249. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/check.py +0 -0
  250. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/download.py +0 -0
  251. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/file.py +0 -0
  252. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/logging.py +0 -0
  253. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/media_content.py +0 -0
  254. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/metadata_filters.py +0 -0
  255. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/post_content.py +0 -0
  256. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/shared.py +0 -0
  257. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/user_sort.py +0 -0
  258. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/utils/date.py +0 -0
  259. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/arguments/utils/retry.py +0 -0
  260. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/commands/db.py +0 -0
  261. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/commands/main.py +0 -0
  262. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/commands/manual.py +0 -0
  263. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/commands/message.py +0 -0
  264. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/commands/metadata.py +0 -0
  265. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/commands/paid.py +0 -0
  266. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/commands/post.py +0 -0
  267. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/commands/story.py +0 -0
  268. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/group_bundles/advanced_common.py +0 -0
  269. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/group_bundles/check.py +0 -0
  270. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/group_bundles/common.py +0 -0
  271. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/group_bundles/db.py +0 -0
  272. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/group_bundles/main.py +0 -0
  273. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/group_bundles/manual.py +0 -0
  274. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/group_bundles/message_check.py +0 -0
  275. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/group_bundles/metadata.py +0 -0
  276. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/group_bundles/paid_check.py +0 -0
  277. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/group_bundles/post_check.py +0 -0
  278. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/group_bundles/story_check.py +0 -0
  279. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/group_bundles/utils/check.py +0 -0
  280. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/advanced_processing.py +0 -0
  281. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/advanced_program.py +0 -0
  282. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/advanced_user_filter.py +0 -0
  283. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/automatic.py +0 -0
  284. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/check_content.py +0 -0
  285. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/download.py +0 -0
  286. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/file.py +0 -0
  287. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/logging.py +0 -0
  288. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/media_filter.py +0 -0
  289. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/post_filter.py +0 -0
  290. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/program.py +0 -0
  291. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/user_list.py +0 -0
  292. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/user_select.py +0 -0
  293. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/parse/groups/user_sort.py +0 -0
  294. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/types/arrow.py +0 -0
  295. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/args/types/choice.py +0 -0
  296. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/auth/data.py +0 -0
  297. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/auth/file.py +0 -0
  298. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/auth/make.py +0 -0
  299. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/auth/request.py +0 -0
  300. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/auth/schema.py +0 -0
  301. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/auth/utils/dict.py +0 -0
  302. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/auth/utils/error.py +0 -0
  303. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/auth/utils/prompt.py +0 -0
  304. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/auth/utils/warning/check.py +0 -0
  305. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/auth/utils/warning/print.py +0 -0
  306. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/auth/utils/warning/warning.py +0 -0
  307. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/cache.py +0 -0
  308. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/checkers.py +0 -0
  309. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/config/config.py +0 -0
  310. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/config/file.py +0 -0
  311. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/config/utils/context.py +0 -0
  312. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/config/utils/wrapper.py +0 -0
  313. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/console.py +0 -0
  314. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/const.py +0 -0
  315. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/context/exit.py +0 -0
  316. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/context/run_async.py +0 -0
  317. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/context/stdout.py +0 -0
  318. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/dates.py +0 -0
  319. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/encoding.py +0 -0
  320. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/hash.py +0 -0
  321. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/live/classes/progress.py +0 -0
  322. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/live/classes/task.py +0 -0
  323. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/live/classes/transfercol.py +0 -0
  324. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/live/clear.py +0 -0
  325. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/live/empty.py +0 -0
  326. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/live/groups.py +0 -0
  327. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/live/live.py +0 -0
  328. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/live/panel.py +0 -0
  329. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/live/progress.py +0 -0
  330. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/live/screens.py +0 -0
  331. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/live/tasks.py +0 -0
  332. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/live/updater.py +0 -0
  333. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/logs/classes/classes.py +0 -0
  334. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/logs/classes/handlers/discord.py +0 -0
  335. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/logs/classes/handlers/file.py +0 -0
  336. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/logs/classes/handlers/text.py +0 -0
  337. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/logs/close.py +0 -0
  338. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/logs/globals.py +0 -0
  339. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/logs/handle.py +0 -0
  340. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/logs/other.py +0 -0
  341. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/logs/stdout.py +0 -0
  342. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/logs/utils/level.py +0 -0
  343. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/logs/utils/trace.py +0 -0
  344. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/manager.py +0 -0
  345. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/me.py +0 -0
  346. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/merge.py +0 -0
  347. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/__init__.py +0 -0
  348. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/of_env.py +0 -0
  349. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/action/download.py +0 -0
  350. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/action/like.py +0 -0
  351. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/action/metadata.py +0 -0
  352. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/date.py +0 -0
  353. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/dynamic.py +0 -0
  354. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/general.py +0 -0
  355. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/list.py +0 -0
  356. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/live.py +0 -0
  357. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/logger.py +0 -0
  358. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/path/bytes.py +0 -0
  359. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/path/files.py +0 -0
  360. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/path/general.py +0 -0
  361. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/path/length.py +0 -0
  362. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/req/anon.py +0 -0
  363. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/req/api.py +0 -0
  364. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/req/cdm.py +0 -0
  365. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/req/discord.py +0 -0
  366. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/req/git.py +0 -0
  367. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/req/mpd.py +0 -0
  368. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/req/ratelimit.py +0 -0
  369. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/req/req.py +0 -0
  370. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/rich.py +0 -0
  371. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/test/test_constants.py +0 -0
  372. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/time.py +0 -0
  373. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/url/dynamic.py +0 -0
  374. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/url/other_url.py +0 -0
  375. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/of_env/values/url/url.py +0 -0
  376. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/paths/db.py +0 -0
  377. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/paths/manage.py +0 -0
  378. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/paths/paths.py +0 -0
  379. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/profiles/data.py +0 -0
  380. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/profiles/manage.py +0 -0
  381. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/profiles/tools.py +0 -0
  382. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/sems.py +0 -0
  383. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/separate.py +0 -0
  384. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/string.py +0 -0
  385. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/system/network.py +0 -0
  386. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/system/priority.py +0 -0
  387. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/system/speed.py +0 -0
  388. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/system/system.py +0 -0
  389. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/ofscraper/utils/text.py +0 -0
  390. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/pyproject.toml +0 -0
  391. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/scripts/commit_version.sh +0 -0
  392. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/scripts/determine_docker_stable_dev_tags.py +0 -0
  393. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/scripts/entry/entrypoint.sh +0 -0
  394. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/scripts/entry/lib_paths.sh +0 -0
  395. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/scripts/entry/lib_permissions.sh +0 -0
  396. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/scripts/entry/lib_user_setup.sh +0 -0
  397. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/scripts/release_version.sh +0 -0
  398. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/scripts/retry_action.sh +0 -0
  399. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/specs/onedir.spec +0 -0
  400. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/specs/onefile.spec +0 -0
  401. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/calls/example.py +0 -0
  402. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/calls/utils_test.py +0 -0
  403. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/db/archive_test.py +0 -0
  404. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/db/highlights_test.py +0 -0
  405. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/db/media_test.py +0 -0
  406. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/db/message_test.py +0 -0
  407. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/db/pinned_test.py +0 -0
  408. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/db/post_test.py +0 -0
  409. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/db/profile_test.py +0 -0
  410. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/db/stories_test.py +0 -0
  411. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/general/auth_test.py +0 -0
  412. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/general/config_test.py +0 -0
  413. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/general/filter_test.py +0 -0
  414. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/general/like_test.py +0 -0
  415. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/general/misc_test.py +0 -0
  416. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/general/path_test.py +0 -0
  417. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/general/profile_folder_test.py +0 -0
  418. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/general/profile_scrape_test.py +0 -0
  419. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/general/validator_test.py +0 -0
  420. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/post/archived_post_test.py +0 -0
  421. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/post/highlight_post_test.py +0 -0
  422. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/post/messages_post_test.py +0 -0
  423. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/post/paid_post_test.py +0 -0
  424. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/post/pinned_post_test.py +0 -0
  425. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/post/stories_post_test.py +0 -0
  426. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/test/post/timeline_post_test.py +0 -0
  427. {ofscraper-3.13.4 → ofscraper-3.13.5.dev2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ofscraper
3
- Version: 3.13.4
3
+ Version: 3.13.5.dev2
4
4
  Summary: automatically scrape onlyfans
5
5
  Project-URL: Homepage, https://github.com/datawhores/OF-Scraper
6
6
  Author-email: datawhores <datawhores@riseup.net>
@@ -4,6 +4,8 @@ import asyncio
4
4
  import logging
5
5
  import re
6
6
  import warnings
7
+ from typing import Union
8
+ from pathlib import Path
7
9
 
8
10
  import arrow
9
11
  from async_property import async_cached_property
@@ -37,52 +39,46 @@ class Media(base.base):
37
39
  self._lock = asyncio.Lock()
38
40
  self._cached_mpd = None
39
41
 
40
- # ==> STATE TRACKING ATTRIBUTES <==
41
42
  self.download_attempted = False
42
43
  self.download_succeeded = (
43
44
  None # Using tri-state: None (not attempted), True, False
44
45
  )
45
- self.like_attempted = False
46
- self.like_succeeded = None # Using tri-state: None (not attempted), True, False
47
46
 
48
- # ==> RECOMMENDED CHANGE for __eq__ <==
49
- # Two different media items can have the same postid.
50
- # It's safer to check for media id equality.
51
47
  def __eq__(self, other):
52
48
  if not isinstance(other, Media):
53
49
  return NotImplemented
54
50
  return self.id == other.id
55
51
 
56
- # ==> STATE MANAGEMENT METHODS (New Additions) <==
57
52
  def mark_download_attempt(self):
58
53
  """Marks that a download has been attempted."""
59
54
  self.download_attempted = True
60
55
 
61
- def mark_download_success(self):
62
- """Marks a download as successful."""
56
+ def mark_download_finished(self,success=True):
57
+ """Marks a download as successful/failed."""
63
58
  self.download_attempted = True
64
- self.download_succeeded = True
65
-
66
- def mark_download_failure(self):
67
- """Marks a download as failed."""
68
- self.download_attempted = True
69
- self.download_succeeded = False
70
-
71
- def mark_like_attempt(self):
72
- """Marks that a like has been attempted."""
73
- self.like_attempted = True
74
-
75
- def mark_like_success(self):
76
- """Marks a like as successful."""
77
- self.like_attempted = True
78
- self.like_succeeded = True
79
-
80
- def mark_like_failure(self):
81
- """Marks a like as failed."""
82
- self.like_attempted = True
83
- self.like_succeeded = False
84
-
85
- # --- Start of your original properties and methods ---
59
+ self.download_succeeded =(success==True)
60
+ self.update_status()
61
+
62
+ def update_status(self):
63
+ self.media["download_status"] = "skipped"
64
+ if self.download_attempted == True and self.download_succeeded == False:
65
+ self.media["download_status"] = "failed"
66
+ elif self.download_attempted == True and self.download_succeeded == True:
67
+ self.media["download_status"] = "succeed"
68
+
69
+ def add_filepath(self, path: Union[str | Path]):
70
+ path = str(path)
71
+ self.media["filepath"] = path
72
+
73
+ # only use if content type can't be found from request
74
+ @property
75
+ def content_type(self):
76
+ if self.mediatype.lower() == "videos":
77
+ return "mp4"
78
+ elif self.mediatype.lower() == "images":
79
+ return "jpg"
80
+ elif self.mediatype.lower() == "audios":
81
+ return "mp3"
86
82
 
87
83
  @property
88
84
  def expires(self):
@@ -26,7 +26,7 @@ class PostCollection:
26
26
  self.mode = mode
27
27
  # Internal dictionary to store posts, using post_id as the key for de-duplication
28
28
  self._posts_map = {}
29
- log.info(f"Initialized PostCollection for {username} in '{self.mode}' mode.")
29
+ log.info(f"Initialized PostCollection for {username}")
30
30
 
31
31
  @property
32
32
  def posts(self) -> list[Post]:
@@ -102,16 +102,35 @@ class Post(base.base):
102
102
  if media_item in self.media_to_download:
103
103
  self.media_to_download.remove(media_item)
104
104
 
105
- def mark_post_liked(self, success):
105
+ def mark_post_liked(self, success=True):
106
106
  """
107
- Updates the status of the post after a like/unlike attempt.
107
+ Updates the success status of the post after a like/unlike attempt.
108
108
  """
109
109
  self.like_attempted = True
110
- self.like_success = success
110
+ self.like_success =(success==True)
111
111
  if success:
112
112
  self._post["isFavorite"] = True
113
113
  self.is_actionable_like = False
114
114
 
115
+ def mark_post_unliked(self, success=True):
116
+ """
117
+ Updates the success status of the post after a like/unlike attempt.
118
+ """
119
+ self.like_attempted = True
120
+ self.like_success = (success==True)
121
+ if success:
122
+ self._post["isFavorite"] = False
123
+ self.is_actionable_like = False
124
+
125
+
126
+ def mark_like_attempt(self):
127
+ """
128
+ Updates the status of the post before a like/unlike attempt.
129
+ """
130
+ self.like_attempted = True
131
+
132
+
133
+
115
134
  @property
116
135
  def missed_downloads(self):
117
136
  """Convenience property to see what failed to download."""
@@ -4,7 +4,6 @@ import pathlib
4
4
  import re
5
5
  import arrow
6
6
 
7
- import ofscraper.utils.args.accessors.read as read_args
8
7
  import ofscraper.utils.cache as cache
9
8
  import ofscraper.utils.config.data as data
10
9
  import ofscraper.utils.config.file as config_file
@@ -236,7 +235,7 @@ class Placeholders(basePlaceholder):
236
235
  self._variables.update({"only_filename": ele.no_quality_final_filename})
237
236
  self._variables.update({"text": ele.file_text})
238
237
  self._variables.update({"config": config_file.open_config()})
239
- self._variables.update({"args": read_args.retriveArgs()})
238
+ self._variables.update({"args": settings.get_args()})
240
239
 
241
240
  @basePlaceholder.async_wrapper
242
241
  async def getmediadir(self, root=None, create=True):
@@ -432,7 +431,7 @@ class Textholders(basePlaceholder):
432
431
  )
433
432
  self._variables.update({"text": ele.text_trunicate(ele.file_sanitized_text)})
434
433
  self._variables.update({"config": config_file.open_config()})
435
- self._variables.update({"args": read_args.retriveArgs()})
434
+ self._variables.update({"args": settings.get_args()})
436
435
 
437
436
  self._variables.update({"quality": "source"})
438
437
  self._variables.update(
@@ -19,7 +19,7 @@ import ofscraper.utils.of_env.of_env as of_env
19
19
  from ofscraper.utils.auth.utils.warning.print import print_auth_warning
20
20
  import ofscraper.utils.settings as settings
21
21
  from ofscraper.classes.sessionmanager.cert import create_custom_ssl_context
22
-
22
+
23
23
  # Constants for request actions
24
24
  TOO_MANY = "too_many"
25
25
  AUTH = "auth"
@@ -64,10 +64,10 @@ class SessionSleep:
64
64
  self._init_sleep = (
65
65
  sleep if sleep is not None else of_env.getattr("SESSION_SLEEP_INIT")
66
66
  )
67
- self._min_sleep=(
67
+ self._min_sleep = (
68
68
  min_sleep if min_sleep is not None else of_env.getattr("SESSION_SLEEP_MIN")
69
69
  )
70
- #set sleep to min sleep always
70
+ # set sleep to min sleep always
71
71
  self._sleep = self._min_sleep
72
72
 
73
73
  self._difmin = (
@@ -102,15 +102,15 @@ class SessionSleep:
102
102
  new_sleep = self._sleep / self._decay_factor
103
103
  self._sleep = max(self._min_sleep, new_sleep)
104
104
  self._last_date = arrow.now()
105
- logging.getLogger("shared").debug(f"[{self._error_name}] Sleep decay => Reducing sleep to [{self._sleep:.2f} seconds]")
106
-
107
-
105
+ logging.getLogger("shared").debug(
106
+ f"[{self.error_name}] Sleep decay => Reducing sleep to [{self._sleep:.2f} seconds]"
107
+ )
108
108
 
109
109
  async def async_do_sleep(self):
110
110
  async with self._alock:
111
111
  self._maybe_decay_sleep()
112
- if self._sleep and self._sleep<=self._min_sleep:
113
- logging.getLogger("shared").debug(
112
+ if self._sleep and self._sleep <= self._min_sleep:
113
+ logging.getLogger("shared").debug(
114
114
  f"SessionSleep: Waiting [{self._sleep:.2f} seconds] due to {self.error_name} min sleep value"
115
115
  )
116
116
  elif self._sleep and self._sleep > 0:
@@ -124,7 +124,7 @@ class SessionSleep:
124
124
  def do_sleep(self):
125
125
  with self._lock:
126
126
  self._maybe_decay_sleep()
127
- if self._sleep and self._sleep<=self._min_sleep:
127
+ if self._sleep and self._sleep <= self._min_sleep:
128
128
  logging.getLogger("shared").debug(
129
129
  f"SessionSleep: Waiting [{self._sleep:.2f} seconds] due to {self.error_name} min sleep value"
130
130
  )
@@ -175,9 +175,6 @@ class SessionSleep:
175
175
  self._sleep = val
176
176
 
177
177
 
178
-
179
-
180
-
181
178
  class sessionManager:
182
179
  """
183
180
  Manages HTTP sessions, handling pooling, signing, retries, and dual backoff systems.
@@ -386,27 +383,27 @@ class sessionManager:
386
383
  # max_connections=self._connect_limit,
387
384
  # keepalive_expiry=self._keep_alive_exp,
388
385
  # ),
389
-
386
+
390
387
  # ),
391
388
  # )
392
389
 
393
- self._session=aiohttp.ClientSession(
394
- connector=aiohttp.TCPConnector(
395
- limit=self._connect_limit,
396
- ssl=(
397
- False
398
- if not settings.get_settings().ssl_verify
399
- else create_custom_ssl_context()
400
- ),
401
- ),
402
- timeout=aiohttp.ClientTimeout(
403
- total= self._total_timeout,
404
- connect= self._connect_timeout,
405
- sock_connect=self._pool_connect_timeout,
406
- sock_read= self._read_timeout,
390
+ self._session = aiohttp.ClientSession(
391
+ connector=aiohttp.TCPConnector(
392
+ limit=self._connect_limit,
393
+ ssl=(
394
+ False
395
+ if not settings.get_settings().ssl_verify
396
+ else create_custom_ssl_context()
397
+ ),
398
+ ),
399
+ timeout=aiohttp.ClientTimeout(
400
+ total=self._total_timeout,
401
+ connect=self._connect_timeout,
402
+ sock_connect=self._pool_connect_timeout,
403
+ sock_read=self._read_timeout,
407
404
  ),
408
405
  )
409
-
406
+
410
407
  else:
411
408
  self._session = httpx.Client(
412
409
  http2=True,
@@ -500,7 +497,6 @@ class sessionManager:
500
497
  pass
501
498
  else:
502
499
  self._forbidden_sleeper.do_sleep()
503
-
504
500
 
505
501
  if (
506
502
  SIGN in actions
@@ -525,8 +521,7 @@ class sessionManager:
525
521
  timeout=httpx.Timeout(
526
522
  total_timeout or self._total_timeout,
527
523
  connect=connect_timeout,
528
- pool=pool_connect_timeout
529
- or self._pool_connect_timeout,
524
+ pool=pool_connect_timeout or self._pool_connect_timeout,
530
525
  read=read_timeout or self._read_timeout,
531
526
  ),
532
527
  )
@@ -556,14 +551,14 @@ class sessionManager:
556
551
  json: dict = None,
557
552
  params: dict = None,
558
553
  data: dict = None,
559
- wait_min:float=None,
560
- wait_max:float=None,
561
- retries:bool=None,
562
- redirects:bool=True,
563
- total_timeout:bool=None,
564
- connect_timeout:float=None,
565
- pool_connect_timeout:float=None,
566
- read_timeout:float=None,
554
+ wait_min: float = None,
555
+ wait_max: float = None,
556
+ retries: bool = None,
557
+ redirects: bool = True,
558
+ total_timeout: bool = None,
559
+ connect_timeout: float = None,
560
+ pool_connect_timeout: float = None,
561
+ read_timeout: float = None,
567
562
  actions: Optional[list] = None,
568
563
  exceptions: Optional[list] = None,
569
564
  **kwargs,
@@ -572,15 +567,11 @@ class sessionManager:
572
567
  exceptions = exceptions or []
573
568
  retries = kwargs.get("retries") or self._retries
574
569
  wait_min = kwargs.get("wait_min") or self._wait_min
575
- wait_max = (
576
- kwargs.get("wait_max_exponential") or self._wait_max_exponential
577
- )
570
+ wait_max = kwargs.get("wait_max_exponential") or self._wait_max_exponential
578
571
 
579
572
  async for _ in AsyncRetrying(
580
573
  stop=tenacity.stop.stop_after_attempt(retries),
581
- wait=tenacity.wait_random(
582
- min=wait_min, max=wait_max
583
- ),
574
+ wait=tenacity.wait_random(min=wait_min, max=wait_max),
584
575
  retry=retry_if_not_exception_type((KeyboardInterrupt, SystemExit)),
585
576
  reraise=True,
586
577
  before=lambda x: (
@@ -595,7 +586,7 @@ class sessionManager:
595
586
  if await self._rate_limit_sleeper.async_do_sleep():
596
587
  pass
597
588
  else:
598
- self._forbidden_sleeper.async_do_sleep()
589
+ await self._forbidden_sleeper.async_do_sleep()
599
590
  if SIGN in actions or FORCED_NEW in actions or HEADERS in actions:
600
591
  headers = self._create_headers(
601
592
  headers, url, SIGN in actions, FORCED_NEW in actions
@@ -604,24 +595,24 @@ class sessionManager:
604
595
  cookies = self._create_cookies()
605
596
 
606
597
  r = await self._aio_funct(
607
- method,
608
- url,
609
- timeout=aiohttp.ClientTimeout(
610
- total=total_timeout or self._total_timeout,
611
- connect=connect_timeout or self._connect_timeout,
612
- sock_connect=pool_connect_timeout
613
- or self._pool_connect_timeout,
614
- sock_read=read_timeout or self._read_timeout,
615
- ),
616
- headers=headers,
617
- cookies=cookies,
618
- allow_redirects=redirects,
619
- proxy=self._proxy,
620
- params=params,
621
- json=json,
622
- data=data,
623
- ssl=ssl.create_default_context(cafile=certifi.where()),
624
- )
598
+ method,
599
+ url,
600
+ timeout=aiohttp.ClientTimeout(
601
+ total=total_timeout or self._total_timeout,
602
+ connect=connect_timeout or self._connect_timeout,
603
+ sock_connect=pool_connect_timeout
604
+ or self._pool_connect_timeout,
605
+ sock_read=read_timeout or self._read_timeout,
606
+ ),
607
+ headers=headers,
608
+ cookies=cookies,
609
+ allow_redirects=redirects,
610
+ proxy=self._proxy,
611
+ params=params,
612
+ json=json,
613
+ data=data,
614
+ ssl=ssl.create_default_context(cafile=certifi.where()),
615
+ )
625
616
 
626
617
  if not r.ok and r.status_code != 404:
627
618
  self._log.debug(f"[bold]failed: [bold] {r.url}")
@@ -640,7 +631,6 @@ class sessionManager:
640
631
  self._sem.release()
641
632
  raise E
642
633
 
643
-
644
634
  @property
645
635
  def sleep(self):
646
636
  return self._rate_limit_sleeper.sleep
@@ -649,7 +639,6 @@ class sessionManager:
649
639
  def sleep(self, val):
650
640
  self._rate_limit_sleeper.sleep = val
651
641
 
652
-
653
642
  def _httpx_funct(self, method, **kwargs):
654
643
  t = self._session.request(method.upper(), **kwargs)
655
644
  t.ok = not t.is_error
@@ -659,6 +648,7 @@ class sessionManager:
659
648
  t.iter_chunked = t.iter_bytes
660
649
  t.read_ = t.read
661
650
  return t
651
+
662
652
  async def _aio_funct(self, method, *args, **kwargs):
663
653
  # public function forces context manager use
664
654
  r = await self._session._request(method, *args, **kwargs)
@@ -670,4 +660,4 @@ class sessionManager:
670
660
  r.status_code = r.status
671
661
  r.read_ = r.content.read
672
662
  r.eof = r.content.at_eof
673
- return r
663
+ return r
@@ -1,5 +1,4 @@
1
1
  from ofscraper.classes.table.fields.numfield import PostiveNumField
2
- import ofscraper.utils.args.accessors.read as read_args
3
2
  import ofscraper.utils.settings as settings
4
3
 
5
4
 
@@ -13,7 +12,7 @@ class SizeMaxField(PostiveNumField):
13
12
 
14
13
  def on_input_changed(self, event):
15
14
  value = event.value if event.value else "0"
16
- args = read_args.retriveArgs()
15
+ args = settings.get_args()
17
16
  args.size_max = int(value)
18
17
  settings.update_args(args)
19
18
 
@@ -28,6 +27,6 @@ class SizeMinField(PostiveNumField):
28
27
 
29
28
  def on_input_changed(self, event):
30
29
  value = event.value if event.value else "0"
31
- args = read_args.retriveArgs()
30
+ args = settings.get_args()
32
31
  args.size_min = int(value)
33
32
  settings.update_args(args)
@@ -22,7 +22,6 @@ import ofscraper.data.api.timeline as timeline
22
22
  import ofscraper.classes.of.posts as posts_
23
23
  import ofscraper.classes.table.app as app
24
24
  import ofscraper.db.operations as operations
25
- import ofscraper.utils.args.accessors.read as read_args
26
25
  import ofscraper.utils.settings as settings
27
26
  import ofscraper.utils.auth.request as auth_requests
28
27
  import ofscraper.utils.console as console_
@@ -40,8 +39,8 @@ from ofscraper.db.operations_.media import (
40
39
  )
41
40
  from ofscraper.utils.checkers import check_auth
42
41
  from ofscraper.utils.context.run_async import run
43
- from ofscraper.scripts.final_user_script import post_user_script
44
- from ofscraper.main.close.final.final import final
42
+ from ofscraper.scripts.after_download_action_script import after_download_action_script
43
+ from ofscraper.main.close.final.final import final_action
45
44
  import ofscraper.main.manager as manager
46
45
  import ofscraper.filters.media.main as filters
47
46
  from ofscraper.commands.scraper.actions.download.download import process_dicts
@@ -73,11 +72,13 @@ def process_download_cart():
73
72
  None
74
73
  if len(cart_dict.keys()) > 0:
75
74
  for val in cart_dict.values():
76
- post_user_script(val["userdata"], val["media"], val["post"])
75
+ after_download_action_script(
76
+ val["userdata"], val["media"], val["post"]
77
+ )
77
78
  results = ["check cart results"] + list(
78
79
  map(lambda x: x["results"], cart_dict.values())
79
80
  )
80
- final(normal_data=results)
81
+ final_action(normal_data=results)
81
82
  time.sleep(5)
82
83
  except Exception as e:
83
84
  log.traceback_(f"Error in process_item: {e}")
@@ -110,7 +111,7 @@ def process_item():
110
111
  raise Exception(f"No data for {media_id}_{post_id}_{username}")
111
112
  log.info(f"Added url {media.url or media.mpd}")
112
113
  log.info("Sending URLs to OF-Scraper")
113
- manager.Manager.model_manager.set_data_all_subs_model_dict(username)
114
+ manager.Manager.model_manager.add_model(username)
114
115
  post = media.post
115
116
  model_id = media.post.model_id
116
117
  username = media.post.username
@@ -136,6 +137,7 @@ def process_item():
136
137
  app.app.table.update_cell_at_key(
137
138
  key, "download_cart", Text("[downloaded]", style="bold green")
138
139
  )
140
+ #might not be needed because of lack of final_script
139
141
  manager.Manager.model_manager.mark_as_processed(username)
140
142
  break
141
143
  except Exception as E:
@@ -190,7 +192,7 @@ async def data_refill(media_id, post_id, target_name, model_id):
190
192
 
191
193
 
192
194
  def allow_check_dupes():
193
- args = read_args.retriveArgs()
195
+ args = settings.get_args()
194
196
  args.force_all = True
195
197
  settings.update_args(args)
196
198
 
@@ -219,7 +221,7 @@ def checker():
219
221
 
220
222
 
221
223
  def set_after_check_mode():
222
- args = read_args.retriveArgs()
224
+ args = settings.get_args()
223
225
  args.after = 0
224
226
  settings.update_args(args)
225
227
 
@@ -413,7 +415,7 @@ async def post_check_retriver():
413
415
 
414
416
  def reset_data():
415
417
  # clean up args once check modes are ready to launch
416
- args = read_args.retriveArgs()
418
+ args = settings.get_args()
417
419
  if args.username:
418
420
  args.username = settings.get_settings().usernames = None
419
421
  settings.update_args(args)
@@ -11,7 +11,6 @@ from humanfriendly import format_size
11
11
 
12
12
  import ofscraper.utils.console as console
13
13
 
14
- import ofscraper.utils.args.accessors.read as read_args
15
14
  from ofscraper.db.operations_.media import (
16
15
  get_timeline_media,
17
16
  get_archived_media,
@@ -54,7 +53,7 @@ class DBManager:
54
53
 
55
54
  @run_async
56
55
  async def get_all_media(self):
57
- args = read_args.retriveArgs()
56
+ args = settings.get_args()
58
57
  timeline = []
59
58
  archived = []
60
59
  messages = []
@@ -108,7 +107,7 @@ class DBManager:
108
107
 
109
108
  def filter_media(self):
110
109
  self.log.info(f"filtering media for {self.username}_{self.model_id}")
111
- args = read_args.retriveArgs()
110
+ args = settings.get_args()
112
111
  medias = self.media
113
112
  # downloaded
114
113
  if args.downloaded:
@@ -10,8 +10,6 @@ import ofscraper.classes.of.media as media_
10
10
  import ofscraper.classes.of.posts as posts_
11
11
  import ofscraper.db.operations as operations
12
12
  import ofscraper.commands.scraper.actions.download.download as download
13
- import ofscraper.utils.args.accessors.read as read_args
14
- import ofscraper.utils.args.mutators.write as write_args
15
13
  import ofscraper.utils.of_env.of_env as of_env
16
14
  import ofscraper.utils.live.screens as progress_utils
17
15
  import ofscraper.utils.live.updater as progress_updater
@@ -23,7 +21,7 @@ from ofscraper.db.operations import make_changes_to_content_tables
23
21
  from ofscraper.db.operations_.media import batch_mediainsert
24
22
  from ofscraper.utils.checkers import check_auth
25
23
  from ofscraper.utils.context.run_async import run
26
- from ofscraper.main.close.final.final import final
24
+ from ofscraper.main.close.final.final import final_action
27
25
  from ofscraper.commands.scraper.actions.download.utils.text import textDownloader
28
26
  import ofscraper.main.manager as manager
29
27
  import ofscraper.utils.settings as settings
@@ -95,7 +93,7 @@ def manual_download(urls=None):
95
93
  def final_action(results):
96
94
  normal_data = ["Manual Mode Results"]
97
95
  normal_data.extend(results)
98
- final(
96
+ final_action(
99
97
  normal_data=normal_data,
100
98
  scrape_paid_data=None,
101
99
  user_first_data=None,
@@ -103,13 +101,13 @@ def final_action(results):
103
101
 
104
102
 
105
103
  def allow_manual_dupes():
106
- args = read_args.retriveArgs()
104
+ args = settings.get_args()
107
105
  args.force_all = True
108
- write_args.setArgs(args)
106
+ settings.update_args(args)
109
107
 
110
108
 
111
109
  def set_user_data(url_dicts):
112
- manager.Manager.model_manager.set_data_all_subs_model_dict(
110
+ manager.Manager.model_manager.add_model(
113
111
  [nested_dict.get("username") for nested_dict in url_dicts.values()]
114
112
  )
115
113
 
@@ -297,7 +295,7 @@ def get_info(url):
297
295
 
298
296
 
299
297
  def url_helper(urls):
300
- args = read_args.retriveArgs()
298
+ args = settings.get_args()
301
299
  out = []
302
300
  out.extend(args.get("file", []) or [])
303
301
  out.extend(args.get("url", []) or [])
@@ -1,14 +1,14 @@
1
1
  r"""
2
-
3
- _______ _______ _______ _______ _______ _______ _______ _______ _______
2
+
3
+ _______ _______ _______ _______ _______ _______ _______ _______ _______
4
4
  ( ___ )( ____ \ ( ____ \( ____ \( ____ )( ___ )( ____ )( ____ \( ____ )
5
5
  | ( ) || ( \/ | ( \/| ( \/| ( )|| ( ) || ( )|| ( \/| ( )|
6
6
  | | | || (__ _____ | (_____ | | | (____)|| (___) || (____)|| (__ | (____)|
7
7
  | | | || __) (_____)(_____ )| | | __)| ___ || _____)| __) | __)
8
- | | | || ( ) || | | (\ ( | ( ) || ( | ( | (\ (
8
+ | | | || ( ) || | | (\ ( | ( ) || ( | ( | (\ (
9
9
  | (___) || ) /\____) || (____/\| ) \ \__| ) ( || ) | (____/\| ) \ \__
10
10
  (_______)|/ \_______)(_______/|/ \__/|/ \||/ (_______/|/ \__/
11
-
11
+
12
12
  """
13
13
 
14
14
  import asyncio
@@ -23,6 +23,7 @@ from ofscraper.commands.scraper.actions.utils.log import get_medialog
23
23
 
24
24
  from ofscraper.commands.metadata.manager import MetaDataManager
25
25
  from ofscraper.commands.metadata.desc import desc
26
+ from ofscraper.classes.of.media import Media
26
27
 
27
28
 
28
29
  async def consumer(aws, task1, medialist, lock):
@@ -36,7 +37,7 @@ async def consumer(aws, task1, medialist, lock):
36
37
  break
37
38
  else:
38
39
  try:
39
- ele = data[1]
40
+ ele: Media = data[1]
40
41
  media_type = await MetaDataManager().metadata(*data)
41
42
  except Exception as e:
42
43
  common_globals.log.info(
@@ -47,13 +48,17 @@ async def consumer(aws, task1, medialist, lock):
47
48
  try:
48
49
  if media_type == "images":
49
50
  common_globals.photo_count += 1
51
+ ele.mark_download_finished()
50
52
 
51
53
  elif media_type == "videos":
52
54
  common_globals.video_count += 1
55
+ ele.mark_download_finished()
53
56
  elif media_type == "audios":
54
57
  common_globals.audio_count += 1
58
+ ele.mark_download_finished()
55
59
  elif media_type == "skipped":
56
60
  common_globals.skipped += 1
61
+ ele.mark_download_finished(success=False)
57
62
  elif media_type == "forced_skipped":
58
63
  common_globals.forced_skipped += 1
59
64
  sum_count = (
@@ -64,6 +69,7 @@ async def consumer(aws, task1, medialist, lock):
64
69
  + common_globals.forced_skipped
65
70
  )
66
71
  log_download_progress(media_type)
72
+
67
73
  progress_updater.update_metadata_task(
68
74
  task1,
69
75
  description=desc.format(