J'ai écrit un script qui transforme les icônes des utilisateurs Slack en pictogrammes. ↓ Ainsi, l'icône de l'utilisateur peut être utilisée telle quelle pour la réaction. (** Il est pratique de savoir en un coup d'œil qui a réagi ?? **)
Si vous souhaitez l'utiliser rapidement, veuillez consulter le référentiel. https://github.com/KoseiYoshida/slack_usericon_to_emoji
A partir de maintenant, j'expliquerai le contenu du script.
Même si vous ne regardez pas l'explication, vous pouvez voir ce que vous faites en regardant le référentiel. Cependant, comme je l'ai fait avec beaucoup d'efforts, j'ai écrit un article de commentaire sur le script qui sert également de ma propre sortie.
Notez que le code de cet article est abrégé à des fins d'illustration. Si vous voulez voir le code qui fonctionne, veuillez consulter le référentiel.
Ici, nous allons acquérir le jeton requis pour acquérir les informations utilisateur de Slack. Si vous avez de l'expérience dans l'acquisition de Token, vous pouvez simplement consulter l'enregistrement OAuthScope écrit en bas.
Je me suis référé à cet article pour savoir comment obtenir Token for Slack API. À propos du jeton recommandé de l'API Slack
Maintenant, obtenons le jeton.
Il existe deux types d'API Slack, le jeton recommandé et le jeton hérité. Dans cet article, nous allons procéder avec le jeton recommandé. Pour ceux qui ont des problèmes, un jeton hérité facile à obtenir convient parfaitement.
Pour la méthode de base, voir "Comment obtenir un jeton avec l'interface graphique" dans le lien ci-dessus. Après avoir sélectionné le nom de l'application et l'espace de travail pour ajouter et créer l'application, il est temps d'ajouter Scope.
(Les autorisations sont vérifiées dans l'image, mais rien dans l'état initial)
Si tout se passe bien, vous devriez voir quelque chose comme celui ci-dessous.
Maintenant que les paramètres sont terminés, appuyez sur le bouton InstallAppToWorkspace sur l'écran Autorisation. Si vous suivez les instructions et que l'installation réussit, vous devriez voir un OAuthAcessToken!
Maintenant que le jeton a été créé, nous allons accéder aux informations utilisateur.
Ici, je voudrais accéder aux informations utilisateur à l'aide du Token obtenu précédemment et obtenir l'URL de l'image de l'icône.
Lors de l'obtention d'informations sur l'utilisateur
https://slack.com/api/users.list?token= <jeton acquis>
Il semble que vous devriez faire une demande GET à.
Au fait, je l'obtiens sous la forme de json et le rend facile à manipuler.
USERLIST_GETURL_BASE = 'https://slack.com/api/users.list?token='
TOKEN = <Jeton obtenu>
def get_userslist_json():
#Spécifiez l'en-tête pour qu'il puisse être obtenu au format json
headers = {'content-type': 'application/json'}
res = requests.get(USERLIST_GETURL_BASE + TOKEN, headers)
users_list = res.json()
#Les données réelles sont'members'C'est dedans. Alors jette le reste
users_list = users_list['members']
return users_list
Le seul élément dont vous avez besoin dans la réponse est «membres», jetons donc les autres.
Dans la liste acquise, un élément est l'information (type dictionnaire) pour un utilisateur. ↓ Information pour un utilisateur. C'est un type de dictionnaire et divers éléments sont alignés.
{'id': 'UQ412C941',
'team_id': 'TBASP22UV',
'name': 'koseiasengineer',
'deleted': False,
'color': 'e7392d',
'real_name': 'Pig',
'tz': 'Asia/Tokyo',
'tz_label': 'Japan Standard Time',
'tz_offset': 32400,
'profile': {'title': '',
'phone': '',
'skype': '',
'real_name': 'Pig',
'real_name_normalized': 'Pig',
'display_name': 'Taro de porc',
'display_name_normalized': 'Taro de porc',
'status_text': '',
'status_emoji': '',
'status_expiration': 0,
'avatar_hash': '1b04567a2fd5',
'image_original': 'https://avatars.slack-edge.com/2019-11-09/815178912706_1b04567a2fd5434e2659_original.png',
'is_custom_image': True,
'first_name': 'Pig',
'last_name': '',
'image_24': 'https://avatars.slack-edge.com/2019-11-09/815178912706_1b04567a2fd5434e2659_24.png',
'image_32': 'https://avatars.slack-edge.com/2019-11-09/815178912706_1b04567a2fd5434e2659_32.png',
'image_48': 'https://avatars.slack-edge.com/2019-11-09/815178912706_1b04567a2fd5434e2659_48.png',
'image_72': 'https://avatars.slack-edge.com/2019-11-09/815178912706_1b04567a2fd5434e2659_72.png',
'image_192': 'https://avatars.slack-edge.com/2019-11-09/815178912706_1b04567a2fd5434e2659_192.png',
'image_512': 'https://avatars.slack-edge.com/2019-11-09/815178912706_1b04567a2fd5434e2659_512.png',
'image_1024': 'https://avatars.slack-edge.com/2019-11-09/815178912706_1b04567a2fd5434e2659_1024.png',
'status_text_canonical': '',
'team': 'TBASP22UV'},
'is_admin': False,
'is_owner': False,
'is_primary_owner': False,
'is_restricted': False,
'is_ultra_restricted': False,
'is_bot': False,
'is_app_user': False,
'updated': 1573257843,
'has_2fa': False}
** Il semble que les images d'icônes soient placées dans 'image_original', 'image_ <résolution>'. ** ** Il semble qu'il existe différents types de noms, mais ** le nom que vous voyez habituellement en tant qu'utilisateur Slack est dans'display_name '**.
real_name
Maintenant que je sais où se trouve l'image de l'icône, je vais la télécharger.
J'ai trouvé l'emplacement de l'image de l'icône à partir des informations utilisateur obtenues via SlackPI, je vais donc la télécharger. On suppose que le nom enregistré de l'image = le nom d'Emoji.
En gros, il vous suffit d'obtenir l'image et de la sauvegarder, mais il y a un problème.
Donc, nous allons résoudre ces problèmes.
En regardant les informations utilisateur obtenues précédemment, des éléments tels que «is_bot» et «is_deleted» sont préparés. Utilisez ces objets pour vous repousser.
#On suppose que l'argument membre contiendra les informations d'un utilisateur (type de dictionnaire).
def is_target_member(member):
if member['is_bot']:
return False
#Le SlackBot qui participe par défaut'is_bot'Est faux pour une raison quelconque, il sera donc rejeté par son nom
if member['name'] == 'slackbot':
return False
if member['deleted'] == 'True':
return False
return True
Pour une raison quelconque, le drapeau "is_bot" de SlackBot, qui date du début lorsque Workspace est créé, est False, il est donc repoussé de force par son nom.
Il semble que le japonais (Kanji, Katakana, Hiragana) peut être converti en caractères romains avec un package appelé "pykakasi". (Référence, Installation et utilisation du module pykakasi qui convertit les caractères japonais en caractères romains) Au fait, j'ai également mis "mojimoji" qui convertit pleine largeur -> demi-largeur.
$ pip install git+https://github.com/miurahr/pykakasi
$ pip install mojimoji
Il sera romanisé comme ça.
from pykakashi import kakashi
import mojimoji
def fix_name_style(name):
jpn2romaji = kakasi()
jpn2romaji.setMode('J', 'a')
jpn2romaji.setMode('K', 'a')
jpn2romaji.setMode('H', 'a')
k2r_conv = jpn2romaji.getConverter()
fixed_name = k2r_conv.do(name)
fixed_name = mojimoji.zen_to_han(fixed_name)
#Les points et les espaces entraîneront des erreurs, supprimez-les
fixed_name = fixed_name.replace(".", "")
fixed_name = fixed_name.replace(' ', '')
return fixed_name
Maintenant que le problème a été résolu, il est temps de le télécharger. J'ai écrit une fonction pour télécharger des images, et l'image entière ressemble à ceci. (↓ est le code permettant de comprendre le flux de traitement. Veuillez consulter le référentiel pour celui qui fonctionne correctement.)
def download_file(self, url, dst_path):
with urllib.request.urlopen(url) as web_file, open(dst_path, 'wb') as local_file:
local_file.write(web_file.read())
save_directory_name = 'temp' #N'importe quel nom va bien
members_list = get_userslist_json()
for member in members_list:
#Repel Bot et utilisateurs désabonnés
if not is_target_member(member):
continue
member_prof = member['profile']
name = member_prof['display_name'].lower()
name = fix_name_style(name)
# 'image_original'Contient l'url de l'image de l'icône
image_url = member_prof['image_original']
_, ext = os.path.splitext(image_url)
saved_file_path = './' + save_directory_name + os.sep + name + ext
download_file(image_url, saved_file_path)
Nous utiliserons ce "slack-emojinator" pour ajouter l'image sauvegardée sous forme de pictogramme. https://github.com/smashwilson/slack-emojinator Je pense que ce n'est pas grave si vous suivez les instructions dans README.md. (Si vous aimez l'explication en japonais, ici j'ai essayé d'utiliser l'émojinateur Slack)
D'ailleurs, l'ajout de pictogrammes par "slack-emojinator", Comme l'API Slack ne dispose pas d'API pour ajouter des pictogrammes, il semble que les sessions soient créées de force à l'aide de cookies.
"slack-emojinator" est utilisé en l'appelant depuis la ligne de commande. Si vous voulez tout faire, du téléchargement de l'image au téléchargement automatique, veuillez vous référer au référentiel suivant. https://github.com/KoseiYoshida/slack_usericon_to_emoji
Obtenir l'icône utilisateur Slack-> Automatiser les pictogrammes en Python. Vous pouvez facilement l'exécuter en clonant le référentiel, veuillez donc l'utiliser.
Désolé pour le code sale car je suis nouveau dans Python et les API. Masakari est le bienvenu.