ofscraper 3.10.dev10__tar.gz → 3.10.2__tar.gz

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