| #!/usr/bin/python
|
|
|
| import os.path
|
| import sqlite3
|
| import sys
|
| import urllib.parse
|
|
|
| plex_query = r"""
|
| SELECT
|
| media_parts.file,
|
| metadata_item_settings.rating,
|
| media_items.id
|
| FROM
|
| media_items
|
| INNER JOIN metadata_items
|
| ON media_items.metadata_item_id = metadata_items.id
|
| LEFT JOIN metadata_item_settings
|
| ON metadata_items.guid = metadata_item_settings.guid
|
| LEFT JOIN media_parts
|
| ON media_items.id = media_parts.media_item_id
|
| WHERE
|
| metadata_item_settings.rating IS NOT NULL
|
| AND metadata_items.metadata_type = 10
|
| AND file != '';
|
| """
|
|
|
| strawberry_query = r"""
|
| UPDATE songs SET
|
| rating = ?
|
| WHERE
|
| url = ?
|
| """
|
|
|
| path_transformers = (
|
| lambda x: "/precisely"+x,
|
| lambda x: urllib.parse.quote(x, "/()',&!+$=*;:@"),
|
| lambda x: "file://"+x,
|
| )
|
|
|
| #plex_path = "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db"
|
| plex_path = os.path.expanduser("~/com.plexapp.plugins.library.db")
|
| strawberry_path = os.path.expanduser("~/.local/share/strawberry/strawberry/strawberry.db")
|
|
|
|
|
|
|
|
|
|
|
| pdb = sqlite3.connect(plex_path)
|
| sdb = sqlite3.connect(strawberry_path, autocommit=True)
|
|
|
| for file, rating, plex_id in pdb.execute(plex_query):
|
| print(file)
|
| for pt in path_transformers:
|
| file = pt(file)
|
| rc = sdb.execute(strawberry_query, (rating/10, file)).rowcount
|
| if rc != 1:
|
| print("rowcount %s! %s (%s)" % (rc, file, plex_id), file=sys.stderr)
|
|
|
| pdb.close()
|
| sdb.close()
|