adding media related code
This commit is contained in:
parent
b803afe70c
commit
f4c77481e7
8 changed files with 310 additions and 43 deletions
|
@ -1,10 +1,11 @@
|
|||
from typing import Optional, List
|
||||
|
||||
from synclean.api.users import UserAPI
|
||||
from synclean.models.enums import UserMediaOrderBy, Direction, UserOrderBy
|
||||
from synclean.models.pagination import UserMediaPaginationParams, UserPaginationParams
|
||||
from synclean.models.user import UserList
|
||||
from synclean.models.user_media import UserMediaList
|
||||
from synclean.models.enums import UserMediaStatsOrderBy, Direction, UserOrderBy, UserMediaOrderBy
|
||||
from synclean.models.pagination import UserMediaStatsPaginationParams, UserPaginationParams, UserMediaPaginationParams
|
||||
from synclean.models.user import UserList, User
|
||||
from synclean.models.user_media import UserMediaList, MediaItem
|
||||
from synclean.models.user_media_stats import UserMediaStatsList, UserMediaStats
|
||||
|
||||
|
||||
class UserService:
|
||||
|
@ -18,11 +19,11 @@ class UserService:
|
|||
order_by: str,
|
||||
direction: str,
|
||||
search: Optional[str]
|
||||
) -> UserMediaList | None:
|
||||
order_by_enum = UserMediaOrderBy(order_by)
|
||||
) -> UserMediaStatsList | None:
|
||||
order_by_enum = UserMediaStatsOrderBy(order_by)
|
||||
direction_enum = Direction(direction)
|
||||
|
||||
pagination_params = UserMediaPaginationParams(limit, offset, order_by_enum, direction_enum, search)
|
||||
pagination_params = UserMediaStatsPaginationParams(limit, offset, order_by_enum, direction_enum, search)
|
||||
|
||||
users = self.user_api.get_users_list_by_media(pagination_params)
|
||||
if users:
|
||||
|
@ -46,5 +47,71 @@ class UserService:
|
|||
return users
|
||||
return None
|
||||
|
||||
def get_user_details_by_id(self, user_id: str):
|
||||
pass
|
||||
def get_user_details_by_id(self, user_id: str) -> User | None:
|
||||
user_details = self.user_api.get_user_details_by_name(user_id)
|
||||
if user_details:
|
||||
return user_details
|
||||
|
||||
print("No user found")
|
||||
return None
|
||||
|
||||
def get_user_media_stats_by_id(self, user_id: str) -> UserMediaStats | None:
|
||||
if user_id.startswith('@'):
|
||||
user_id = user_id[1:]
|
||||
if ':' in user_id:
|
||||
user_id = user_id.split(':')[0]
|
||||
|
||||
user_media = self.user_api.get_user_media_stats_by_id(user_id)
|
||||
if user_media:
|
||||
return user_media
|
||||
return None
|
||||
|
||||
def get_user_media_by_id(
|
||||
self,
|
||||
user_id: str,
|
||||
limit: int,
|
||||
offset: int,
|
||||
order_by: str,
|
||||
direction: str
|
||||
) -> UserMediaList | None:
|
||||
order_by_enum = UserMediaOrderBy(order_by)
|
||||
direction_enum = Direction(direction)
|
||||
|
||||
pagination = UserMediaPaginationParams(limit, offset, order_by_enum, direction_enum)
|
||||
|
||||
user_media = self.user_api.get_media_by_user_id(user_id, pagination)
|
||||
if user_media:
|
||||
return user_media
|
||||
return None
|
||||
|
||||
def get_user_media_by_type(
|
||||
self,
|
||||
user_id: str,
|
||||
limit: int,
|
||||
offset: int,
|
||||
order_by: str,
|
||||
direction: str,
|
||||
media_type: str
|
||||
) -> dict[str, List[MediaItem]] | None:
|
||||
order_by_enum = UserMediaOrderBy(order_by)
|
||||
direction_enum = Direction(direction)
|
||||
|
||||
pagination = UserMediaPaginationParams(limit, offset, order_by_enum, direction_enum)
|
||||
|
||||
user_media = self.user_api.get_all_user_media(user_id, pagination)
|
||||
if user_media:
|
||||
filtered_media = [media for media in user_media if media.media_type.startswith(media_type)]
|
||||
if filtered_media:
|
||||
total_size = sum(media.media_length for media in filtered_media)
|
||||
media_by_type = {
|
||||
"media": filtered_media,
|
||||
"total_size": total_size,
|
||||
"total_count": len(filtered_media)
|
||||
}
|
||||
return media_by_type
|
||||
else:
|
||||
return None
|
||||
return None
|
||||
|
||||
def delete_user_media(self, avatar: str):
|
||||
pass
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue