mytunes-pro 2.0.6__py3-none-any.whl → 2.0.7__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.
mytunes/app.py CHANGED
@@ -44,7 +44,7 @@ MPV_SOCKET = "/tmp/mpv_socket"
44
44
  LOG_FILE = "/tmp/mytunes_mpv.log"
45
45
  PID_FILE = "/tmp/mytunes_mpv.pid"
46
46
  APP_NAME = "MyTunes Pro"
47
- APP_VERSION = "2.0.6"
47
+ APP_VERSION = "2.0.7"
48
48
 
49
49
  # === [Strings & Localization] ===
50
50
  STRINGS = {
@@ -171,6 +171,12 @@ class DataManager:
171
171
  def set_progress(self, url, time_pos):
172
172
  if "resume" not in self.data: self.data["resume"] = {}
173
173
  self.data["resume"][url] = time_pos
174
+ # Limit resume data to 500 entries (FIFO cleanup)
175
+ if len(self.data["resume"]) > 500:
176
+ # Remove oldest entries (first 100)
177
+ keys = list(self.data["resume"].keys())
178
+ for k in keys[:100]:
179
+ del self.data["resume"][k]
174
180
 
175
181
  def add_history(self, item):
176
182
  self.data['history'] = [h for h in self.data['history'] if h['url'] != item['url']]
@@ -515,6 +521,7 @@ class MyTunesApp:
515
521
  self.last_save_time = time.time()
516
522
  self.status_set_time = 0
517
523
  self.auto_preset_name = "Pop" # Default Auto detected genre
524
+ self._eq_cache = {} # Cache: {url: detected_genre} to avoid re-computation
518
525
 
519
526
  # Throttling Counters
520
527
  self.loop_count = 0
@@ -895,6 +902,20 @@ class MyTunesApp:
895
902
  Smart genre detection using weighted scoring.
896
903
  Analyzes Title and Author for keywords.
897
904
  """
905
+ # Cache check: return cached result if available
906
+ if not isinstance(item, str):
907
+ url = item.get('url', '')
908
+ if url and url in self._eq_cache:
909
+ cached = self._eq_cache[url]
910
+ self.auto_preset_name = cached
911
+ return cached
912
+ # Limit cache size to 200 entries
913
+ if len(self._eq_cache) > 200:
914
+ # Remove first 50 entries
915
+ keys = list(self._eq_cache.keys())
916
+ for k in keys[:50]:
917
+ del self._eq_cache[k]
918
+
898
919
  # Prepare texts
899
920
  title_text = ""
900
921
  extra_text = ""
@@ -1059,10 +1080,16 @@ class MyTunesApp:
1059
1080
 
1060
1081
  if scores[best_genre] > 0:
1061
1082
  self.auto_preset_name = best_genre
1083
+ # Save to cache
1084
+ if not isinstance(item, str) and item.get('url'):
1085
+ self._eq_cache[item['url']] = best_genre
1062
1086
  return best_genre
1063
1087
 
1064
1088
  # Default Fallback
1065
1089
  self.auto_preset_name = "Pop"
1090
+ # Cache fallback too
1091
+ if not isinstance(item, str) and item.get('url'):
1092
+ self._eq_cache[item['url']] = "Pop"
1066
1093
  return "Pop"
1067
1094
 
1068
1095
  def play_music(self, item, interactive=True, preserve_queue=False):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mytunes-pro
3
- Version: 2.0.6
3
+ Version: 2.0.7
4
4
  Summary: A lightweight, keyboard-centric terminal player for streaming YouTube music.
5
5
  Author-email: loxo <loxo5432@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/postgresql-co-kr/mytunes
@@ -18,9 +18,9 @@ Requires-Dist: yt-dlp
18
18
  Requires-Dist: pusher
19
19
  Dynamic: license-file
20
20
 
21
- # 🎵 MyTunes Pro - Professional TUI Edition v2.0.5
21
+ # 🎵 MyTunes Pro - Professional TUI Edition v2.0.7
22
22
 
23
- ## 🚀 Terminal-based Media Workflow Experiment v2.0.5
23
+ ## 🚀 Terminal-based Media Workflow Experiment v2.0.7
24
24
 
25
25
  > [!IMPORTANT]
26
26
  > **Legal Disclaimer:** This project is a personal, non-commercial research experiment for developer education.
@@ -187,6 +187,7 @@ Executes immediately without worrying about input language status.
187
187
  | **`+`** | **Vol UP** | Volume +5% (Same as `=`) |
188
188
  | **`-`** | **Vol DOWN** | Volume -5% (Same as `_`) |
189
189
  | **`F7`** | **Open YouTube** | View current track in browser |
190
+ | **`E`** | **Equalizer** | Cycle EQ presets (Auto/Flat/Pop/Rock/Jazz/etc.) |
190
191
  | **`6`** | **Back** | Go to previous screen (Same as `Q`, `h`) |
191
192
  | **`L`** | **Forward** | Go forward to previous screen (`Right Arrow`) |
192
193
  | **`ESC`** | **Background** | **Exit without stopping music** (Background Play) |
@@ -215,7 +216,7 @@ Executes immediately without worrying about input language status.
215
216
 
216
217
  # 🎵 MyTunes Pro (Experimental Media Tool - KR)
217
218
 
218
- ## 🚀 터미널 기반 미디어 워크플로우 실험 v2.0.5
219
+ ## 🚀 터미널 기반 미디어 워크플로우 실험 v2.0.7
219
220
 
220
221
  > [!IMPORTANT]
221
222
  > **법적 면책 고지:** 본 프로젝트는 개발자 교육 및 연구를 목적으로 하는 개인적, 비상업적 실험입니다.
@@ -360,6 +361,7 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
360
361
  | **`+`** | **볼륨 UP** | 볼륨 +5% (단축키 `=`와 동일) |
361
362
  | **`-`** | **볼륨 DOWN** | 볼륨 -5% (단축키 `_`와 동일) |
362
363
  | **`F7`** | **유튜브 열기** | 현재 곡을 브라우저에서 보기 |
364
+ | **`E`** | **이퀄라이저** | EQ 프리셋 전환 (Auto/Flat/Pop/Rock/Jazz 등) |
363
365
  | **`6`** | **뒤로가기** | 이전 화면으로 이동 (단축키 `Q`, `h`와 동일) |
364
366
  | **`L`** | **앞으로** | 이전 화면에서 앞화면으로 다시 이동 (`Right Arrow`) |
365
367
  | **`ESC`** | **배경재생** | **음악 끄지 않고 나가기** (백그라운드 재생) |
@@ -388,6 +390,17 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
388
390
 
389
391
  ## 🔄 Changelog
390
392
 
393
+ ### v2.0.7 (2026-02-02)
394
+ - **Performance Optimization**: Improved keyboard responsiveness on Windows/WSL by implementing EQ detection caching.
395
+ - **Data Management**: Limited resume data to 500 entries with automatic FIFO cleanup to prevent JSON bloat.
396
+ - **Cache System**: Added 200-entry EQ genre cache to skip redundant keyword matching for repeated tracks.
397
+
398
+ ### v2.0.6 (2026-02-02)
399
+ - **10-Band Equalizer**: Added professional-grade 10-band EQ with presets (Flat, Pop, Rock, Jazz, Classical, Full Bass, Dance, Club, Live, Soft).
400
+ - **Auto EQ Detection**: Intelligent genre detection from track title/channel info automatically applies optimal EQ preset.
401
+ - **Keyboard Shortcut**: Press `E` to cycle through EQ presets in real-time without interrupting playback.
402
+ - **Multilingual Genre Keywords**: Auto EQ supports genre detection in 12 languages including Korean, Japanese, Chinese, Spanish, and more.
403
+
391
404
  ### v2.0.5 (2026-02-01)
392
405
  - **Input Feedback Refinement**: Transitioned from blinking warnings to a static Bold Yellow status message for better accessibility and premium feel.
393
406
  - **Auto-clear Optimization**: Implemented a 5-second auto-clear timer for all transient status messages.
@@ -0,0 +1,8 @@
1
+ mytunes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ mytunes/app.py,sha256=TMTcxZyBga5IYkJQPRiDKpZ6nEn5OCd62jySxTfmMd8,81539
3
+ mytunes_pro-2.0.7.dist-info/licenses/LICENSE,sha256=lOrP0EIjxcgJia__W3f3PVDZkRd2oRzFkyH2g3LRRCg,1063
4
+ mytunes_pro-2.0.7.dist-info/METADATA,sha256=zXK3JFIv8PpoLquQF0Xh17ebRmMCSMSDCJP0mUHEtvk,28648
5
+ mytunes_pro-2.0.7.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
6
+ mytunes_pro-2.0.7.dist-info/entry_points.txt,sha256=6-MsC13nIgzLvrREaGotc32FgxHx_Iuu1z2qCzJs1_4,65
7
+ mytunes_pro-2.0.7.dist-info/top_level.txt,sha256=KWzdFyNNG_sO7GT83-sN5fYArP4_DL5I8HYIwgazXyY,8
8
+ mytunes_pro-2.0.7.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- mytunes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- mytunes/app.py,sha256=uZUIV2dCPFZh0ONTazup5wwP6dqEOthtgOITA99iFrk,80327
3
- mytunes_pro-2.0.6.dist-info/licenses/LICENSE,sha256=lOrP0EIjxcgJia__W3f3PVDZkRd2oRzFkyH2g3LRRCg,1063
4
- mytunes_pro-2.0.6.dist-info/METADATA,sha256=r_WP429frS7K5SRuLiWpYAq70DHchDu_v_YzSYPPnjs,27583
5
- mytunes_pro-2.0.6.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
6
- mytunes_pro-2.0.6.dist-info/entry_points.txt,sha256=6-MsC13nIgzLvrREaGotc32FgxHx_Iuu1z2qCzJs1_4,65
7
- mytunes_pro-2.0.6.dist-info/top_level.txt,sha256=KWzdFyNNG_sO7GT83-sN5fYArP4_DL5I8HYIwgazXyY,8
8
- mytunes_pro-2.0.6.dist-info/RECORD,,