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.
Files changed (392) hide show
  1. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/PKG-INFO +7 -8
  2. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/README.md +2 -6
  3. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/__main__.py +1 -1
  4. ofscraper-3.11.2/ofscraper/actions/actions/download/batch/downloadbatch.py +224 -0
  5. ofscraper-3.11.2/ofscraper/actions/actions/download/batch/utils/consumer.py +29 -0
  6. ofscraper-3.11.2/ofscraper/actions/actions/download/batch/utils/queue.py +123 -0
  7. ofscraper-3.11.2/ofscraper/actions/actions/download/download.py +74 -0
  8. ofscraper-3.11.2/ofscraper/actions/actions/download/managers/alt_download.py +450 -0
  9. ofscraper-3.11.2/ofscraper/actions/actions/download/managers/downloadmanager.py +160 -0
  10. ofscraper-3.11.2/ofscraper/actions/actions/download/managers/main_download.py +355 -0
  11. ofscraper-3.11.2/ofscraper/actions/actions/download/normal/downloadnormal.py +92 -0
  12. ofscraper-3.11.2/ofscraper/actions/actions/download/normal/utils/consumer.py +98 -0
  13. ofscraper-3.11.2/ofscraper/actions/actions/download/runners/download.py +42 -0
  14. {ofscraper-3.11.dev1/ofscraper/download/utils/progress → ofscraper-3.11.2/ofscraper/actions/actions/download/utils}/chunk.py +7 -9
  15. ofscraper-3.11.2/ofscraper/actions/actions/download/utils/desc.py +1 -0
  16. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/actions/actions}/download/utils/keyhelpers.py +8 -10
  17. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/actions/actions}/download/utils/text.py +1 -1
  18. {ofscraper-3.11.dev1/ofscraper/commands/scraper/actions → ofscraper-3.11.2/ofscraper/actions/actions/like}/like.py +1 -1
  19. ofscraper-3.11.2/ofscraper/actions/actions/metadata/batch/metadatabatch.py +232 -0
  20. ofscraper-3.11.2/ofscraper/actions/actions/metadata/batch/utils/consumer.py +26 -0
  21. ofscraper-3.11.2/ofscraper/actions/actions/metadata/batch/utils/queue.py +113 -0
  22. ofscraper-3.11.2/ofscraper/actions/actions/metadata/managers/metadata.py +221 -0
  23. ofscraper-3.11.2/ofscraper/actions/actions/metadata/metadata.py +37 -0
  24. ofscraper-3.11.2/ofscraper/actions/actions/metadata/normal/metadata.py +92 -0
  25. ofscraper-3.11.2/ofscraper/actions/actions/metadata/normal/utils/consumer.py +86 -0
  26. ofscraper-3.11.2/ofscraper/actions/actions/metadata/utils/desc.py +1 -0
  27. ofscraper-3.11.2/ofscraper/actions/manager.py +4 -0
  28. ofscraper-3.11.dev1/ofscraper/download/utils/check/space.py → ofscraper-3.11.2/ofscraper/actions/utils/buffer.py +7 -7
  29. {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/general.py +8 -15
  30. {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/globals.py +29 -9
  31. {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/log.py +9 -7
  32. ofscraper-3.11.2/ofscraper/actions/utils/mediasplit.py +13 -0
  33. ofscraper-3.11.2/ofscraper/actions/utils/params.py +14 -0
  34. {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/paths/paths.py +8 -7
  35. ofscraper-3.11.2/ofscraper/actions/utils/progress/convert.py +17 -0
  36. ofscraper-3.11.2/ofscraper/actions/utils/progress/update.py +6 -0
  37. {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/send/chunk.py +4 -4
  38. {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/send/message.py +1 -1
  39. {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/send/send_bar_msg.py +1 -1
  40. ofscraper-3.11.2/ofscraper/actions/utils/threads.py +51 -0
  41. {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/workers.py +2 -3
  42. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/download_retries.py +1 -1
  43. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/media.py +75 -51
  44. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/placeholder.py +7 -1
  45. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/progress/task.py +3 -3
  46. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/progress/transfercol.py +1 -2
  47. ofscraper-3.11.2/ofscraper/classes/sessionmanager/download.py +133 -0
  48. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/sessionmanager/ofsession.py +4 -6
  49. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/sessionmanager/sessionmanager.py +16 -41
  50. ofscraper-3.11.2/ofscraper/commands/managers/manager.py +190 -0
  51. ofscraper-3.11.2/ofscraper/commands/managers/metadata.py +228 -0
  52. ofscraper-3.11.2/ofscraper/commands/managers/scraper.py +123 -0
  53. {ofscraper-3.11.dev1/ofscraper/commands → ofscraper-3.11.2/ofscraper/commands/runners}/check.py +63 -34
  54. {ofscraper-3.11.dev1/ofscraper/commands → ofscraper-3.11.2/ofscraper/commands/runners}/manual.py +22 -30
  55. {ofscraper-3.11.dev1/ofscraper/commands → ofscraper-3.11.2/ofscraper/commands/runners}/metadata/metadata.py +14 -14
  56. {ofscraper-3.11.dev1/ofscraper/commands → ofscraper-3.11.2/ofscraper/commands/runners}/scraper/scraper.py +3 -4
  57. {ofscraper-3.11.dev1/ofscraper/commands/scraper/utils/setup → ofscraper-3.11.2/ofscraper/commands/runners/scraper/utils}/prepare.py +17 -5
  58. ofscraper-3.11.2/ofscraper/commands/runners/scraper/utils/print.py +6 -0
  59. {ofscraper-3.11.dev1/ofscraper/commands → ofscraper-3.11.2/ofscraper/commands/runners}/scraper/utils/select.py +5 -5
  60. {ofscraper-3.11.dev1/ofscraper/commands/utils/setup → ofscraper-3.11.2/ofscraper/commands/utils}/picker.py +5 -5
  61. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/constants.py +6 -1
  62. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/action/download.py +1 -2
  63. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/action/metadata.py +1 -1
  64. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/config.py +3 -1
  65. ofscraper-3.11.2/ofscraper/const/values/download.py +1 -0
  66. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/general.py +2 -0
  67. ofscraper-3.11.2/ofscraper/const/values/path/general.py +1 -0
  68. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/prompts.py +1 -0
  69. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/discord.py +1 -1
  70. ofscraper-3.11.2/ofscraper/const/values/req/mpd.py +6 -0
  71. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/req.py +9 -9
  72. ofscraper-3.11.2/ofscraper/const/values/rich.py +3 -0
  73. ofscraper-3.11.2/ofscraper/const/values/system.py +2 -0
  74. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/url/other_url.py +1 -1
  75. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/archive.py +16 -71
  76. {ofscraper-3.11.dev1/ofscraper/api/utils → ofscraper-3.11.2/ofscraper/data/api/common}/after.py +1 -1
  77. {ofscraper-3.11.dev1/ofscraper/api/utils → ofscraper-3.11.2/ofscraper/data/api/common}/check.py +2 -2
  78. ofscraper-3.11.2/ofscraper/data/api/common/logs/logs.py +50 -0
  79. ofscraper-3.11.2/ofscraper/data/api/common/logs/strings.py +15 -0
  80. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/highlights.py +30 -56
  81. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/labels.py +25 -70
  82. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/me.py +3 -3
  83. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/messages.py +20 -68
  84. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/paid.py +16 -36
  85. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/pinned.py +12 -39
  86. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/profile.py +4 -5
  87. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/streams.py +19 -70
  88. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/subscriptions/individual.py +2 -2
  89. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/subscriptions/lists.py +13 -61
  90. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/subscriptions/subscriptions.py +12 -12
  91. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/timeline.py +20 -78
  92. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/models/retriver.py +4 -4
  93. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/models/selector.py +3 -3
  94. {ofscraper-3.11.dev1/ofscraper/commands/utils → ofscraper-3.11.2/ofscraper/data/posts}/post.py +11 -11
  95. {ofscraper-3.11.dev1/ofscraper/commands/utils → ofscraper-3.11.2/ofscraper/data/posts}/scrape_paid.py +26 -5
  96. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/labels.py +3 -3
  97. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/messages.py +4 -4
  98. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/posts.py +8 -5
  99. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/stories.py +5 -5
  100. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/media/filters.py +15 -7
  101. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/media/main.py +56 -20
  102. ofscraper-3.11.2/ofscraper/filters/media/utils/trace.py +22 -0
  103. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/models/date.py +1 -1
  104. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/models/flags.py +1 -1
  105. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/models/other.py +1 -1
  106. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/models/price.py +1 -1
  107. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/models/subtype.py +1 -1
  108. ofscraper-3.11.2/ofscraper/filters/models/utils/logs.py +13 -0
  109. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/config.py +67 -14
  110. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/utils/prompt_helpers.py +1 -1
  111. ofscraper-3.11.2/ofscraper/runner/close/final/final.py +21 -0
  112. ofscraper-3.11.2/ofscraper/runner/close/final/final_log.py +33 -0
  113. ofscraper-3.11.2/ofscraper/runner/close/final/final_script.py +44 -0
  114. ofscraper-3.11.2/ofscraper/runner/close/final/final_user.py +30 -0
  115. {ofscraper-3.11.dev1/ofscraper/runner → ofscraper-3.11.2/ofscraper/runner/open}/load.py +1 -1
  116. {ofscraper-3.11.dev1/ofscraper/runner → ofscraper-3.11.2/ofscraper/runner/open}/run.py +2 -2
  117. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/accessors/areas.py +6 -6
  118. ofscraper-3.11.2/ofscraper/utils/args/helpers/hide_args.py +12 -0
  119. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/advanced_program.py +13 -1
  120. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/content.py +9 -9
  121. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/download.py +14 -0
  122. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/logging.py +1 -1
  123. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/program.py +2 -2
  124. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/common.py +2 -2
  125. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/manual.py +3 -1
  126. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/message_check.py +2 -0
  127. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/metadata.py +26 -28
  128. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/paid_check.py +2 -1
  129. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/post_check.py +5 -2
  130. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/story_check.py +3 -0
  131. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/advanced_processing.py +8 -6
  132. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/advanced_program.py +10 -5
  133. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/advanced_user_filter.py +11 -6
  134. ofscraper-3.11.2/ofscraper/utils/args/parse/groups/automatic.py +15 -0
  135. ofscraper-3.11.2/ofscraper/utils/args/parse/groups/check_content.py +17 -0
  136. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/content.py +15 -9
  137. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/download.py +14 -5
  138. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/file.py +15 -7
  139. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/logging.py +11 -5
  140. 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
  141. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/program.py +9 -4
  142. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/user_list.py +9 -6
  143. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/groups/user_select.py +10 -4
  144. ofscraper-3.11.2/ofscraper/utils/args/parse/groups/user_sort.py +16 -0
  145. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/request.py +11 -11
  146. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/checkers.py +1 -1
  147. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/data.py +40 -5
  148. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/menu.py +7 -0
  149. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/schema.py +5 -1
  150. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/context/stdout.py +0 -13
  151. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/dates.py +1 -0
  152. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/groups.py +10 -6
  153. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/progress.py +10 -0
  154. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/screens.py +14 -1
  155. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/updater.py +15 -1
  156. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/classes/classes.py +2 -23
  157. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/classes/handlers/discord.py +13 -8
  158. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/classes/handlers/file.py +5 -13
  159. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/classes/handlers/pipe.py +4 -0
  160. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/classes/handlers/rich.py +38 -13
  161. ofscraper-3.11.2/ofscraper/utils/logs/classes/handlers/text.py +27 -0
  162. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/close.py +7 -15
  163. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/globals.py +1 -0
  164. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/logger.py +7 -7
  165. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/logs.py +1 -1
  166. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/other.py +65 -75
  167. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/stdout.py +106 -51
  168. ofscraper-3.11.dev1/ofscraper/utils/logs/helpers.py → ofscraper-3.11.2/ofscraper/utils/logs/utils/level.py +0 -3
  169. ofscraper-3.11.2/ofscraper/utils/logs/utils/trace.py +5 -0
  170. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/me.py +3 -3
  171. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/menu.py +7 -3
  172. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/paths/paths.py +2 -0
  173. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/profiles/data.py +1 -1
  174. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/run.py +6 -4
  175. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/separate.py +1 -1
  176. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/settings.py +10 -3
  177. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/system/network.py +0 -1
  178. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/system/speed.py +8 -2
  179. ofscraper-3.11.2/ofscraper/utils/system/subprocess.py +16 -0
  180. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/pyproject.toml +5 -2
  181. ofscraper-3.11.dev1/ofscraper/api/utils/logs.py +0 -8
  182. ofscraper-3.11.dev1/ofscraper/classes/sessionmanager/download.py +0 -33
  183. ofscraper-3.11.dev1/ofscraper/commands/metadata/execute.py +0 -88
  184. ofscraper-3.11.dev1/ofscraper/commands/metadata/normal.py +0 -29
  185. ofscraper-3.11.dev1/ofscraper/commands/metadata/paid.py +0 -57
  186. ofscraper-3.11.dev1/ofscraper/commands/metadata/userfirst.py +0 -85
  187. ofscraper-3.11.dev1/ofscraper/commands/scraper/actions/download.py +0 -82
  188. ofscraper-3.11.dev1/ofscraper/commands/scraper/execute.py +0 -42
  189. ofscraper-3.11.dev1/ofscraper/commands/scraper/normal.py +0 -12
  190. ofscraper-3.11.dev1/ofscraper/commands/scraper/userfirst.py +0 -50
  191. ofscraper-3.11.dev1/ofscraper/commands/scraper/utils/print.py +0 -8
  192. ofscraper-3.11.dev1/ofscraper/commands/scraper/utils/setup/runner.py +0 -40
  193. ofscraper-3.11.dev1/ofscraper/commands/utils/data.py +0 -40
  194. ofscraper-3.11.dev1/ofscraper/commands/utils/final_log.py +0 -18
  195. ofscraper-3.11.dev1/ofscraper/commands/utils/shared.py +0 -9
  196. ofscraper-3.11.dev1/ofscraper/commands/utils/wrappers/normal.py +0 -114
  197. ofscraper-3.11.dev1/ofscraper/commands/utils/wrappers/user_first.py +0 -91
  198. ofscraper-3.11.dev1/ofscraper/const/values/progress.py +0 -1
  199. ofscraper-3.11.dev1/ofscraper/const/values/req/mpd.py +0 -6
  200. ofscraper-3.11.dev1/ofscraper/download/alt_download.py +0 -284
  201. ofscraper-3.11.dev1/ofscraper/download/alt_downloadbatch.py +0 -309
  202. ofscraper-3.11.dev1/ofscraper/download/download.py +0 -70
  203. ofscraper-3.11.dev1/ofscraper/download/downloadbatch.py +0 -434
  204. ofscraper-3.11.dev1/ofscraper/download/downloadnormal.py +0 -210
  205. ofscraper-3.11.dev1/ofscraper/download/main_download.py +0 -272
  206. ofscraper-3.11.dev1/ofscraper/download/main_downloadbatch.py +0 -289
  207. ofscraper-3.11.dev1/ofscraper/download/utils/alt/attempt.py +0 -8
  208. ofscraper-3.11.dev1/ofscraper/download/utils/alt/cache/resume.py +0 -25
  209. ofscraper-3.11.dev1/ofscraper/download/utils/alt/handlers.py +0 -62
  210. ofscraper-3.11.dev1/ofscraper/download/utils/alt/item.py +0 -29
  211. ofscraper-3.11.dev1/ofscraper/download/utils/alt/params.py +0 -6
  212. ofscraper-3.11.dev1/ofscraper/download/utils/check/forced.py +0 -42
  213. ofscraper-3.11.dev1/ofscraper/download/utils/check/size.py +0 -30
  214. ofscraper-3.11.dev1/ofscraper/download/utils/handle_result.py +0 -129
  215. ofscraper-3.11.dev1/ofscraper/download/utils/main/cache/resume.py +0 -25
  216. ofscraper-3.11.dev1/ofscraper/download/utils/main/handlers.py +0 -63
  217. ofscraper-3.11.dev1/ofscraper/download/utils/metadata.py +0 -197
  218. ofscraper-3.11.dev1/ofscraper/download/utils/progress/progress.py +0 -17
  219. ofscraper-3.11.dev1/ofscraper/download/utils/resume/resume.py +0 -31
  220. ofscraper-3.11.dev1/ofscraper/download/utils/total.py +0 -20
  221. ofscraper-3.11.dev1/ofscraper/filters/media/utils/trace.py +0 -57
  222. ofscraper-3.11.dev1/ofscraper/filters/models/helpers.py +0 -26
  223. ofscraper-3.11.dev1/ofscraper/utils/args/parse/groups/automatic.py +0 -11
  224. ofscraper-3.11.dev1/ofscraper/utils/args/parse/groups/check_content.py +0 -14
  225. ofscraper-3.11.dev1/ofscraper/utils/args/parse/groups/user_sort.py +0 -14
  226. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/LICENSE +0 -0
  227. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/__version__.py +0 -0
  228. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/__version__.pye +0 -0
  229. {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/paths/media.py +0 -0
  230. {ofscraper-3.11.dev1/ofscraper/download → ofscraper-3.11.2/ofscraper/actions}/utils/retries.py +0 -0
  231. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/base.py +0 -0
  232. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/labels.py +0 -0
  233. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/models.py +0 -0
  234. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/posts.py +0 -0
  235. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/progress/progress.py +0 -0
  236. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/sessionmanager/chunk.py +0 -0
  237. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/button.py +0 -0
  238. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/boolfield.py +0 -0
  239. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/datefield.py +0 -0
  240. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/mediafield.py +0 -0
  241. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/numfield.py +0 -0
  242. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/pricefield.py +0 -0
  243. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/responsefield.py +0 -0
  244. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/selectfield.py +0 -0
  245. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/textsearch.py +0 -0
  246. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/fields/timefield.py +0 -0
  247. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/inputs/filterinput.py +0 -0
  248. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/inputs/intergerinput.py +0 -0
  249. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/inputs/strinput.py +0 -0
  250. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/row_names.py +0 -0
  251. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/status.py +0 -0
  252. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/table.py +0 -0
  253. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/classes/table/table_console.py +0 -0
  254. {ofscraper-3.11.dev1/ofscraper/commands/scraper/utils/setup → ofscraper-3.11.2/ofscraper/commands/runners/scraper/utils}/prompt.py +0 -0
  255. {ofscraper-3.11.dev1/ofscraper/commands/scraper → ofscraper-3.11.2/ofscraper/commands}/utils/scrape_context.py +0 -0
  256. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/commands/utils/strings.py +0 -0
  257. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/action/like.py +0 -0
  258. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/binary.py +0 -0
  259. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/date.py +0 -0
  260. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/dynamic.py +0 -0
  261. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/list.py +0 -0
  262. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/live.py +0 -0
  263. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/logger.py +0 -0
  264. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/path/bytes.py +0 -0
  265. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/path/files.py +0 -0
  266. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/path/path.py +0 -0
  267. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/anon.py +0 -0
  268. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/api.py +0 -0
  269. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/cdm.py +0 -0
  270. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/git.py +0 -0
  271. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/req/like.py +0 -0
  272. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/table.py +0 -0
  273. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/test/test_constants.py +0 -0
  274. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/time.py +0 -0
  275. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/const/values/url/url.py +0 -0
  276. {ofscraper-3.11.dev1/ofscraper/api/utils → ofscraper-3.11.2/ofscraper/data/api/common}/cache/read.py +0 -0
  277. {ofscraper-3.11.dev1/ofscraper/api/utils → ofscraper-3.11.2/ofscraper/data/api/common}/cache/write.py +0 -0
  278. {ofscraper-3.11.dev1/ofscraper/api/utils → ofscraper-3.11.2/ofscraper/data/api/common}/timeline.py +0 -0
  279. {ofscraper-3.11.dev1/ofscraper → ofscraper-3.11.2/ofscraper/data}/api/init.py +0 -0
  280. /ofscraper-3.11.dev1/ofscraper/api/subscriptions/helpers.py → /ofscraper-3.11.2/ofscraper/data/api/subscriptions/common.py +0 -0
  281. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/__init__.py +0 -0
  282. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/backup.py +0 -0
  283. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/difference.py +0 -0
  284. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/merge.py +0 -0
  285. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations.py +0 -0
  286. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/empty.py +0 -0
  287. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/media.py +0 -0
  288. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/others.py +0 -0
  289. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/profile.py +0 -0
  290. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/operations_/wrapper.py +0 -0
  291. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/db/transition.py +0 -0
  292. /ofscraper-3.11.dev1/ofscraper/db/operations_/helpers.py → /ofscraper-3.11.2/ofscraper/db/utils/convert.py +0 -0
  293. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/media/sorter.py +0 -0
  294. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/filters/models/sort.py +0 -0
  295. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/keybindings.py +0 -0
  296. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/promptConvert.py +0 -0
  297. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/actions.py +0 -0
  298. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/area.py +0 -0
  299. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/auth.py +0 -0
  300. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/binary.py +0 -0
  301. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/menu.py +0 -0
  302. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/merge.py +0 -0
  303. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/model.py +0 -0
  304. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_groups/profile.py +0 -0
  305. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_strings.py +0 -0
  306. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompt_validators.py +0 -0
  307. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/prompts.py +0 -0
  308. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/prompts/utils/model_helpers.py +0 -0
  309. {ofscraper-3.11.dev1/ofscraper/runner → ofscraper-3.11.2/ofscraper/runner/close}/exit.py +0 -0
  310. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/__init__.py +0 -0
  311. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/actions.py +0 -0
  312. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/ads.py +0 -0
  313. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/accessors/output.py +0 -0
  314. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/accessors/quality.py +0 -0
  315. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/accessors/read.py +0 -0
  316. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/callbacks/choice.py +0 -0
  317. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/callbacks/file.py +0 -0
  318. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/callbacks/string.py +0 -0
  319. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/callbacks/username.py +0 -0
  320. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/globals.py +0 -0
  321. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/main.py +0 -0
  322. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/mutators/before.py +0 -0
  323. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/mutators/change.py +0 -0
  324. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/mutators/user.py +0 -0
  325. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/mutators/write.py +0 -0
  326. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/advanced_processing.py +0 -0
  327. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/advanced_user_filter.py +0 -0
  328. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/automatic.py +0 -0
  329. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/check.py +0 -0
  330. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/file.py +0 -0
  331. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/media_type.py +0 -0
  332. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/user_list.py +0 -0
  333. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/user_select.py +0 -0
  334. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/user_sort.py +0 -0
  335. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/arguments/utils/date.py +0 -0
  336. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/main.py +0 -0
  337. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/manual.py +0 -0
  338. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/message.py +0 -0
  339. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/metadata.py +0 -0
  340. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/paid.py +0 -0
  341. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/post.py +0 -0
  342. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/commands/story.py +0 -0
  343. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/advanced_common.py +0 -0
  344. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/main.py +0 -0
  345. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/parse/group_bundles/utils/check.py +0 -0
  346. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/types/arrow.py +0 -0
  347. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/args/types/choice.py +0 -0
  348. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/data.py +0 -0
  349. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/file.py +0 -0
  350. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/make.py +0 -0
  351. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/schema.py +0 -0
  352. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/utils/context.py +0 -0
  353. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/utils/dict.py +0 -0
  354. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/utils/prompt.py +0 -0
  355. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/utils/warning/check.py +0 -0
  356. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/utils/warning/print.py +0 -0
  357. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/auth/utils/warning/warning.py +0 -0
  358. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/binaries.py +0 -0
  359. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/cache.py +0 -0
  360. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/config.py +0 -0
  361. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/custom.py +0 -0
  362. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/file.py +0 -0
  363. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/utils/context.py +0 -0
  364. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/config/utils/wrapper.py +0 -0
  365. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/console.py +0 -0
  366. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/constants.py +0 -0
  367. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/context/exit.py +0 -0
  368. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/context/run_async.py +0 -0
  369. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/encoding.py +0 -0
  370. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/hash.py +0 -0
  371. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/empty.py +0 -0
  372. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/live.py +0 -0
  373. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/panel.py +0 -0
  374. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/reader.py +0 -0
  375. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/live/tasks.py +0 -0
  376. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/classes/handlers/zmq.py +0 -0
  377. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/logs/handle.py +0 -0
  378. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/manager.py +0 -0
  379. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/merge.py +0 -0
  380. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/paths/check.py +0 -0
  381. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/paths/common.py +0 -0
  382. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/paths/db.py +0 -0
  383. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/paths/manage.py +0 -0
  384. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/profiles/manage.py +0 -0
  385. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/profiles/tools.py +0 -0
  386. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/sems.py +0 -0
  387. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/string.py +0 -0
  388. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/system/free.py +0 -0
  389. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/system/priority.py +0 -0
  390. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/system/system.py +0 -0
  391. {ofscraper-3.11.dev1 → ofscraper-3.11.2}/ofscraper/utils/text.py +0 -0
  392. {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.dev1
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,<70.0.0)
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
- # FOR NOW ALL AUTH ISSUE REPORTS WILL BE CLOSED
59
+ # For auth issues
57
60
 
58
- # USE THE PIN POST
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
- # FOR NOW ALL AUTH ISSUE REPORTS WILL BE CLOSED
1
+ # For auth issues
2
2
 
3
- # USE THE PIN POST
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
 
@@ -1,7 +1,7 @@
1
1
  #!/root/OF-Scraper/.venv/bin/python
2
2
  import multiprocessing
3
3
 
4
- import ofscraper.runner.load as load
4
+ import ofscraper.runner.open.load as load
5
5
  import ofscraper.utils.system.system as system
6
6
 
7
7
 
@@ -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")