tbr-deal-finder 0.2.1__py3-none-any.whl → 0.3.1__py3-none-any.whl

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 (32) hide show
  1. tbr_deal_finder/__init__.py +1 -5
  2. tbr_deal_finder/__main__.py +7 -0
  3. tbr_deal_finder/book.py +16 -8
  4. tbr_deal_finder/cli.py +13 -27
  5. tbr_deal_finder/config.py +2 -2
  6. tbr_deal_finder/desktop_updater.py +147 -0
  7. tbr_deal_finder/gui/__init__.py +0 -0
  8. tbr_deal_finder/gui/main.py +725 -0
  9. tbr_deal_finder/gui/pages/__init__.py +1 -0
  10. tbr_deal_finder/gui/pages/all_books.py +93 -0
  11. tbr_deal_finder/gui/pages/all_deals.py +63 -0
  12. tbr_deal_finder/gui/pages/base_book_page.py +291 -0
  13. tbr_deal_finder/gui/pages/book_details.py +604 -0
  14. tbr_deal_finder/gui/pages/latest_deals.py +370 -0
  15. tbr_deal_finder/gui/pages/settings.py +389 -0
  16. tbr_deal_finder/retailer/amazon.py +58 -7
  17. tbr_deal_finder/retailer/amazon_custom_auth.py +79 -0
  18. tbr_deal_finder/retailer/audible.py +2 -1
  19. tbr_deal_finder/retailer/chirp.py +55 -11
  20. tbr_deal_finder/retailer/kindle.py +31 -19
  21. tbr_deal_finder/retailer/librofm.py +53 -20
  22. tbr_deal_finder/retailer/models.py +31 -1
  23. tbr_deal_finder/retailer_deal.py +38 -14
  24. tbr_deal_finder/tracked_books.py +24 -18
  25. tbr_deal_finder/utils.py +64 -2
  26. tbr_deal_finder/version_check.py +40 -0
  27. {tbr_deal_finder-0.2.1.dist-info → tbr_deal_finder-0.3.1.dist-info}/METADATA +18 -87
  28. tbr_deal_finder-0.3.1.dist-info/RECORD +38 -0
  29. {tbr_deal_finder-0.2.1.dist-info → tbr_deal_finder-0.3.1.dist-info}/entry_points.txt +1 -0
  30. tbr_deal_finder-0.2.1.dist-info/RECORD +0 -25
  31. {tbr_deal_finder-0.2.1.dist-info → tbr_deal_finder-0.3.1.dist-info}/WHEEL +0 -0
  32. {tbr_deal_finder-0.2.1.dist-info → tbr_deal_finder-0.3.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tbr-deal-finder
3
- Version: 0.2.1
3
+ Version: 0.3.1
4
4
  Summary: Track price drops and find deals on books in your TBR list across audiobook and ebook formats.
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -9,26 +9,32 @@ Requires-Dist: aiohttp>=3.12.14
9
9
  Requires-Dist: audible==0.8.2
10
10
  Requires-Dist: click>=8.2.1
11
11
  Requires-Dist: duckdb>=1.3.2
12
+ Requires-Dist: flet[all]==0.28.2
12
13
  Requires-Dist: levenshtein>=0.27.1
14
+ Requires-Dist: pandas-stubs==2.3.0.250703
13
15
  Requires-Dist: pandas>=2.3.1
16
+ Requires-Dist: plotly>=5.17.0
17
+ Requires-Dist: pyinstaller>=6.15.0
14
18
  Requires-Dist: questionary>=2.1.0
15
19
  Requires-Dist: tqdm>=4.67.1
16
20
  Requires-Dist: unidecode>=1.4.0
17
21
  Description-Content-Type: text/markdown
18
22
 
19
- # tbr-deal-finder
20
-
23
+ <div>
24
+ <h1>TBR Deal Finder <img src="assets/icon.png" alt="TBR Deal Finder" width="128" height="128" style="vertical-align: middle; margin-left: 10px;"></h1>
25
+ </div>
21
26
  Track price drops and find deals on books in your TBR (To Be Read) and wishlist across digital book retailers.
22
27
 
23
28
  ## Features
24
29
  - Use your StoryGraph exports, Goodreads exports, and custom csvs (spreadsheet) to track book deals
25
- - Supports multiple of the library exports above
30
+ - Supports multiple library exports
26
31
  - Tracks deals on the wishlist of all your configured retailers like audible (excluding kindle)
27
- - Supports multiple locales and currencies
32
+ - Supports multiple locales
28
33
  - Find the latest and active deals from supported sellers
29
- - Simple CLI interface for setup and usage
30
34
  - Only get notified for new deals or view all active deals
31
35
  - Filters out books you already own to prevent purchasing the same book on multiple retailers
36
+ - Track historical pricing* (History limited to your runs making it more accurate over time)
37
+ - Compare pricing across digital retailers
32
38
 
33
39
  ## Support
34
40
 
@@ -53,24 +59,6 @@ Track price drops and find deals on books in your TBR (To Be Read) and wishlist
53
59
  * ES
54
60
  * BR
55
61
 
56
- ## Installation Guide
57
-
58
- ### Python (Recommended)
59
- 1. If it's not already on your computer, download Python https://www.python.org/downloads/
60
- 1. tbr-deal-finder requires Python3.13 or higher
61
- 2. Optional: Install and use virtualenv
62
- 3. Open your Terminal/Command Prompt
63
- 4. Run `pip3.13 install tbr-deal-finder`
64
-
65
- ### UV
66
- 1. Clone the repository:
67
- ```sh
68
- git clone https://github.com/yourusername/tbr-deal-finder.git
69
- cd tbr-deal-finder
70
- ```
71
- 2. Install uv:
72
- https://docs.astral.sh/uv/getting-started/installation/
73
-
74
62
  ## Configuration
75
63
  This tool can use the csv generated by the app you use to track your TBRs.
76
64
  Here are the steps to get your export.
@@ -103,70 +91,13 @@ If you've got your own CSV you're using to track your TBRs all you need are the
103
91
  Optionally, you can add the `Read Status` column. Set `to-read` for all books you want to be tracked.
104
92
  If you don't add this column the deal finder will run on ALL books in the CSV.
105
93
 
106
- ### tbr-deal-finder setup
107
-
108
- #### Python
109
- ```sh
110
- tbr-deal-finder setup
111
- ```
112
-
113
- #### UV
114
- ```sh
115
- uv run -m tbr_deal_finder.cli setup
116
- ```
117
-
118
- You will be prompted to:
119
- - Enter the path(s) to your StoryGraph export CSV file(s)
120
- - Select your locale (country/region)
121
- - Set your maximum price for deals
122
- - Set your minimum discount percentage
123
-
124
- The configuration will be saved for future runs.
125
-
126
- ## Usage
127
- All commands are available via the CLI:
128
-
129
- - `setup` – Set up or update your configuration interactively.
130
- - `latest-deals` – Find and print the latest book deals based on your config.
131
- - `active-deals` – Show all currently active deals.
132
-
133
- #### Python
134
- ```sh
135
- tbr-deal-finder [COMMAND]
136
- ```
137
-
138
- #### UV
139
- ```sh
140
- uv run -m tbr_deal_finder.cli [COMMAND]
141
- ```
142
-
143
- Example:
144
- ```sh
145
- tbr-deal-finder latest-deals
146
-
147
- # or
148
-
149
- uv run -m tbr_deal_finder.cli latest-deals
150
- ```
151
-
152
- ## Updating your TBR
153
- To update tbr-deal-finder as your TBR changes, regenerate and download your library export.
154
- See [Configuration](#Configuration) for steps.
155
-
156
-
157
- ## Updating the tbr-deal-finder
158
-
159
- ### Python
160
- ```sh
161
- pip3.13 install tbr-deal-finder --upgrade
162
- ```
163
-
164
- ### UV
165
- ```sh
166
- # From the repo directory
167
- git checkout main && git fetch
168
- ```
94
+ ## Installation Guide
95
+ Each guide contains everything you need: installation, usage, and updating instructions.
169
96
 
97
+ ### Choose Your Guide
98
+ - [📱 **Desktop App Guide**](docs/desktop-app.md) - For users who prefer graphical interfaces
99
+ - [🐍 **Python CLI Guide**](docs/python-cli.md) - For command-line and automation users
100
+ - [🛠️ **Development Guide**](docs/development.md) - For developers and contributors
170
101
 
171
102
  ---
172
103
 
@@ -0,0 +1,38 @@
1
+ tbr_deal_finder/__init__.py,sha256=iYLaqaUWltN1HqI41ELPAw8KoYbwf9AbF4iXz4we5xw,104
2
+ tbr_deal_finder/__main__.py,sha256=b2-3WiGIno_XVusUDijQXa2MthKahFz6CVH-hIBe7es,165
3
+ tbr_deal_finder/book.py,sha256=WbvDEeI923iQX_eIsC9H7y-qKVPkfCqwjBCqChssFCM,6740
4
+ tbr_deal_finder/cli.py,sha256=16vZnWS9TTWPhIjZsjsf7OY7Btb0ULOfws5EkUefbRY,7089
5
+ tbr_deal_finder/config.py,sha256=pocHMEoJVIoiuRzEtKDAmsGmiiLgD-lN6n6TU9gI8Lc,3982
6
+ tbr_deal_finder/desktop_updater.py,sha256=VCD4MW1ckx6yyq0N_CJrOth8wePqPhTjhvdJTKsUVkw,5123
7
+ tbr_deal_finder/migrations.py,sha256=fO7r2JbWb6YG0CsPqauakwvbKaEFPxqX1PP8c8N03Wc,4951
8
+ tbr_deal_finder/owned_books.py,sha256=Cf1VeiSg7XBi_TXptJfy5sO1mEgMMQWbJ_P6SzAx0nQ,516
9
+ tbr_deal_finder/retailer_deal.py,sha256=S5E7XHYx-L-31jvuIJ_vaaTCeTSxCjosLFkdA-fBc1o,7525
10
+ tbr_deal_finder/tracked_books.py,sha256=u3KfBNlwvsEwTfM5TAJVLbiTmm1lTe2k70JJOszQz1k,12714
11
+ tbr_deal_finder/utils.py,sha256=mWqn-AUniLG0If3Hm2fwvRf2tycA-47oHtd3HKFfzbU,3159
12
+ tbr_deal_finder/version_check.py,sha256=tzuKWngnjSdjPAOdyuPk2ym6Lv3LyeObJAfgsBIH9YQ,1217
13
+ tbr_deal_finder/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ tbr_deal_finder/gui/main.py,sha256=I2YNyZkIln6bEl1E2aHqHd3eOJurgMBW-gZMN1MQAOU,26413
15
+ tbr_deal_finder/gui/pages/__init__.py,sha256=1xc9Ib3oX_hqxLdhZvbCv3AhwOmVBSklZZC6CAcvoMU,20
16
+ tbr_deal_finder/gui/pages/all_books.py,sha256=FG9mHofSmNUiYY9EeOBZeWUAAAxhvkTTWLoK1tJJrSc,3418
17
+ tbr_deal_finder/gui/pages/all_deals.py,sha256=rY08w4XXFc_Jbd39BPJ6fO00vstuuu2YHvZterHx5ZI,2389
18
+ tbr_deal_finder/gui/pages/base_book_page.py,sha256=Car1OSX571xBz_WHCMYZ4f5-Nd0FLB5MC_xC41g5aFU,10491
19
+ tbr_deal_finder/gui/pages/book_details.py,sha256=POknUa9yNjfqhC6eXuw7RtaRcFtQj_CdvJ8mK2r6DDo,22047
20
+ tbr_deal_finder/gui/pages/latest_deals.py,sha256=IuUg2mJEMqoDz4EoMtcfJFCvvSMrem7raJdkjDP5xvE,13813
21
+ tbr_deal_finder/gui/pages/settings.py,sha256=5kr6FXdp6s7OalOEfRgzZOhjrzILiw4CgT3nIOhaHYk,14316
22
+ tbr_deal_finder/queries/get_active_deals.sql,sha256=nh0F1lRV6YVrUV7gsQpjsgfXmN9R0peBeMHRifjgpUM,212
23
+ tbr_deal_finder/queries/get_deals_found_at.sql,sha256=KqrtQk7FS4Hf74RyL1r-oD2D-RJz1urrxKxkwlvjAro,139
24
+ tbr_deal_finder/queries/latest_deal_last_ran_most_recent_success.sql,sha256=W4cNMAHtcW2DzQyPL8SHHFcbVZQKVK2VfTzazxC3LJU,107
25
+ tbr_deal_finder/queries/latest_unknown_book_sync.sql,sha256=d4ewoYP5otnCj0_TqsXCCLI8BEmHzqTyJrGxTvl2l-I,108
26
+ tbr_deal_finder/retailer/__init__.py,sha256=OD6jUYV8LaURxqHnZq-aiFi7OdWG6qWznRlF_g246lo,316
27
+ tbr_deal_finder/retailer/amazon.py,sha256=oclBGn2jMEaS9J3g6YdcCW4YBDftJWn9-e2f-iXZkvo,4267
28
+ tbr_deal_finder/retailer/amazon_custom_auth.py,sha256=PpPnIjH8iywOFj49QmdnSRy7p_l533FcahM0pdi9mTg,2184
29
+ tbr_deal_finder/retailer/audible.py,sha256=xnxwbaUtpviS3i-2lMdgy_segUKLOuqOwVVbItind5o,4029
30
+ tbr_deal_finder/retailer/chirp.py,sha256=GR8yeXp-1DHMktepy5TecHslrUibpLM7LfueIuTraic,10642
31
+ tbr_deal_finder/retailer/kindle.py,sha256=kA4SO2kl2SvJHADkBYyYMgq_bditStbiTiW7piQPAFI,5282
32
+ tbr_deal_finder/retailer/librofm.py,sha256=dn1kaJEQ9g_AOAFNKhUtFLxYxQZa6RAHgXhT_dx-O3k,7514
33
+ tbr_deal_finder/retailer/models.py,sha256=56xTwcLcw3bFcvTDOb85TktqtksvvyY95hZBbp9-5mY,3340
34
+ tbr_deal_finder-0.3.1.dist-info/METADATA,sha256=4RkxKZB-76ZNwWBIkhZhmPmcU3_otzi1_BQUccI_9gE,3448
35
+ tbr_deal_finder-0.3.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
36
+ tbr_deal_finder-0.3.1.dist-info/entry_points.txt,sha256=xjeRw7aX_jbX1ERC--IgYIa2oLNgeRefsMbKeTAVb70,112
37
+ tbr_deal_finder-0.3.1.dist-info/licenses/LICENSE,sha256=rNc0wNPn4d4HHu6ZheJzeUaz_FbJ4rj2Dr2FjAivkNg,1064
38
+ tbr_deal_finder-0.3.1.dist-info/RECORD,,
@@ -1,2 +1,3 @@
1
1
  [console_scripts]
2
2
  tbr-deal-finder = tbr_deal_finder.cli:cli
3
+ tbr-deal-finder-gui = tbr_deal_finder.gui.main:main
@@ -1,25 +0,0 @@
1
- tbr_deal_finder/__init__.py,sha256=WCoj0GZrRiCQlrpkLTw1VUeJmX-RtBLdLqnFYn1Es_4,208
2
- tbr_deal_finder/book.py,sha256=mJzuDgyd5UQqlfubj8e9uhmbUxliYvD1y-oQkfenIAM,6414
3
- tbr_deal_finder/cli.py,sha256=YnfYyjoeQ0pefPdT-fcz19NQWlEWTHldAR52owoAxd8,7493
4
- tbr_deal_finder/config.py,sha256=Bpr9C9NClsHrFJuykcITrtRTr2vxAzbcZrMQ85neQ-Y,3978
5
- tbr_deal_finder/migrations.py,sha256=fO7r2JbWb6YG0CsPqauakwvbKaEFPxqX1PP8c8N03Wc,4951
6
- tbr_deal_finder/owned_books.py,sha256=Cf1VeiSg7XBi_TXptJfy5sO1mEgMMQWbJ_P6SzAx0nQ,516
7
- tbr_deal_finder/retailer_deal.py,sha256=_0ZxsTB3frWHKFmfIWZOdsXGe5zOylNh04oamuWd45c,6955
8
- tbr_deal_finder/tracked_books.py,sha256=1zKv1aRqP9AnyZlzfyAWWUNamrFG6UhWXubZ-1HzBm4,12486
9
- tbr_deal_finder/utils.py,sha256=_4wdGFDtqCdMyoMnwTDiHgCR4WQLAcQr8LlZZZUcq6E,1357
10
- tbr_deal_finder/queries/get_active_deals.sql,sha256=nh0F1lRV6YVrUV7gsQpjsgfXmN9R0peBeMHRifjgpUM,212
11
- tbr_deal_finder/queries/get_deals_found_at.sql,sha256=KqrtQk7FS4Hf74RyL1r-oD2D-RJz1urrxKxkwlvjAro,139
12
- tbr_deal_finder/queries/latest_deal_last_ran_most_recent_success.sql,sha256=W4cNMAHtcW2DzQyPL8SHHFcbVZQKVK2VfTzazxC3LJU,107
13
- tbr_deal_finder/queries/latest_unknown_book_sync.sql,sha256=d4ewoYP5otnCj0_TqsXCCLI8BEmHzqTyJrGxTvl2l-I,108
14
- tbr_deal_finder/retailer/__init__.py,sha256=OD6jUYV8LaURxqHnZq-aiFi7OdWG6qWznRlF_g246lo,316
15
- tbr_deal_finder/retailer/amazon.py,sha256=sUjNkKEBEOeT_mYPDyi4XKvijM8kM8ZT4hKAe7-j7yI,2468
16
- tbr_deal_finder/retailer/audible.py,sha256=qwXDKc1W8vGGhqvU2YI7hNfD1rHz2yL-8foXstxb8t8,3991
17
- tbr_deal_finder/retailer/chirp.py,sha256=f_O-6X9duR_gBT8UWDxDr-KQYSRFOOiYOX9Az2pCi6Y,9183
18
- tbr_deal_finder/retailer/kindle.py,sha256=ZkOqNu43C5JbngB6lZhdK0373NH-iJKHE1fFIjGuMow,4829
19
- tbr_deal_finder/retailer/librofm.py,sha256=TRey_38sf3VGpvXxLwhdqwYKP7Izj07c9Qs3n1pu5_Y,6494
20
- tbr_deal_finder/retailer/models.py,sha256=xm99ngt_Ze7yyEwttddkpwL7xjy0YfcFAduV6Rsx63M,2510
21
- tbr_deal_finder-0.2.1.dist-info/METADATA,sha256=QKG3ak5XtMq_TLYHF10BFDak_tycxBCJaeNce6qKVLg,4381
22
- tbr_deal_finder-0.2.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
23
- tbr_deal_finder-0.2.1.dist-info/entry_points.txt,sha256=y_KG1k8xVCY8gngSZ-na2bkK-tTLUdOc_qZ9Djwldv0,60
24
- tbr_deal_finder-0.2.1.dist-info/licenses/LICENSE,sha256=rNc0wNPn4d4HHu6ZheJzeUaz_FbJ4rj2Dr2FjAivkNg,1064
25
- tbr_deal_finder-0.2.1.dist-info/RECORD,,