Ich habe ein Skript geschrieben, das Slack-Benutzersymbole in Piktogramme verwandelt. ↓ Auf diese Weise kann das Benutzersymbol so verwendet werden, wie es für die Reaktion ist. (** Es ist bequem auf einen Blick zu wissen, wer reagiert hat ?? **)
Wenn Sie es schnell verwenden möchten, lesen Sie bitte das Repository. https://github.com/KoseiYoshida/slack_usericon_to_emoji
Von nun an werde ich den Inhalt des Skripts erklären.
Auch wenn Sie sich die Erklärung nicht ansehen, können Sie anhand des Repositorys sehen, was Sie tun. Da ich es jedoch mit großer Anstrengung geschafft habe, habe ich einen Kommentar zum Skript geschrieben, der auch als meine eigene Ausgabe dient.
Bitte beachten Sie, dass der Code in diesem Artikel zur Erläuterung abgekürzt ist **. Wenn Sie den Code sehen möchten, der funktioniert, lesen Sie bitte das Repository.
Hier erhalten wir das Token, das zum Abrufen von Slack-Benutzerinformationen erforderlich ist. Wenn Sie Erfahrung mit dem Erwerb von Token haben, können Sie sich einfach die unten angegebene OAuthScope-Registrierung ansehen.
Ich habe in diesem Artikel beschrieben, wie Sie die Token for Slack-API erhalten. Informationen zum empfohlenen Slack-API-Token
Lassen Sie uns nun tatsächlich das Token erhalten.
Es gibt zwei Arten von Slack-APIs: empfohlenes Token und Legacy-Token. In diesem Artikel werden wir mit dem empfohlenen Token fortfahren. Für diejenigen, die Probleme haben, ist ein leicht zu beschaffendes Legacy-Token in Ordnung.
Die grundlegende Methode finden Sie unter "So erhalten Sie Token mit der GUI" im obigen Link. Nach Auswahl des App-Namens und des Arbeitsbereichs zum Hinzufügen und Erstellen der App ist es Zeit, Scope hinzuzufügen.
(Berechtigungen sind im Bild aktiviert, aber im Ausgangszustand nichts)
Wenn alles gut geht, sollten Sie so etwas wie das folgende sehen.
Nachdem die Einstellungen abgeschlossen sind, klicken Sie im Bildschirm Berechtigung auf die Schaltfläche InstallAppToWorkspace. Wenn Sie den Anweisungen folgen und die Installation erfolgreich ist, sollte ein OAuthAcessToken angezeigt werden!
Nachdem das Token erstellt wurde, greifen wir auf die Benutzerinformationen zu.
Hier möchte ich mit dem zuvor erhaltenen Token auf die Benutzerinformationen zugreifen und die URL des Symbolbildes erhalten.
Beim Abrufen von Benutzerinformationen
"https://slack.com/api/users.list?token=
USERLIST_GETURL_BASE = 'https://slack.com/api/users.list?token='
TOKEN = <Token erhalten>
def get_userslist_json():
#Geben Sie den Header an, damit er im JSON-Format abgerufen werden kann
headers = {'content-type': 'application/json'}
res = requests.get(USERLIST_GETURL_BASE + TOKEN, headers)
users_list = res.json()
#Die tatsächlichen Daten sind'members'Es ist in. Also wirf den Rest weg
users_list = users_list['members']
return users_list
Das einzige Element, das Sie in der Antwort benötigen, ist "Mitglieder". Lassen Sie uns also die anderen wegwerfen.
In der erfassten Liste ist ein Element Information (Wörterbuchtyp) für einen Benutzer. ↓ Informationen für einen Benutzer. Es ist ein Wörterbuchtyp und verschiedene Elemente sind in einer Reihe.
{'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': 'Schwein Taro',
'display_name_normalized': 'Schwein Taro',
'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}
** Es scheint, dass Symbolbilder in 'image_original', 'image_
real_name
Jetzt, da ich weiß, wo sich das Symbolbild befindet, werde ich es herunterladen.
Ich habe die Position des Symbolbilds anhand der über SlackPI erhaltenen Benutzerinformationen herausgefunden und werde es daher herunterladen. Es wird angenommen, dass der gespeicherte Name des Bildes = der Name von Emoji ist.
Grundsätzlich erhalten Sie nur das Bild und speichern es, aber es gibt ein Problem.
Also werden wir diese Probleme lösen.
Mit Blick auf die zuvor erhaltenen Benutzerinformationen werden Elemente wie "is_bot" und "is_deleted" vorbereitet. Verwenden Sie diese Gegenstände, um abzuwehren.
#Es wird angenommen, dass das Argumentelement die Informationen eines Benutzers enthält (Wörterbuchtyp).
def is_target_member(member):
if member['is_bot']:
return False
#Der SlackBot, der standardmäßig teilnimmt'is_bot'Ist aus irgendeinem Grund falsch, wird es namentlich abgelehnt
if member['name'] == 'slackbot':
return False
if member['deleted'] == 'True':
return False
return True
Aus irgendeinem Grund ist die 'is_bot'-Flagge von SlackBot, die von Anfang an bei der Erstellung des Arbeitsbereichs verwendet wird, False und wird daher namentlich gewaltsam abgestoßen.
Es scheint, dass Japanisch (Kanji, Katakana, Hiragana) mit einem Paket namens "pykakasi" in römische Schriftzeichen umgewandelt werden kann. (Referenz, Installation und Verwendung des Pykakasi-Moduls, das japanische Zeichen in römische Zeichen konvertiert) Übrigens habe ich auch "mojimoji" eingegeben, das volle Breite> halbe Breite konvertiert.
$ pip install git+https://github.com/miurahr/pykakasi
$ pip install mojimoji
Es wird so romanisiert.
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)
#Punkte und Leerzeichen führen zu Fehlern. Löschen Sie sie daher
fixed_name = fixed_name.replace(".", "")
fixed_name = fixed_name.replace(' ', '')
return fixed_name
Nachdem das Problem behoben wurde, ist es Zeit, es herunterzuladen. Ich habe eine Funktion zum Herunterladen von Bildern geschrieben, und das ganze Bild sieht so aus. (↓ ist der Code, mit dem Sie den Verarbeitungsablauf erfassen können. Informationen zum ordnungsgemäßen Repository finden Sie im Repository.)
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' #Jeder Name ist in Ordnung
members_list = get_userslist_json()
for member in members_list:
#Bot und nicht abonnierte Benutzer abwehren
if not is_target_member(member):
continue
member_prof = member['profile']
name = member_prof['display_name'].lower()
name = fix_name_style(name)
# 'image_original'Enthält die URL des Symbolbildes
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)
Wir werden diesen "Slack-Emojinator" verwenden, um das gespeicherte Bild als Piktogramm hinzuzufügen. https://github.com/smashwilson/slack-emojinator Ich denke, es ist in Ordnung, wenn Sie den Anweisungen in README.md folgen. (Wenn Ihnen die Erklärung auf Japanisch gefällt, hier Ich habe versucht, Slack Emojinator zu verwenden)
Übrigens das Hinzufügen von Piktogrammen durch "Slack-Emojinator", Da die Slack-API keine API zum Hinzufügen von Piktogrammen enthält, werden Sitzungen anscheinend mithilfe von Cookies zwangsweise erstellt.
"slack-emojinator" wird verwendet, indem es über die Befehlszeile aufgerufen wird. Wenn Sie alles vom Herunterladen von Bildern bis zum automatischen Hochladen tun möchten, lesen Sie bitte das folgende Repository. https://github.com/KoseiYoshida/slack_usericon_to_emoji
Holen Sie sich das Slack-Benutzersymbol-> Piktogramme in Python automatisieren. Sie können es einfach ausführen, indem Sie das Repository klonen. Verwenden Sie es daher.
Entschuldigen Sie den schmutzigen Code, da ich neu in Python und APIs bin. Masakari ist willkommen.