def test_two_bar_major_colour(self): im = Image.new('RGB', (128, 128), main_colour) draw = ImageDraw.Draw(im) draw.rectangle([(0, 0), (25, 128)], fill=secondary_colour) image_array = np.array(im) assert get_dominant_colour(image_array) == list(main_colour) del im
async def profile(self, ctx, user=None, mode=''): if user is None: user = ctx.author.id data = await get_user(user, mode) if data is not None: try: user_icon = f'https://a.ppy.sh/{data.user_id}?_={int(time.time())}' # The URL to the user profile picture resp = urllib.request.urlopen(user_icon) # Get icon image = np.asarray(bytearray(resp.read()), dtype='uint8') # Convert image into array image = cv2.imdecode(image, cv2.IMREAD_COLOR) # Convert into openCV-friendly format rgb = get_dominant_colour(image) hex_colour = eval('0x%02x%02x%02x' % (int(rgb[0]), int(rgb[1]), int(rgb[2]))) # Convert RGB into hex colour except urllib.error.HTTPError: user_icon = 'https://osu.ppy.sh/images/layout/avatar-guest.png' hex_colour = eval('0xfefefe') title = f'{self.osu_emoji} Stats for {data.username} (Lvl. {math.floor(data.level)})' seconds_played = data.total_seconds_played m, s = divmod(seconds_played, 60) h, m = divmod(m, 60) seconds_played = '%dhrs, %02dmins, %02dsecs' % (h, m, s) total_hits = data.count300 + data.count100 + data.count50 description = f'''User ID: {data.user_id} Ranked Score: {format(data.ranked_score, ',')} Hit Accuracy: {round(data.accuracy, 2)} Play Count: {format(data.playcount, ',')} Total Score: {format(data.total_score, ',')} Total Hits: {format(total_hits, ',')} Play Time: {seconds_played} {self.score_xh}: {data.count_rank_ssh} {self.score_x}: {data.count_rank_ss} {self.score_sh}: {data.count_rank_sh} {self.score_s}: {data.count_rank_s} {self.score_a}: {data.count_rank_a}''' embed = discord.Embed(title=title, colour=hex_colour) embed.set_thumbnail(url=user_icon) embed.add_field(name=f'**PP: {round(data.pp_raw)}pp (#{data.pp_rank}) :flag_{data.country.lower()}: #{data.pp_country_rank}**', value=description) ameobea_link = 'https://ameobea.me/osutrack/user/' + data.username osuskills_link = 'http://osuskills.tk/user/' + data.username osuchan_link = 'https://syrin.me/osuchan/u/' + str(data.user_id) ppplus_link = 'https://syrin.me/pp+/u/' + data.username if mode == 'taiko': ameobea_link += '/taiko' osuchan_link += '/?m=1' other_sites = f'{self.osu_track_emoji} [osu!track]({ameobea_link}) - {self.osu_chan_emoji} [osu!chan]({osuchan_link})' elif mode == 'ctb' or mode == 'catch' or mode == 'fruits': ameobea_link += '/ctb' osuchan_link += '/?m=2' other_sites = f'{self.osu_track_emoji} [osu!track]({ameobea_link}) - {self.osu_chan_emoji} [osu!chan]({osuchan_link})' elif mode == 'mania': ameobea_link += '/mania' osuchan_link += '/?m=3' other_sites = f'{self.osu_track_emoji} [osu!track]({ameobea_link}) - {self.osu_chan_emoji} [osu!chan]({osuchan_link})' else: other_sites = f'{self.osu_track_emoji} [osu!track]({ameobea_link}) - {self.osu_skills_emoji} [osu!Skills]({osuskills_link}) - {self.osu_chan_emoji} [osu!chan]({osuchan_link}) - {self.pp_plus_emoji} [PP+]({ppplus_link})' embed.add_field(name='More information', value=other_sites, inline=False) else: embed = discord.Embed(title='osu!', description="You didn't provide a valid username or id!", colour=0xff5252) await ctx.send(embed=embed)
def test_real_images_3_colour(self): im = Image.open('tests/test-images/10778583.jpeg') image_array = np.array(im) assert tuple(get_dominant_colour(image_array)) in image_3_colours
def test_real_images_2_colour(self): im = Image.open('tests/test-images/2070907.jpeg') image_array = np.array(im) assert tuple( get_dominant_colour(image_array) ) in image_2_colours # Converted to tuple for easier finding
def test_single_colour(self): im = Image.new('RGB', (128, 128), main_colour) image_array = np.array(im) assert get_dominant_colour(image_array) == list(main_colour) del im
def test_real_images_3_colour(self): im = Image.open("tests/public/assets/10778583.jpeg") image_array = np.array(im) assert tuple(get_dominant_colour(image_array)) in image_3_colours
def test_real_images_2_colour(self): im = Image.open("tests/public/assets/2070907.jpeg") image_array = np.array(im) assert (tuple(get_dominant_colour(image_array)) in image_2_colours) # Converted to tuple for easier finding
def test_real_images_1_colour(self): im = Image.open('tests/public/assets/7109858.jpeg') image_array = np.array(im) assert tuple( get_dominant_colour(image_array) ) in image_1_colours # Converted to tuple for easier finding