What's Changed
Major Features & Additions
-
User Data Excel Exporter (
export_user_data_excel.py) (@fastfingertips in 67843f4)- Comprehensive multi-sheet workbook generation across 12 distinct datasets: Overview, Watched Films, Diary, Reviews, Watchlist, Ratings Breakdown, Liked Films, Liked Reviews, Lists, Liked Lists, Following, Followers.
- Professional Layout & Typography: Fixed frozen headers (
A2), auto-filter dropdowns, 26pt header padding, 21pt data rows, and alternating zebra striping (#F8FAFC). - Conditional Formatting:
- In-cell Letterboxd-green Data Bars on rating distribution counts (
00E054). - 3-color soft gradient for film ratings (1.0 peach -> 3.0 yellow -> 5.0 soft green).
- Status highlights for
"Yes"(liked, rewatch, reviewed) and"Spoiler"flags. - Subtle blue gradient for film runtimes.
- In-cell Letterboxd-green Data Bars on rating distribution counts (
- Smart Data Types: True numeric formatting (
#,##0counts,0.0ratings, raw text years/IDs) allowing native Excel formulas (SUM,AVERAGE,COUNT) and number filters. - Clickable Hyperlinks: Automatically converts movie, review, and profile URLs into native clickable links (
#0969DA). - Tab Colors: Themed sheet tabs matching Letterboxd's visual identity (green for films, orange for reviews, cyan for lists, slate for social).
- Robust CLI & File Locking: Added
--force(-f),--runtime(-r), and--open(-o) flags with non-crashingPermissionErrorrecovery when the spreadsheet is currently open in Excel.
-
Multithreaded Diary Runtime Forwarding (@fastfingertips in 1b681eb)
User.get_diaryand related diary methods (get_diary_year,get_diary_month,get_diary_day,get_wrapped) now exposefetch_runtime: bool = Falseandmax_workers: int | None = None.- Allows resolving missing film runtimes concurrently using a worker pool, drastically cutting down runtime extraction time.
-
Profile Badges & Backdrop Support (@fastfingertips in 6f7c485, 9c65189, 88785f3)
- Replaced binary
is_hqboolean withbadge: str("member","pro","patron","hq"). - Added
backdropURL extraction onUserprofile. - Introduced generic
@skip_ifand@skip_if_hqdecorators to gracefully bypass endpoints unavailable for specific subscription tiers.
- Replaced binary
-
New CLI Tools & Options (@fastfingertips in c2fb86a, 9c4ffea)
- Added
--open(-o) flag across example scripts to automatically launch generated HTML and Excel reports in the default system viewer. - Added
network_balance_analyzer.pyexample tool with HTML reporting for mutual follower analysis.
- Added
Bug Fixes & Improvements
- List Comments & Likes Count Parsing: Updated CSS selectors in
lists_extractor.pyanduser_likes.pyto match Letterboxd's updated DOM structure, restoring like and comment count extraction on list summaries (@fastfingertips in 364e333). - Liked Reviews Parsing: Corrected user display name/author extraction and added robust star rating parsing helper (
parse_rating) (@fastfingertips in 0340bee). - Display Name Sanitization: Fixed display name extraction to use the header element and properly strip badge suffixes (
HQ,PRO,PATRON) from user display names (@fastfingertips in c83c2e6, 7e5b7ae). - Full Data Export: Enhanced
export_user_data.py(v0.1.1) with structured error handling and complete JSON endpoint exports (@fastfingertips in 19c6651). - Watchlist Comparison Optimization: Optimized
compare_watchlists.py(v0.1.5) performance for HQ and private accounts with improved sort arrow visibility (@fastfingertips in 510b960, fd28a4d, 3506cfd).
Dependencies
- Added
openpyxl>=3.0.0under optional dependency extra:pip install "letterboxdpy[examples]"(@fastfingertips in 67843f4).
Commit Details
ba7cbc0chore: bump version to 6.6.0 by @fastfingertips67843f4feat(examples): add user data excel exporter (v0.1.0) by @fastfingertips19c6651feat(examples): improve export_user_data with error handling and full data export (v0.1.1) by @fastfingertips1b681ebfeat(user): forward fetch_runtime and max_workers across diary methods by @fastfingertips364e333fix(lists): update likes and comments selectors for list summaries by @fastfingertips0340beefix(likes): fix liked reviews parsing and add parse_rating helper by @fastfingertips3506cfdstyle(templates): improve sort arrow visibility in tables by @fastfingertips510b960feat(examples): improve compare_watchlists report (v0.1.5) by @fastfingertipsc2fb86afeat(examples): add --open flag to launch html reports in browser by @fastfingertipsfd28a4dperf(examples): optimize compare_watchlists for hq and private accounts (v0.1.3) by @fastfingertips9c65189feat(user): add backdrop support and generic skip_if decorator by @fastfingertips6f7c485feat(user): replace is_hq with badge attribute by @fastfingertips88785f3feat(user_profile): add skip_if_hq decorator by @fastfingertipsc83c2e6fix(user_profile): improve display name extraction using header element and suffix cleanup by @fastfingertips7e5b7aefix(user_profile): update hq status extraction with badge and body class check by @fastfingertips02c926adocs: update star history chart in README by @fastfingertips9c4ffeafeat(examples): add network balance analyzer script and template by @fastfingertipsf12804ddocs: update examples README with usage and output details by @fastfingertips5045c58feat(examples): make target username linkable in header partial by @fastfingertips
Full Changelog: v6.5.13...v6.6.0