ofscraper 3.10.dev4__tar.gz → 3.10.dev6__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 (256) hide show
  1. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/PKG-INFO +1 -1
  2. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/commands/check.py +4 -4
  3. ofscraper-3.10.dev6/ofscraper/commands/helpers/data.py +39 -0
  4. ofscraper-3.10.dev6/ofscraper/commands/helpers/final_log.py +14 -0
  5. ofscraper-3.10.dev6/ofscraper/commands/helpers/normal.py +52 -0
  6. ofscraper-3.10.dev6/ofscraper/commands/helpers/scrape_paid.py +69 -0
  7. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/commands/helpers/shared.py +5 -0
  8. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/commands/helpers/strings.py +11 -2
  9. ofscraper-3.10.dev4/ofscraper/commands/helpers/context.py → ofscraper-3.10.dev6/ofscraper/commands/helpers/user_first.py +4 -73
  10. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/commands/metadata.py +57 -97
  11. ofscraper-3.10.dev6/ofscraper/commands/scraper/actions/download.py +61 -0
  12. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/commands/scraper/actions/like.py +38 -9
  13. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/commands/scraper/post.py +1 -1
  14. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/commands/scraper/runner.py +30 -20
  15. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/general.py +1 -0
  16. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/alt_download.py +9 -8
  17. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/alt_downloadbatch.py +11 -5
  18. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/main_download.py +7 -8
  19. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/main_downloadbatch.py +8 -5
  20. ofscraper-3.10.dev6/ofscraper/download/shared/common/alt_common.py +23 -0
  21. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/shared/common/general.py +1 -0
  22. ofscraper-3.10.dev4/ofscraper/download/shared/common/alt_common.py → ofscraper-3.10.dev6/ofscraper/download/shared/common/handle_result.py +49 -24
  23. ofscraper-3.10.dev6/ofscraper/download/shared/common/send_bar_msg.py +50 -0
  24. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/shared/utils/log.py +28 -9
  25. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/filters/media/helpers.py +1 -1
  26. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/promptConvert.py +0 -3
  27. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/prompt_groups/model.py +6 -6
  28. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/runner/exit.py +2 -0
  29. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/runner/run.py +2 -5
  30. ofscraper-3.10.dev6/ofscraper/utils/live/empty.py +19 -0
  31. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/live/live.py +5 -0
  32. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/pyproject.toml +1 -1
  33. ofscraper-3.10.dev4/ofscraper/commands/scraper/actions/download.py +0 -80
  34. ofscraper-3.10.dev4/ofscraper/download/shared/common/main_common.py +0 -53
  35. ofscraper-3.10.dev4/ofscraper/utils/live/empty.py +0 -13
  36. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/LICENSE +0 -0
  37. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/README.md +0 -0
  38. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/__main__.py +0 -0
  39. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/__version__.py +0 -0
  40. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/__version__.pye +0 -0
  41. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/archive.py +0 -0
  42. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/common/logs.py +0 -0
  43. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/highlights.py +0 -0
  44. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/init.py +0 -0
  45. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/labels.py +0 -0
  46. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/me.py +0 -0
  47. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/messages.py +0 -0
  48. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/paid.py +0 -0
  49. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/pinned.py +0 -0
  50. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/profile.py +0 -0
  51. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/subscriptions/helpers.py +0 -0
  52. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/subscriptions/individual.py +0 -0
  53. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/subscriptions/lists.py +0 -0
  54. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/subscriptions/subscriptions.py +0 -0
  55. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/api/timeline.py +0 -0
  56. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/base.py +0 -0
  57. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/labels.py +0 -0
  58. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/media.py +0 -0
  59. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/models.py +0 -0
  60. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/multiprocessprogress.py +0 -0
  61. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/placeholder.py +0 -0
  62. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/posts.py +0 -0
  63. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/sessionmanager.py +0 -0
  64. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/button.py +0 -0
  65. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/fields/boolfield.py +0 -0
  66. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/fields/datefield.py +0 -0
  67. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/fields/mediafield.py +0 -0
  68. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/fields/numfield.py +0 -0
  69. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/fields/pricefield.py +0 -0
  70. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/fields/responsefield.py +0 -0
  71. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/fields/selectfield.py +0 -0
  72. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/fields/textsearch.py +0 -0
  73. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/fields/timefield.py +0 -0
  74. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/inputs/filterinput.py +0 -0
  75. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/inputs/intergerinput.py +0 -0
  76. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/inputs/strinput.py +0 -0
  77. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/row_names.py +0 -0
  78. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/status.py +0 -0
  79. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/table.py +0 -0
  80. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/classes/table/table_console.py +0 -0
  81. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/commands/helpers/picker.py +0 -0
  82. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/commands/manual.py +0 -0
  83. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/commands/scraper/scrape_context.py +0 -0
  84. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/commands/scraper/scraper.py +0 -0
  85. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/constants.py +0 -0
  86. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/binary.py +0 -0
  87. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/config.py +0 -0
  88. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/date.py +0 -0
  89. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/download.py +0 -0
  90. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/files.py +0 -0
  91. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/like.py +0 -0
  92. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/live.py +0 -0
  93. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/logger.py +0 -0
  94. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/metadata.py +0 -0
  95. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/other_url.py +0 -0
  96. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/path.py +0 -0
  97. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/prompts.py +0 -0
  98. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/req.py +0 -0
  99. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/table.py +0 -0
  100. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/test_constants.py +0 -0
  101. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/time.py +0 -0
  102. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/const/values/url.py +0 -0
  103. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/db/__init__.py +0 -0
  104. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/db/operations.py +0 -0
  105. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/db/operations_/helpers.py +0 -0
  106. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/db/operations_/labels.py +0 -0
  107. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/db/operations_/media.py +0 -0
  108. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/db/operations_/merge.py +0 -0
  109. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/db/operations_/messages.py +0 -0
  110. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/db/operations_/others.py +0 -0
  111. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/db/operations_/posts.py +0 -0
  112. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/db/operations_/profile.py +0 -0
  113. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/db/operations_/stories.py +0 -0
  114. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/db/operations_/wrapper.py +0 -0
  115. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/download.py +0 -0
  116. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/downloadbatch.py +0 -0
  117. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/downloadnormal.py +0 -0
  118. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/shared/classes/retries.py +0 -0
  119. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/shared/classes/session.py +0 -0
  120. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/shared/globals.py +0 -0
  121. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/shared/utils/keyhelpers.py +0 -0
  122. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/shared/utils/media.py +0 -0
  123. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/shared/utils/message.py +0 -0
  124. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/shared/utils/metadata.py +0 -0
  125. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/shared/utils/paths.py +0 -0
  126. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/shared/utils/progress.py +0 -0
  127. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/download/shared/utils/text.py +0 -0
  128. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/filters/media/main.py +0 -0
  129. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/filters/models/date.py +0 -0
  130. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/filters/models/flags.py +0 -0
  131. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/filters/models/helpers.py +0 -0
  132. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/filters/models/other.py +0 -0
  133. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/filters/models/price.py +0 -0
  134. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/filters/models/sort.py +0 -0
  135. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/filters/models/subtype.py +0 -0
  136. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/models/retriver.py +0 -0
  137. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/models/selector.py +0 -0
  138. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/helpers/model_helpers.py +0 -0
  139. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/helpers/prompt_helpers.py +0 -0
  140. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/keybindings.py +0 -0
  141. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/prompt_groups/actions.py +0 -0
  142. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/prompt_groups/area.py +0 -0
  143. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/prompt_groups/auth.py +0 -0
  144. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/prompt_groups/binary.py +0 -0
  145. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/prompt_groups/config.py +0 -0
  146. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/prompt_groups/menu.py +0 -0
  147. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/prompt_groups/merge.py +0 -0
  148. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/prompt_groups/profile.py +0 -0
  149. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/prompt_strings.py +0 -0
  150. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/prompt_validators.py +0 -0
  151. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/prompts/prompts.py +0 -0
  152. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/runner/load.py +0 -0
  153. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/__init__.py +0 -0
  154. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/actions.py +0 -0
  155. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/arguments/advanced_processing.py +0 -0
  156. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/arguments/advanced_program.py +0 -0
  157. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/arguments/advanced_user_filter.py +0 -0
  158. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/arguments/automatic.py +0 -0
  159. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/arguments/content.py +0 -0
  160. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/arguments/download.py +0 -0
  161. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/arguments/file.py +0 -0
  162. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/arguments/logging.py +0 -0
  163. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/arguments/media_type.py +0 -0
  164. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/arguments/program.py +0 -0
  165. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/arguments/user_list.py +0 -0
  166. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/arguments/user_select.py +0 -0
  167. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/arguments/user_sort.py +0 -0
  168. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/bundles/advanced_common.py +0 -0
  169. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/bundles/common.py +0 -0
  170. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/bundles/main.py +0 -0
  171. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/bundles/manual.py +0 -0
  172. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/bundles/message_check.py +0 -0
  173. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/bundles/metadata.py +0 -0
  174. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/bundles/paid_check.py +0 -0
  175. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/bundles/post_check.py +0 -0
  176. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/bundles/story_check.py +0 -0
  177. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/commands/main.py +0 -0
  178. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/commands/manual.py +0 -0
  179. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/commands/message.py +0 -0
  180. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/commands/metadata.py +0 -0
  181. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/commands/paid.py +0 -0
  182. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/commands/post.py +0 -0
  183. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/commands/story.py +0 -0
  184. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/globals.py +0 -0
  185. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/groups/common_args.py +0 -0
  186. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/helpers/areas.py +0 -0
  187. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/helpers/before.py +0 -0
  188. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/helpers/check.py +0 -0
  189. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/helpers/date.py +0 -0
  190. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/helpers/type.py +0 -0
  191. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/output.py +0 -0
  192. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/parse.py +0 -0
  193. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/quality.py +0 -0
  194. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/read.py +0 -0
  195. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/user.py +0 -0
  196. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/args/write.py +0 -0
  197. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/auth/context.py +0 -0
  198. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/auth/data.py +0 -0
  199. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/auth/file.py +0 -0
  200. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/auth/helpers.py +0 -0
  201. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/auth/make.py +0 -0
  202. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/auth/request.py +0 -0
  203. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/auth/schema.py +0 -0
  204. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/binaries.py +0 -0
  205. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/cache.py +0 -0
  206. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/checkers.py +0 -0
  207. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/config/config.py +0 -0
  208. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/config/context.py +0 -0
  209. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/config/custom.py +0 -0
  210. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/config/data.py +0 -0
  211. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/config/file.py +0 -0
  212. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/config/menu.py +0 -0
  213. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/config/schema.py +0 -0
  214. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/config/wrapper.py +0 -0
  215. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/console.py +0 -0
  216. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/constants.py +0 -0
  217. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/context/exit.py +0 -0
  218. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/context/run_async.py +0 -0
  219. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/context/stdout.py +0 -0
  220. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/dates.py +0 -0
  221. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/encoding.py +0 -0
  222. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/hash.py +0 -0
  223. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/live/groups.py +0 -0
  224. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/live/panel.py +0 -0
  225. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/live/progress.py +0 -0
  226. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/live/screens.py +0 -0
  227. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/live/tasks.py +0 -0
  228. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/live/updater.py +0 -0
  229. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/logs/classes.py +0 -0
  230. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/logs/close.py +0 -0
  231. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/logs/globals.py +0 -0
  232. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/logs/handle.py +0 -0
  233. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/logs/helpers.py +0 -0
  234. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/logs/logger.py +0 -0
  235. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/logs/logs.py +0 -0
  236. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/logs/other.py +0 -0
  237. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/logs/stdout.py +0 -0
  238. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/manager.py +0 -0
  239. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/me.py +0 -0
  240. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/menu.py +0 -0
  241. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/merge.py +0 -0
  242. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/paths/check.py +0 -0
  243. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/paths/common.py +0 -0
  244. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/paths/manage.py +0 -0
  245. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/paths/paths.py +0 -0
  246. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/profiles/data.py +0 -0
  247. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/profiles/manage.py +0 -0
  248. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/profiles/tools.py +0 -0
  249. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/run.py +0 -0
  250. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/sems.py +0 -0
  251. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/separate.py +0 -0
  252. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/settings.py +0 -0
  253. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/system/free.py +0 -0
  254. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/system/network.py +0 -0
  255. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/system/system.py +0 -0
  256. {ofscraper-3.10.dev4 → ofscraper-3.10.dev6}/ofscraper/utils/text.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ofscraper
3
- Version: 3.10.dev4
3
+ Version: 3.10.dev6
4
4
  Summary: automatically scrape onlyfans
5
5
  Author: datawhores
6
6
  Author-email: datawhores@riseup.net
@@ -161,7 +161,7 @@ def post_checker():
161
161
  @run
162
162
  async def post_check_runner():
163
163
  async for user_name, model_id, final_post_array in post_check_retriver():
164
- with progress_utils.setup_api_split_progress_live(stop=True):
164
+ with progress_utils.setup_api_split_progress_live(revert=True):
165
165
  progress_utils.update_activity_task(
166
166
  description=check_str.format(
167
167
  username=user_name, activity="Timeline posts"
@@ -331,7 +331,7 @@ def message_checker():
331
331
  @run
332
332
  async def message_checker_runner():
333
333
  async for user_name, model_id, final_post_array in message_check_retriver():
334
- with progress_utils.setup_api_split_progress_live(stop=True):
334
+ with progress_utils.setup_api_split_progress_live(revert=True):
335
335
  progress_utils.update_activity_task(
336
336
  description=check_str.format(username=user_name, activity="Messages")
337
337
  )
@@ -418,7 +418,7 @@ def purchase_checker():
418
418
  @run
419
419
  async def purchase_checker_runner():
420
420
  async for user_name, model_id, final_post_array in purchase_check_retriver():
421
- with progress_utils.setup_api_split_progress_live(stop=True):
421
+ with progress_utils.setup_api_split_progress_live(revert=True):
422
422
  progress_utils.update_activity_task(
423
423
  description=check_str.format(
424
424
  username=user_name, activity="Purchased posts"
@@ -482,7 +482,7 @@ def stories_checker():
482
482
  @run
483
483
  async def stories_checker_runner():
484
484
  async for user_name, model_id, final_post_array in stories_check_retriver():
485
- with progress_utils.setup_api_split_progress_live(stop=True):
485
+ with progress_utils.setup_api_split_progress_live(revert=True):
486
486
  progress_utils.update_activity_task(
487
487
  description=check_str.format(
488
488
  username=user_name, activity="Stories posts"
@@ -0,0 +1,39 @@
1
+
2
+ import logging
3
+
4
+ import ofscraper.models.selector as selector
5
+ import ofscraper.utils.args.helpers.areas as areas
6
+ import ofscraper.utils.constants as constants
7
+ import ofscraper.utils.live.screens as progress_utils
8
+ from ofscraper.commands.scraper.post import post_media_process
9
+
10
+ from ofscraper.commands.helpers.strings import (
11
+ area_str,
12
+ avatar_str,
13
+ data_str,
14
+ progress_str,
15
+ )
16
+ log = logging.getLogger("shared")
17
+ def data_helper(user):
18
+ avatar = user.avatar
19
+ username = user.name
20
+ active = user.active
21
+ final_post_areas = areas.get_final_posts_area()
22
+ length = selector.get_num_selected()
23
+ count = progress_utils.get_user_task_obj().completed
24
+
25
+
26
+ logging.getLogger("shared_other").warning(
27
+ progress_str.format(count=count + 1, length=length)
28
+ )
29
+ logging.getLogger("shared_other").warning(data_str.format(name=username))
30
+ if constants.getattr("SHOW_AVATAR") and avatar:
31
+ logging.getLogger("shared_other").warning(avatar_str.format(avatar=avatar))
32
+ progress_utils.update_activity_task(
33
+ description=area_str.format(
34
+ areas=",".join(final_post_areas), name=username, active=active
35
+ )
36
+ )
37
+ logging.getLogger("shared_other").info(
38
+ area_str.format(areas=",".join(final_post_areas), name=username, active=active)
39
+ )
@@ -0,0 +1,14 @@
1
+ import logging
2
+ import time
3
+ import ofscraper.utils.constants as constants
4
+
5
+ def final_log(data):
6
+ log = logging.getLogger("shared")
7
+ if len(data)<3:
8
+ return
9
+ elif constants.getattr("SHOW_RESULTS_LOG"):
10
+ log.warning("[bold yellow]Final Results Logs[/bold yellow]")
11
+ for record in data:
12
+ log.warning(record)
13
+ #give time for last long to process
14
+ time.sleep(3)
@@ -0,0 +1,52 @@
1
+ import logging
2
+ import traceback
3
+
4
+
5
+ import ofscraper.utils.args.read as read_args
6
+ import ofscraper.utils.constants as constants
7
+ import ofscraper.utils.live.screens as progress_utils
8
+ from ofscraper.commands.scraper.post import post_media_process
9
+
10
+ from ofscraper.commands.helpers.strings import (
11
+ avatar_str,
12
+ )
13
+ log = logging.getLogger("shared")
14
+ from ofscraper.commands.helpers.data import data_helper
15
+
16
+
17
+ def get_user_action_function(func):
18
+ async def wrapper(userdata,session,*args, **kwargs):
19
+ async with session as c:
20
+ data=["[bold yellow]Normal Mode Results[/bold yellow]"]
21
+ for ele in userdata:
22
+ try:
23
+ with progress_utils.setup_api_split_progress_live():
24
+ data_helper(ele)
25
+ all_media, posts, like_posts = await post_media_process(ele, c=c)
26
+ with progress_utils.setup_activity_group_live(revert=False):
27
+ avatar = ele.avatar
28
+ if (
29
+ constants.getattr("SHOW_AVATAR")
30
+ and avatar
31
+ and read_args.retriveArgs ().userfirst
32
+ ):
33
+ logging.getLogger("shared_other").warning(avatar_str.format(avatar=avatar))
34
+ data.extend(await func(media=all_media, posts=posts, like_posts=like_posts,ele=ele))
35
+ except Exception as e:
36
+
37
+ log.traceback_(f"failed with exception: {e}")
38
+ log.traceback_(traceback.format_exc())
39
+
40
+ if isinstance(e, KeyboardInterrupt):
41
+ raise e
42
+ finally:
43
+ progress_utils.increment_user_activity()
44
+ return data
45
+ return wrapper
46
+
47
+
48
+
49
+
50
+
51
+
52
+
@@ -0,0 +1,69 @@
1
+ import logging
2
+
3
+ import ofscraper.api.profile as profile
4
+ import ofscraper.classes.models as models
5
+ import ofscraper.commands.scraper.post as OF
6
+ import ofscraper.download.download as download
7
+ import ofscraper.models.selector as userselector
8
+ import ofscraper.utils.live.screens as progress_utils
9
+ from ofscraper.commands.helpers.strings import all_paid_download_str,metadata_activity_str, all_paid_progress_metadata_str
10
+
11
+ from ofscraper.utils.context.run_async import run
12
+
13
+ log = logging.getLogger("shared")
14
+
15
+ @run
16
+ async def process_scrape_paid():
17
+ progress_utils.update_activity_task(
18
+ description="Scraping Entire Paid page"
19
+ )
20
+ with progress_utils.setup_all_paid_database_live():
21
+ async for ele in process_paid_dict():
22
+ yield ele
23
+
24
+
25
+ async def process_paid_dict():
26
+ user_dict = await OF.process_all_paid()
27
+ length = len(list(user_dict.keys()))
28
+ progress_utils.update_activity_count(totat=length, completed=0)
29
+
30
+
31
+ for count, value in enumerate(user_dict.values()):
32
+ yield count,value,length
33
+
34
+
35
+
36
+ def process_user_info_printer(value,length,count,all_paid_activity=None,all_paid_update=None,log_progress=None):
37
+ model_id = value["model_id"]
38
+ username = value["username"]
39
+
40
+ all_paid_update=all_paid_update or all_paid_download_str
41
+ all_paid_activity=all_paid_activity or metadata_activity_str
42
+ log_progress=log_progress or all_paid_progress_metadata_str
43
+
44
+ progress_utils.update_activity_count(
45
+ totat=length,
46
+ description=all_paid_update.format(username=username),
47
+ )
48
+ progress_utils.update_activity_task(
49
+ description=(all_paid_activity.format(username=username,model_id=model_id,count=count+1,length=length)
50
+ ))
51
+ logging.getLogger("shared_other").warning(
52
+ log_progress.format(username=username,model_id=model_id,count=count+1,length=length)
53
+ )
54
+
55
+ async def process_user(value,length):
56
+ model_id = value["model_id"]
57
+ username = value["username"]
58
+ posts = value["posts"]
59
+ medias = value["medias"]
60
+
61
+ userselector.set_ALL_SUBS_DICTVManger(
62
+ {
63
+ username: models.Model(
64
+ profile.scrape_profile(model_id, refresh=False)
65
+ )
66
+ }
67
+ )
68
+ progress_utils.increment_activity_count(total=length)
69
+ return (await download.download_process(username, model_id, medias, posts=posts))
@@ -3,3 +3,8 @@ import ofscraper.utils.args.read as read_args
3
3
 
4
4
  def run_action_bool():
5
5
  return len(read_args.retriveArgs().action) > 0
6
+
7
+
8
+
9
+ def run_metadata_bool():
10
+ return read_args.retriveArgs().metadata
@@ -4,9 +4,18 @@ avatar_str = "Avatar : {avatar}"
4
4
  area_str = "Getting \[[bold blue]{areas}[/bold blue]] for [bold]{name}[/bold]\n[bold]Subscription Active:[/bold] {active}"
5
5
  all_paid_model_id_str = "getting username data for {model_id}"
6
6
  all_paid_str = "Creating databases for {username}"
7
- download_str = "Performing Downloading Action on {name}"
7
+ download_activity_str = "Performing Downloading Action on {username}"
8
8
  all_paid_download_str = "Users With paid content downloaded"
9
- metadata_str = "Updating Metadata for {username}"
9
+ all_paid_metadata_str = "Users With metadata updated downloaded"
10
+
11
+ metadata_activity_str = "Updating Metadata for {username}"
12
+
10
13
  post_str_manual = "Manual Mode: Getting media from {url}"
11
14
  download_manual_str = "Downloading individual media for {username}"
12
15
  check_str = "Checking {activity} for {username}"
16
+
17
+ all_paid_progress_download_str="[{model_id}_{username}] Downloading Progress :{count}/{length} models"
18
+
19
+ all_paid_progress_metadata_str="[{model_id}_{username}] Metadata Update Progress :{count}/{length} models"
20
+
21
+ mark_stray_str="Marking Stray Items for {username} as downloaded"
@@ -1,62 +1,17 @@
1
1
  import logging
2
2
  import traceback
3
- from itertools import chain
4
3
 
5
4
 
6
-
7
- import ofscraper.models.selector as selector
8
- import ofscraper.utils.args.helpers.areas as areas
9
5
  import ofscraper.utils.args.read as read_args
10
6
  import ofscraper.utils.constants as constants
11
7
  import ofscraper.utils.live.screens as progress_utils
12
8
  from ofscraper.commands.scraper.post import post_media_process
13
9
 
14
10
  from ofscraper.commands.helpers.strings import (
15
- area_str,
16
11
  avatar_str,
17
- data_str,
18
- progress_str,
19
12
  )
20
13
  log = logging.getLogger("shared")
21
-
22
-
23
- def get_user_action_function(func):
24
- async def wrapper(userdata,session,*args, **kwargs):
25
- async with session as c:
26
- data=[]
27
- for ele in userdata:
28
- try:
29
- with progress_utils.setup_api_split_progress_live():
30
- all_media, posts, like_posts = await post_media_process(ele, c=c)
31
- with progress_utils.setup_activity_counter_live(revert=False):
32
- avatar = ele.avatar
33
- if (
34
- constants.getattr("SHOW_AVATAR")
35
- and avatar
36
- and read_args.retriveArgs ().userfirst
37
- ):
38
- logging.getLogger("shared_other").warning(avatar_str.format(avatar=avatar))
39
- data_helper(ele)
40
- data.append(await func(all_media, posts, like_posts,ele=ele))
41
- except Exception as e:
42
-
43
- log.traceback_(f"failed with exception: {e}")
44
- log.traceback_(traceback.format_exc())
45
-
46
- if isinstance(e, KeyboardInterrupt):
47
- raise e
48
- finally:
49
- progress_utils.increment_user_activity()
50
- records=chain.from_iterable(data)
51
- if len(records)<2:
52
- return
53
- for record in records:
54
- log.warning(record)
55
-
56
- return wrapper
57
-
58
-
59
-
14
+ from ofscraper.commands.helpers.data import data_helper
60
15
 
61
16
  def get_userfirst_data_function(funct):
62
17
  async def wrapper(userdata, session, *args, **kwargs):
@@ -85,6 +40,7 @@ def get_userfirst_data_function(funct):
85
40
 
86
41
  def get_userfirst_action_execution_function(funct):
87
42
  async def wrapper(data,*args, **kwargs):
43
+ out=["[bold yellow]User First Results[/bold yellow]"]
88
44
  progress_utils.increment_activity_count(total=2)
89
45
  try:
90
46
  progress_utils.update_user_activity(total=len(data.items()))
@@ -102,7 +58,7 @@ def get_userfirst_action_execution_function(funct):
102
58
  logging.getLogger("shared_other").warning(avatar_str.format(avatar=avatar))
103
59
  try:
104
60
  with progress_utils.setup_activity_counter_live(revert=False):
105
- await funct(all_media, posts, like_posts,*args, ele=ele,**kwargs)
61
+ out.extend(await funct(posts, like_posts,*args,media=all_media, ele=ele,**kwargs))
106
62
  except Exception as e:
107
63
  log.traceback_(f"failed with exception: {e}")
108
64
  log.traceback_(traceback.format_exc())
@@ -117,31 +73,6 @@ def get_userfirst_action_execution_function(funct):
117
73
  raise e
118
74
  finally:
119
75
  progress_utils.increment_activity_count(description="Overall progress", total=2)
120
-
76
+ return out
121
77
  return wrapper
122
78
 
123
-
124
-
125
- def data_helper(user):
126
- avatar = user.avatar
127
- username = user.name
128
- active = user.active
129
- final_post_areas = areas.get_final_posts_area()
130
- length = selector.get_num_selected()
131
- count = progress_utils.get_user_task_obj().completed
132
-
133
-
134
- logging.getLogger("shared_other").warning(
135
- progress_str.format(count=count + 1, length=length)
136
- )
137
- logging.getLogger("shared_other").warning(data_str.format(name=username))
138
- if constants.getattr("SHOW_AVATAR") and avatar:
139
- logging.getLogger("shared_other").warning(avatar_str.format(avatar=avatar))
140
- progress_utils.update_activity_task(
141
- description=area_str.format(
142
- areas=",".join(final_post_areas), name=username, active=active
143
- )
144
- )
145
- logging.getLogger("shared_other").info(
146
- area_str.format(areas=",".join(final_post_areas), name=username, active=active)
147
- )
@@ -10,7 +10,6 @@
10
10
  (_______)|/ \_______)(_______/|/ \__/|/ \||/ (_______/|/ \__/
11
11
 
12
12
  """
13
-
14
13
  import copy
15
14
  import logging
16
15
  import traceback
@@ -18,8 +17,6 @@ import traceback
18
17
  import arrow
19
18
 
20
19
  import ofscraper.api.init as init
21
- import ofscraper.api.profile as profile
22
- import ofscraper.classes.models as models
23
20
  import ofscraper.classes.sessionmanager as sessionManager
24
21
  import ofscraper.db.operations as operations
25
22
  import ofscraper.download.download as download
@@ -31,14 +28,17 @@ import ofscraper.utils.constants as constants
31
28
  import ofscraper.utils.live.screens as progress_utils
32
29
  import ofscraper.utils.profiles.tools as profile_tools
33
30
  from ofscraper.__version__ import __version__
34
- from ofscraper.commands.helpers.context import (
31
+ from ofscraper.commands.helpers.normal import (
35
32
  get_user_action_function,
33
+ )
34
+ from ofscraper.commands.helpers.user_first import (
36
35
  get_userfirst_action_execution_function,
37
36
  get_userfirst_data_function,
38
37
  )
39
- from ofscraper.commands.helpers.shared import run_action_bool
40
- from ofscraper.commands.helpers.strings import avatar_str, metadata_str
41
- from ofscraper.commands.scraper.post import process_all_paid, process_areas_helper
38
+ from ofscraper.commands.helpers.shared import run_metadata_bool
39
+ from ofscraper.commands.helpers.strings import metadata_activity_str,mark_stray_str,all_paid_metadata_str,all_paid_progress_metadata_str
40
+
41
+ from ofscraper.commands.scraper.post import process_areas_helper
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,
@@ -47,33 +47,35 @@ from ofscraper.db.operations_.media import (
47
47
  get_timeline_media,
48
48
  )
49
49
  from ofscraper.utils.context.run_async import run
50
-
50
+ from ofscraper.commands.helpers.final_log import final_log
51
+ from ofscraper.commands.helpers.scrape_paid import process_scrape_paid,process_user_info_printer,process_user
51
52
  log = logging.getLogger("shared")
52
53
 
53
54
 
54
55
  def metadata():
55
- with progress_utils.setup_activity_progress_live(stop=True):
56
+ with progress_utils.setup_activity_progress_live(revert=True):
57
+ scrape_paid_data=[]
58
+ userfirst_data=[]
59
+ normal_data=[]
56
60
  if read_args.retriveArgs().scrape_paid:
57
- progress_utils.update_activity_task(
58
- description="Updating Metadata for Entire Paid page"
59
- )
60
- metadata_paid_all()
61
- if not run_action_bool():
62
- return
63
- userdata, session = prepare()
64
- if not read_args.retriveArgs().users_first:
65
- process_users_metadata_normal(userdata, session)
61
+ scrape_paid_data=metadata_paid_all()
62
+ if not run_metadata_bool():
63
+ pass
64
+
65
+ elif not read_args.retriveArgs().users_first:
66
+ userdata, session = prepare()
67
+ normal_data=process_users_metadata_normal(userdata, session)
66
68
  else:
67
- metadata_user_first(userdata, session)
69
+ userdata, session = prepare()
70
+ userfirst_data=metadata_user_first(userdata, session)
71
+ final_log(normal_data+scrape_paid_data+userfirst_data)
68
72
 
69
73
 
70
74
  @run
71
75
  async def process_users_metadata_normal(userdata, session):
72
- user_action_funct = get_user_action_function(process_metadata_for_user)
73
- progress_utils.update_activity_count(description="Users with Updated Metadata")
74
- async with session:
75
- for ele in userdata:
76
- await user_action_funct(user=ele, session=session)
76
+ user_action_funct = get_user_action_function(execute_metadata_action_on_user)
77
+ progress_utils.update_user_activity(description="Users with Updated Metadata")
78
+ return await user_action_funct(userdata, session)
77
79
 
78
80
 
79
81
  @run
@@ -81,43 +83,38 @@ async def metadata_user_first(userdata, session):
81
83
  data = await get_userfirst_data_function(metadata_data_user_first)(
82
84
  userdata, session
83
85
  )
86
+ progress_utils.update_activity_task(description="Changing Metadata for Users")
87
+ progress_utils.update_user_activity(
88
+ description="Users with Metadata Changed", completed=0
89
+ )
84
90
 
85
- await get_userfirst_action_execution_function(execute_metadata_action_user_first)(
91
+ return await get_userfirst_action_execution_function( execute_metadata_action_on_user)(
86
92
  data
87
93
  )
88
94
 
89
-
90
- def metadata_paid_all(user_dict=None):
91
- progress_utils.update_activity_task("Scraping Entire Paid page")
95
+ @run
96
+ async def metadata_paid_all():
92
97
  old_args = copy.deepcopy(read_args.retriveArgs())
93
98
  force_change_metadata()
94
- user_dict = process_all_paid()
95
- oldUsers = userselector.get_ALL_SUBS_DICT()
96
- length = len(list(user_dict.keys()))
97
- for count, value in enumerate(user_dict.values()):
98
- model_id = value["model_id"]
99
- username = value["username"]
100
- posts = value["posts"]
101
- medias = value["medias"]
102
- avatar = value["avatar"]
103
- if constants.getattr("SHOW_AVATAR") and avatar:
104
- logging.getLogger("shared_other").warning(avatar_str.format(avatar=avatar))
105
- log.warning(
106
- f"Download paid content for {model_id}_{username} number:{count+1}/{length} models "
107
- )
108
- userselector.set_ALL_SUBS_DICTVManger(
109
- {username: models.Model(profile.scrape_profile(model_id))}
110
- )
111
- download.download_process(username, model_id, medias, posts=posts)
112
- # restore settings
113
- userselector.set_ALL_SUBS_DICT(oldUsers)
99
+ out=["[bold yellow]Scrape Paid Results[/bold yellow]"]
100
+
101
+ async for count,value,length in process_scrape_paid():
102
+ process_user_info_printer(value,length,count,all_paid_update=all_paid_metadata_str,all_paid_activity=metadata_activity_str,
103
+ log_progress=all_paid_progress_metadata_str
104
+
105
+
106
+ )
107
+ out.append(await process_user(value,length))
114
108
  write_args.setArgs(old_args)
109
+ return out
110
+
115
111
 
116
112
 
117
113
  def metadata_stray_media(username, model_id, media):
118
114
  all_media = []
119
115
  curr_media_set = set(map(lambda x: str(x.id), media))
120
116
  args = read_args.retriveArgs()
117
+ progress_utils.update_activity_task(description=mark_stray_str.format(username=username))
121
118
  if "Timeline" in args.download_area:
122
119
  all_media.extend(get_timeline_media(model_id=model_id, username=username))
123
120
  if "Messages" in args.download_area:
@@ -141,59 +138,20 @@ def metadata_stray_media(username, model_id, media):
141
138
  batch_set_media_downloaded(filtered_media, model_id=model_id, username=username)
142
139
 
143
140
 
144
- async def process_metadata_for_user(user=None, session=None):
145
- try:
146
-
147
- model_id = user.id
148
- all_media, _, _ = await process_areas_helper(user, model_id, c=session)
149
- await get_user_action_execution_function(execute_metadata_action_on_user)(
150
- user=user, media=all_media
151
- )
152
- except Exception as e:
153
- if isinstance(e, KeyboardInterrupt):
154
- raise e
155
- log.traceback_(f"failed with exception: {e}")
156
- log.traceback_(traceback.format_exc())
157
-
158
-
159
- async def execute_metadata_action_on_user(user=None, media=None):
160
- username = user.name
141
+ async def execute_metadata_action_on_user(*args,ele=None, media=None,**kwargs):
142
+ username = ele.name
161
143
 
162
- model_id = user.id
163
- operations.table_init_create(model_id=model_id, username=username)
144
+ model_id = ele.id
145
+ await operations.table_init_create(model_id=model_id, username=username)
164
146
  filterMedia = filters.filterMedia(media, username=username, model_id=model_id)
165
147
  progress_utils.update_activity_task(
166
- description=metadata_str.format(username=username)
148
+ description=metadata_activity_str.format(username=username)
167
149
  )
168
- await download.download_process(username, model_id, filterMedia)
150
+ data=await download.download_process(username, model_id, filterMedia)
169
151
  metadata_stray_media(username, model_id, media)
152
+ return [data]
170
153
 
171
154
 
172
- async def execute_metadata_action_user_first(data):
173
- progress_utils.update_activity_task(
174
- description="Performing Metadata Actions on Users"
175
- )
176
- progress_utils.update_user_activity(
177
- description="Users with Metadata updated", completed=0
178
- )
179
- for model_id, val in data.items():
180
- username = val["username"]
181
- media = val["media"]
182
- ele = val["ele"]
183
- progress_utils.update_activity_task(
184
- description=metadata_str.format(username=username)
185
- )
186
- try:
187
-
188
- await get_user_action_execution_function(execute_metadata_action_on_user)(
189
- media=media, user=ele
190
- )
191
- except Exception as e:
192
- if isinstance(e, KeyboardInterrupt):
193
- raise e
194
- log.traceback_(f"failed with exception: {e}")
195
- log.traceback_(traceback.format_exc())
196
-
197
155
 
198
156
  @run
199
157
  async def metadata_data_user_first(session, ele):
@@ -234,6 +192,8 @@ async def process_ele_user_first_data_retriver(ele=None, session=None):
234
192
  "media": media,
235
193
  "avatar": avatar,
236
194
  "ele": ele,
195
+ "posts":[],
196
+ "like_posts":[]
237
197
  }
238
198
  }
239
199
  except Exception as e:
@@ -247,10 +207,10 @@ async def process_ele_user_first_data_retriver(ele=None, session=None):
247
207
  def process_selected_areas():
248
208
  log.debug("[bold blue] Running Metadata Mode [/bold blue]")
249
209
  force_change_download()
210
+ progress_utils.update_activity_task(description="Running Metadata Mode")
250
211
  with scrape_context_manager():
251
- with progress_utils.setup_activity_progress_live(stop=True):
252
- if read_args.retriveArgs().metadata:
253
- metadata()
212
+ with progress_utils.setup_activity_group_live(revert=True):
213
+ metadata()
254
214
 
255
215
 
256
216
  def prepare():
@@ -0,0 +1,61 @@
1
+ r"""_____ _______ _______ _______ _______ _______ _______ _______ _______
2
+ ( ___ )( ____ \ ( ____ \( ____ \( ____ )( ___ )( ____ )( ____ \( ____ )
3
+ | ( ) || ( \/ | ( \/| ( \/| ( )|| ( ) || ( )|| ( \/| ( )|
4
+ | | | || (__ _____ | (_____ | | | (____)|| (___) || (____)|| (__ | (____)|
5
+ | | | || __) (_____)(_____ )| | | __)| ___ || _____)| __) | __)
6
+ | | | || ( ) || | | (\ ( | ( ) || ( | ( | (\ (
7
+ | (___) || ) /\____) || (____/\| ) \ \__| ) ( || ) | (____/\| ) \ \__
8
+ (_______)|/ \_______)(_______/|/ \__/|/ \||/ (_______/|/ \__/
9
+ """
10
+
11
+ import logging
12
+ import time
13
+
14
+ import ofscraper.classes.placeholder as placeholder
15
+ import ofscraper.download.download as download
16
+ import ofscraper.utils.constants as constants
17
+ import ofscraper.utils.live.screens as progress_utils
18
+ from ofscraper.commands.helpers.strings import download_activity_str,all_paid_progress_download_str,all_paid_download_str
19
+ from ofscraper.commands.helpers.scrape_paid import process_scrape_paid,process_user_info_printer,process_user
20
+ from ofscraper.utils.context.run_async import run
21
+
22
+
23
+ log = logging.getLogger("shared")
24
+
25
+
26
+ async def downloader(ele=None, posts=None, media=None, **kwargs):
27
+ model_id = ele.id
28
+ username = ele.name
29
+ progress_utils.update_activity_task(description=download_activity_str.format(username=username))
30
+ logging.getLogger("shared_other").warning(download_activity_str.format(username=username))
31
+ return await download.download_process(username, model_id, media, posts=posts)
32
+
33
+
34
+
35
+
36
+
37
+ def unique_name_warning():
38
+ if not placeholder.check_uniquename():
39
+ log.warning(
40
+ "[red]Warning: Your generated filenames may not be unique\n \
41
+ https://of-scraper.gitbook.io/of-scraper/config-options/customizing-save-path#warning[/red] \
42
+ "
43
+ )
44
+ time.sleep(constants.getattr("LOG_DISPLAY_TIMEOUT") * 3)
45
+
46
+ @run
47
+ async def scrape_paid_all():
48
+ out=["[bold yellow]Scrape Paid Results[/bold yellow]"]
49
+
50
+ async for count,value,length in process_scrape_paid():
51
+ process_user_info_printer(value,length,count,all_paid_update=all_paid_download_str,all_paid_activity=download_activity_str,
52
+ log_progress=all_paid_progress_download_str
53
+ )
54
+ out.append(await process_user(value,length))
55
+ return out
56
+
57
+
58
+
59
+
60
+ # progress_utils.update_activity_task(description="Downloading Paid Content")
61
+ # return process_scrape_paid(download_progress_message=download_activity_str,log_progress_message=all_paid_progress_download_str)