ä»åã¯Misskeyã§Spotifyã®ãªãã·ããè¡ãæ¹æ³ã«ã€ããŠçŽ¹ä»ããŸãã ä»åã¯ãµãŒããŒãšGoèšèªã䜿çšããŠæ§æãããããè¥å¹²ããããããªããŸãããä»ãåãããã ãããšå¹žãã§ãã
IFTTTã§Misskeyã«åçäžã®æ²ããã¹ããã
Misskeyã§Spotifyã§åçäžã®æ²ãå ±æã§ããã°ããã®æ²ã§è©±é¡ãäœããããé¢çœããªããšããããšã§äœã䜿ããªãã暡玢ããŠãããšãããã¯ãã®ããããIFTTTã䜿çšããŠWebHookãæããæ¹æ³ãZennã§èšèŒãããŠããã®ã§è©ŠããŠã¿ãŸããã
IFTTTã¯ããã€ãã®ããªã¬ãŒãšãããã«åºã¥ãåäœãããžã¥ã¢ã«ã©ã€ã¯ã«å®çŸ©ããŠäœ¿çšããããšãã§ãããµãŒãã¹ã§ãã
èšäºã®äžã§çŽ¹ä»ãããŠããŸãããã«ãåçäžã®æ²ãããªã¬ãŒã«ããŠãMisskeyã«ãã®æ²æ å ±ã転éããŸãã
ã¯ãã®ãããã®èª¬æããšãŠã詳现ã§å®ãºãã ã£ãã®ã§ãè¿·ãããšãªãå°å ¥ããããšãã§ããŸãããæ¬åœã«æè¬ã
åçãããšãã£ãããšæçš¿ããããæé«ïŒ
...
ããããåã¯Spotify銬鹿ãªã®ã§äžæ¥ã«5æéãããæ²ãåçãç¶ããŸãã
ããããçããã¯ãã®ãããªäœ¿ãæ¹ããããªãã®ã§åé¡ãªããšæãã®ã§ãããåã®ãããªäœ¿ãæ¹ãããŠãããšIFTTTãæ²ã®æ å ±ãååŸããæåãåŸã ã«ãããããªãå§ããŸããã
å ·äœçã«èšããšãæ²ã®æ å ±ãååŸããåŠçããžã£ã ã£ãŠïŒããã€ããŠïŒããŸãã30åã«äžåã®ã¹ãã³ã§äžæ°ã«æçš¿ããããã«ãªã£ãŠããŸããŸããã
äžæ²3åã ãšãããš30åã§åçããæ²ã¯10æ²ããããäžæ°ã«Misskeyã®ã¿ã€ã ã©ã€ã³ã«æã蟌ãŸããŠããŸããšãã©ãã¯ãŒãããåäžãµãŒããŒã«ããå©çšè ã®æ¹ã ãå°æããŠããŸãããšã«ãªããŸãã
IFTTTãZapierãšãã£ãããªã¬ãŒåãµãŒãã¹ã¯ããããŸã§é »ç¹ãªæ¡ä»¶ã®çºçãæ³å®ããŠãããã®ã§ã¯ãªããäžå®æã ãã©èŠåæ§ã®ããæ¡ä»¶ãå©çšããŠãªãŒãã¡ãŒã·ã§ã³åããäºãæ¬æ¥ã®äœ¿çšçšéã®ãããåã¿ããã«5æé以äžåçãããããªé³æ¥œéŠ¬é¹¿ããããšèããããªããšã®ããšã
ãã®ãããMisskeyæçš¿ã«ç¹åããBOTãµãŒãã¹ãèªã調éããå¿ èŠãçããŸããã
np2mastã掻çšãããŠããã ã
ã©ã®ããã«å®è£ ããããæ©ãã§ãããšãããäºå¹Žåã«yudeãããšããéçºè ã®æ¹ãMastodonåãã«NowPlayãœãããå¶äœãããŠããã®ã§ããã¡ãããã©ãŒã¯ããŠMisskeyããŒãžã§ã³ãäœãããšããäºã«ãªããŸããã
ã³ãŒãäžã§MastodonãšMisskeyã§å·®ãåºãŠããéšåã¯APIã®èªèšŒã®ã¿ã§ãã£ãããããããå çãã圢ã§Misskeyçã補äœãããŠããã ããã®ã§ãããèªèšŒéšåã§äœæ ãåŠçã«å€±æããŠããŸã£ãã®ã§åå ãæ¢ã£ãŠãããšãããSpotifyã®ã¹ã³ãŒããæ確ã«æå®ããŠããŒã¯ã³ãçºè¡ããªããã°ãªããªããšã®ããšã§ããã
åãæžãæããã°ããã«æ²ã®æ å ±ãé£ç¶ããŠããŸãä¿æã§ããªãããšãããã è²ã ãã£ãŠæ°ãæããããŸãããå®æãyudeããã®MastodonããŠãã¬ãç¡ãã£ãã50幎æãã£ãŠããšæãã®ã§æ¬åœã«å©ãããŸããã
䜿çšæ¹æ³
Githubã«ç°¡åã«èª¬æãæžããŠããŸãããåãç«æ人ãªåœ±é¿ã§äœãèšã£ãŠãã®ãåãããªããšããããšãªã®ã§ãåçã䜵ããŠèª¬æãããŠããã ããŸãã
ãã®ãªããžããªã§ã¯Spotifyã®ããŒã¯ã³ãçºè¡ããæºåãå¿ èŠãªã®ã§ãæå ã®PCã§ããŒã¯ã³ãçºè¡ããŠãããµãŒããŒã«.envãã¡ã€ã«ãè¿œå ãå®è¡ããæé ãèžã¿ãŸãã
䜿çšãããµãŒããŒã¯Debian/Ubuntuç³»ã§ããé©å®ç°å¢ã«åãããŠèªã¿æ¿ããŠãã ããã
åæãšããŠããã®ãµãŒãã¹ã¯Goã§åããŠããã®ã§ãæå ã®PCãšãµãŒããŒã«Goãã€ã³ã¹ããŒã«ããŠããã ãå¿ èŠããããŸãã
å ¬åŒããŒãžãåèã«å°å ¥ãæžãŸããŠãããŠãã ããã
ãªããžããªã®æºå
ãŸãããªããžããªãæå ã®PCã«ã¯ããŒã³ããŸãã
git clone https://github.com/CAT5NEKO/np2misk.git
次ã«ããªããžããªå
éšã«ããenv.exampleãã¡ã€ã«ã«èšèŒãããŠããèªèšŒæ
å ±ã®ãã¡SPOTIFY_REFRESH_TOKEN=""
以å€ã®é
ç®ãåããŸãã以äžããé ã«é²ããŠãããŸãããã
Misskeyã®èªèšŒæ å ±ãç»é²
MISSKEY_ACCESS_TOKEN="ããŒãã®äœæ/æ¶å»ã®æš©éã®ã¿ãä»äžããŠãã ããã" MISSKEY_ENDPOINT_URL="https://example.tld"
ããã§ã¯Misskeyã®URLãšã¢ã¯ã»ã¹ããŒã¯ã³ãèšèŒããŸãã
Misskeyã®URLã¯BotãåãããµãŒããŒã®URLãèšèŒããŸããmisskey.ioã§ããã°https://misskey.ioã«ãªããŸãã
ãµãŒããŒã«ãã£ãŠã¯BotãçŠæ¢ããŠããå ŽåãããããŸãã®ã§ãå©çšèŠçŽããããèªã¿ã«ãªã£ãŠããå°å ¥ããŠäžããã
ã¢ã¯ã»ã¹ããŒã¯ã³ã¯èšå®âAPI ã§çºè¡ããŸãã
APIã®äœæãæŒããããŒãã®äœæã»æ¶å»ã®æš©éãäžãããã§ãã¯ããŒã¯ãæŒããšã¢ã¯ã»ã¹ããŒã¯ã³ã衚瀺ãããŸãã
ãã®ããŒã¯ã³ã¯äžåºŠã ããã衚瀺ãããªãã®ã§ãã£ããã³ããŒããŠããç»é¢ãéããŠãã ããã ãŸãããã®ããŒã¯ã³ãããã°ã誰ã§ãããªãã®ã¢ã«ãŠã³ãã䜿ã£ãŠããŒããäœæããäºãå¯èœã«ãªãã®ã§ã決ããŠSNSã«æçš¿ãããå€éšã«å ¬éãããªãããä¿ç®¡ããŠãã ããã
以äžãè¿œå ããã°ãã®ãããªæãã§åãŸããšæããŸããââïŒããã«ã¯ã©ãŒããŒã·ã§ã³ïŒã®äžã«èšèŒããããã«ããŠãã ããã
MISSKEY_ACCESS_TOKEN="å ã»ã©çºè¡ããã¢ã¯ã»ã¹ããŒã¯ã³" MISSKEY_ENDPOINT_URL="https://example.tld"
Spotifyã®èªèšŒæ å ±ãç»é²
Spotifyã®ã¢ã¯ã»ã¹ããŒã¯ã³ã¯Spotifyã®éçºè ããŒãžã§çºè¡ããŸãããã¡ãã®URLã«é²ãã§ãã ããã
ãã§ã«ãã°ã€ã³ãæžãŸããŠãããšãã®ãããªç»é¢ãåºããšæããŸãã®ã§ããã¡ãã®å³äžã«ããã¢ã«ãŠã³ãã®ã¢ã€ã³ã³ãã¯ãªãã¯ããDashboardãšããé ç®ã«ç§»åããŸãã
ããã·ã¥ããŒãã«ç§»åãããšã¢ããªäžèŠ§ã衚瀺ãããã®ã§ãCreateAppãã¯ãªãã¯
ç»åã®éãå¿ èŠãªé ç®ãåããŠãããŸãã
AppNameïŒã¢ããªã®ååããªãã§ãããã§ãã DescriptionïŒã¢ããªã®èª¬æããªãã§ãããã§ãã WebSiteïŒãŠã§ããµã€ããä»åã¯Botãäœããããµã€ããååšããªãããååšããªãããŒãžãèšèŒããŠããã ããŠæ§ããŸããã CallBackïŒãã®ãŸãŸã§å€§äžå€«ã§ãã
æåŸã«WebAPIã®é ç®ã«ãã§ãã¯ããå©çšèŠçŽã«åæããŠSAVEãã¿ã³ãæŒããŸãã
ãããšãã®ããã«ã¢ããªã±ãŒã·ã§ã³ã®å©çšçµ±èšã衚瀺ãããŠããé ç®ã«é£ã³ãŸãã®ã§ãSettingãšãããã¿ã³ãæŒããŸãã
SettingããŒãžã®äžéšã«ClientIDãšClientSecretãèšèŒãããŠããŸãã®ã§ãä»åã¯ãã¡ãã®ãµãã€ã䜿ããŸãã
ãã¡ããéèŠãªå人æ å ±ãªã®ã§å€§åã«ä¿ç®¡ããŠãã ããã
ãã¡ãã®ããŒãžã§åŸãæ å ±ãenvã®é ç®ã«èšèŒããŸãã
SPOTIFY_CLIENT_ID="Client ID (äžã®ãã€)" SPOTIFY_CLIENT_SECRET="Client Secret ïŒäžã®ãã€ïŒ"
ããããããã£ããããªããžããªå
éšã«.env
ãã¡ã€ã«ãäœããenv.exampleãåèã«æ
å ±ãåãåãããŠäžãããVScodeïŒã³ãŒããšãã£ã¿ïŒãIDEïŒçµ±åéçºç°å¢ïŒãªã©ã䜿ããšgo buildããã¿ã³äžã€ã§å®è¡ã§ããããšããã£ãŠäŸ¿å©ã§ãããã²ãæ€èšãã ããã
ç¡æ https://code.visualstudio.com/
30æ¥éã¯ç¡æïŒããããïŒ https://www.jetbrains.com/ja-jp/go/download/
.env
ãã¡ã€ã«ã®èšèŒãäœã¿ãŸããããgoã§æžããããœãŒã¹ã³ãŒããå®è¡å¯èœãªç¶æ
ã«ããŸãã
ã¿ãŒããã«ã§go build
ãšããã³ãã³ããå
¥åããå®è¡å¯èœãªãã¡ã€ã«ãäœæããŠå®è¡ããŠãããããIDEããšãã£ã¿ã®åçããŒã¯ã®ãããªãã®ãæŒããŠãã ããã
ãããšãã¿ãŒããã«äžã«URLã衚瀺ãããŸãã®ã§ããã¡ããæŒããŠãã ããã
URLã«é£ã¶ãšå床ãã°ã€ã³ãä¿ãããèš±å¯ãæ±ããããŸãã®ã§èš±å¯ããŠãã ããã
ãããšèªåã§.env
ãã¡ã€ã«ã«REFRESH_TOKENãåããããŸãã
ãæå ã®PCã§ã䜿çšããã ãå Žåã§ããã°ããã§å床å®è¡ããŠããã ããšåŠçãéå§ããŸãã
ãµãŒããŒäžã®èšå®
BotãšããŠåäœãããã«ã¯ãµãŒããŒäžã«èšçœ®ããŠæä¹ çã«åäœãããå¿ èŠããããŸãã
ããããã¯ããã³ãã³ããå€ããªãã®ã§ç»åã¯å²æãããŠããã ããŸãã
ãªããžããªã®æºå
ä»åºŠã¯ãµãŒããŒäžã§ãªããžããªãã¯ããŒã³ããŠãã ããã
git clone https://github.com/CAT5NEKO/np2misk.git
ãããŠããªããžããªå ã«ç§»åããŠããã ãã.envãã¡ã€ã«ãäœæããå ã»ã©æå ã®PCã§åããå 容ãã³ããããŸãã
cd np2misk nano .env
ãã®éã«ãã«ãããé¡ãããŸãã
go build
次ã«åäžãã£ã¬ã¯ããªå ã«åŠçã倱æããŠçµäºããå Žåã«èçããã·ã§ã«ãäœæããŸãã
nano run_main.sh
#!/bin/bash cd /path/to/your/np2misk/ if [ -x ./np2misk ]; then ./np2misk else echo "Error: ./np2misk not found or not executable." fi while true; do ./np2misk if [ $? -eq 0 ]; then echo "Execution completed successfully. Exiting." exit 0 else echo "Error occurred. Retrying..." sleep 1 fi done
å¿ èŠã«å¿ããŠãã¹ããã¡ã€ã«åã眮ãæããŠãã ããã
æåŸã«ããã¡ãã®ã·ã§ã«ãSystemdã䜿çšããŠãµãŒãã¹åããŸãã
[Unit] Description=Run run_main script repeatedly [Service] Type=simple ExecStart=/bin/bash /path/to/your/np2misk/run_main.sh [Install] WantedBy=default.target
ãã¡ããé©å®çœ®ãæããŠäžããã
ä¿åãæžãã ãreloadãenabledã§æå¹åããstatusã§æ£åžžã«åäœããŠããããšã確èªããŸãã
ããã§Spotifyäžã§æ²ãåçããã°ãæçš¿ãããããã«ãªããŸãã
ãŸãšã
æåŸã®ã»ãç«æèªåŸ©æŽ»ããŠç³ãèš³ããããŸããã
åºæ¬çãªãªãã·ãã§ããã°ã¯ãã®ãããã®çŽ¹ä»ãããŠããIFTTTã®æ¹åŒãäžçªæ¥œã§ãã®ã§ãã¡ããã掻çšããã ãããšå¿«é©ã«æçš¿ã§ããŸãããåã¿ãããªãããŒãŠãŒã¶ãŒã®å Žåã¯æçš¿åŠçã«æ»ããçºçããã®ã§ãä»åã®ããã«Botãäœæããæ¹åŒããšããšäŸ¿å©ã ãšãã話ã§ããã
ã掻çšããã ããã°å¹žãã§ãã