Exemple #1
0
def post(data):
    # Create new session
    session = session_factory()

    lttkgp_user = user.User(
        "Default user",
        "1637563079601213",
        "https://user-images.githubusercontent.com/10023615/77320178-19fe9e00-6d36-11ea-9c0c-45f652a6da78.png",
    )
    song_link = link.Link(data["link"], 0)
    session.add(lttkgp_user)
    session.commit()
Exemple #2
0
    def get_latest_posts(limit_):
        try:
            session = session_factory()
            posts = session.query(UserPosts).filter(
                UserPosts.share_date <= datetime.now()).limit(limit_).all()

            response = [format(post) for post in posts]
            return response, 200

        except BaseException:
            LOG.error(
                f'Failed to fetch data with param limit_ = {limit_}. Try later.', exc_info=True)
            response_object = {
                'status': 'fail',
                'message': 'Try again',
            }
            return response_object, 500
Exemple #3
0
    def get_posts_in_interval(from_=datetime.now() - timedelta(days=3), to_=datetime.now()):
        try:
            session = session_factory()
            posts = session.query(UserPosts).filter(UserPosts.share_date >= from_) \
                .filter(UserPosts.share_date <= to_).all()

            response = [format(post) for post in posts]
            return response, 200

        except BaseException:
            LOG.error(
                f'Failed to fetch data with params from_ = {from_}, to_ = {to_}. Try later.', exc_info=True)
            response_object = {
                'status': 'fail',
                'message': 'Try again',
            }
            return response_object, 500
Exemple #4
0
    def get_popular_posts(to_=datetime.now(), past=1):
        try:
            session = session_factory()
            posts = session.query(UserPosts)\
                .filter(UserPosts.share_date <= to_ + timedelta(days=1))\
                .filter(UserPosts.share_date >= to_ - timedelta(days=past))\
                .order_by(UserPosts.likes_count.desc()).all()

            response = [format(post) for post in posts]
            return response, 200

        except BaseException:
            LOG.error(
                f'Failed to fetch data with param to_ = {to_}, past = {past}. Try later.', exc_info=True)
            response_object = {
                'status': 'fail',
                'message': 'Try again',
            }
            return response_object, 500
Exemple #5
0
def format(post):
    session = session_factory()
    link = post.link
    song = link.song
    artists = [artist_song.artist for artist_song in session.query(ArtistSong)
               .filter(ArtistSong.song == song).all()]
    genres = []
    for artist in artists:
        artist_genres = [artist_genre.genre for artist_genre in session.query(ArtistGenre)
                         .filter(ArtistGenre.artist == artist).all()]
        genres += artist_genres

    return {
        'link': link.url,
        'post_count': link.post_count,
        'postdata': post_dto.dump(post),
        'metadata': {
            'song': song_dto.dump(link.song),
            'artists': [artist_dto.dump(artist) for artist in artists],
            'genre': [genre.name for genre in genres]
        }
    }
Exemple #6
0
def start():
    session = session_factory()
    session.close()