Skip to content

Commit

Permalink
Implement removing of rating
Browse files Browse the repository at this point in the history
  • Loading branch information
odinho committed Aug 23, 2014
1 parent 602e96d commit 00437e4
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 6 deletions.
3 changes: 2 additions & 1 deletion __init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ def setup_plugin():


hooks = {
'setup': setup_plugin,
'add_media_to_collection': ratings.media_added_to_collection,
'remove_media_from_collection': ratings.media_removed_from_collection,
'setup': setup_plugin,
}
38 changes: 33 additions & 5 deletions ratings.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,48 @@
from .metadata import Metadata


def media_added_to_collection(collection, media_entry, note):
def collection_to_rating(collection):
m = re.match(r'rating:(\d+)', collection.title)
if not m:
return
rating_number = int(m.group(1))
set_rating_from_media_entry(media_entry, rating_number)
try:
return int(m.group(1))
except ValueError:
return


def media_added_to_collection(collection, media_entry, note):
rating = collection_to_rating(collection)
if rating is None:
return
set_rating_from_media_entry(media_entry, rating)


def media_removed_from_collection(collection, media_entry):
removed_rating = collection_to_rating(collection)
if removed_rating is None:
return
for col in media_entry.collections:
fallback_rating = collection_to_rating(col)
if fallback_rating is not None:
set_rating_from_media_entry(media_entry, fallback_rating,
expect_rating=removed_rating)
return
set_rating_from_media_entry(media_entry, 0,
expect_rating=removed_rating)


def set_rating_from_media_entry(media_entry, rating):
def set_rating_from_media_entry(media_entry, rating, expect_rating=None):
filepath = (mgg.public_store
._cachefile_to_original_filepath(
media_entry.media_files['original']))
path = mgg.public_store._resolve_filepath(filepath)
set_rating(path)
if expect_rating is not None:
actual_rating = get_rating(path)
if actual_rating != expect_rating:
return False
set_rating(path, rating)
return True


def set_rating(path, rating):
Expand Down

0 comments on commit 00437e4

Please sign in to comment.