pypodlib 0.1.0__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 (183) hide show
  1. pypodlib/__init__.py +45 -0
  2. pypodlib/api.py +939 -0
  3. pypodlib/artworkdb_parser/__init__.py +3 -0
  4. pypodlib/artworkdb_parser/chunk_parser.py +66 -0
  5. pypodlib/artworkdb_parser/constants.py +11 -0
  6. pypodlib/artworkdb_parser/mhfd_parser.py +61 -0
  7. pypodlib/artworkdb_parser/mhii_parser.py +60 -0
  8. pypodlib/artworkdb_parser/mhli_parser.py +16 -0
  9. pypodlib/artworkdb_parser/mhni_parser.py +47 -0
  10. pypodlib/artworkdb_parser/mhod_parser.py +59 -0
  11. pypodlib/artworkdb_parser/mhsd_parser.py +16 -0
  12. pypodlib/artworkdb_parser/parser.py +15 -0
  13. pypodlib/artworkdb_shared/__init__.py +2 -0
  14. pypodlib/artworkdb_shared/binary.py +66 -0
  15. pypodlib/artworkdb_shared/constants.py +72 -0
  16. pypodlib/artworkdb_shared/ithmb_paths.py +27 -0
  17. pypodlib/artworkdb_shared/mhlf.py +47 -0
  18. pypodlib/artworkdb_shared/mhni.py +184 -0
  19. pypodlib/artworkdb_shared/mhod.py +72 -0
  20. pypodlib/artworkdb_writer/__init__.py +77 -0
  21. pypodlib/artworkdb_writer/art_extractor.py +319 -0
  22. pypodlib/artworkdb_writer/artwork_types.py +115 -0
  23. pypodlib/artworkdb_writer/artwork_writer.py +1482 -0
  24. pypodlib/artworkdb_writer/artworkdb_chunks.py +475 -0
  25. pypodlib/artworkdb_writer/ithmb_codecs.py +723 -0
  26. pypodlib/artworkdb_writer/rgb565.py +227 -0
  27. pypodlib/device/__init__.py +158 -0
  28. pypodlib/device/artwork.py +184 -0
  29. pypodlib/device/artwork_presets.py +119 -0
  30. pypodlib/device/authority.py +764 -0
  31. pypodlib/device/bootstrap.py +210 -0
  32. pypodlib/device/capabilities.py +737 -0
  33. pypodlib/device/checksum.py +41 -0
  34. pypodlib/device/diagnostic_log.py +180 -0
  35. pypodlib/device/dump.py +496 -0
  36. pypodlib/device/durability.py +431 -0
  37. pypodlib/device/eject.py +1153 -0
  38. pypodlib/device/filesystem.py +181 -0
  39. pypodlib/device/filesystem_profile.py +633 -0
  40. pypodlib/device/images.py +409 -0
  41. pypodlib/device/info.py +2752 -0
  42. pypodlib/device/linux_identity.py +557 -0
  43. pypodlib/device/linux_integration.py +370 -0
  44. pypodlib/device/lookup.py +204 -0
  45. pypodlib/device/metadata_write.py +201 -0
  46. pypodlib/device/models.py +715 -0
  47. pypodlib/device/path_safety.py +140 -0
  48. pypodlib/device/recovery.py +147 -0
  49. pypodlib/device/scanner.py +2653 -0
  50. pypodlib/device/storage_safety.py +104 -0
  51. pypodlib/device/sysinfo.py +528 -0
  52. pypodlib/device/usb_backend.py +132 -0
  53. pypodlib/device/virtual.py +490 -0
  54. pypodlib/device/virtual_identity.py +50 -0
  55. pypodlib/device/vpd_iokit.py +617 -0
  56. pypodlib/device/vpd_libusb.py +1464 -0
  57. pypodlib/device/vpd_linux.py +256 -0
  58. pypodlib/device/vpd_usb_control.py +211 -0
  59. pypodlib/device/vpd_windows.py +311 -0
  60. pypodlib/device/write_guard.py +553 -0
  61. pypodlib/device/write_readiness.py +208 -0
  62. pypodlib/infrastructure/__init__.py +1 -0
  63. pypodlib/infrastructure/media_folders.py +180 -0
  64. pypodlib/infrastructure/settings_paths.py +83 -0
  65. pypodlib/infrastructure/settings_persistence.py +135 -0
  66. pypodlib/infrastructure/settings_runtime.py +526 -0
  67. pypodlib/infrastructure/settings_schema.py +345 -0
  68. pypodlib/infrastructure/settings_secrets.py +127 -0
  69. pypodlib/infrastructure/theme_catalog.py +371 -0
  70. pypodlib/infrastructure/theme_renderer.py +1109 -0
  71. pypodlib/infrastructure/theme_runtime.py +28 -0
  72. pypodlib/infrastructure/version.py +18 -0
  73. pypodlib/itunesdb_parser/__init__.py +22 -0
  74. pypodlib/itunesdb_parser/_parsing.py +120 -0
  75. pypodlib/itunesdb_parser/artwork_links.py +108 -0
  76. pypodlib/itunesdb_parser/byte_walk.py +586 -0
  77. pypodlib/itunesdb_parser/chunk_parser.py +203 -0
  78. pypodlib/itunesdb_parser/exceptions.py +59 -0
  79. pypodlib/itunesdb_parser/forensics.py +851 -0
  80. pypodlib/itunesdb_parser/ipod_library.py +174 -0
  81. pypodlib/itunesdb_parser/mhbd_parser.py +43 -0
  82. pypodlib/itunesdb_parser/mhia_parser.py +31 -0
  83. pypodlib/itunesdb_parser/mhii_parser.py +34 -0
  84. pypodlib/itunesdb_parser/mhip_parser.py +31 -0
  85. pypodlib/itunesdb_parser/mhit_parser.py +34 -0
  86. pypodlib/itunesdb_parser/mhod_parser.py +674 -0
  87. pypodlib/itunesdb_parser/mhsd_parser.py +48 -0
  88. pypodlib/itunesdb_parser/mhyp_parser.py +50 -0
  89. pypodlib/itunesdb_parser/otg.py +187 -0
  90. pypodlib/itunesdb_parser/parser.py +140 -0
  91. pypodlib/itunesdb_parser/playcounts.py +282 -0
  92. pypodlib/itunesdb_shared/__init__.py +32 -0
  93. pypodlib/itunesdb_shared/album_identity.py +93 -0
  94. pypodlib/itunesdb_shared/constants.py +393 -0
  95. pypodlib/itunesdb_shared/device_time.py +250 -0
  96. pypodlib/itunesdb_shared/extraction.py +173 -0
  97. pypodlib/itunesdb_shared/field_base.py +478 -0
  98. pypodlib/itunesdb_shared/mhbd_defs.py +57 -0
  99. pypodlib/itunesdb_shared/mhia_defs.py +39 -0
  100. pypodlib/itunesdb_shared/mhii_defs.py +18 -0
  101. pypodlib/itunesdb_shared/mhip_defs.py +33 -0
  102. pypodlib/itunesdb_shared/mhit_defs.py +237 -0
  103. pypodlib/itunesdb_shared/mhod_defs.py +811 -0
  104. pypodlib/itunesdb_shared/mhsd_defs.py +15 -0
  105. pypodlib/itunesdb_shared/mhyp_defs.py +58 -0
  106. pypodlib/itunesdb_shared/playlist_hierarchy.py +285 -0
  107. pypodlib/itunesdb_shared/playlist_kinds.py +41 -0
  108. pypodlib/itunesdb_shared/playlist_lifecycle.py +55 -0
  109. pypodlib/itunesdb_shared/playlist_properties.py +193 -0
  110. pypodlib/itunesdb_writer/__init__.py +146 -0
  111. pypodlib/itunesdb_writer/hash58.py +279 -0
  112. pypodlib/itunesdb_writer/hash72.py +496 -0
  113. pypodlib/itunesdb_writer/hashab.py +290 -0
  114. pypodlib/itunesdb_writer/mhbd_writer.py +1588 -0
  115. pypodlib/itunesdb_writer/mhip_writer.py +150 -0
  116. pypodlib/itunesdb_writer/mhit_writer.py +511 -0
  117. pypodlib/itunesdb_writer/mhla_writer.py +211 -0
  118. pypodlib/itunesdb_writer/mhli_writer.py +141 -0
  119. pypodlib/itunesdb_writer/mhlp_writer.py +261 -0
  120. pypodlib/itunesdb_writer/mhlt_writer.py +52 -0
  121. pypodlib/itunesdb_writer/mhod52_writer.py +344 -0
  122. pypodlib/itunesdb_writer/mhod_spl_writer.py +448 -0
  123. pypodlib/itunesdb_writer/mhod_writer.py +589 -0
  124. pypodlib/itunesdb_writer/mhsd_writer.py +98 -0
  125. pypodlib/itunesdb_writer/mhyp_writer.py +641 -0
  126. pypodlib/itunesdb_writer/wasm/calcHashAB.wasm +0 -0
  127. pypodlib/sqlitedb_writer/__init__.py +21 -0
  128. pypodlib/sqlitedb_writer/_helpers.py +62 -0
  129. pypodlib/sqlitedb_writer/cbk_writer.py +183 -0
  130. pypodlib/sqlitedb_writer/dynamic_writer.py +123 -0
  131. pypodlib/sqlitedb_writer/extras_writer.py +84 -0
  132. pypodlib/sqlitedb_writer/genius_writer.py +56 -0
  133. pypodlib/sqlitedb_writer/library_writer.py +1187 -0
  134. pypodlib/sqlitedb_writer/locations_writer.py +145 -0
  135. pypodlib/sqlitedb_writer/sqlite_writer.py +310 -0
  136. pypodlib/sync/__init__.py +182 -0
  137. pypodlib/sync/_db_io.py +580 -0
  138. pypodlib/sync/_formats.py +79 -0
  139. pypodlib/sync/_playlist_builder.py +645 -0
  140. pypodlib/sync/_track_conversion.py +462 -0
  141. pypodlib/sync/album_chapters.py +1185 -0
  142. pypodlib/sync/audio_fingerprint.py +517 -0
  143. pypodlib/sync/backup_manager.py +3762 -0
  144. pypodlib/sync/capability_filter.py +61 -0
  145. pypodlib/sync/contracts.py +601 -0
  146. pypodlib/sync/core/__init__.py +27 -0
  147. pypodlib/sync/core/context.py +115 -0
  148. pypodlib/sync/core/engine.py +283 -0
  149. pypodlib/sync/core/models.py +141 -0
  150. pypodlib/sync/database_commit.py +251 -0
  151. pypodlib/sync/dependency_manager.py +352 -0
  152. pypodlib/sync/existing_track_matcher.py +268 -0
  153. pypodlib/sync/fingerprint_diff_engine.py +2132 -0
  154. pypodlib/sync/integrity.py +333 -0
  155. pypodlib/sync/ipod_track_paths.py +272 -0
  156. pypodlib/sync/itunes_prefs.py +666 -0
  157. pypodlib/sync/lastfm_scrobbler.py +482 -0
  158. pypodlib/sync/lb_scrobbler.py +583 -0
  159. pypodlib/sync/mapping.py +604 -0
  160. pypodlib/sync/path_identity.py +34 -0
  161. pypodlib/sync/pc_library.py +1770 -0
  162. pypodlib/sync/photos.py +2706 -0
  163. pypodlib/sync/plan_validator.py +595 -0
  164. pypodlib/sync/planning_stages.py +229 -0
  165. pypodlib/sync/playlist_parser.py +355 -0
  166. pypodlib/sync/quick_writes.py +384 -0
  167. pypodlib/sync/review_selection.py +254 -0
  168. pypodlib/sync/rockbox_metadata.py +1341 -0
  169. pypodlib/sync/scrobble_plan.py +43 -0
  170. pypodlib/sync/source_identity.py +255 -0
  171. pypodlib/sync/spl_evaluator.py +571 -0
  172. pypodlib/sync/sync_executor.py +4673 -0
  173. pypodlib/sync/sync_playlist_files.py +191 -0
  174. pypodlib/sync/sync_playlist_planner.py +204 -0
  175. pypodlib/sync/track_identity.py +194 -0
  176. pypodlib/sync/transcode_cache.py +829 -0
  177. pypodlib/sync/transcoder.py +2292 -0
  178. pypodlib/sync/unknown_metadata.py +307 -0
  179. pypodlib/sync_progress_stages.py +295 -0
  180. pypodlib-0.1.0.dist-info/METADATA +124 -0
  181. pypodlib-0.1.0.dist-info/RECORD +183 -0
  182. pypodlib-0.1.0.dist-info/WHEEL +4 -0
  183. pypodlib-0.1.0.dist-info/licenses/LICENSE +26 -0
pypodlib/__init__.py ADDED
@@ -0,0 +1,45 @@
1
+ """
2
+ pypodlib — communicate with iPod Classic/Nano/Mini devices from Python.
3
+
4
+ pyPodLib is a pure-Python library that reads and writes the iPod's on-disk
5
+ library (iTunesDB / iTunesCDB) without iTunes. It can:
6
+
7
+ - detect and identify a connected iPod (model, generation, capacity, colour)
8
+ - read tracks, playlists, podcasts, smart playlists and play counts
9
+ - write the database back with the correct per-device checksum signature
10
+ - copy media files onto the device and regenerate the database
11
+
12
+ Typical usage::
13
+
14
+ import pypodlib
15
+
16
+ ipod = pypodlib.connect("/media/user/IPOD") # or scan_ipods()[0]
17
+ print(ipod.model.family, ipod.model.generation)
18
+
19
+ lib = ipod.library()
20
+ for track in lib.tracks:
21
+ print(track.title, track.artist)
22
+
23
+ lib.tracks[0].rating = 5
24
+ ipod.save()
25
+
26
+ The low-level modules remain importable directly (``pypodlib.device``,
27
+ ``pypodlib.itunesdb_parser``, ``pypodlib.itunesdb_writer``, ...).
28
+ """
29
+
30
+ from __future__ import annotations
31
+
32
+ from .api import IPod, Library, Playlist, Track, connect, library_from_path, scan_ipods
33
+
34
+ __version__ = "0.1.0"
35
+
36
+ __all__ = [
37
+ "__version__",
38
+ "connect",
39
+ "scan_ipods",
40
+ "library_from_path",
41
+ "IPod",
42
+ "Library",
43
+ "Track",
44
+ "Playlist",
45
+ ]