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.
- tbr_deal_finder/__init__.py +1 -5
- tbr_deal_finder/__main__.py +7 -0
- tbr_deal_finder/book.py +16 -8
- tbr_deal_finder/cli.py +13 -27
- tbr_deal_finder/config.py +2 -2
- tbr_deal_finder/desktop_updater.py +147 -0
- tbr_deal_finder/gui/__init__.py +0 -0
- tbr_deal_finder/gui/main.py +725 -0
- tbr_deal_finder/gui/pages/__init__.py +1 -0
- tbr_deal_finder/gui/pages/all_books.py +93 -0
- tbr_deal_finder/gui/pages/all_deals.py +63 -0
- tbr_deal_finder/gui/pages/base_book_page.py +291 -0
- tbr_deal_finder/gui/pages/book_details.py +604 -0
- tbr_deal_finder/gui/pages/latest_deals.py +370 -0
- tbr_deal_finder/gui/pages/settings.py +389 -0
- tbr_deal_finder/retailer/amazon.py +58 -7
- tbr_deal_finder/retailer/amazon_custom_auth.py +79 -0
- tbr_deal_finder/retailer/audible.py +2 -1
- tbr_deal_finder/retailer/chirp.py +55 -11
- tbr_deal_finder/retailer/kindle.py +31 -19
- tbr_deal_finder/retailer/librofm.py +53 -20
- tbr_deal_finder/retailer/models.py +31 -1
- tbr_deal_finder/retailer_deal.py +38 -14
- tbr_deal_finder/tracked_books.py +24 -18
- tbr_deal_finder/utils.py +64 -2
- tbr_deal_finder/version_check.py +40 -0
- {tbr_deal_finder-0.2.1.dist-info → tbr_deal_finder-0.3.1.dist-info}/METADATA +18 -87
- tbr_deal_finder-0.3.1.dist-info/RECORD +38 -0
- {tbr_deal_finder-0.2.1.dist-info → tbr_deal_finder-0.3.1.dist-info}/entry_points.txt +1 -0
- tbr_deal_finder-0.2.1.dist-info/RECORD +0 -25
- {tbr_deal_finder-0.2.1.dist-info → tbr_deal_finder-0.3.1.dist-info}/WHEEL +0 -0
- {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.
|
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
|
-
|
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
|
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
|
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
|
-
|
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,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,,
|
File without changes
|
File without changes
|