ofscraper 3.13.dev0__tar.gz → 3.13.dev3__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 (347) hide show
  1. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/PKG-INFO +2 -2
  2. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/README.md +1 -1
  3. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/sessionmanager/sessionmanager.py +2 -2
  4. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/utils/scrape_context.py +5 -3
  5. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/open/load.py +1 -1
  6. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/config.py +23 -0
  7. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/data.py +18 -2
  8. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/schema.py +24 -15
  9. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/hash.py +1 -1
  10. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/updater.py +2 -2
  11. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/logs.py +1 -1
  12. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/paths/common.py +7 -4
  13. ofscraper-3.13.dev3/ofscraper/utils/paths/manage.py +77 -0
  14. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/settings.py +2 -0
  15. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/pyproject.toml +1 -1
  16. ofscraper-3.13.dev0/ofscraper/commands/scraper/actions/utils/send/send_bar_msg.py +0 -16
  17. ofscraper-3.13.dev0/ofscraper/utils/paths/manage.py +0 -28
  18. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/LICENSE +0 -0
  19. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/__main__.py +0 -0
  20. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/__version__.py +0 -0
  21. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/__version__.pye +0 -0
  22. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/labels.py +0 -0
  23. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/of/base.py +0 -0
  24. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/of/media.py +0 -0
  25. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/of/posts.py +0 -0
  26. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/placeholder.py +0 -0
  27. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/sessionmanager/download.py +0 -0
  28. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/sessionmanager/ofsession.py +0 -0
  29. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/app.py +0 -0
  30. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/compose.py +0 -0
  31. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/const.py +0 -0
  32. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/css.py +0 -0
  33. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/boolfield.py +0 -0
  34. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/datefield.py +0 -0
  35. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/downloadfield.py +0 -0
  36. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/mediafield.py +0 -0
  37. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/numfield.py +0 -0
  38. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/pricefield.py +0 -0
  39. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/responsefield.py +0 -0
  40. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/selectfield.py +0 -0
  41. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/sizefield.py +0 -0
  42. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/textsearch.py +0 -0
  43. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/fields/timefield.py +0 -0
  44. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/inputs/filterinput.py +0 -0
  45. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/inputs/intergerinput.py +0 -0
  46. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/inputs/strinput.py +0 -0
  47. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/sections/sidebar.py +0 -0
  48. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/sections/table.py +0 -0
  49. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/sections/table_console.py +0 -0
  50. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/utils/lock.py +0 -0
  51. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/classes/table/utils/names.py +0 -0
  52. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/check.py +0 -0
  53. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/db.py +0 -0
  54. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/manual.py +0 -0
  55. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/metadata/consumer.py +0 -0
  56. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/metadata/desc.py +0 -0
  57. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/metadata/manager.py +0 -0
  58. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/metadata/metadata.py +0 -0
  59. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/download.py +0 -0
  60. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/managers/alt_download.py +0 -0
  61. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/managers/downloadmanager.py +0 -0
  62. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/managers/main_download.py +0 -0
  63. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/run.py +0 -0
  64. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/utils/chunk.py +0 -0
  65. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/utils/desc.py +0 -0
  66. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/utils/keyhelpers.py +0 -0
  67. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/utils/leaky.py +0 -0
  68. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/utils/retries.py +0 -0
  69. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/download/utils/text.py +0 -0
  70. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/like/like.py +0 -0
  71. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/buffer.py +0 -0
  72. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/general.py +0 -0
  73. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/globals.py +0 -0
  74. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/log.py +0 -0
  75. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/params.py +0 -0
  76. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/paths/media.py +0 -0
  77. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/paths/paths.py +0 -0
  78. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/progress/convert.py +0 -0
  79. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/progress/update.py +0 -0
  80. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/retries.py +0 -0
  81. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/send/chunk.py +0 -0
  82. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/send/message.py +0 -0
  83. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/threads.py +0 -0
  84. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/actions/utils/workers.py +0 -0
  85. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/scraper.py +0 -0
  86. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/utils/daemon.py +0 -0
  87. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/utils/jobqueue.py +0 -0
  88. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/utils/prepare.py +0 -0
  89. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/utils/print.py +0 -0
  90. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/scraper/utils/schedule.py +0 -0
  91. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/utils/command.py +0 -0
  92. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/commands/utils/strings.py +0 -0
  93. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/constants.py +0 -0
  94. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/action/download.py +0 -0
  95. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/action/like.py +0 -0
  96. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/action/metadata.py +0 -0
  97. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/binary.py +0 -0
  98. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/config.py +0 -0
  99. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/date.py +0 -0
  100. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/download.py +0 -0
  101. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/dynamic.py +0 -0
  102. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/general.py +0 -0
  103. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/list.py +0 -0
  104. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/live.py +0 -0
  105. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/logger.py +0 -0
  106. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/path/bytes.py +0 -0
  107. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/path/files.py +0 -0
  108. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/path/general.py +0 -0
  109. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/path/path.py +0 -0
  110. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/prompts.py +0 -0
  111. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/anon.py +0 -0
  112. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/api.py +0 -0
  113. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/cdm.py +0 -0
  114. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/discord.py +0 -0
  115. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/git.py +0 -0
  116. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/like.py +0 -0
  117. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/mpd.py +0 -0
  118. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/req/req.py +0 -0
  119. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/rich.py +0 -0
  120. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/system.py +0 -0
  121. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/table.py +0 -0
  122. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/test/test_constants.py +0 -0
  123. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/time.py +0 -0
  124. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/url/other_url.py +0 -0
  125. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/const/values/url/url.py +0 -0
  126. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/archive.py +0 -0
  127. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/after.py +0 -0
  128. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/cache/read.py +0 -0
  129. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/cache/write.py +0 -0
  130. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/check.py +0 -0
  131. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/logs/logs.py +0 -0
  132. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/logs/strings.py +0 -0
  133. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/common/timeline.py +0 -0
  134. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/highlights.py +0 -0
  135. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/init.py +0 -0
  136. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/labels.py +0 -0
  137. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/me.py +0 -0
  138. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/messages.py +0 -0
  139. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/paid.py +0 -0
  140. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/pinned.py +0 -0
  141. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/profile.py +0 -0
  142. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/streams.py +0 -0
  143. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/subscriptions/common.py +0 -0
  144. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/subscriptions/individual.py +0 -0
  145. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/subscriptions/lists.py +0 -0
  146. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/subscriptions/subscriptions.py +0 -0
  147. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/api/timeline.py +0 -0
  148. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/models/manager.py +0 -0
  149. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/models/models.py +0 -0
  150. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/models/utils/retriver.py +0 -0
  151. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/posts/post.py +0 -0
  152. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/data/posts/scrape_paid.py +0 -0
  153. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/__init__.py +0 -0
  154. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/backup.py +0 -0
  155. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/difference.py +0 -0
  156. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/merge.py +0 -0
  157. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations.py +0 -0
  158. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/empty.py +0 -0
  159. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/labels.py +0 -0
  160. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/media.py +0 -0
  161. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/messages.py +0 -0
  162. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/others.py +0 -0
  163. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/posts.py +0 -0
  164. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/profile.py +0 -0
  165. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/stories.py +0 -0
  166. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/operations_/wrapper.py +0 -0
  167. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/transition.py +0 -0
  168. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/db/utils/convert.py +0 -0
  169. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/media/filters.py +0 -0
  170. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/media/main.py +0 -0
  171. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/date.py +0 -0
  172. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/flags.py +0 -0
  173. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/other.py +0 -0
  174. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/price.py +0 -0
  175. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/sort.py +0 -0
  176. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/subtype.py +0 -0
  177. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/filters/models/utils/logs.py +0 -0
  178. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/close/exit.py +0 -0
  179. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/close/final/final.py +0 -0
  180. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/close/final/final_log.py +0 -0
  181. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/close/final/final_script.py +0 -0
  182. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/close/final/final_user.py +0 -0
  183. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/manager.py +0 -0
  184. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/main/open/run.py +0 -0
  185. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/keybindings.py +0 -0
  186. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/promptConvert.py +0 -0
  187. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/actions.py +0 -0
  188. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/area.py +0 -0
  189. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/auth.py +0 -0
  190. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/binary.py +0 -0
  191. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/menu.py +0 -0
  192. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/merge.py +0 -0
  193. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/model.py +0 -0
  194. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_groups/profile.py +0 -0
  195. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_strings.py +0 -0
  196. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompt_validators.py +0 -0
  197. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/prompts.py +0 -0
  198. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/utils/model_helpers.py +0 -0
  199. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/prompts/utils/prompt_helpers.py +0 -0
  200. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/__init__.py +0 -0
  201. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/actions.py +0 -0
  202. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/ads.py +0 -0
  203. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/accessors/actions.py +0 -0
  204. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/accessors/areas.py +0 -0
  205. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/accessors/output.py +0 -0
  206. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/accessors/quality.py +0 -0
  207. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/accessors/read.py +0 -0
  208. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/accessors/time.py +0 -0
  209. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/callbacks/choice.py +0 -0
  210. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/callbacks/file.py +0 -0
  211. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/callbacks/string.py +0 -0
  212. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/callbacks/username.py +0 -0
  213. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/globals.py +0 -0
  214. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/helpers/hide_args.py +0 -0
  215. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/main.py +0 -0
  216. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/mutators/before.py +0 -0
  217. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/mutators/change.py +0 -0
  218. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/mutators/user.py +0 -0
  219. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/mutators/write.py +0 -0
  220. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/advanced_processing.py +0 -0
  221. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/advanced_program.py +0 -0
  222. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/advanced_user_filter.py +0 -0
  223. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/automatic.py +0 -0
  224. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/check.py +0 -0
  225. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/db.py +0 -0
  226. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/download.py +0 -0
  227. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/file.py +0 -0
  228. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/logging.py +0 -0
  229. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/media_content.py +0 -0
  230. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/metadata_filters.py +0 -0
  231. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/post_content.py +0 -0
  232. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/program.py +0 -0
  233. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/shared.py +0 -0
  234. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/user_list.py +0 -0
  235. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/user_select.py +0 -0
  236. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/user_sort.py +0 -0
  237. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/utils/date.py +0 -0
  238. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/arguments/utils/retry.py +0 -0
  239. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/db.py +0 -0
  240. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/main.py +0 -0
  241. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/manual.py +0 -0
  242. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/message.py +0 -0
  243. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/metadata.py +0 -0
  244. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/paid.py +0 -0
  245. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/post.py +0 -0
  246. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/commands/story.py +0 -0
  247. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/advanced_common.py +0 -0
  248. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/check.py +0 -0
  249. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/common.py +0 -0
  250. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/db.py +0 -0
  251. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/main.py +0 -0
  252. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/manual.py +0 -0
  253. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/message_check.py +0 -0
  254. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/metadata.py +0 -0
  255. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/paid_check.py +0 -0
  256. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/post_check.py +0 -0
  257. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/story_check.py +0 -0
  258. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/group_bundles/utils/check.py +0 -0
  259. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/advanced_processing.py +0 -0
  260. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/advanced_program.py +0 -0
  261. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/advanced_user_filter.py +0 -0
  262. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/automatic.py +0 -0
  263. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/check_content.py +0 -0
  264. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/download.py +0 -0
  265. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/file.py +0 -0
  266. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/logging.py +0 -0
  267. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/media_filter.py +0 -0
  268. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/post_filter.py +0 -0
  269. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/program.py +0 -0
  270. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/user_list.py +0 -0
  271. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/user_select.py +0 -0
  272. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/parse/groups/user_sort.py +0 -0
  273. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/types/arrow.py +0 -0
  274. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/args/types/choice.py +0 -0
  275. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/data.py +0 -0
  276. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/file.py +0 -0
  277. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/make.py +0 -0
  278. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/request.py +0 -0
  279. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/schema.py +0 -0
  280. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/utils/context.py +0 -0
  281. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/utils/dict.py +0 -0
  282. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/utils/prompt.py +0 -0
  283. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/utils/warning/check.py +0 -0
  284. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/utils/warning/print.py +0 -0
  285. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/auth/utils/warning/warning.py +0 -0
  286. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/binaries.py +0 -0
  287. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/cache.py +0 -0
  288. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/checkers.py +0 -0
  289. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/config.py +0 -0
  290. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/custom.py +0 -0
  291. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/file.py +0 -0
  292. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/menu.py +0 -0
  293. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/utils/context.py +0 -0
  294. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/config/utils/wrapper.py +0 -0
  295. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/console.py +0 -0
  296. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/constants.py +0 -0
  297. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/context/exit.py +0 -0
  298. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/context/run_async.py +0 -0
  299. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/context/stdout.py +0 -0
  300. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/dates.py +0 -0
  301. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/encoding.py +0 -0
  302. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/classes/progress.py +0 -0
  303. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/classes/task.py +0 -0
  304. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/classes/transfercol.py +0 -0
  305. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/clear.py +0 -0
  306. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/empty.py +0 -0
  307. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/groups.py +0 -0
  308. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/live.py +0 -0
  309. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/panel.py +0 -0
  310. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/progress.py +0 -0
  311. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/screens.py +0 -0
  312. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/live/tasks.py +0 -0
  313. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/classes.py +0 -0
  314. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/handlers/discord.py +0 -0
  315. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/handlers/file.py +0 -0
  316. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/handlers/pipe.py +0 -0
  317. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/handlers/rich.py +0 -0
  318. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/handlers/text.py +0 -0
  319. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/classes/handlers/zmq.py +0 -0
  320. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/close.py +0 -0
  321. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/globals.py +0 -0
  322. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/handle.py +0 -0
  323. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/logger.py +0 -0
  324. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/other.py +0 -0
  325. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/stdout.py +0 -0
  326. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/utils/level.py +0 -0
  327. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/logs/utils/trace.py +0 -0
  328. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/manager.py +0 -0
  329. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/me.py +0 -0
  330. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/menu.py +0 -0
  331. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/merge.py +0 -0
  332. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/paths/check.py +0 -0
  333. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/paths/db.py +0 -0
  334. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/paths/paths.py +0 -0
  335. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/profiles/data.py +0 -0
  336. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/profiles/manage.py +0 -0
  337. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/profiles/tools.py +0 -0
  338. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/sems.py +0 -0
  339. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/separate.py +0 -0
  340. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/string.py +0 -0
  341. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/system/free.py +0 -0
  342. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/system/network.py +0 -0
  343. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/system/priority.py +0 -0
  344. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/system/speed.py +0 -0
  345. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/system/subprocess.py +0 -0
  346. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/system/system.py +0 -0
  347. {ofscraper-3.13.dev0 → ofscraper-3.13.dev3}/ofscraper/utils/text.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: ofscraper
3
- Version: 3.13.dev0
3
+ Version: 3.13.dev3
4
4
  Summary: automatically scrape onlyfans
5
5
  Author: datawhores
6
6
  Author-email: datawhores@riseup.net
@@ -78,7 +78,7 @@ https://github.com/datawhores/OF-Scraper/issues/442
78
78
 
79
79
  ```Text
80
80
 
81
- Docker and binary releases also availible
81
+ Docker and binary releases also available
82
82
  ```
83
83
 
84
84
  ## Stable
@@ -19,7 +19,7 @@ https://github.com/datawhores/OF-Scraper/issues/442
19
19
 
20
20
  ```Text
21
21
 
22
- Docker and binary releases also availible
22
+ Docker and binary releases also available
23
23
  ```
24
24
 
25
25
  ## Stable
@@ -7,7 +7,6 @@ import time
7
7
  import traceback
8
8
 
9
9
  import aiohttp
10
- import aiohttp.client_exceptions
11
10
  import arrow
12
11
  import certifi
13
12
  import httpx
@@ -18,6 +17,7 @@ import ofscraper.utils.auth.request as auth_requests
18
17
  import ofscraper.utils.config.data as data
19
18
  import ofscraper.utils.constants as constants
20
19
  from ofscraper.utils.auth.utils.warning.print import print_auth_warning
20
+ import ofscraper.utils.settings as settings
21
21
 
22
22
  TOO_MANY = "too_many"
23
23
  AUTH = "auth"
@@ -481,7 +481,7 @@ class sessionManager:
481
481
  params=params,
482
482
  json=json,
483
483
  data=data,
484
- ssl=ssl.create_default_context(cafile=certifi.where()),
484
+ ssl=False if not settings.get_settings().ssl_validation else ssl.create_default_context(cafile=certifi.where()),
485
485
  )
486
486
  else:
487
487
  r = await self._httpx_funct_async(
@@ -12,7 +12,7 @@ r"""
12
12
  """
13
13
 
14
14
  import logging
15
- import timeit
15
+ from datetime import datetime
16
16
  from contextlib import contextmanager
17
17
 
18
18
  import arrow
@@ -24,7 +24,7 @@ log = logging.getLogger("shared")
24
24
  def scrape_context_manager():
25
25
  # reset stream if needed
26
26
  # Before yield as the enter method
27
- start = timeit.default_timer()
27
+ start = datetime.now()
28
28
  log.warning(
29
29
  """
30
30
  ==============================
@@ -33,12 +33,14 @@ def scrape_context_manager():
33
33
  """
34
34
  )
35
35
  yield
36
- end = timeit.default_timer()
36
+ end = datetime.now()
37
37
  log.warning(
38
38
  f"""
39
39
  ===========================
40
40
  [bold] Script Finished [/bold]
41
41
  Run Time: [bold]{str(arrow.get(end)-arrow.get(start)).split(".")[0]}[/bold]
42
+ Started At: [bold]{str(arrow.get(start).format("YYYY-MM-DD hh:mm:ss"))}[/bold]
43
+ Finished At: [bold]{str(arrow.get(end).format("YYYY-MM-DD hh:mm:ss"))}[/bold]
42
44
  ===========================
43
45
  """
44
46
  )
@@ -49,7 +49,7 @@ def setLogger():
49
49
  logger.get_shared_logger()
50
50
  logs.discord_warning()
51
51
  logger.start_threads()
52
-
52
+ paths_manage.cleanup_logs()
53
53
 
54
54
  def systemSet():
55
55
  system.setName()
@@ -104,6 +104,8 @@ def funct(prompt_):
104
104
  enable_auto_after: whether to dynamically set --after: default True
105
105
  default_user_list: default user list for --action
106
106
  default_black_list: default black list for --action
107
+ logs_expire_time: max age for a log before it is autodelete
108
+ ssl_validation: option for whether to validate ssl certificates
107
109
  remove_hash_match: remove files if hash matches
108
110
  ----------------------------------------------------------
109
111
  [Response Type]
@@ -638,6 +640,27 @@ Main user list with all active+expired users can be called main or ofscraper.mai
638
640
  Active user list can be called active or ofscraper.active
639
641
  Expired user list can be called expired or ofscraper.expired
640
642
  List are case insensitive\n
643
+ """,
644
+ },
645
+
646
+ {
647
+ "type": "input",
648
+ "name": "logs_expire_time",
649
+ "message": "Logs expire Time",
650
+ "default": data.get_logs_expire(),
651
+ "option_instruction": """
652
+ Logs will auto delete after the selected amount of time has passed
653
+ If value is 'None' or '0' no logs will be touched
654
+ """,
655
+ },
656
+
657
+ {
658
+ "type": "input",
659
+ "name": "ssl_validation",
660
+ "message": "ssl validation",
661
+ "default": data.get_ssl_validation(),
662
+ "option_instruction": """
663
+ Option to disable ssl certificate validation
641
664
  """,
642
665
  },
643
666
  {
@@ -266,6 +266,22 @@ def get_default_userlist(config=None):
266
266
  )
267
267
 
268
268
 
269
+ @wrapper.config_reader
270
+ def get_logs_expire(config=None):
271
+ return(
272
+ config.get("logs_expire_time")
273
+ if not any(x == config.get("logs_expire_time") for x in [None, ""])
274
+ else config.get("advanced_options", {}).get("logs_expire_time")
275
+ )
276
+
277
+ @wrapper.config_reader
278
+ def get_ssl_validation(config=None):
279
+ val = (
280
+ config.get("ssl_validation")
281
+ if not any(x == config.get("ssl_validation") for x in [None, ""])
282
+ else config.get("advanced_options", {}).get("ssl_validation")
283
+ )
284
+ return val if val else True
269
285
  @wrapper.config_reader
270
286
  def get_post_download_script(config=None):
271
287
  if config is False:
@@ -293,8 +309,8 @@ def get_post_script(config=None):
293
309
  val = config.get("post_script")
294
310
  elif config.get("advanced_options", {}).get("post_script") is not None:
295
311
  val = config.get("advanced_options", {}).get("post_script")
296
- elif config.get("scripts", {}).get("post_download_script") is not None:
297
- val = config.get("scripts", {}).get("post_download_script")
312
+ elif config.get("scripts", {}).get("post_script") is not None:
313
+ val = config.get("scripts", {}).get("post_script")
298
314
  elif config.get("script_options", {}).get("post_script") is not None:
299
315
  val = config.get("script_options", {}).get("post_script")
300
316
  return val if val is not None else constants_attr.getattr("POST_SCRIPT_DEFAULT")
@@ -64,8 +64,10 @@ def get_current_config_schema(config: dict = None) -> dict:
64
64
  "enable_auto_after": data.get_enable_after(config=config),
65
65
  "default_user_list": data.get_default_userlist(config=config),
66
66
  "default_black_list": data.get_default_blacklist(config=config),
67
+ "logs_expire_time":data.get_logs_expire(config=config),
68
+ "ssl_validation":data.get_ssl_validation(config=config)
67
69
  },
68
- "scripts_options": {
70
+ "script_options": {
69
71
  "post_download_script": data.get_post_download_script(config=config),
70
72
  "post_script": data.get_post_script(config=config),
71
73
  },
@@ -97,20 +99,27 @@ def config_diff(config):
97
99
  if config.get("config"):
98
100
  config = config["config"]
99
101
  schema = get_current_config_schema()
100
- return config_diff_helper(config, schema)
102
+ return _config_diff_helper(config, schema)
101
103
 
104
+ def _config_diff_helper(config, schema):
105
+ # Check for keys in schema but missing in config
106
+ if set(schema.keys()) - set(config.keys()):
107
+ return True
102
108
 
103
- def config_diff_helper(config, schema, key=None):
104
- if key:
105
- config = config[key]
106
- schema = schema[key]
107
- diff = set(schema.keys()) - set(config.keys())
108
- if len(diff) > 0:
109
+ # Check for keys in config but missing in schema
110
+ if set(config.keys()) - set(schema.keys()):
109
111
  return True
110
- for key in schema.keys():
111
- if not isinstance(schema[key], dict):
112
- continue
113
- elif not isinstance(config[key], dict):
114
- return True
115
- elif config_diff_helper(config, schema, key):
116
- return True
112
+
113
+ for key, schema_value in schema.items():
114
+ if key in config:
115
+ config_value = config[key]
116
+ if isinstance(schema_value, dict):
117
+ if not isinstance(config_value, dict):
118
+ return True
119
+ if _config_diff_helper(config_value, schema_value):
120
+ return True
121
+ elif schema_value != config_value: # Simple value comparison
122
+ return True
123
+ # Keys missing from config are already handled above
124
+
125
+ return False
@@ -18,7 +18,7 @@ fileHashes = {}
18
18
  def get_hash(file_data, mediatype=None):
19
19
  global fileHashes
20
20
  hash = None
21
- if settings.get_hash(mediatype=mediatype) is None:
21
+ if settings.get_settings().hash is None:
22
22
  return
23
23
  if isinstance(file_data, placeholder.Placeholders):
24
24
  file_data = file_data.trunicated_filepath
@@ -137,7 +137,7 @@ downloads_pending = set()
137
137
  def add_download_job_task(*args, **kwargs):
138
138
  max_visible = constants.getattr("MAX_PROGRESS_BARS")
139
139
  visible = (
140
- settings.get_settings().download_bars()
140
+ settings.get_settings().download_bars
141
141
  and len(download_job_progress.tasks) < max_visible
142
142
  )
143
143
  task = download_job_progress.add_task(*args, visible=visible, **kwargs)
@@ -160,7 +160,7 @@ def update_download_task(*args, **kwargs):
160
160
 
161
161
 
162
162
  def update_download_job_task(*args, **kwargs):
163
- if not settings.get_settings().download_bars():
163
+ if not settings.get_settings().download_bars:
164
164
  return
165
165
  download_job_progress.update(*args, **kwargs)
166
166
 
@@ -102,7 +102,7 @@ def print_latest_version():
102
102
  "[bold yellow]OF-Scraper can't check version (probably from zip)[/bold yellow]"
103
103
  )
104
104
  elif ".dev" in __version__:
105
- log.error("OF-Scraper up to date[/bold yellow]")
105
+ log.error("[bold yellow]OF-Scraper up to date[/bold yellow]")
106
106
  else:
107
107
  log.error(
108
108
  f"[bold yellow]new version of OF-Scraper available[/bold yellow]: [bold]{new_version}[/bold]"
@@ -78,15 +78,13 @@ def getlogpath():
78
78
  path = None
79
79
  if not data.get_appendlog():
80
80
  path = (
81
- get_config_home()
82
- / "logging"
81
+ get_log_folder()
83
82
  / f'{data.get_main_profile()}_{dates_manager.getLogDate().get("day")}'
84
83
  / f'ofscraper_{data.get_main_profile()}_{dates_manager.getLogDate().get("now")}.log'
85
84
  )
86
85
  else:
87
86
  path = (
88
- get_config_home()
89
- / "logging"
87
+ get_log_folder()
90
88
  / f'ofscraper_{data.get_main_profile()}_{dates_manager.getLogDate().get("day")}.log'
91
89
  )
92
90
  path = pathlib.Path(path).resolve()
@@ -94,6 +92,11 @@ def getlogpath():
94
92
  return path
95
93
 
96
94
 
95
+ def get_log_folder():
96
+ return (
97
+ get_config_home()
98
+ / "logging")
99
+
97
100
  def get_profile_path(name=None):
98
101
  if name:
99
102
  profile = get_config_home() / name
@@ -0,0 +1,77 @@
1
+ import logging
2
+ import shutil
3
+ import arrow
4
+ import traceback
5
+ import ofscraper.utils.paths.common as common_paths
6
+ import ofscraper.utils.settings as settings
7
+ import ofscraper.utils.context.stdout as stdout
8
+ import ofscraper.utils.console as console_
9
+
10
+ console=console_.get_shared_console()
11
+
12
+
13
+ def make_folders():
14
+ common_paths.get_config_folder()
15
+ create_profile_path()
16
+
17
+
18
+ def create_profile_path(name=None):
19
+ out = common_paths.get_profile_path(name)
20
+ out.mkdir(exist_ok=True, parents=True)
21
+ return out
22
+
23
+
24
+ def copy_path(source, dst):
25
+ try:
26
+ shutil.copy2(source, dst)
27
+ except OSError as e:
28
+ logging.getLogger("shared").debug("failed to copy with copy2 using copy")
29
+ logging.getLogger("shared").traceback_(e)
30
+ logging.getLogger("shared").traceback_(traceback.format_exc())
31
+ shutil.copy(source, dst)
32
+ except Exception as e:
33
+ raise e
34
+
35
+
36
+ def cleanup_logs():
37
+ """
38
+ Performs actions to cleanup logs
39
+ """
40
+ with stdout.lowstdout():
41
+ delete_old_logs()
42
+ delete_empty_folders()
43
+
44
+ def delete_old_logs():
45
+ """
46
+ Recursively finds and deletes .log files in the specified folder
47
+ that are older than the given maximum age
48
+
49
+ Also cleans up folder
50
+ """
51
+ log_path = common_paths.get_log_folder()
52
+ now = arrow.now().float_timestamp
53
+ if not settings.get_settings().logs_expire_time:
54
+ return
55
+ for log_file in log_path.rglob("*.log"): # rglob for recursive globbing
56
+ try:
57
+ if (now - log_file.stat().st_mtime) > settings.get_settings().logs_expire_time:
58
+ log_file.unlink() # pathlib's way to delete a file
59
+ console.print(f"Deleted old log file: {log_file}")
60
+ except OSError as e:
61
+ console.print(f"Error deleting file {log_file}: {e}")
62
+ def delete_empty_folders():
63
+ """
64
+ Recursively finds and deletes empty folders within thelog folder.
65
+
66
+ """
67
+ log_path = common_paths.get_log_folder()
68
+
69
+ # Iterate through all directories within the log folder and its subdirectories
70
+ for folder in sorted(log_path.rglob("*"), key=lambda p: len(str(p)), reverse=True):
71
+ if folder.is_dir() and not any(folder.iterdir()):
72
+ try:
73
+ folder.rmdir()
74
+ console.print(f"Deleted empty folder: {folder}")
75
+ except OSError as e:
76
+ console.print(f"Error deleting folder {folder}: {e}")
77
+
@@ -98,6 +98,8 @@ def setup_settings(mediatype):
98
98
  )
99
99
  merged.auto_resume = get_auto_resume(mediatype)
100
100
  merged.cached_disabled = get_auto_after_enabled()
101
+ merged.logs_expire_time=config_data.get_logs_expire()
102
+ merged.ssl_validation=config_data.get_ssl_validation()
101
103
 
102
104
  return merged
103
105
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "ofscraper"
3
- version = "3.13.dev"
3
+ version = "3.13.dev3"
4
4
  description = "automatically scrape onlyfans"
5
5
  authors = ["datawhores <datawhores@riseup.net>"]
6
6
  readme = "README.md"
@@ -1,16 +0,0 @@
1
- # import asyncio
2
-
3
- # import ofscraper.commands.scraper.actions.utils.globals as common_globals
4
- # import ofscraper.utils.settings as settings
5
-
6
-
7
- # async def send_bar_msg_batch(msg, count, update_count):
8
- # if not settings.get_settings().download_bars():
9
- # return
10
- # await send_msg_alt(msg)
11
-
12
-
13
- # async def send_bar_msg(func, count, update_count):
14
- # if not settings.get_settings().download_bars():
15
- # return
16
- # await asyncio.get_event_loop().run_in_executor(common_globals.thread, func)
@@ -1,28 +0,0 @@
1
- import logging
2
- import shutil
3
- import traceback
4
-
5
- import ofscraper.utils.paths.common as common_paths
6
-
7
-
8
- def make_folders():
9
- common_paths.get_config_folder()
10
- create_profile_path()
11
-
12
-
13
- def create_profile_path(name=None):
14
- out = common_paths.get_profile_path(name)
15
- out.mkdir(exist_ok=True, parents=True)
16
- return out
17
-
18
-
19
- def copy_path(source, dst):
20
- try:
21
- shutil.copy2(source, dst)
22
- except OSError as e:
23
- logging.getLogger("shared").debug("failed to copy with copy2 using copy")
24
- logging.getLogger("shared").traceback_(e)
25
- logging.getLogger("shared").traceback_(traceback.format_exc())
26
- shutil.copy(source, dst)
27
- except Exception as e:
28
- raise e
File without changes