diff --git a/books/views.py b/books/views.py index bbc8f593..5dda8e0c 100644 --- a/books/views.py +++ b/books/views.py @@ -9,6 +9,7 @@ from django.db.models import Count from django.utils import timezone from django.core.paginator import Paginator from mastodon import mastodon_request_included +from mastodon.models import MastodonApplication from mastodon.api import check_visibility, post_toot, TootVisibilityEnum from mastodon.utils import rating_to_emoji from common.utils import PageLinksGenerator @@ -312,7 +313,7 @@ def create_update_mark(request): args=[book.id]) words = BookMarkStatusTranslator(form.cleaned_data['status']) +\ f"《{book.title}》" + \ - rating_to_emoji(form.cleaned_data['rating']) + rating_to_emoji(form.cleaned_data['rating'], MastodonApplication.objects.get(domain_name=request.user.mastodon_site).star_mode) # tags = settings.MASTODON_TAGS % {'category': '书', 'type': '标记'} tags = '' diff --git a/games/views.py b/games/views.py index 143213c8..0fecf12a 100644 --- a/games/views.py +++ b/games/views.py @@ -9,6 +9,7 @@ from django.db.models import Count from django.utils import timezone from django.core.paginator import Paginator from mastodon import mastodon_request_included +from mastodon.models import MastodonApplication from mastodon.api import check_visibility, post_toot, TootVisibilityEnum from mastodon.utils import rating_to_emoji from common.utils import PageLinksGenerator @@ -314,7 +315,7 @@ def create_update_mark(request): args=[game.id]) words = GameMarkStatusTranslator(form.cleaned_data['status']) +\ f"《{game.title}》" + \ - rating_to_emoji(form.cleaned_data['rating']) + rating_to_emoji(form.cleaned_data['rating'], MastodonApplication.objects.get(domain_name=request.user.mastodon_site).star_mode) # tags = settings.MASTODON_TAGS % {'category': '书', 'type': '标记'} tags = '' diff --git a/mastodon/models.py b/mastodon/models.py index 8b1f3145..220dd217 100644 --- a/mastodon/models.py +++ b/mastodon/models.py @@ -9,6 +9,8 @@ class MastodonApplication(models.Model): client_id = models.CharField(_('client id'), max_length=100) client_secret = models.CharField(_('client secret'), max_length=100) vapid_key = models.CharField(_('vapid key'), max_length=200) + star_mode = models.PositiveIntegerField(_('0: custom emoji; 1: unicode moon; 2: text'), blank=False, default=0) + max_status_len = models.PositiveIntegerField(_('max toot len'), blank=False, default=500) is_proxy = models.BooleanField(default=False, blank=True) proxy_to = models.CharField(max_length=100, blank=True, default='') diff --git a/mastodon/utils.py b/mastodon/utils.py index 7744aeaa..8bada43a 100644 --- a/mastodon/utils.py +++ b/mastodon/utils.py @@ -1,14 +1,17 @@ from django.conf import settings -def rating_to_emoji(score): +def rating_to_emoji(score, star_mode = 0): """ convert score to mastodon star emoji code """ if score is None or score == '' or score == 0: return '' solid_stars = score // 2 half_star = int(bool(score % 2)) empty_stars = 5 - solid_stars if not half_star else 5 - solid_stars - 1 - emoji_code = settings.STAR_SOLID * solid_stars + settings.STAR_HALF * half_star + settings.STAR_EMPTY * empty_stars + if star_mode == 1: + emoji_code = "🌕" * solid_stars + "🌗" * half_star + "🌑" * empty_stars + else: + emoji_code = settings.STAR_SOLID * solid_stars + settings.STAR_HALF * half_star + settings.STAR_EMPTY * empty_stars emoji_code = emoji_code.replace("::", ": :") emoji_code = ' ' + emoji_code + ' ' return emoji_code \ No newline at end of file diff --git a/movies/views.py b/movies/views.py index 2423a3e6..007ab1b6 100644 --- a/movies/views.py +++ b/movies/views.py @@ -9,6 +9,7 @@ from django.db.models import Count from django.utils import timezone from django.core.paginator import Paginator from mastodon import mastodon_request_included +from mastodon.models import MastodonApplication from mastodon.api import check_visibility, post_toot, TootVisibilityEnum from mastodon.utils import rating_to_emoji from common.utils import PageLinksGenerator @@ -313,7 +314,7 @@ def create_update_mark(request): args=[movie.id]) words = MovieMarkStatusTranslator(form.cleaned_data['status']) +\ f"《{movie.title}》" + \ - rating_to_emoji(form.cleaned_data['rating']) + rating_to_emoji(form.cleaned_data['rating'], MastodonApplication.objects.get(domain_name=request.user.mastodon_site).star_mode) # tags = settings.MASTODON_TAGS % {'category': '书', 'type': '标记'} tags = '' diff --git a/music/views.py b/music/views.py index 5a8fcb82..ee7d68f1 100644 --- a/music/views.py +++ b/music/views.py @@ -3,6 +3,7 @@ from .models import * from common.models import SourceSiteEnum from common.views import PAGE_LINK_NUMBER, jump_or_scrape from common.utils import PageLinksGenerator +from mastodon.models import MastodonApplication from mastodon.utils import rating_to_emoji from mastodon.api import check_visibility, post_toot, TootVisibilityEnum from mastodon import mastodon_request_included @@ -332,7 +333,7 @@ def create_update_song_mark(request): args=[song.id]) words = MusicMarkStatusTranslator(form.cleaned_data['status']) +\ f"《{song.title}》" + \ - rating_to_emoji(form.cleaned_data['rating']) + rating_to_emoji(form.cleaned_data['rating'], MastodonApplication.objects.get(domain_name=request.user.mastodon_site).star_mode) # tags = MASTODON_TAGS % {'category': '书', 'type': '标记'} tags = '' @@ -903,7 +904,7 @@ def create_update_album_mark(request): args=[album.id]) words = MusicMarkStatusTranslator(form.cleaned_data['status']) +\ f"《{album.title}》" + \ - rating_to_emoji(form.cleaned_data['rating']) + rating_to_emoji(form.cleaned_data['rating'], MastodonApplication.objects.get(domain_name=request.user.mastodon_site).star_mode) # tags = MASTODON_TAGS % {'category': '书', 'type': '标记'} tags = ''