summaryrefslogtreecommitdiff
path: root/config/nvim-1/undo/%home%coast%Projects%py%ashscrobble
blob: e35c00b761581db872dd5ffc89a699267da61f69 (plain)
ofshex dumpascii
0000 56 69 6d 9f 55 6e 44 6f e5 00 03 a6 d2 36 23 08 cc a3 5b 86 47 48 d3 2a f5 12 c6 4e 73 af 20 89 Vim.UnDo.....6#...[.GH.*...Ns...
0020 c1 55 8e bc ba 7b c0 ad 8d e3 8c 00 00 00 90 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 29 00 00 00 .U...{.................main()...
0040 90 00 00 00 0a 00 00 00 01 00 00 00 25 00 00 00 00 00 00 00 25 00 00 00 25 00 00 00 25 00 00 00 ............%.......%...%...%...
0060 00 69 98 fd 05 04 01 00 00 00 1a 00 5f d0 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 .i.........._...................
0080 00 01 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f2 37 04 01 00 00 00 00 00 f5 18 00 00 00 ................i..7............
0200 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 ................................
0220 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 .....................5..........
0240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0260 00 00 00 00 00 20 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 .............5._................
0280 00 00 00 00 02 00 00 00 01 00 00 00 1f 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 ................................
02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f2 3b 04 01 00 00 00 00 00 f5 18 ...................i..;.........
0400 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 20 38 35 38 64 35 61 38 33 63 38 37 35 ....................858d5a83c875
0420 30 62 65 35 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 35 81 f5 18 00 00 00 00 00 00 00 00 0be5dde0006ed58a3a585...........
0440 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 21 00 00 00 ............................!...
0460 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 02 00 00 00 04 00 00 00 00 00 00 00 00 ............5._.................
0480 00 00 00 03 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 ................................
04a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
04c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
04e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f2 3b 04 01 00 00 00 01 00 f5 18 00 ..................i..;..........
0600 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 8d 00 00 00 00 00 00 00 ................................
0620 00 00 00 00 00 f5 18 00 00 00 8d 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 7e 00 00 00 ............................~...
0640 00 00 00 00 00 00 00 00 01 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 64 75 .........................last_du
0660 72 61 74 69 6f 6e 20 3d f5 18 00 00 00 7f 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 51 ration.=.......................Q
0680 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 05 20 20 20 20 77 f5 18 00 00 00 52 00 00 00 00 00 ....................w.....R.....
06a0 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 ................................
06c0 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............5................
06e0 00 00 00 00 00 00 00 51 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .......Q........................
0700 08 00 00 00 00 00 00 f5 18 00 00 00 00 51 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 2d 00 00 .............Q...............-..
0720 00 1b 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 f5 18 00 ................................
0740 00 00 00 7e 00 00 00 1b 00 00 00 00 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 00 0d 00 00 00 ...~............................
0760 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 f5 18 00 00 00 00 8c 00 00 00 00 00 00 ................................
0780 00 00 00 00 00 00 00 00 00 00 00 00 00 0a 00 00 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07a0 00 0a 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 03 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 .........5._....................
07c0 04 00 00 00 8d 00 00 00 09 00 00 00 00 ff ff ff ff 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f2 3d 04 01 00 00 00 02 00 f5 18 00 00 00 00 ...............i..=.............
0940 00 00 00 00 00 00 00 00 00 00 00 8d 00 00 00 16 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 ................#!/usr/bin/env.p
0960 79 74 68 6f 6e 33 00 00 00 00 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 00 00 00 0b ython3........import.hashlib....
0980 69 6d 70 6f 72 74 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 00 00 00 0f import.time....import.socket....
09a0 69 6d 70 6f 72 74 20 72 65 71 75 65 73 74 73 00 00 00 13 69 6d 70 6f 72 74 20 63 6f 6e 66 69 67 import.requests....import.config
09c0 70 61 72 73 65 72 00 00 00 09 69 6d 70 6f 72 74 20 6f 73 00 00 00 00 00 00 00 2c 41 50 49 5f 4b parser....import.os.......,API_K
09e0 45 59 20 3d 20 22 39 34 32 33 65 33 34 30 33 37 31 61 35 39 63 31 33 38 34 62 34 34 38 63 34 66 EY.=."9423e340371a59c1384b448c4f
0a00 62 39 61 34 37 38 22 00 00 00 2f 41 50 49 5f 53 45 43 52 45 54 20 3d 20 22 38 35 38 64 35 61 38 b9a478".../API_SECRET.=."858d5a8
0a20 33 63 38 37 35 30 62 65 35 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 22 00 00 00 15 55 53 3c8750be5dde0006ed58a3a58"....US
0a40 45 52 4e 41 4d 45 20 3d 20 22 56 65 74 74 65 72 69 61 22 00 00 00 1f 50 41 53 53 57 4f 52 44 20 ERNAME.=."Vetteria"....PASSWORD.
0a60 3d 20 22 59 4f 55 52 5f 50 41 53 53 57 4f 52 44 5f 48 45 52 45 22 00 00 00 16 4d 50 44 5f 48 4f =."YOUR_PASSWORD_HERE"....MPD_HO
0a80 53 54 20 3d 20 22 6c 6f 63 61 6c 68 6f 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 3d 20 36 ST.=."localhost"....MPD_PORT.=.6
0aa0 36 30 30 00 00 00 00 00 00 00 0b 64 65 66 20 6d 64 35 28 73 29 3a 00 00 00 2e 20 20 20 20 72 65 600........def.md5(s):........re
0ac0 74 75 72 6e 20 68 61 73 68 6c 69 62 2e 6d 64 35 28 73 2e 65 6e 63 6f 64 65 28 29 29 2e 68 65 78 turn.hashlib.md5(s.encode()).hex
0ae0 64 69 67 65 73 74 28 29 00 00 00 00 00 00 00 11 64 65 66 20 73 69 67 6e 28 70 61 72 61 6d 73 29 digest()........def.sign(params)
0b00 3a 00 00 00 20 20 20 20 20 6b 65 79 73 20 3d 20 73 6f 72 74 65 64 28 70 61 72 61 6d 73 2e 6b 65 :........keys.=.sorted(params.ke
0b20 79 73 28 29 29 00 00 00 2e 20 20 20 20 73 69 67 20 3d 20 22 22 2e 6a 6f 69 6e 28 6b 20 2b 20 70 ys())........sig.=."".join(k.+.p
0b40 61 72 61 6d 73 5b 6b 5d 20 66 6f 72 20 6b 20 69 6e 20 6b 65 79 73 29 00 00 00 15 20 20 20 20 73 arams[k].for.k.in.keys)........s
0b60 69 67 20 2b 3d 20 41 50 49 5f 53 45 43 52 45 54 00 00 00 13 20 20 20 20 72 65 74 75 72 6e 20 6d ig.+=.API_SECRET........return.m
0b80 64 35 28 73 69 67 29 00 00 00 00 00 00 00 16 64 65 66 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b d5(sig)........def.get_session_k
0ba0 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 6f 6b 65 6e 5f 72 65 73 20 3d 20 72 65 71 75 65 73 74 ey():...K....token_res.=.request
0bc0 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 s.get("https://ws.audioscrobbler
0be0 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 72 61 6d 73 3d 7b 00 00 00 22 20 20 20 20 20 20 20 20 .com/2.0/",.params={..."........
0c00 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 54 6f 6b 65 6e 22 2c 00 00 00 1b 20 20 "method":."auth.getToken",......
0c20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 18 20 20 20 ......"api_key":.API_KEY,.......
0c40 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a 20 22 6a 73 6f 6e 22 00 00 00 0d 20 20 20 20 7d 29 2e ....."format":."json"........}).
0c60 6a 73 6f 6e 28 29 00 00 00 1e 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 65 73 5b json()........token.=.token_res[
0c80 22 74 6f 6b 65 6e 22 5d 00 00 00 00 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 "token"]............params.=.{..
0ca0 00 2a 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 4d 6f 62 .*........"method":."auth.getMob
0cc0 69 6c 65 53 65 73 73 69 6f 6e 22 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 75 73 65 72 6e 61 6d ileSession",............"usernam
0ce0 65 22 3a 20 55 53 45 52 4e 41 4d 45 2c 00 00 00 22 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f e":.USERNAME,..."........"passwo
0d00 72 64 22 3a 20 6d 64 35 28 50 41 53 53 57 4f 52 44 29 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 rd":.md5(PASSWORD),............"
0d20 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 api_key":.API_KEY,........}...$.
0d40 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 ...params["api_sig"].=.sign(para
0d60 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a ms)........params["format"].=."j
0d80 73 6f 6e 22 00 00 00 00 00 00 00 51 20 20 20 20 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 70 son".......Q....res.=.requests.p
0da0 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 ost("https://ws.audioscrobbler.c
0dc0 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 29 2e 6a 73 6f 6e 28 29 00 00 00 om/2.0/",.data=params).json()...
0de0 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 5b 22 73 65 73 73 69 6f 6e 22 5d 5b 22 6b 65 79 22 .....return.res["session"]["key"
0e00 5d 00 00 00 00 00 00 00 32 64 65 66 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 61 72 74 69 73 74 ].......2def.scrobble(sk,.artist
0e20 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 2c 20 74 69 6d 65 73 74 61 6d 70 29 3a 00 00 00 0e 20 ,.title,.album,.timestamp):.....
0e40 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 23 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 ...params.=.{...#........"method
0e60 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 6f 62 62 6c 65 22 2c 00 00 00 1c 20 20 20 20 20 20 20 20 ":."track.scrobble",............
0e80 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 61 72 74 69 73 74 2c 00 00 00 1a 20 20 20 20 20 20 20 20 "artist[0]":.artist,............
0ea0 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 69 74 6c 65 2c 00 00 00 1a 20 20 20 20 20 20 20 20 22 61 "track[0]":.title,............"a
0ec0 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 27 20 20 20 20 20 20 20 20 22 74 69 6d lbum[0]":.album,...'........"tim
0ee0 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 74 72 28 74 69 6d 65 73 74 61 6d 70 29 2c 00 00 00 1b 20 estamp[0]":.str(timestamp),.....
0f00 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 ......."api_key":.API_KEY,......
0f20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 ......"sk":.sk,........}...$....
0f40 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 params["api_sig"].=.sign(params)
0f60 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e ........params["format"].=."json
0f80 22 00 00 00 44 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f "...D....requests.post("https://
0fa0 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 ws.audioscrobbler.com/2.0/",.dat
0fc0 61 3d 70 61 72 61 6d 73 29 00 00 00 00 00 00 00 31 64 65 66 20 75 70 64 61 74 65 5f 6e 6f 77 5f a=params).......1def.update_now_
0fe0 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d playing(sk,.artist,.title,.album
1000 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 ):........params.=.{...+........
1020 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c 61 79 69 6e "method":."track.updateNowPlayin
1040 67 22 2c 00 00 00 19 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 69 73 74 2c g",............"artist":.artist,
1060 00 00 00 17 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 00 00 17 20 ............"track":.title,.....
1080 20 20 20 20 20 20 20 22 61 6c 62 75 6d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 20 20 20 20 ......."album":.album,..........
10a0 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 .."api_key":.API_KEY,...........
10c0 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d ."sk":.sk,........}...$....param
10e0 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 s["api_sig"].=.sign(params).....
1100 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 44 ...params["format"].=."json"...D
1120 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 ....requests.post("https://ws.au
1140 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 dioscrobbler.com/2.0/",.data=par
1160 61 6d 73 29 00 00 00 00 00 00 00 12 64 65 66 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 3a 00 00 ams)........def.mpd_connect():..
1180 00 17 20 20 20 20 73 20 3d 20 73 6f 63 6b 65 74 2e 73 6f 63 6b 65 74 28 29 00 00 00 23 20 20 20 ......s.=.socket.socket()...#...
11a0 20 73 2e 63 6f 6e 6e 65 63 74 28 28 4d 50 44 5f 48 4f 53 54 2c 20 4d 50 44 5f 50 4f 52 54 29 29 .s.connect((MPD_HOST,.MPD_PORT))
11c0 00 00 00 10 20 20 20 20 73 2e 72 65 63 76 28 31 30 32 34 29 00 00 00 0c 20 20 20 20 72 65 74 75 ........s.recv(1024)........retu
11e0 72 6e 20 73 00 00 00 00 00 00 00 14 64 65 66 20 6d 70 64 5f 63 6d 64 28 73 2c 20 63 6d 64 29 3a rn.s........def.mpd_cmd(s,.cmd):
1200 00 00 00 24 20 20 20 20 73 2e 73 65 6e 64 61 6c 6c 28 28 63 6d 64 20 2b 20 22 5c 6e 22 29 2e 65 ...$....s.sendall((cmd.+."\n").e
1220 6e 63 6f 64 65 28 29 29 00 00 00 0e 20 20 20 20 72 65 73 70 20 3d 20 62 22 22 00 00 00 0f 20 20 ncode())........resp.=.b""......
1240 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 1c 20 20 20 20 20 20 20 20 63 68 75 6e 6b 20 3d ..while.True:............chunk.=
1260 20 73 2e 72 65 63 76 28 34 30 39 36 29 00 00 00 15 20 20 20 20 20 20 20 20 72 65 73 70 20 2b 3d .s.recv(4096)............resp.+=
1280 20 63 68 75 6e 6b 00 00 00 2d 20 20 20 20 20 20 20 20 69 66 20 62 22 4f 4b 5c 6e 22 20 69 6e 20 .chunk...-........if.b"OK\n".in.
12a0 72 65 73 70 20 6f 72 20 62 22 41 43 4b 22 20 69 6e 20 72 65 73 70 3a 00 00 00 11 20 20 20 20 20 resp.or.b"ACK".in.resp:.........
12c0 20 20 20 20 20 20 20 62 72 65 61 6b 00 00 00 18 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 70 2e .......break........return.resp.
12e0 64 65 63 6f 64 65 28 29 00 00 00 00 00 00 00 16 64 65 66 20 70 61 72 73 65 5f 73 74 61 74 75 73 decode()........def.parse_status
1300 28 72 61 77 29 3a 00 00 00 0d 20 20 20 20 64 61 74 61 20 3d 20 7b 7d 00 00 00 21 20 20 20 20 66 (raw):........data.=.{}...!....f
1320 6f 72 20 6c 69 6e 65 20 69 6e 20 72 61 77 2e 73 70 6c 69 74 6c 69 6e 65 73 28 29 3a 00 00 00 17 or.line.in.raw.splitlines():....
1340 20 20 20 20 20 20 20 20 69 66 20 22 3a 22 20 69 6e 20 6c 69 6e 65 3a 00 00 00 25 20 20 20 20 20 ........if.":".in.line:...%.....
1360 20 20 20 20 20 20 20 6b 2c 20 76 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 22 3a 22 2c 20 31 29 .......k,.v.=.line.split(":",.1)
1380 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 6b 2e 73 74 72 69 70 28 29 5d 20 ...'............data[k.strip()].
13a0 3d 20 76 2e 73 74 72 69 70 28 29 00 00 00 0f 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 61 00 00 =.v.strip()........return.data..
13c0 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 00 00 1a 20 20 20 20 73 6b 20 3d 20 67 65 ......def.main():........sk.=.ge
13e0 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 00 00 00 29 20 20 20 20 70 72 69 6e 74 28 66 22 41 t_session_key()...)....print(f"A
1400 75 74 68 65 6e 74 69 63 61 74 65 64 20 61 73 20 7b 55 53 45 52 4e 41 4d 45 7d 22 29 00 00 00 00 uthenticated.as.{USERNAME}")....
1420 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 00 00 00 15 20 ........mpd.=.mpd_connect().....
1440 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 ...last_title.=.None........last
1460 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 00 18 20 20 20 20 6c 61 73 74 5f 64 75 72 61 74 69 _start.=.None........last_durati
1480 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 4e on.=.None........last_artist.=.N
14a0 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 4e 6f 6e 65 00 00 00 15 one........last_album.=.None....
14c0 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 00 00 00 00 0f 20 20 20 ....scrobbled.=.False...........
14e0 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 20 20 20 20 20 73 74 61 74 75 73 5f 72 .while.True:...+........status_r
1500 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 73 74 61 74 75 73 22 29 00 00 00 31 20 aw.=.mpd_cmd(mpd,."status")...1.
1520 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 .......current_raw.=.mpd_cmd(mpd
1540 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 29 20 20 20 20 20 20 20 20 73 74 61 74 ,."currentsong")...)........stat
1560 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 74 61 74 75 73 5f 72 61 77 29 00 00 00 us.=.parse_status(status_raw)...
1580 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 +........current.=.parse_status(
15a0 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 00 00 00 00 28 20 20 20 20 20 20 20 20 74 69 74 6c current_raw).......(........titl
15c0 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 2c 20 22 22 29 00 00 00 2a e.=.current.get("Title",."")...*
15e0 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 72 ........artist.=.current.get("Ar
1600 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 6c 62 75 6d 20 3d 20 63 75 tist",."")...(........album.=.cu
1620 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 00 00 2b 20 20 20 20 20 20 rrent.get("Album",."")...+......
1640 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 74 61 74 65 22 2c 20 22 73 ..state.=.status.get("state",."s
1660 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 64 20 3d 20 66 6c 6f 61 74 top")...1........elapsed.=.float
1680 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 30 29 29 00 00 00 33 20 20 (status.get("elapsed",.0))...3..
16a0 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 2e 67 65 ......duration.=.float(status.ge
16c0 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 00 00 00 00 3d 20 20 20 20 20 20 20 t("duration",.0)).......=.......
16e0 20 69 66 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 74 69 74 6c 65 20 61 6e .if.state.==."play".and.title.an
1700 64 20 74 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 00 1e 20 20 20 20 20 20 d.title.!=.last_title:..........
1720 20 20 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 00 00 00 20 20 20 20 20 ......last_title.=.title........
1740 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 74 69 73 74 00 00 00 1e ........last_artist.=.artist....
1760 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 61 6c 62 75 6d 00 00 ............last_album.=.album..
1780 00 29 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 69 6e 74 28 74 .)............last_start.=.int(t
17a0 69 6d 65 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f ime.time())...$............last_
17c0 64 75 72 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 20 20 20 20 20 20 20 20 duration.=.duration.............
17e0 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 20 20 20 20 20 20 20 20 ...scrobbled.=.False...8........
1800 20 20 20 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 ....update_now_playing(sk,.artis
1820 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 20 20 20 20 20 20 20 20 t,.title,.album)...5............
1840 70 72 69 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 74 69 73 74 7d 20 2d 20 print(f"Now.playing:.{artist}.-.
1860 7b 74 69 74 6c 65 7d 22 29 00 00 00 00 00 00 00 3e 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 74 {title}").......>........if.(not
1880 20 73 63 72 6f 62 62 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c 65 20 61 6e 64 20 6c 61 .scrobbled.and.last_title.and.la
18a0 73 74 5f 64 75 72 61 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 20 20 20 20 20 20 20 20 st_duration.and...B.............
18c0 20 20 20 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 2f 20 32 ...(elapsed.>=.last_duration./.2
18e0 20 6f 72 20 65 6c 61 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 49 20 20 20 20 20 20 20 .or.elapsed.>=.240)):...I.......
1900 20 20 20 20 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 72 74 69 73 74 2c 20 6c .....scrobble(sk,.last_artist,.l
1920 61 73 74 5f 74 69 74 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c 61 73 74 5f 73 74 61 72 ast_title,.last_album,.last_star
1940 74 29 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 54 72 t)................scrobbled.=.Tr
1960 75 65 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 53 63 72 6f 62 62 ue...=............print(f"Scrobb
1980 6c 65 64 3a 20 7b 6c 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 73 74 5f 74 69 74 6c 65 led:.{last_artist}.-.{last_title
19a0 7d 22 29 00 00 00 00 00 00 00 23 20 20 20 20 20 20 20 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 }").......#........mpd_cmd(mpd,.
19c0 22 69 64 6c 65 20 70 6c 61 79 65 72 22 29 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 6d 65 5f "idle.player")........if.__name_
19e0 5f 20 3d 3d 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 29 35 81 _.==."__main__":........main()5.
1a00 35 81 5f d0 00 00 00 04 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 0d 00 00 00 0c 5._.............................
1a20 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b80 00 00 00 00 00 00 69 98 f2 58 04 01 00 00 00 08 00 f5 18 00 00 00 0c 00 00 00 0e 00 00 00 8d 00 ......i..X......................
1ba0 00 00 01 00 00 00 1f 50 41 53 53 57 4f 52 44 20 3d 20 22 59 4f 55 52 5f 50 41 53 53 57 4f 52 44 .......PASSWORD.=."YOUR_PASSWORD
1bc0 5f 48 45 52 45 22 f5 18 00 00 00 0d 00 00 00 0e 00 00 00 8d 00 00 00 00 35 81 f5 18 00 00 00 00 _HERE"..................5.......
1be0 0c 00 00 00 0c 00 00 00 00 00 00 00 12 00 00 00 00 00 00 00 0e 00 00 00 ef 00 00 00 00 00 00 00 ................................
1c00 12 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 05 00 00 00 09 00 00 00 06 ................5._.............
1c20 00 00 00 00 00 00 00 08 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 ................................
1c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f3 07 04 01 00 00 00 00 ......................i.........
1da0 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 8d 00 00 00 16 23 21 2f 75 73 72 2f 62 69 .......................#!/usr/bi
1dc0 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 33 00 00 00 00 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 n/env.python3........import.hash
1de0 6c 69 62 00 00 00 0b 69 6d 70 6f 72 74 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 lib....import.time....import.soc
1e00 6b 65 74 00 00 00 0f 69 6d 70 6f 72 74 20 72 65 71 75 65 73 74 73 00 00 00 13 69 6d 70 6f 72 74 ket....import.requests....import
1e20 20 63 6f 6e 66 69 67 70 61 72 73 65 72 00 00 00 09 69 6d 70 6f 72 74 20 6f 73 00 00 00 00 00 00 .configparser....import.os......
1e40 00 2c 41 50 49 5f 4b 45 59 20 3d 20 22 39 34 32 33 65 33 34 30 33 37 31 61 35 39 63 31 33 38 34 .,API_KEY.=."9423e340371a59c1384
1e60 62 34 34 38 63 34 66 62 39 61 34 37 38 22 00 00 00 2f 41 50 49 5f 53 45 43 52 45 54 20 3d 20 22 b448c4fb9a478".../API_SECRET.=."
1e80 38 35 38 64 35 61 38 33 63 38 37 35 30 62 65 35 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 858d5a83c8750be5dde0006ed58a3a58
1ea0 22 00 00 00 15 55 53 45 52 4e 41 4d 45 20 3d 20 22 56 65 74 74 65 72 69 61 22 00 00 00 1b 50 41 "....USERNAME.=."Vetteria"....PA
1ec0 53 53 57 4f 52 44 20 3d 20 22 32 53 30 79 54 70 55 34 58 35 51 36 26 68 22 00 00 00 16 4d 50 44 SSWORD.=."2S0yTpU4X5Q6&h"....MPD
1ee0 5f 48 4f 53 54 20 3d 20 22 6c 6f 63 61 6c 68 6f 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 _HOST.=."localhost"....MPD_PORT.
1f00 3d 20 36 36 30 30 00 00 00 00 00 00 00 0b 64 65 66 20 6d 64 35 28 73 29 3a 00 00 00 2e 20 20 20 =.6600........def.md5(s):.......
1f20 20 72 65 74 75 72 6e 20 68 61 73 68 6c 69 62 2e 6d 64 35 28 73 2e 65 6e 63 6f 64 65 28 29 29 2e .return.hashlib.md5(s.encode()).
1f40 68 65 78 64 69 67 65 73 74 28 29 00 00 00 00 00 00 00 11 64 65 66 20 73 69 67 6e 28 70 61 72 61 hexdigest()........def.sign(para
1f60 6d 73 29 3a 00 00 00 20 20 20 20 20 6b 65 79 73 20 3d 20 73 6f 72 74 65 64 28 70 61 72 61 6d 73 ms):........keys.=.sorted(params
1f80 2e 6b 65 79 73 28 29 29 00 00 00 2e 20 20 20 20 73 69 67 20 3d 20 22 22 2e 6a 6f 69 6e 28 6b 20 .keys())........sig.=."".join(k.
1fa0 2b 20 70 61 72 61 6d 73 5b 6b 5d 20 66 6f 72 20 6b 20 69 6e 20 6b 65 79 73 29 00 00 00 15 20 20 +.params[k].for.k.in.keys)......
1fc0 20 20 73 69 67 20 2b 3d 20 41 50 49 5f 53 45 43 52 45 54 00 00 00 13 20 20 20 20 72 65 74 75 72 ..sig.+=.API_SECRET........retur
1fe0 6e 20 6d 64 35 28 73 69 67 29 00 00 00 00 00 00 00 16 64 65 66 20 67 65 74 5f 73 65 73 73 69 6f n.md5(sig)........def.get_sessio
2000 6e 5f 6b 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 6f 6b 65 6e 5f 72 65 73 20 3d 20 72 65 71 75 n_key():...K....token_res.=.requ
2020 65 73 74 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 ests.get("https://ws.audioscrobb
2040 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 72 61 6d 73 3d 7b 00 00 00 22 20 20 20 20 20 ler.com/2.0/",.params={...".....
2060 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 54 6f 6b 65 6e 22 2c 00 00 00 ..."method":."auth.getToken",...
2080 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 18 ........."api_key":.API_KEY,....
20a0 20 20 20 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a 20 22 6a 73 6f 6e 22 00 00 00 0d 20 20 20 20 ........"format":."json"........
20c0 7d 29 2e 6a 73 6f 6e 28 29 00 00 00 1e 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 }).json()........token.=.token_r
20e0 65 73 5b 22 74 6f 6b 65 6e 22 5d 00 00 00 00 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 es["token"]............params.=.
2100 7b 00 00 00 2a 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 {...*........"method":."auth.get
2120 4d 6f 62 69 6c 65 53 65 73 73 69 6f 6e 22 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 75 73 65 72 MobileSession",............"user
2140 6e 61 6d 65 22 3a 20 55 53 45 52 4e 41 4d 45 2c 00 00 00 22 20 20 20 20 20 20 20 20 22 70 61 73 name":.USERNAME,..."........"pas
2160 73 77 6f 72 64 22 3a 20 6d 64 35 28 50 41 53 53 57 4f 52 44 29 2c 00 00 00 1b 20 20 20 20 20 20 sword":.md5(PASSWORD),..........
2180 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 00 .."api_key":.API_KEY,........}..
21a0 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 .$....params["api_sig"].=.sign(p
21c0 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d arams)........params["format"].=
21e0 20 22 6a 73 6f 6e 22 00 00 00 00 00 00 00 51 20 20 20 20 72 65 73 20 3d 20 72 65 71 75 65 73 74 ."json".......Q....res.=.request
2200 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 s.post("https://ws.audioscrobble
2220 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 29 2e 6a 73 6f 6e 28 29 r.com/2.0/",.data=params).json()
2240 00 00 00 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 5b 22 73 65 73 73 69 6f 6e 22 5d 5b 22 6b ........return.res["session"]["k
2260 65 79 22 5d 00 00 00 00 00 00 00 32 64 65 66 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 61 72 74 ey"].......2def.scrobble(sk,.art
2280 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 2c 20 74 69 6d 65 73 74 61 6d 70 29 3a 00 00 ist,.title,.album,.timestamp):..
22a0 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 23 20 20 20 20 20 20 20 20 22 6d 65 74 ......params.=.{...#........"met
22c0 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 6f 62 62 6c 65 22 2c 00 00 00 1c 20 20 20 20 20 hod":."track.scrobble",.........
22e0 20 20 20 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 61 72 74 69 73 74 2c 00 00 00 1a 20 20 20 20 20 ..."artist[0]":.artist,.........
2300 20 20 20 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 69 74 6c 65 2c 00 00 00 1a 20 20 20 20 20 20 20 ..."track[0]":.title,...........
2320 20 22 61 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 27 20 20 20 20 20 20 20 20 22 ."album[0]":.album,...'........"
2340 74 69 6d 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 74 72 28 74 69 6d 65 73 74 61 6d 70 29 2c 00 00 timestamp[0]":.str(timestamp),..
2360 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 .........."api_key":.API_KEY,...
2380 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 ........."sk":.sk,........}...$.
23a0 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 ...params["api_sig"].=.sign(para
23c0 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a ms)........params["format"].=."j
23e0 73 6f 6e 22 00 00 00 44 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 son"...D....requests.post("https
2400 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 ://ws.audioscrobbler.com/2.0/",.
2420 64 61 74 61 3d 70 61 72 61 6d 73 29 00 00 00 00 00 00 00 31 64 65 66 20 75 70 64 61 74 65 5f 6e data=params).......1def.update_n
2440 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c ow_playing(sk,.artist,.title,.al
2460 62 75 6d 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 20 bum):........params.=.{...+.....
2480 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c 61 ..."method":."track.updateNowPla
24a0 79 69 6e 67 22 2c 00 00 00 19 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 69 ying",............"artist":.arti
24c0 73 74 2c 00 00 00 17 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 00 st,............"track":.title,..
24e0 00 17 20 20 20 20 20 20 20 20 22 61 6c 62 75 6d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 20 .........."album":.album,.......
2500 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 ....."api_key":.API_KEY,........
2520 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 ...."sk":.sk,........}...$....pa
2540 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 rams["api_sig"].=.sign(params)..
2560 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 ......params["format"].=."json".
2580 00 00 44 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 ..D....requests.post("https://ws
25a0 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d .audioscrobbler.com/2.0/",.data=
25c0 70 61 72 61 6d 73 29 00 00 00 00 00 00 00 12 64 65 66 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 params)........def.mpd_connect()
25e0 3a 00 00 00 17 20 20 20 20 73 20 3d 20 73 6f 63 6b 65 74 2e 73 6f 63 6b 65 74 28 29 00 00 00 23 :........s.=.socket.socket()...#
2600 20 20 20 20 73 2e 63 6f 6e 6e 65 63 74 28 28 4d 50 44 5f 48 4f 53 54 2c 20 4d 50 44 5f 50 4f 52 ....s.connect((MPD_HOST,.MPD_POR
2620 54 29 29 00 00 00 10 20 20 20 20 73 2e 72 65 63 76 28 31 30 32 34 29 00 00 00 0c 20 20 20 20 72 T))........s.recv(1024)........r
2640 65 74 75 72 6e 20 73 00 00 00 00 00 00 00 14 64 65 66 20 6d 70 64 5f 63 6d 64 28 73 2c 20 63 6d eturn.s........def.mpd_cmd(s,.cm
2660 64 29 3a 00 00 00 24 20 20 20 20 73 2e 73 65 6e 64 61 6c 6c 28 28 63 6d 64 20 2b 20 22 5c 6e 22 d):...$....s.sendall((cmd.+."\n"
2680 29 2e 65 6e 63 6f 64 65 28 29 29 00 00 00 0e 20 20 20 20 72 65 73 70 20 3d 20 62 22 22 00 00 00 ).encode())........resp.=.b""...
26a0 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 1c 20 20 20 20 20 20 20 20 63 68 75 6e .....while.True:............chun
26c0 6b 20 3d 20 73 2e 72 65 63 76 28 34 30 39 36 29 00 00 00 15 20 20 20 20 20 20 20 20 72 65 73 70 k.=.s.recv(4096)............resp
26e0 20 2b 3d 20 63 68 75 6e 6b 00 00 00 2d 20 20 20 20 20 20 20 20 69 66 20 62 22 4f 4b 5c 6e 22 20 .+=.chunk...-........if.b"OK\n".
2700 69 6e 20 72 65 73 70 20 6f 72 20 62 22 41 43 4b 22 20 69 6e 20 72 65 73 70 3a 00 00 00 11 20 20 in.resp.or.b"ACK".in.resp:......
2720 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 00 00 00 18 20 20 20 20 72 65 74 75 72 6e 20 72 65 ..........break........return.re
2740 73 70 2e 64 65 63 6f 64 65 28 29 00 00 00 00 00 00 00 16 64 65 66 20 70 61 72 73 65 5f 73 74 61 sp.decode()........def.parse_sta
2760 74 75 73 28 72 61 77 29 3a 00 00 00 0d 20 20 20 20 64 61 74 61 20 3d 20 7b 7d 00 00 00 21 20 20 tus(raw):........data.=.{}...!..
2780 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 72 61 77 2e 73 70 6c 69 74 6c 69 6e 65 73 28 29 3a 00 ..for.line.in.raw.splitlines():.
27a0 00 00 17 20 20 20 20 20 20 20 20 69 66 20 22 3a 22 20 69 6e 20 6c 69 6e 65 3a 00 00 00 25 20 20 ...........if.":".in.line:...%..
27c0 20 20 20 20 20 20 20 20 20 20 6b 2c 20 76 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 22 3a 22 2c ..........k,.v.=.line.split(":",
27e0 20 31 29 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 6b 2e 73 74 72 69 70 28 .1)...'............data[k.strip(
2800 29 5d 20 3d 20 76 2e 73 74 72 69 70 28 29 00 00 00 0f 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 )].=.v.strip()........return.dat
2820 61 00 00 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 00 00 1a 20 20 20 20 73 6b 20 3d a........def.main():........sk.=
2840 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 00 00 00 29 20 20 20 20 70 72 69 6e 74 28 .get_session_key()...)....print(
2860 66 22 41 75 74 68 65 6e 74 69 63 61 74 65 64 20 61 73 20 7b 55 53 45 52 4e 41 4d 45 7d 22 29 00 f"Authenticated.as.{USERNAME}").
2880 00 00 00 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 00 00 ...........mpd.=.mpd_connect()..
28a0 00 15 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c ......last_title.=.None........l
28c0 61 73 74 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 00 18 20 20 20 20 6c 61 73 74 5f 64 75 72 ast_start.=.None........last_dur
28e0 61 74 69 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 ation.=.None........last_artist.
2900 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 4e 6f 6e 65 00 =.None........last_album.=.None.
2920 00 00 15 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 00 00 00 00 0f .......scrobbled.=.False........
2940 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 20 20 20 20 20 73 74 61 74 75 ....while.True:...+........statu
2960 73 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 73 74 61 74 75 73 22 29 00 00 s_raw.=.mpd_cmd(mpd,."status")..
2980 00 31 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 .1........current_raw.=.mpd_cmd(
29a0 6d 70 64 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 29 20 20 20 20 20 20 20 20 73 mpd,."currentsong")...)........s
29c0 74 61 74 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 74 61 74 75 73 5f 72 61 77 29 tatus.=.parse_status(status_raw)
29e0 00 00 00 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 70 61 72 73 65 5f 73 74 61 74 ...+........current.=.parse_stat
2a00 75 73 28 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 00 00 00 00 28 20 20 20 20 20 20 20 20 74 us(current_raw).......(........t
2a20 69 74 6c 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 2c 20 22 22 29 00 itle.=.current.get("Title",."").
2a40 00 00 2a 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 ..*........artist.=.current.get(
2a60 22 41 72 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 6c 62 75 6d 20 3d "Artist",."")...(........album.=
2a80 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 00 00 2b 20 20 20 .current.get("Album",."")...+...
2aa0 20 20 20 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 74 61 74 65 22 2c .....state.=.status.get("state",
2ac0 20 22 73 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 64 20 3d 20 66 6c ."stop")...1........elapsed.=.fl
2ae0 6f 61 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 30 29 29 00 00 00 oat(status.get("elapsed",.0))...
2b00 33 20 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 3........duration.=.float(status
2b20 2e 67 65 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 00 00 00 00 3d 20 20 20 20 .get("duration",.0)).......=....
2b40 20 20 20 20 69 66 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 74 69 74 6c 65 ....if.state.==."play".and.title
2b60 20 61 6e 64 20 74 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 00 1e 20 20 20 .and.title.!=.last_title:.......
2b80 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 00 00 00 20 20 .........last_title.=.title.....
2ba0 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 74 69 73 74 00 ...........last_artist.=.artist.
2bc0 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 61 6c 62 75 ...............last_album.=.albu
2be0 6d 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 69 6e m...)............last_start.=.in
2c00 74 28 74 69 6d 65 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 t(time.time())...$............la
2c20 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 20 20 20 20 20 st_duration.=.duration..........
2c40 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 20 20 20 20 20 ......scrobbled.=.False...8.....
2c60 20 20 20 20 20 20 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 .......update_now_playing(sk,.ar
2c80 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 20 20 20 20 20 tist,.title,.album)...5.........
2ca0 20 20 20 70 72 69 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 74 69 73 74 7d ...print(f"Now.playing:.{artist}
2cc0 20 2d 20 7b 74 69 74 6c 65 7d 22 29 00 00 00 00 00 00 00 3e 20 20 20 20 20 20 20 20 69 66 20 28 .-.{title}").......>........if.(
2ce0 6e 6f 74 20 73 63 72 6f 62 62 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c 65 20 61 6e 64 not.scrobbled.and.last_title.and
2d00 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 20 20 20 20 20 .last_duration.and...B..........
2d20 20 20 20 20 20 20 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 ......(elapsed.>=.last_duration.
2d40 2f 20 32 20 6f 72 20 65 6c 61 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 49 20 20 20 20 /.2.or.elapsed.>=.240)):...I....
2d60 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 72 74 69 73 74 ........scrobble(sk,.last_artist
2d80 2c 20 6c 61 73 74 5f 74 69 74 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c 61 73 74 5f 73 ,.last_title,.last_album,.last_s
2da0 74 61 72 74 29 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d tart)................scrobbled.=
2dc0 20 54 72 75 65 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 53 63 72 .True...=............print(f"Scr
2de0 6f 62 62 6c 65 64 3a 20 7b 6c 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 73 74 5f 74 69 obbled:.{last_artist}.-.{last_ti
2e00 74 6c 65 7d 22 29 00 00 00 00 00 00 00 23 20 20 20 20 20 20 20 20 6d 70 64 5f 63 6d 64 28 6d 70 tle}").......#........mpd_cmd(mp
2e20 64 2c 20 22 69 64 6c 65 20 70 6c 61 79 65 72 22 29 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 d,."idle.player")........if.__na
2e40 6d 65 5f 5f 20 3d 3d 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 me__.==."__main__":........main(
2e60 29 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 8d 00 00 00 00 00 00 00 01 00 00 00 00 00 00 )5..............................
2e80 00 00 00 00 00 00 00 00 00 07 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 .........................5._....
2ea0 08 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ................................
2ec0 ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 ...............................i
3020 98 f3 07 04 01 00 00 00 09 00 f5 18 00 00 00 92 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 0a ................................
3040 20 20 20 20 6d 61 69 6e 28 29 f5 18 00 00 00 93 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 ....main()......................
3060 00 7d 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 32 20 20 20 20 20 20 20 20 64 75 72 61 74 69 .}...............2........durati
3080 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 64 75 72 61 74 69 6f 6e 22 on.=.float(status.get("duration"
30a0 2c 20 30 29 f5 18 00 00 00 7e 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 ,.0).....~......................
30c0 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 ..............................5.
30e0 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7d 00 00 00 32 00 00 00 00 00 ......................}...2.....
3100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0d 00 00 00 00 00 00 f5 18 00 00 00 00 7d 00 00 00 ............................}...
3120 32 00 00 00 00 00 00 00 00 00 00 00 15 00 00 00 0a 00 00 00 00 0d 00 00 00 00 00 00 00 00 00 00 2...............................
3140 00 00 00 00 ef 02 00 00 00 00 00 00 35 81 5f d0 00 00 00 09 00 00 00 0b 00 00 00 00 00 00 00 00 ............5._.................
3160 00 00 00 0a 00 00 00 0c 00 00 00 0c 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 ................................
3180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 00 00 00 0c 00 00 00 00 00 00 00 0c 00 00 ................................
32c0 00 1d 00 00 00 00 00 00 00 76 00 00 00 1d 00 00 00 00 69 98 f3 0d 04 01 00 00 00 00 00 f5 18 00 .........v........i.............
32e0 00 00 0b 00 00 00 0d 00 00 00 93 00 00 00 01 00 00 00 1f 50 41 53 53 57 4f 52 44 20 3d 20 22 59 ...................PASSWORD.=."Y
3300 4f 55 52 5f 50 41 53 53 57 4f 52 44 5f 48 45 52 45 22 35 81 f5 18 00 00 00 00 0b 00 00 00 0c 00 OUR_PASSWORD_HERE"5.............
3320 00 00 00 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 db 00 00 00 00 00 00 00 12 00 00 00 00 00 ................................
3340 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0a 00 00 00 0c 00 00 00 00 00 00 00 00 00 00 ..........5._...................
3360 00 0b 00 00 00 0c 00 00 00 0c 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 00 00 00 0c 00 00 00 00 00 00 00 0c 00 00 00 1d ................................
34c0 00 00 00 00 00 00 00 76 00 00 00 1d 00 00 00 00 69 98 f3 0e 04 01 00 00 00 0b 00 f5 18 00 00 00 .......v........i...............
34e0 0b 00 00 00 0d 00 00 00 93 00 00 00 01 00 00 00 0d 50 41 53 53 57 4f 52 44 20 3d 20 22 22 f5 18 .................PASSWORD.=.""..
3500 00 00 00 0c 00 00 00 0d 00 00 00 93 00 00 00 00 35 81 f5 18 00 00 00 00 0b 00 00 00 0c 00 00 00 ................5...............
3520 00 00 00 00 00 00 00 00 00 00 00 00 0e 00 00 00 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3540 0e 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0b 00 00 00 0d 00 00 00 00 00 00 00 00 00 00 00 0c ........5._.....................
3560 00 00 00 2a 00 00 00 14 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...*............................
3580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
36c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f3 3b 04 01 00 00 00 00 00 f5 18 00 00 00 29 00 ..............i..;............).
36e0 00 00 2b 00 00 00 93 00 00 00 01 00 00 00 22 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 ..+..........."........"password
3700 22 3a 20 6d 64 35 28 50 41 53 53 57 4f 52 44 29 2c 35 81 f5 18 00 00 00 00 29 00 00 00 14 00 00 ":.md5(PASSWORD),5.......)......
3720 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ce 03 00 00 00 00 00 00 01 00 00 00 00 00 00 ................................
3740 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0c 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 .........5._....................
3760 0d 00 00 00 2a 00 00 00 14 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ....*...........................
3780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
37e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
38a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
38c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f3 3b 04 01 00 00 00 00 00 f5 18 00 00 00 29 ...............i..;............)
38e0 00 00 00 2b 00 00 00 93 00 00 00 01 00 00 00 21 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 ...+...........!........"passwor
3900 64 22 3a 20 64 35 28 50 41 53 53 57 4f 52 44 29 2c 35 81 f5 18 00 00 00 00 29 00 00 00 14 00 00 d":.d5(PASSWORD),5.......)......
3920 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ce 03 00 00 00 00 00 00 01 00 00 00 00 00 00 ................................
3940 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0d 00 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 .........5._....................
3960 0e 00 00 00 2a 00 00 00 14 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ....*...........................
3980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f3 3b 04 01 00 00 00 00 00 f5 18 00 00 00 29 ...............i..;............)
3ae0 00 00 00 2b 00 00 00 93 00 00 00 01 00 00 00 20 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 ...+...................."passwor
3b00 64 22 3a 20 35 28 50 41 53 53 57 4f 52 44 29 2c 35 81 f5 18 00 00 00 00 29 00 00 00 14 00 00 00 d":.5(PASSWORD),5.......).......
3b20 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ce 03 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................................
3b40 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0e 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 0f ........5._.....................
3b60 00 00 00 2a 00 00 00 14 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...*............................
3b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f3 3c 04 01 00 00 00 00 00 f5 18 00 00 00 29 00 ..............i..<............).
3ce0 00 00 2b 00 00 00 93 00 00 00 01 00 00 00 1f 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 ..+...................."password
3d00 22 3a 20 28 50 41 53 53 57 4f 52 44 29 2c 35 81 f5 18 00 00 00 00 29 00 00 00 14 00 00 00 00 00 ":.(PASSWORD),5.......).........
3d20 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ce 03 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 ................................
3d40 00 00 00 00 00 00 35 81 5f d0 00 00 00 0f 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 10 00 00 ......5._.......................
3d60 00 2a 00 00 00 1c 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .*..............................
3d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ec0 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f3 3c 04 01 00 00 00 0c 00 f5 18 00 00 00 29 00 00 00 ............i..<............)...
3ee0 2b 00 00 00 93 00 00 00 01 00 00 00 1e 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 22 3a +...................."password":
3f00 20 50 41 53 53 57 4f 52 44 29 2c 35 81 f5 18 00 00 00 00 29 00 00 00 1c 00 00 00 00 00 00 00 01 .PASSWORD),5.......)............
3f20 00 00 00 00 00 00 00 00 00 00 00 d6 03 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f40 00 00 00 35 81 5f d0 00 00 00 10 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 01 00 ...5._..........................
3f60 00 00 08 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
40a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
40c0 00 00 00 00 00 00 00 00 00 69 98 f3 97 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 .........i......................
40e0 00 00 00 00 00 93 00 00 00 16 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 33 ..........#!/usr/bin/env.python3
4100 00 00 00 00 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 00 00 00 0b 69 6d 70 6f 72 74 ........import.hashlib....import
4120 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 00 00 00 0f 69 6d 70 6f 72 74 .time....import.socket....import
4140 20 72 65 71 75 65 73 74 73 00 00 00 09 69 6d 70 6f 72 74 20 6f 73 00 00 00 00 00 00 00 2c 41 50 .requests....import.os.......,AP
4160 49 5f 4b 45 59 20 3d 20 22 39 34 32 33 65 33 34 30 33 37 31 61 35 39 63 31 33 38 34 62 34 34 38 I_KEY.=."9423e340371a59c1384b448
4180 63 34 66 62 39 61 34 37 38 22 00 00 00 2f 41 50 49 5f 53 45 43 52 45 54 20 3d 20 22 38 35 38 64 c4fb9a478".../API_SECRET.=."858d
41a0 35 61 38 33 63 38 37 35 30 62 65 35 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 22 00 00 00 5a83c8750be5dde0006ed58a3a58"...
41c0 15 55 53 45 52 4e 41 4d 45 20 3d 20 22 56 65 74 74 65 72 69 61 22 00 00 00 1b 50 41 53 53 57 4f .USERNAME.=."Vetteria"....PASSWO
41e0 52 44 20 3d 20 22 32 53 30 79 54 70 55 34 58 35 51 36 26 68 22 00 00 00 16 4d 50 44 5f 48 4f 53 RD.=."2S0yTpU4X5Q6&h"....MPD_HOS
4200 54 20 3d 20 22 6c 6f 63 61 6c 68 6f 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 3d 20 36 36 T.=."localhost"....MPD_PORT.=.66
4220 30 30 00 00 00 00 00 00 00 0b 50 52 4f 58 49 45 53 20 3d 20 7b 00 00 00 27 20 20 20 20 22 68 74 00........PROXIES.=.{...'...."ht
4240 74 70 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 37 2e 30 2e 30 2e 31 3a 36 35 30 30 30 22 2c tp":."socks5://127.0.0.1:65000",
4260 00 00 00 27 20 20 20 20 22 68 74 74 70 73 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 37 2e 30 ...'...."https":."socks5://127.0
4280 2e 30 2e 31 3a 36 35 30 30 30 22 00 00 00 01 7d 00 00 00 00 00 00 00 0b 64 65 66 20 6d 64 35 28 .0.1:65000"....}........def.md5(
42a0 73 29 3a 00 00 00 2e 20 20 20 20 72 65 74 75 72 6e 20 68 61 73 68 6c 69 62 2e 6d 64 35 28 73 2e s):........return.hashlib.md5(s.
42c0 65 6e 63 6f 64 65 28 29 29 2e 68 65 78 64 69 67 65 73 74 28 29 00 00 00 00 00 00 00 11 64 65 66 encode()).hexdigest()........def
42e0 20 73 69 67 6e 28 70 61 72 61 6d 73 29 3a 00 00 00 20 20 20 20 20 6b 65 79 73 20 3d 20 73 6f 72 .sign(params):........keys.=.sor
4300 74 65 64 28 70 61 72 61 6d 73 2e 6b 65 79 73 28 29 29 00 00 00 2e 20 20 20 20 73 69 67 20 3d 20 ted(params.keys())........sig.=.
4320 22 22 2e 6a 6f 69 6e 28 6b 20 2b 20 70 61 72 61 6d 73 5b 6b 5d 20 66 6f 72 20 6b 20 69 6e 20 6b "".join(k.+.params[k].for.k.in.k
4340 65 79 73 29 00 00 00 15 20 20 20 20 73 69 67 20 2b 3d 20 41 50 49 5f 53 45 43 52 45 54 00 00 00 eys)........sig.+=.API_SECRET...
4360 13 20 20 20 20 72 65 74 75 72 6e 20 6d 64 35 28 73 69 67 29 00 00 00 00 00 00 00 16 64 65 66 20 .....return.md5(sig)........def.
4380 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 6f 6b 65 6e 5f get_session_key():...K....token_
43a0 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 res.=.requests.get("https://ws.a
43c0 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 72 61 6d 73 3d udioscrobbler.com/2.0/",.params=
43e0 7b 00 00 00 22 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 {..."........"method":."auth.get
4400 54 6f 6b 65 6e 22 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 Token",............"api_key":.AP
4420 49 5f 4b 45 59 2c 00 00 00 18 20 20 20 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a 20 22 6a 73 6f I_KEY,............"format":."jso
4440 6e 22 00 00 00 17 20 20 20 20 7d 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 n"........},.proxies=PROXIES)...
4460 2c 20 20 20 20 70 72 69 6e 74 28 22 54 6f 6b 65 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 74 6f ,....print("Token.response:",.to
4480 6b 65 6e 5f 72 65 73 2e 74 65 78 74 29 00 00 00 25 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b ken_res.text)...%....token.=.tok
44a0 65 6e 5f 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 74 6f 6b 65 6e 22 5d 00 00 00 00 00 00 00 0e 20 20 en_res.json()["token"]..........
44c0 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2a 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 ..params.=.{...*........"method"
44e0 3a 20 22 61 75 74 68 2e 67 65 74 4d 6f 62 69 6c 65 53 65 73 73 69 6f 6e 22 2c 00 00 00 1d 20 20 :."auth.getMobileSession",......
4500 20 20 20 20 20 20 22 75 73 65 72 6e 61 6d 65 22 3a 20 55 53 45 52 4e 41 4d 45 2c 00 00 00 1d 20 ......"username":.USERNAME,.....
4520 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 22 3a 20 50 41 53 53 57 4f 52 44 2c 00 00 00 1b ......."password":.PASSWORD,....
4540 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 ........"api_key":.API_KEY,.....
4560 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 ...}...$....params["api_sig"].=.
4580 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d sign(params)........params["form
45a0 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 00 00 00 00 5b 20 20 20 20 72 65 73 20 3d 20 72 at"].=."json".......[....res.=.r
45c0 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 equests.post("https://ws.audiosc
45e0 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 robbler.com/2.0/",.data=params,.
4600 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 28 20 20 20 20 70 72 69 6e 74 28 22 53 proxies=PROXIES)...(....print("S
4620 65 73 73 69 6f 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 72 65 73 2e 74 65 78 74 29 00 00 00 27 ession.response:",.res.text)...'
4640 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 73 65 73 73 69 6f 6e 22 5d ....return.res.json()["session"]
4660 5b 22 6b 65 79 22 5d 00 00 00 00 00 00 00 32 64 65 66 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 ["key"].......2def.scrobble(sk,.
4680 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 2c 20 74 69 6d 65 73 74 61 6d 70 29 artist,.title,.album,.timestamp)
46a0 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 23 20 20 20 20 20 20 20 20 22 :........params.=.{...#........"
46c0 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 6f 62 62 6c 65 22 2c 00 00 00 1c 20 20 method":."track.scrobble",......
46e0 20 20 20 20 20 20 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 61 72 74 69 73 74 2c 00 00 00 1a 20 20 ......"artist[0]":.artist,......
4700 20 20 20 20 20 20 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 69 74 6c 65 2c 00 00 00 1a 20 20 20 20 ......"track[0]":.title,........
4720 20 20 20 20 22 61 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 27 20 20 20 20 20 20 ...."album[0]":.album,...'......
4740 20 20 22 74 69 6d 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 74 72 28 74 69 6d 65 73 74 61 6d 70 29 .."timestamp[0]":.str(timestamp)
4760 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c ,............"api_key":.API_KEY,
4780 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 ............"sk":.sk,........}..
47a0 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 .$....params["api_sig"].=.sign(p
47c0 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d arams)........params["format"].=
47e0 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 ."json"...U....requests.post("ht
4800 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f tps://ws.audioscrobbler.com/2.0/
4820 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 ",.data=params,.proxies=PROXIES)
4840 00 00 00 00 00 00 00 31 64 65 66 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 .......1def.update_now_playing(s
4860 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 3a 00 00 00 0e 20 20 20 k,.artist,.title,.album):.......
4880 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a .params.=.{...+........"method":
48a0 20 22 74 72 61 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c 61 79 69 6e 67 22 2c 00 00 00 19 20 20 ."track.updateNowPlaying",......
48c0 20 20 20 20 20 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 69 73 74 2c 00 00 00 17 20 20 20 20 20 ......"artist":.artist,.........
48e0 20 20 20 22 74 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 00 00 17 20 20 20 20 20 20 20 20 22 61 ..."track":.title,............"a
4900 6c 62 75 6d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 lbum":.album,............"api_ke
4920 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b y":.API_KEY,............"sk":.sk
4940 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 ,........}...$....params["api_si
4960 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 g"].=.sign(params)........params
4980 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 65 ["format"].=."json"...U....reque
49a0 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 sts.post("https://ws.audioscrobb
49c0 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 ler.com/2.0/",.data=params,.prox
49e0 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 12 64 65 66 20 6d 70 64 5f 63 6f 6e 6e ies=PROXIES)........def.mpd_conn
4a00 65 63 74 28 29 3a 00 00 00 17 20 20 20 20 73 20 3d 20 73 6f 63 6b 65 74 2e 73 6f 63 6b 65 74 28 ect():........s.=.socket.socket(
4a20 29 00 00 00 23 20 20 20 20 73 2e 63 6f 6e 6e 65 63 74 28 28 4d 50 44 5f 48 4f 53 54 2c 20 4d 50 )...#....s.connect((MPD_HOST,.MP
4a40 44 5f 50 4f 52 54 29 29 00 00 00 10 20 20 20 20 73 2e 72 65 63 76 28 31 30 32 34 29 00 00 00 0c D_PORT))........s.recv(1024)....
4a60 20 20 20 20 72 65 74 75 72 6e 20 73 00 00 00 00 00 00 00 14 64 65 66 20 6d 70 64 5f 63 6d 64 28 ....return.s........def.mpd_cmd(
4a80 73 2c 20 63 6d 64 29 3a 00 00 00 24 20 20 20 20 73 2e 73 65 6e 64 61 6c 6c 28 28 63 6d 64 20 2b s,.cmd):...$....s.sendall((cmd.+
4aa0 20 22 5c 6e 22 29 2e 65 6e 63 6f 64 65 28 29 29 00 00 00 0e 20 20 20 20 72 65 73 70 20 3d 20 62 ."\n").encode())........resp.=.b
4ac0 22 22 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 1c 20 20 20 20 20 20 20 ""........while.True:...........
4ae0 20 63 68 75 6e 6b 20 3d 20 73 2e 72 65 63 76 28 34 30 39 36 29 00 00 00 15 20 20 20 20 20 20 20 .chunk.=.s.recv(4096)...........
4b00 20 72 65 73 70 20 2b 3d 20 63 68 75 6e 6b 00 00 00 2d 20 20 20 20 20 20 20 20 69 66 20 62 22 4f .resp.+=.chunk...-........if.b"O
4b20 4b 5c 6e 22 20 69 6e 20 72 65 73 70 20 6f 72 20 62 22 41 43 4b 22 20 69 6e 20 72 65 73 70 3a 00 K\n".in.resp.or.b"ACK".in.resp:.
4b40 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 00 00 00 18 20 20 20 20 72 65 74 75 ...............break........retu
4b60 72 6e 20 72 65 73 70 2e 64 65 63 6f 64 65 28 29 00 00 00 00 00 00 00 16 64 65 66 20 70 61 72 73 rn.resp.decode()........def.pars
4b80 65 5f 73 74 61 74 75 73 28 72 61 77 29 3a 00 00 00 0d 20 20 20 20 64 61 74 61 20 3d 20 7b 7d 00 e_status(raw):........data.=.{}.
4ba0 00 00 21 20 20 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 72 61 77 2e 73 70 6c 69 74 6c 69 6e 65 ..!....for.line.in.raw.splitline
4bc0 73 28 29 3a 00 00 00 17 20 20 20 20 20 20 20 20 69 66 20 22 3a 22 20 69 6e 20 6c 69 6e 65 3a 00 s():............if.":".in.line:.
4be0 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 6b 2c 20 76 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 ..%............k,.v.=.line.split
4c00 28 22 3a 22 2c 20 31 29 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 6b 2e 73 (":",.1)...'............data[k.s
4c20 74 72 69 70 28 29 5d 20 3d 20 76 2e 73 74 72 69 70 28 29 00 00 00 0f 20 20 20 20 72 65 74 75 72 trip()].=.v.strip()........retur
4c40 6e 20 64 61 74 61 00 00 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 00 00 1a 20 20 20 n.data........def.main():.......
4c60 20 73 6b 20 3d 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 00 00 00 29 20 20 20 20 70 .sk.=.get_session_key()...)....p
4c80 72 69 6e 74 28 66 22 41 75 74 68 65 6e 74 69 63 61 74 65 64 20 61 73 20 7b 55 53 45 52 4e 41 4d rint(f"Authenticated.as.{USERNAM
4ca0 45 7d 22 29 00 00 00 00 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d 70 64 5f 63 6f 6e 6e 65 63 E}")............mpd.=.mpd_connec
4cc0 74 28 29 00 00 00 15 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 4e 6f 6e 65 00 00 00 15 t()........last_title.=.None....
4ce0 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 00 18 20 20 20 20 6c 61 73 ....last_start.=.None........las
4d00 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 20 20 6c 61 73 74 5f 61 72 t_duration.=.None........last_ar
4d20 74 69 73 74 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 tist.=.None........last_album.=.
4d40 4e 6f 6e 65 00 00 00 15 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 None........scrobbled.=.False...
4d60 00 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 20 20 20 20 20 .........while.True:...+........
4d80 73 74 61 74 75 73 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 73 74 61 74 75 status_raw.=.mpd_cmd(mpd,."statu
4da0 73 22 29 00 00 00 31 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 3d 20 6d 70 64 s")...1........current_raw.=.mpd
4dc0 5f 63 6d 64 28 6d 70 64 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 29 20 20 20 20 _cmd(mpd,."currentsong")...)....
4de0 20 20 20 20 73 74 61 74 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 74 61 74 75 73 ....status.=.parse_status(status
4e00 5f 72 61 77 29 00 00 00 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 70 61 72 73 65 _raw)...+........current.=.parse
4e20 5f 73 74 61 74 75 73 28 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 00 00 00 00 28 20 20 20 20 _status(current_raw).......(....
4e40 20 20 20 20 74 69 74 6c 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 2c ....title.=.current.get("Title",
4e60 20 22 22 29 00 00 00 2a 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e 74 ."")...*........artist.=.current
4e80 2e 67 65 74 28 22 41 72 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 6c .get("Artist",."")...(........al
4ea0 62 75 6d 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 00 bum.=.current.get("Album",."")..
4ec0 00 2b 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 74 .+........state.=.status.get("st
4ee0 61 74 65 22 2c 20 22 73 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 64 ate",."stop")...1........elapsed
4f00 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 30 .=.float(status.get("elapsed",.0
4f20 29 29 00 00 00 33 20 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 ))...3........duration.=.float(s
4f40 74 61 74 75 73 2e 67 65 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 00 00 00 00 tatus.get("duration",.0)).......
4f60 3d 20 20 20 20 20 20 20 20 69 66 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 =........if.state.==."play".and.
4f80 74 69 74 6c 65 20 61 6e 64 20 74 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 title.and.title.!=.last_title:..
4fa0 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 ..............last_title.=.title
4fc0 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 ................last_artist.=.ar
4fe0 74 69 73 74 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d tist................last_album.=
5000 20 61 6c 62 75 6d 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 .album...)............last_start
5020 20 3d 20 69 6e 74 28 74 69 6d 65 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 .=.int(time.time())...$.........
5040 20 20 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 ...last_duration.=.duration.....
5060 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 ...........scrobbled.=.False...8
5080 20 20 20 20 20 20 20 20 20 20 20 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 ............update_now_playing(s
50a0 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 k,.artist,.title,.album)...5....
50c0 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 ........print(f"Now.playing:.{ar
50e0 74 69 73 74 7d 20 2d 20 7b 74 69 74 6c 65 7d 22 29 00 00 00 00 00 00 00 3e 20 20 20 20 20 20 20 tist}.-.{title}").......>.......
5100 20 69 66 20 28 6e 6f 74 20 73 63 72 6f 62 62 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c .if.(not.scrobbled.and.last_titl
5120 65 20 61 6e 64 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 e.and.last_duration.and...B.....
5140 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 ...........(elapsed.>=.last_dura
5160 74 69 6f 6e 20 2f 20 32 20 6f 72 20 65 6c 61 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 tion./.2.or.elapsed.>=.240)):...
5180 49 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 I............scrobble(sk,.last_a
51a0 72 74 69 73 74 2c 20 6c 61 73 74 5f 74 69 74 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c rtist,.last_title,.last_album,.l
51c0 61 73 74 5f 73 74 61 72 74 29 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 ast_start)................scrobb
51e0 6c 65 64 20 3d 20 54 72 75 65 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 led.=.True...=............print(
5200 66 22 53 63 72 6f 62 62 6c 65 64 3a 20 7b 6c 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 f"Scrobbled:.{last_artist}.-.{la
5220 73 74 5f 74 69 74 6c 65 7d 22 29 00 00 00 00 00 00 00 23 20 20 20 20 20 20 20 20 6d 70 64 5f 63 st_title}").......#........mpd_c
5240 6d 64 28 6d 70 64 2c 20 22 69 64 6c 65 20 70 6c 61 79 65 72 22 29 00 00 00 00 00 00 00 1a 69 66 md(mpd,."idle.player")........if
5260 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 .__name__.==."__main__":........
5280 6d 61 69 6e 28 29 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 93 00 00 00 00 00 00 00 01 00 main()5.........................
52a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e7 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 ..............................5.
52c0 5f d0 00 00 00 11 00 00 00 13 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 01 00 00 00 00 00 00 _...............................
52e0 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
53e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5440 00 00 00 00 69 98 f3 98 04 01 00 00 00 0d 00 f5 18 00 00 00 98 00 00 00 00 00 00 00 00 00 00 00 ....i...........................
5460 01 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 29 f5 18 00 00 00 99 00 00 00 00 00 00 00 00 00 00 00 .........main().................
5480 00 f5 18 00 00 00 7a 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 20 f5 18 00 00 00 7b 00 00 ......z......................{..
54a0 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 ................................
54c0 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 ..................5.............
54e0 00 00 00 00 00 00 00 00 00 00 7a 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ..........z.....................
5500 00 00 00 0c 00 00 00 00 00 00 f5 18 00 00 00 00 7a 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ................z...............
5520 1e 00 00 00 0a 00 00 00 00 0c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 84 04 00 00 00 00 00 00 ................................
5540 35 81 5f d0 00 00 00 12 00 00 00 14 00 00 00 00 00 00 00 00 00 00 00 13 00 00 00 0a 00 00 00 2c 5._............................,
5560 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
55a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
55c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
55e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
56a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
56c0 00 00 00 00 00 00 69 98 f3 a3 04 01 00 00 00 00 00 f5 18 00 00 00 09 00 00 00 0b 00 00 00 99 00 ......i.........................
56e0 00 00 01 00 00 00 42 43 4f 4e 46 49 47 5f 50 41 54 48 20 3d 20 6f 73 2e 70 61 74 68 2e 65 78 70 ......BCONFIG_PATH.=.os.path.exp
5700 61 6e 64 75 73 65 72 28 22 7e 2f 2e 63 6f 6e 66 69 67 2f 73 63 72 6f 62 62 6c 65 72 2f 63 6f 6e anduser("~/.config/scrobbler/con
5720 66 69 67 2e 69 6e 69 22 29 35 81 f5 18 00 00 00 00 09 00 00 00 2c 00 00 00 00 00 00 00 00 00 00 fig.ini")5...........,..........
5740 00 00 00 00 00 03 00 00 00 9c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 ................................
5760 00 35 81 5f d0 00 00 00 13 00 00 00 15 00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 0a 00 00 00 .5._............................
5780 37 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7...............................
57a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
58a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
58c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
58e0 00 00 00 00 00 00 00 69 98 f3 a5 04 01 00 00 00 0f 00 f5 18 00 00 00 09 00 00 00 0b 00 00 00 99 .......i........................
5900 00 00 00 01 00 00 00 45 43 4f 4e 46 49 47 5f 50 41 54 48 20 3d 20 6f 73 2e 70 61 74 68 2e 65 78 .......ECONFIG_PATH.=.os.path.ex
5920 70 61 6e 64 75 73 65 72 28 22 7e 2f 2e 63 6f 6e 66 69 67 2f 61 73 68 73 63 72 6f 62 62 6c 65 72 panduser("~/.config/ashscrobbler
5940 2f 63 6f 6e 66 69 67 2e 69 6e 69 22 29 35 81 f5 18 00 00 00 00 09 00 00 00 37 00 00 00 00 00 00 /config.ini")5...........7......
5960 00 01 00 00 00 00 00 00 00 00 00 00 00 a7 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 ................................
5980 00 00 00 00 00 35 81 5f d0 00 00 00 14 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00 15 00 00 00 .....5._........................
59a0 0f 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
59c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
59e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ae0 00 00 00 00 00 00 00 00 00 00 0f 00 00 00 24 00 00 00 00 00 00 00 15 00 00 00 22 00 00 00 00 00 ..............$...........".....
5b00 00 00 56 00 00 00 24 00 00 00 00 69 98 f4 6f 04 01 00 00 00 00 00 f5 18 00 00 00 0e 00 00 00 0f ..V...$....i..o.................
5b20 00 00 00 00 00 00 00 07 00 00 00 25 41 50 49 5f 4b 45 59 20 3d 20 63 6f 6e 66 69 67 5b 22 6c 61 ...........%API_KEY.=.config["la
5b40 73 74 66 6d 22 5d 5b 22 61 70 69 5f 6b 65 79 22 5d 00 00 00 2b 41 50 49 5f 53 45 43 52 45 54 20 stfm"]["api_key"]...+API_SECRET.
5b60 3d 20 63 6f 6e 66 69 67 5b 22 6c 61 73 74 66 6d 22 5d 5b 22 61 70 69 5f 73 65 63 72 65 74 22 5d =.config["lastfm"]["api_secret"]
5b80 00 00 00 27 55 53 45 52 4e 41 4d 45 20 3d 20 63 6f 6e 66 69 67 5b 22 6c 61 73 74 66 6d 22 5d 5b ...'USERNAME.=.config["lastfm"][
5ba0 22 75 73 65 72 6e 61 6d 65 22 5d 00 00 00 27 50 41 53 53 57 4f 52 44 20 3d 20 63 6f 6e 66 69 67 "username"]...'PASSWORD.=.config
5bc0 5b 22 6c 61 73 74 66 6d 22 5d 5b 22 70 61 73 73 77 6f 72 64 22 5d 00 00 00 20 4d 50 44 5f 48 4f ["lastfm"]["password"]....MPD_HO
5be0 53 54 20 3d 20 63 6f 6e 66 69 67 5b 22 6d 70 64 22 5d 5b 22 68 6f 73 74 22 5d 00 00 00 25 4d 50 ST.=.config["mpd"]["host"]...%MP
5c00 44 5f 50 4f 52 54 20 3d 20 69 6e 74 28 63 6f 6e 66 69 67 5b 22 6d 70 64 22 5d 5b 22 70 6f 72 74 D_PORT.=.int(config["mpd"]["port
5c20 22 5d 29 00 00 00 22 50 52 4f 58 59 5f 55 52 4c 20 3d 20 63 6f 6e 66 69 67 5b 22 70 72 6f 78 79 "])..."PROXY_URL.=.config["proxy
5c40 22 5d 5b 22 75 72 6c 22 5d 35 81 f5 18 00 00 00 00 0e 00 00 00 00 00 00 00 07 00 00 00 00 00 00 "]["url"]5......................
5c60 00 00 00 00 00 00 00 00 00 f5 00 00 00 00 00 00 00 0c 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c80 00 35 81 5f d0 00 00 00 15 00 00 00 17 00 00 00 00 00 00 00 00 00 00 00 16 00 00 00 0f 00 00 00 .5._............................
5ca0 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5de0 00 00 00 00 00 00 0f 00 00 00 24 00 00 00 00 00 00 00 0f 00 00 00 22 00 00 00 00 00 00 00 56 00 ..........$...........".......V.
5e00 00 00 24 00 00 00 00 69 98 f4 6f 04 01 00 00 00 10 00 f5 18 00 00 00 14 00 00 00 16 00 00 00 99 ..$....i..o.....................
5e20 00 00 00 01 00 00 00 26 50 52 4f 58 59 5f 55 52 4c 20 3d 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 .......&PROXY_URL.=."socks5://12
5e40 37 2e 30 2e 30 2e 31 3a 36 35 30 30 30 22 f5 18 00 00 00 15 00 00 00 16 00 00 00 99 00 00 00 00 7.0.0.1:65000"..................
5e60 f5 18 00 00 00 0e 00 00 00 16 00 00 00 93 00 00 00 01 00 00 00 00 f5 18 00 00 00 0f 00 00 00 10 ................................
5e80 00 00 00 93 00 00 00 00 f5 18 00 00 00 0e 00 00 00 10 00 00 00 92 00 00 00 00 35 81 f5 18 00 00 ..........................5.....
5ea0 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 f5 00 00 00 00 00 ................................
5ec0 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 f5 18 00 00 00 00 0e 00 00 00 00 00 00 00 ................................
5ee0 00 00 00 00 00 00 00 00 06 00 00 00 26 00 00 00 f5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............&...................
5f00 e8 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 16 00 00 00 18 00 00 00 00 00 00 00 00 00 00 00 17 ........5._.....................
5f20 00 00 00 15 00 00 00 0a 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6060 00 00 00 00 00 00 00 00 00 00 00 00 00 16 00 00 00 24 00 00 00 00 00 00 00 16 00 00 00 22 00 00 .................$..........."..
6080 00 00 00 00 00 56 00 00 00 24 00 00 00 00 69 98 f4 7f 04 01 00 00 00 00 00 f5 18 00 00 00 15 00 .....V...$....i.................
60a0 00 00 17 00 00 00 9a 00 00 00 01 00 00 00 00 f5 18 00 00 00 16 00 00 00 17 00 00 00 9a 00 00 00 ................................
60c0 00 f5 18 00 00 00 16 00 00 00 17 00 00 00 9a 00 00 00 00 f5 18 00 00 00 15 00 00 00 17 00 00 00 ................................
60e0 99 00 00 00 00 35 81 f5 18 00 00 00 00 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 .....5..........................
6100 00 00 00 00 00 de 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 f5 18 00 ................................
6120 00 00 00 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4c 00 00 00 de 01 00 00 00 .......................L........
6140 00 00 00 00 00 00 00 00 00 00 00 4c 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 17 00 00 00 19 00 ...........L.......5._..........
6160 00 00 00 00 00 00 00 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 ................................
6180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
61a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
61c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
61e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
62a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 0a 00 00 00 ................................
62c0 00 00 00 00 1b 00 00 00 01 00 00 00 00 00 00 00 56 00 00 00 4b 00 00 00 00 69 98 f4 81 04 01 00 ................V...K....i......
62e0 00 00 00 00 f5 18 00 00 00 17 00 00 00 18 00 00 00 00 00 00 00 04 00 00 00 0b 50 52 4f 58 49 45 ..........................PROXIE
6300 53 20 3d 20 7b 00 00 00 16 20 20 20 20 22 68 74 74 70 22 3a 20 50 52 4f 58 59 5f 55 52 4c 2c 00 S.=.{........"http":.PROXY_URL,.
6320 00 00 16 20 20 20 20 22 68 74 74 70 73 22 3a 20 50 52 4f 58 59 5f 55 52 4c 00 00 00 01 7d 35 81 ......."https":.PROXY_URL....}5.
6340 f5 18 00 00 00 00 17 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2c 02 ..............................,.
6360 00 00 00 00 00 00 3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 18 00 00 ......<...............5._.......
6380 00 1a 00 00 00 00 00 00 00 00 00 00 00 19 00 00 00 18 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 ................................
63a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 0a ................................
64e0 00 00 00 00 00 00 00 18 00 00 00 01 00 00 00 00 00 00 00 56 00 00 00 4b 00 00 00 00 69 98 f4 82 ...................V...K....i...
6500 04 01 00 00 00 11 00 f5 18 00 00 00 17 00 00 00 18 00 00 00 00 00 00 00 01 00 00 00 00 35 81 f5 .............................5..
6520 18 00 00 00 00 17 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2c 02 00 .............................,..
6540 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 19 00 00 00 .....................5._........
6560 1b 00 00 00 00 00 00 00 00 00 00 00 1a 00 00 00 12 00 00 00 1f 00 00 00 00 ff ff ff ff 00 01 00 ................................
6580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
66a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 20 00 ................................
66c0 00 00 00 00 00 00 12 00 00 00 1f 00 00 00 00 00 00 00 76 00 00 00 1f 00 00 00 00 69 98 f4 98 04 ..................v........i....
66e0 01 00 00 00 00 00 f5 18 00 00 00 11 00 00 00 13 00 00 00 95 00 00 00 01 00 00 00 27 50 41 53 53 ...........................'PASS
6700 57 4f 52 44 20 3d 20 63 6f 6e 66 69 67 5b 22 6c 61 73 74 66 6d 22 5d 5b 22 70 61 73 73 77 6f 72 WORD.=.config["lastfm"]["passwor
6720 64 22 5d 35 81 f5 18 00 00 00 00 11 00 00 00 1f 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 02 d"]5............................
6740 00 00 00 87 01 00 00 00 00 00 00 02 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 35 81 5f d0 00 ...........................5._..
6760 00 00 1a 00 00 00 1c 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 12 00 00 00 1d 00 00 00 00 ff ................................
6780 ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68c0 12 00 00 00 20 00 00 00 00 00 00 00 12 00 00 00 1f 00 00 00 00 00 00 00 76 00 00 00 1f 00 00 00 ........................v.......
68e0 00 69 98 f4 99 04 01 00 00 00 13 00 f5 18 00 00 00 11 00 00 00 13 00 00 00 95 00 00 00 01 00 00 .i..............................
6900 00 27 50 41 53 53 57 4f 52 44 20 3d 20 63 6f 6e 66 69 67 5b 22 6c 61 73 74 66 6d 22 5d 5b 22 70 .'PASSWORD.=.config["lastfm"]["p
6920 61 69 77 77 6f 72 64 22 5d f5 18 00 00 00 12 00 00 00 13 00 00 00 95 00 00 00 00 f5 18 00 00 00 aiwword"].......................
6940 12 00 00 00 13 00 00 00 95 00 00 00 00 35 81 f5 18 00 00 00 00 11 00 00 00 1d 00 00 00 00 00 00 .............5..................
6960 00 08 00 00 00 00 00 00 00 0e 00 00 00 85 01 00 00 00 00 00 00 08 00 00 00 00 00 00 00 0e 00 00 ................................
6980 00 00 00 00 00 35 81 5f d0 00 00 00 1b 00 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 1c 00 00 00 .....5._........................
69a0 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
69c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
69e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ae0 00 00 00 00 00 00 00 00 00 00 01 00 00 00 0a 00 00 00 00 00 00 00 95 00 00 00 0a 00 00 00 00 00 ................................
6b00 00 00 56 00 00 00 0a 00 00 00 00 69 98 f7 45 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 ..V........i..E.................
6b20 00 00 00 00 00 00 00 95 00 00 00 16 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 68 6f ............#!/usr/bin/env.pytho
6b40 6e 33 00 00 00 00 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 00 00 00 0b 69 6d 70 6f n3........import.hashlib....impo
6b60 72 74 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 00 00 00 0f 69 6d 70 6f rt.time....import.socket....impo
6b80 72 74 20 72 65 71 75 65 73 74 73 00 00 00 13 69 6d 70 6f 72 74 20 63 6f 6e 66 69 67 70 61 72 73 rt.requests....import.configpars
6ba0 65 72 00 00 00 09 69 6d 70 6f 72 74 20 6f 73 00 00 00 00 00 00 00 44 43 4f 4e 46 49 47 5f 50 41 er....import.os.......DCONFIG_PA
6bc0 54 48 20 3d 20 6f 73 2e 70 61 74 68 2e 65 78 70 61 6e 64 75 73 65 72 28 22 7e 2f 2e 63 6f 6e 66 TH.=.os.path.expanduser("~/.conf
6be0 69 67 2f 61 73 68 73 63 72 6f 62 62 6c 65 2f 63 6f 6e 66 69 67 2e 69 6e 69 22 29 00 00 00 00 00 ig/ashscrobble/config.ini").....
6c00 00 00 24 63 6f 6e 66 69 67 20 3d 20 63 6f 6e 66 69 67 70 61 72 73 65 72 2e 43 6f 6e 66 69 67 50 ..$config.=.configparser.ConfigP
6c20 61 72 73 65 72 28 29 00 00 00 18 63 6f 6e 66 69 67 2e 72 65 61 64 28 43 4f 4e 46 49 47 5f 50 41 arser()....config.read(CONFIG_PA
6c40 54 48 29 00 00 00 00 00 00 00 2c 41 50 49 5f 4b 45 59 20 3d 20 22 39 34 32 33 65 33 34 30 33 37 TH).......,API_KEY.=."9423e34037
6c60 31 61 35 39 63 31 33 38 34 62 34 34 38 63 34 66 62 39 61 34 37 38 22 00 00 00 2f 41 50 49 5f 53 1a59c1384b448c4fb9a478".../API_S
6c80 45 43 52 45 54 20 3d 20 22 38 35 38 64 35 61 38 33 63 38 37 35 30 62 65 35 64 64 65 30 30 30 36 ECRET.=."858d5a83c8750be5dde0006
6ca0 65 64 35 38 61 33 61 35 38 22 00 00 00 15 55 53 45 52 4e 41 4d 45 20 3d 20 22 56 65 74 74 65 72 ed58a3a58"....USERNAME.=."Vetter
6cc0 69 61 22 00 00 00 2d 50 41 53 53 57 4f 52 44 20 3d 20 63 6f 6e 66 69 67 5b 22 6c 61 73 74 66 6d ia"...-PASSWORD.=.config["lastfm
6ce0 22 5d 5b 22 32 53 30 79 54 70 55 34 58 35 51 36 26 68 22 5d 00 00 00 16 4d 50 44 5f 48 4f 53 54 "]["2S0yTpU4X5Q6&h"]....MPD_HOST
6d00 20 3d 20 22 6c 6f 63 61 6c 68 6f 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 3d 20 36 36 30 .=."localhost"....MPD_PORT.=.660
6d20 30 00 00 00 26 50 52 4f 58 59 5f 55 52 4c 20 3d 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 37 2e 30 0...&PROXY_URL.=."socks5://127.0
6d40 2e 30 2e 31 3a 36 35 30 30 30 22 00 00 00 4c 50 52 4f 58 49 45 53 20 3d 20 7b 22 68 74 74 70 22 .0.1:65000"...LPROXIES.=.{"http"
6d60 3a 20 50 52 4f 58 59 5f 55 52 4c 2c 20 22 68 74 74 70 73 22 3a 20 50 52 4f 58 59 5f 55 52 4c 7d :.PROXY_URL,."https":.PROXY_URL}
6d80 20 69 66 20 50 52 4f 58 59 5f 45 4e 41 42 4c 45 44 20 65 6c 73 65 20 4e 6f 6e 65 00 00 00 00 00 .if.PROXY_ENABLED.else.None.....
6da0 00 00 0b 64 65 66 20 6d 64 35 28 73 29 3a 00 00 00 2e 20 20 20 20 72 65 74 75 72 6e 20 68 61 73 ...def.md5(s):........return.has
6dc0 68 6c 69 62 2e 6d 64 35 28 73 2e 65 6e 63 6f 64 65 28 29 29 2e 68 65 78 64 69 67 65 73 74 28 29 hlib.md5(s.encode()).hexdigest()
6de0 00 00 00 00 00 00 00 11 64 65 66 20 73 69 67 6e 28 70 61 72 61 6d 73 29 3a 00 00 00 20 20 20 20 ........def.sign(params):.......
6e00 20 6b 65 79 73 20 3d 20 73 6f 72 74 65 64 28 70 61 72 61 6d 73 2e 6b 65 79 73 28 29 29 00 00 00 .keys.=.sorted(params.keys())...
6e20 2e 20 20 20 20 73 69 67 20 3d 20 22 22 2e 6a 6f 69 6e 28 6b 20 2b 20 70 61 72 61 6d 73 5b 6b 5d .....sig.=."".join(k.+.params[k]
6e40 20 66 6f 72 20 6b 20 69 6e 20 6b 65 79 73 29 00 00 00 15 20 20 20 20 73 69 67 20 2b 3d 20 41 50 .for.k.in.keys)........sig.+=.AP
6e60 49 5f 53 45 43 52 45 54 00 00 00 13 20 20 20 20 72 65 74 75 72 6e 20 6d 64 35 28 73 69 67 29 00 I_SECRET........return.md5(sig).
6e80 00 00 00 00 00 00 16 64 65 66 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 3a 00 00 00 .......def.get_session_key():...
6ea0 4b 20 20 20 20 74 6f 6b 65 6e 5f 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 67 65 74 28 22 68 K....token_res.=.requests.get("h
6ec0 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 ttps://ws.audioscrobbler.com/2.0
6ee0 2f 22 2c 20 70 61 72 61 6d 73 3d 7b 00 00 00 22 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 /",.params={..."........"method"
6f00 3a 20 22 61 75 74 68 2e 67 65 74 54 6f 6b 65 6e 22 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 :."auth.getToken",............"a
6f20 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 18 20 20 20 20 20 20 20 20 22 66 6f pi_key":.API_KEY,............"fo
6f40 72 6d 61 74 22 3a 20 22 6a 73 6f 6e 22 00 00 00 17 20 20 20 20 7d 2c 20 70 72 6f 78 69 65 73 3d rmat":."json"........},.proxies=
6f60 50 52 4f 58 49 45 53 29 00 00 00 25 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 65 PROXIES)...%....token.=.token_re
6f80 73 2e 6a 73 6f 6e 28 29 5b 22 74 6f 6b 65 6e 22 5d 00 00 00 00 00 00 00 0e 20 20 20 20 70 61 72 s.json()["token"]............par
6fa0 61 6d 73 20 3d 20 7b 00 00 00 2a 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 ams.=.{...*........"method":."au
6fc0 74 68 2e 67 65 74 4d 6f 62 69 6c 65 53 65 73 73 69 6f 6e 22 2c 00 00 00 1d 20 20 20 20 20 20 20 th.getMobileSession",...........
6fe0 20 22 75 73 65 72 6e 61 6d 65 22 3a 20 55 53 45 52 4e 41 4d 45 2c 00 00 00 1d 20 20 20 20 20 20 ."username":.USERNAME,..........
7000 20 20 22 70 61 73 73 77 6f 72 64 22 3a 20 50 41 53 53 57 4f 52 44 2c 00 00 00 1b 20 20 20 20 20 .."password":.PASSWORD,.........
7020 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 ..."api_key":.API_KEY,........}.
7040 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 ..$....params["api_sig"].=.sign(
7060 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 params)........params["format"].
7080 3d 20 22 6a 73 6f 6e 22 00 00 00 00 00 00 00 5b 20 20 20 20 72 65 73 20 3d 20 72 65 71 75 65 73 =."json".......[....res.=.reques
70a0 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c ts.post("https://ws.audioscrobbl
70c0 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 er.com/2.0/",.data=params,.proxi
70e0 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 28 20 20 20 20 70 72 69 6e 74 28 22 53 65 73 73 69 6f es=PROXIES)...(....print("Sessio
7100 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 72 65 73 2e 74 65 78 74 29 00 00 00 27 20 20 20 20 72 n.response:",.res.text)...'....r
7120 65 74 75 72 6e 20 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 73 65 73 73 69 6f 6e 22 5d 5b 22 6b 65 79 eturn.res.json()["session"]["key
7140 22 5d 00 00 00 00 00 00 00 32 64 65 66 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 61 72 74 69 73 "].......2def.scrobble(sk,.artis
7160 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 2c 20 74 69 6d 65 73 74 61 6d 70 29 3a 00 00 00 0e t,.title,.album,.timestamp):....
7180 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 23 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f ....params.=.{...#........"metho
71a0 64 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 6f 62 62 6c 65 22 2c 00 00 00 1c 20 20 20 20 20 20 20 d":."track.scrobble",...........
71c0 20 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 61 72 74 69 73 74 2c 00 00 00 1a 20 20 20 20 20 20 20 ."artist[0]":.artist,...........
71e0 20 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 69 74 6c 65 2c 00 00 00 1a 20 20 20 20 20 20 20 20 22 ."track[0]":.title,............"
7200 61 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 27 20 20 20 20 20 20 20 20 22 74 69 album[0]":.album,...'........"ti
7220 6d 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 74 72 28 74 69 6d 65 73 74 61 6d 70 29 2c 00 00 00 1b mestamp[0]":.str(timestamp),....
7240 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 ........"api_key":.API_KEY,.....
7260 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 ......."sk":.sk,........}...$...
7280 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 .params["api_sig"].=.sign(params
72a0 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f )........params["format"].=."jso
72c0 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f n"...U....requests.post("https:/
72e0 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 /ws.audioscrobbler.com/2.0/",.da
7300 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 ta=params,.proxies=PROXIES).....
7320 00 00 31 64 65 66 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 ..1def.update_now_playing(sk,.ar
7340 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 tist,.title,.album):........para
7360 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 ms.=.{...+........"method":."tra
7380 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c 61 79 69 6e 67 22 2c 00 00 00 19 20 20 20 20 20 20 20 ck.updateNowPlaying",...........
73a0 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 69 73 74 2c 00 00 00 17 20 20 20 20 20 20 20 20 22 74 ."artist":.artist,............"t
73c0 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 00 00 17 20 20 20 20 20 20 20 20 22 61 6c 62 75 6d 22 rack":.title,............"album"
73e0 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 :.album,............"api_key":.A
7400 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 PI_KEY,............"sk":.sk,....
7420 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d ....}...$....params["api_sig"].=
7440 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 .sign(params)........params["for
7460 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 mat"].=."json"...U....requests.p
7480 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 ost("https://ws.audioscrobbler.c
74a0 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 om/2.0/",.data=params,.proxies=P
74c0 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 12 64 65 66 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 ROXIES)........def.mpd_connect()
74e0 3a 00 00 00 17 20 20 20 20 73 20 3d 20 73 6f 63 6b 65 74 2e 73 6f 63 6b 65 74 28 29 00 00 00 23 :........s.=.socket.socket()...#
7500 20 20 20 20 73 2e 63 6f 6e 6e 65 63 74 28 28 4d 50 44 5f 48 4f 53 54 2c 20 4d 50 44 5f 50 4f 52 ....s.connect((MPD_HOST,.MPD_POR
7520 54 29 29 00 00 00 10 20 20 20 20 73 2e 72 65 63 76 28 31 30 32 34 29 00 00 00 0c 20 20 20 20 72 T))........s.recv(1024)........r
7540 65 74 75 72 6e 20 73 00 00 00 00 00 00 00 14 64 65 66 20 6d 70 64 5f 63 6d 64 28 73 2c 20 63 6d eturn.s........def.mpd_cmd(s,.cm
7560 64 29 3a 00 00 00 24 20 20 20 20 73 2e 73 65 6e 64 61 6c 6c 28 28 63 6d 64 20 2b 20 22 5c 6e 22 d):...$....s.sendall((cmd.+."\n"
7580 29 2e 65 6e 63 6f 64 65 28 29 29 00 00 00 0e 20 20 20 20 72 65 73 70 20 3d 20 62 22 22 00 00 00 ).encode())........resp.=.b""...
75a0 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 1c 20 20 20 20 20 20 20 20 63 68 75 6e .....while.True:............chun
75c0 6b 20 3d 20 73 2e 72 65 63 76 28 34 30 39 36 29 00 00 00 15 20 20 20 20 20 20 20 20 72 65 73 70 k.=.s.recv(4096)............resp
75e0 20 2b 3d 20 63 68 75 6e 6b 00 00 00 2d 20 20 20 20 20 20 20 20 69 66 20 62 22 4f 4b 5c 6e 22 20 .+=.chunk...-........if.b"OK\n".
7600 69 6e 20 72 65 73 70 20 6f 72 20 62 22 41 43 4b 22 20 69 6e 20 72 65 73 70 3a 00 00 00 11 20 20 in.resp.or.b"ACK".in.resp:......
7620 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 00 00 00 18 20 20 20 20 72 65 74 75 72 6e 20 72 65 ..........break........return.re
7640 73 70 2e 64 65 63 6f 64 65 28 29 00 00 00 00 00 00 00 16 64 65 66 20 70 61 72 73 65 5f 73 74 61 sp.decode()........def.parse_sta
7660 74 75 73 28 72 61 77 29 3a 00 00 00 0d 20 20 20 20 64 61 74 61 20 3d 20 7b 7d 00 00 00 21 20 20 tus(raw):........data.=.{}...!..
7680 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 72 61 77 2e 73 70 6c 69 74 6c 69 6e 65 73 28 29 3a 00 ..for.line.in.raw.splitlines():.
76a0 00 00 17 20 20 20 20 20 20 20 20 69 66 20 22 3a 22 20 69 6e 20 6c 69 6e 65 3a 00 00 00 25 20 20 ...........if.":".in.line:...%..
76c0 20 20 20 20 20 20 20 20 20 20 6b 2c 20 76 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 22 3a 22 2c ..........k,.v.=.line.split(":",
76e0 20 31 29 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 6b 2e 73 74 72 69 70 28 .1)...'............data[k.strip(
7700 29 5d 20 3d 20 76 2e 73 74 72 69 70 28 29 00 00 00 0f 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 )].=.v.strip()........return.dat
7720 61 00 00 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 00 00 1a 20 20 20 20 73 6b 20 3d a........def.main():........sk.=
7740 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 00 00 00 29 20 20 20 20 70 72 69 6e 74 28 .get_session_key()...)....print(
7760 66 22 41 75 74 68 65 6e 74 69 63 61 74 65 64 20 61 73 20 7b 55 53 45 52 4e 41 4d 45 7d 22 29 00 f"Authenticated.as.{USERNAME}").
7780 00 00 00 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 00 00 ...........mpd.=.mpd_connect()..
77a0 00 15 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c ......last_title.=.None........l
77c0 61 73 74 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 00 18 20 20 20 20 6c 61 73 74 5f 64 75 72 ast_start.=.None........last_dur
77e0 61 74 69 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 ation.=.None........last_artist.
7800 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 4e 6f 6e 65 00 =.None........last_album.=.None.
7820 00 00 15 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 00 00 00 00 0f .......scrobbled.=.False........
7840 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 20 20 20 20 20 73 74 61 74 75 ....while.True:...+........statu
7860 73 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 73 74 61 74 75 73 22 29 00 00 s_raw.=.mpd_cmd(mpd,."status")..
7880 00 31 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 .1........current_raw.=.mpd_cmd(
78a0 6d 70 64 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 29 20 20 20 20 20 20 20 20 73 mpd,."currentsong")...)........s
78c0 74 61 74 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 74 61 74 75 73 5f 72 61 77 29 tatus.=.parse_status(status_raw)
78e0 00 00 00 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 70 61 72 73 65 5f 73 74 61 74 ...+........current.=.parse_stat
7900 75 73 28 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 00 00 00 00 28 20 20 20 20 20 20 20 20 74 us(current_raw).......(........t
7920 69 74 6c 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 2c 20 22 22 29 00 itle.=.current.get("Title",."").
7940 00 00 2a 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 ..*........artist.=.current.get(
7960 22 41 72 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 6c 62 75 6d 20 3d "Artist",."")...(........album.=
7980 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 00 00 2b 20 20 20 .current.get("Album",."")...+...
79a0 20 20 20 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 74 61 74 65 22 2c .....state.=.status.get("state",
79c0 20 22 73 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 64 20 3d 20 66 6c ."stop")...1........elapsed.=.fl
79e0 6f 61 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 30 29 29 00 00 00 oat(status.get("elapsed",.0))...
7a00 33 20 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 3........duration.=.float(status
7a20 2e 67 65 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 00 00 00 00 3d 20 20 20 20 .get("duration",.0)).......=....
7a40 20 20 20 20 69 66 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 74 69 74 6c 65 ....if.state.==."play".and.title
7a60 20 61 6e 64 20 74 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 00 1e 20 20 20 .and.title.!=.last_title:.......
7a80 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 00 00 00 20 20 .........last_title.=.title.....
7aa0 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 74 69 73 74 00 ...........last_artist.=.artist.
7ac0 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 61 6c 62 75 ...............last_album.=.albu
7ae0 6d 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 69 6e m...)............last_start.=.in
7b00 74 28 74 69 6d 65 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 t(time.time())...$............la
7b20 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 20 20 20 20 20 st_duration.=.duration..........
7b40 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 20 20 20 20 20 ......scrobbled.=.False...8.....
7b60 20 20 20 20 20 20 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 .......update_now_playing(sk,.ar
7b80 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 20 20 20 20 20 tist,.title,.album)...5.........
7ba0 20 20 20 70 72 69 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 74 69 73 74 7d ...print(f"Now.playing:.{artist}
7bc0 20 2d 20 7b 74 69 74 6c 65 7d 22 29 00 00 00 00 00 00 00 3e 20 20 20 20 20 20 20 20 69 66 20 28 .-.{title}").......>........if.(
7be0 6e 6f 74 20 73 63 72 6f 62 62 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c 65 20 61 6e 64 not.scrobbled.and.last_title.and
7c00 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 20 20 20 20 20 .last_duration.and...B..........
7c20 20 20 20 20 20 20 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 ......(elapsed.>=.last_duration.
7c40 2f 20 32 20 6f 72 20 65 6c 61 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 49 20 20 20 20 /.2.or.elapsed.>=.240)):...I....
7c60 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 72 74 69 73 74 ........scrobble(sk,.last_artist
7c80 2c 20 6c 61 73 74 5f 74 69 74 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c 61 73 74 5f 73 ,.last_title,.last_album,.last_s
7ca0 74 61 72 74 29 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d tart)................scrobbled.=
7cc0 20 54 72 75 65 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 53 63 72 .True...=............print(f"Scr
7ce0 6f 62 62 6c 65 64 3a 20 7b 6c 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 73 74 5f 74 69 obbled:.{last_artist}.-.{last_ti
7d00 74 6c 65 7d 22 29 00 00 00 00 00 00 00 23 20 20 20 20 20 20 20 20 6d 70 64 5f 63 6d 64 28 6d 70 tle}").......#........mpd_cmd(mp
7d20 64 2c 20 22 69 64 6c 65 20 70 6c 61 79 65 72 22 29 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 d,."idle.player")........if.__na
7d40 6d 65 5f 5f 20 3d 3d 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 me__.==."__main__":........main(
7d60 29 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 95 00 00 00 00 00 00 00 01 00 00 00 00 00 00 )5..............................
7d80 00 00 00 00 00 00 00 00 00 7a 10 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 .........z...............5._....
7da0 1c 00 00 00 1e 00 00 00 00 00 00 00 00 00 00 00 1d 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ................................
7dc0 ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 ................................
7f00 00 00 0a 00 00 00 00 00 00 00 01 00 00 00 0a 00 00 00 00 00 00 00 56 00 00 00 0a 00 00 00 00 69 ......................V........i
7f20 98 f7 46 04 01 00 00 00 15 00 f5 18 00 00 00 83 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 0a ..F.............................
7f40 20 20 20 20 6d 61 69 6e 28 29 f5 18 00 00 00 84 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 ....main()......................
7f60 00 68 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 12 20 20 20 20 20 20 20 20 73 74 61 74 75 73 .h........................status
7f80 5f 72 61 77 f5 18 00 00 00 69 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 _raw.....i......................
7fa0 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 ..............................5.
7fc0 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 68 00 00 00 12 00 00 00 00 00 ......................h.........
7fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 00 00 00 00 00 00 f5 18 00 00 00 00 68 00 00 00 ............................h...
8000 12 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 0a 00 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 ................................
8020 00 00 00 00 9b 04 00 00 00 00 00 00 35 81 5f d0 00 00 00 1d 00 00 00 1f 00 00 00 00 00 00 00 00 ............5._.................
8040 00 00 00 1e 00 00 00 01 00 00 00 04 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 ................................
8060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
80a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
80c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
80e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f9 cd 04 01 00 00 00 00 00 f5 18 00 ..................i.............
81c0 00 00 00 00 00 00 02 00 00 00 00 00 00 00 84 00 00 00 16 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e ...................#!/usr/bin/en
81e0 76 20 70 79 74 68 6f 6e 33 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 00 00 00 0b 69 v.python3....import.hashlib....i
8200 6d 70 6f 72 74 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 00 00 00 0f 69 mport.time....import.socket....i
8220 6d 70 6f 72 74 20 72 65 71 75 65 73 74 73 00 00 00 00 00 00 00 2c 41 50 49 5f 4b 45 59 20 3d 20 mport.requests.......,API_KEY.=.
8240 22 39 34 32 33 65 33 34 30 33 37 31 61 35 39 63 31 33 38 34 62 34 34 38 63 34 66 62 39 61 34 37 "9423e340371a59c1384b448c4fb9a47
8260 38 22 00 00 00 2f 41 50 49 5f 53 45 43 52 45 54 20 3d 20 22 38 35 38 64 35 61 38 33 63 38 37 35 8".../API_SECRET.=."858d5a83c875
8280 30 62 65 35 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 22 00 00 00 15 55 53 45 52 4e 41 4d 0be5dde0006ed58a3a58"....USERNAM
82a0 45 20 3d 20 22 56 65 74 74 65 72 69 61 22 00 00 00 1b 50 41 53 53 57 4f 52 44 20 3d 20 22 32 53 E.=."Vetteria"....PASSWORD.=."2S
82c0 30 79 54 70 55 34 58 35 51 36 26 68 22 00 00 00 16 4d 50 44 5f 48 4f 53 54 20 3d 20 22 6c 6f 63 0yTpU4X5Q6&h"....MPD_HOST.=."loc
82e0 61 6c 68 6f 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 3d 20 36 36 30 30 00 00 00 53 50 52 alhost"....MPD_PORT.=.6600...SPR
8300 4f 58 49 45 53 20 3d 20 7b 22 68 74 74 70 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 37 2e 30 OXIES.=.{"http":."socks5://127.0
8320 2e 30 2e 31 3a 36 35 30 30 30 22 2c 20 22 68 74 74 70 73 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f .0.1:65000",."https":."socks5://
8340 31 32 37 2e 30 2e 30 2e 31 3a 36 35 30 30 30 22 7d 00 00 00 00 00 00 00 0b 64 65 66 20 6d 64 35 127.0.0.1:65000"}........def.md5
8360 28 73 29 3a 00 00 00 2e 20 20 20 20 72 65 74 75 72 6e 20 68 61 73 68 6c 69 62 2e 6d 64 35 28 73 (s):........return.hashlib.md5(s
8380 2e 65 6e 63 6f 64 65 28 29 29 2e 68 65 78 64 69 67 65 73 74 28 29 00 00 00 00 00 00 00 11 64 65 .encode()).hexdigest()........de
83a0 66 20 73 69 67 6e 28 70 61 72 61 6d 73 29 3a 00 00 00 20 20 20 20 20 6b 65 79 73 20 3d 20 73 6f f.sign(params):........keys.=.so
83c0 72 74 65 64 28 70 61 72 61 6d 73 2e 6b 65 79 73 28 29 29 00 00 00 2e 20 20 20 20 73 69 67 20 3d rted(params.keys())........sig.=
83e0 20 22 22 2e 6a 6f 69 6e 28 6b 20 2b 20 70 61 72 61 6d 73 5b 6b 5d 20 66 6f 72 20 6b 20 69 6e 20 ."".join(k.+.params[k].for.k.in.
8400 6b 65 79 73 29 00 00 00 15 20 20 20 20 73 69 67 20 2b 3d 20 41 50 49 5f 53 45 43 52 45 54 00 00 keys)........sig.+=.API_SECRET..
8420 00 13 20 20 20 20 72 65 74 75 72 6e 20 6d 64 35 28 73 69 67 29 00 00 00 00 00 00 00 16 64 65 66 ......return.md5(sig)........def
8440 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 6f 6b 65 6e .get_session_key():...K....token
8460 5f 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e _res.=.requests.get("https://ws.
8480 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 72 61 6d 73 audioscrobbler.com/2.0/",.params
84a0 3d 7b 00 00 00 22 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 ={..."........"method":."auth.ge
84c0 74 54 6f 6b 65 6e 22 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 tToken",............"api_key":.A
84e0 50 49 5f 4b 45 59 2c 00 00 00 18 20 20 20 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a 20 22 6a 73 PI_KEY,............"format":."js
8500 6f 6e 22 00 00 00 17 20 20 20 20 7d 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 on"........},.proxies=PROXIES)..
8520 00 25 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 .%....token.=.token_res.json()["
8540 74 6f 6b 65 6e 22 5d 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2a 20 20 20 token"]........params.=.{...*...
8560 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 4d 6f 62 69 6c 65 53 65 ....."method":."auth.getMobileSe
8580 73 73 69 6f 6e 22 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 75 73 65 72 6e 61 6d 65 22 3a 20 55 ssion",............"username":.U
85a0 53 45 52 4e 41 4d 45 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 22 3a 20 SERNAME,............"password":.
85c0 50 41 53 53 57 4f 52 44 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 PASSWORD,............"api_key":.
85e0 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b API_KEY,........}...$....params[
8600 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 "api_sig"].=.sign(params).......
8620 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 5b 20 20 .params["format"].=."json"...[..
8640 20 20 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 ..res.=.requests.post("https://w
8660 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 s.audioscrobbler.com/2.0/",.data
8680 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 28 20 20 20 =params,.proxies=PROXIES)...(...
86a0 20 70 72 69 6e 74 28 22 53 65 73 73 69 6f 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 72 65 73 2e .print("Session.response:",.res.
86c0 74 65 78 74 29 00 00 00 27 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 text)...'....return.res.json()["
86e0 73 65 73 73 69 6f 6e 22 5d 5b 22 6b 65 79 22 5d 00 00 00 00 00 00 00 32 64 65 66 20 73 63 72 6f session"]["key"].......2def.scro
8700 62 62 6c 65 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 2c 20 74 bble(sk,.artist,.title,.album,.t
8720 69 6d 65 73 74 61 6d 70 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 23 imestamp):........params.=.{...#
8740 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 6f 62 62 6c ........"method":."track.scrobbl
8760 65 22 2c 00 00 00 1c 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 61 72 74 69 e",............"artist[0]":.arti
8780 73 74 2c 00 00 00 1a 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 69 74 6c 65 st,............"track[0]":.title
87a0 2c 00 00 00 1a 20 20 20 20 20 20 20 20 22 61 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 75 6d 2c 00 ,............"album[0]":.album,.
87c0 00 00 27 20 20 20 20 20 20 20 20 22 74 69 6d 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 74 72 28 74 ..'........"timestamp[0]":.str(t
87e0 69 6d 65 73 74 61 6d 70 29 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a imestamp),............"api_key":
8800 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 .API_KEY,............"sk":.sk,..
8820 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d ......}...$....params["api_sig"]
8840 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 .=.sign(params)........params["f
8860 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 65 73 74 73 ormat"].=."json"...U....requests
8880 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 .post("https://ws.audioscrobbler
88a0 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 .com/2.0/",.data=params,.proxies
88c0 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 31 64 65 66 20 75 70 64 61 74 65 5f 6e 6f 77 5f =PROXIES).......1def.update_now_
88e0 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d playing(sk,.artist,.title,.album
8900 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 ):........params.=.{...+........
8920 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c 61 79 69 6e "method":."track.updateNowPlayin
8940 67 22 2c 00 00 00 19 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 69 73 74 2c g",............"artist":.artist,
8960 00 00 00 17 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 00 00 17 20 ............"track":.title,.....
8980 20 20 20 20 20 20 20 22 61 6c 62 75 6d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 20 20 20 20 ......."album":.album,..........
89a0 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 .."api_key":.API_KEY,...........
89c0 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d ."sk":.sk,........}...$....param
89e0 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 s["api_sig"].=.sign(params).....
8a00 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 ...params["format"].=."json"...U
8a20 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 ....requests.post("https://ws.au
8a40 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 dioscrobbler.com/2.0/",.data=par
8a60 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 12 64 65 66 ams,.proxies=PROXIES)........def
8a80 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 3a 00 00 00 17 20 20 20 20 73 20 3d 20 73 6f 63 6b 65 .mpd_connect():........s.=.socke
8aa0 74 2e 73 6f 63 6b 65 74 28 29 00 00 00 23 20 20 20 20 73 2e 63 6f 6e 6e 65 63 74 28 28 4d 50 44 t.socket()...#....s.connect((MPD
8ac0 5f 48 4f 53 54 2c 20 4d 50 44 5f 50 4f 52 54 29 29 00 00 00 10 20 20 20 20 73 2e 72 65 63 76 28 _HOST,.MPD_PORT))........s.recv(
8ae0 31 30 32 34 29 00 00 00 0c 20 20 20 20 72 65 74 75 72 6e 20 73 00 00 00 00 00 00 00 14 64 65 66 1024)........return.s........def
8b00 20 6d 70 64 5f 63 6d 64 28 73 2c 20 63 6d 64 29 3a 00 00 00 24 20 20 20 20 73 2e 73 65 6e 64 61 .mpd_cmd(s,.cmd):...$....s.senda
8b20 6c 6c 28 28 63 6d 64 20 2b 20 22 5c 6e 22 29 2e 65 6e 63 6f 64 65 28 29 29 00 00 00 0e 20 20 20 ll((cmd.+."\n").encode()).......
8b40 20 72 65 73 70 20 3d 20 62 22 22 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 .resp.=.b""........while.True:..
8b60 00 1c 20 20 20 20 20 20 20 20 63 68 75 6e 6b 20 3d 20 73 2e 72 65 63 76 28 34 30 39 36 29 00 00 ..........chunk.=.s.recv(4096)..
8b80 00 15 20 20 20 20 20 20 20 20 72 65 73 70 20 2b 3d 20 63 68 75 6e 6b 00 00 00 2d 20 20 20 20 20 ..........resp.+=.chunk...-.....
8ba0 20 20 20 69 66 20 62 22 4f 4b 5c 6e 22 20 69 6e 20 72 65 73 70 20 6f 72 20 62 22 41 43 4b 22 20 ...if.b"OK\n".in.resp.or.b"ACK".
8bc0 69 6e 20 72 65 73 70 3a 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 00 00 00 in.resp:................break...
8be0 18 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 70 2e 64 65 63 6f 64 65 28 29 00 00 00 00 00 00 00 .....return.resp.decode().......
8c00 16 64 65 66 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 72 61 77 29 3a 00 00 00 0d 20 20 20 20 64 .def.parse_status(raw):........d
8c20 61 74 61 20 3d 20 7b 7d 00 00 00 21 20 20 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 72 61 77 2e ata.=.{}...!....for.line.in.raw.
8c40 73 70 6c 69 74 6c 69 6e 65 73 28 29 3a 00 00 00 17 20 20 20 20 20 20 20 20 69 66 20 22 3a 22 20 splitlines():............if.":".
8c60 69 6e 20 6c 69 6e 65 3a 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 6b 2c 20 76 20 3d 20 6c in.line:...%............k,.v.=.l
8c80 69 6e 65 2e 73 70 6c 69 74 28 22 3a 22 2c 20 31 29 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 ine.split(":",.1)...'...........
8ca0 20 64 61 74 61 5b 6b 2e 73 74 72 69 70 28 29 5d 20 3d 20 76 2e 73 74 72 69 70 28 29 00 00 00 0f .data[k.strip()].=.v.strip()....
8cc0 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 61 00 00 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 ....return.data........def.main(
8ce0 29 3a 00 00 00 1a 20 20 20 20 73 6b 20 3d 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 ):........sk.=.get_session_key()
8d00 00 00 00 29 20 20 20 20 70 72 69 6e 74 28 66 22 41 75 74 68 65 6e 74 69 63 61 74 65 64 20 61 73 ...)....print(f"Authenticated.as
8d20 20 7b 55 53 45 52 4e 41 4d 45 7d 22 29 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d 70 64 5f 63 .{USERNAME}")........mpd.=.mpd_c
8d40 6f 6e 6e 65 63 74 28 29 00 00 00 15 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 4e 6f 6e onnect()........last_title.=.Non
8d60 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 00 18 20 20 e........last_start.=.None......
8d80 20 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 20 20 6c 61 ..last_duration.=.None........la
8da0 73 74 5f 61 72 74 69 73 74 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 61 6c 62 st_artist.=.None........last_alb
8dc0 75 6d 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c um.=.None........scrobbled.=.Fal
8de0 73 65 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 20 20 20 20 se........while.True:...+.......
8e00 20 73 74 61 74 75 73 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 73 74 61 74 .status_raw.=.mpd_cmd(mpd,."stat
8e20 75 73 22 29 00 00 00 31 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 3d 20 6d 70 us")...1........current_raw.=.mp
8e40 64 5f 63 6d 64 28 6d 70 64 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 29 20 20 20 d_cmd(mpd,."currentsong")...)...
8e60 20 20 20 20 20 73 74 61 74 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 74 61 74 75 .....status.=.parse_status(statu
8e80 73 5f 72 61 77 29 00 00 00 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 70 61 72 73 s_raw)...+........current.=.pars
8ea0 65 5f 73 74 61 74 75 73 28 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 28 20 20 20 20 20 20 20 e_status(current_raw)...(.......
8ec0 20 74 69 74 6c 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 2c 20 22 22 .title.=.current.get("Title",.""
8ee0 29 00 00 00 2a 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 )...*........artist.=.current.ge
8f00 74 28 22 41 72 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 6c 62 75 6d t("Artist",."")...(........album
8f20 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 00 00 2b 20 .=.current.get("Album",."")...+.
8f40 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 74 61 74 65 .......state.=.status.get("state
8f60 22 2c 20 22 73 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 64 20 3d 20 ",."stop")...1........elapsed.=.
8f80 66 6c 6f 61 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 30 29 29 00 float(status.get("elapsed",.0)).
8fa0 00 00 33 20 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 ..3........duration.=.float(stat
8fc0 75 73 2e 67 65 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 3d 20 20 20 20 20 20 us.get("duration",.0))...=......
8fe0 20 20 69 66 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 74 69 74 6c 65 20 61 ..if.state.==."play".and.title.a
9000 6e 64 20 74 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 00 1e 20 20 20 20 20 nd.title.!=.last_title:.........
9020 20 20 20 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 00 00 00 20 20 20 20 .......last_title.=.title.......
9040 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 74 69 73 74 00 00 00 .........last_artist.=.artist...
9060 1e 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 61 6c 62 75 6d 00 .............last_album.=.album.
9080 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 69 6e 74 28 ..)............last_start.=.int(
90a0 74 69 6d 65 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 time.time())...$............last
90c0 5f 64 75 72 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 20 20 20 20 20 20 20 _duration.=.duration............
90e0 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 20 20 20 20 20 20 20 ....scrobbled.=.False...8.......
9100 20 20 20 20 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 .....update_now_playing(sk,.arti
9120 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 20 20 20 20 20 20 20 st,.title,.album)...5...........
9140 20 70 72 69 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 74 69 73 74 7d 20 2d .print(f"Now.playing:.{artist}.-
9160 20 7b 74 69 74 6c 65 7d 22 29 00 00 00 3e 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 74 20 73 63 .{title}")...>........if.(not.sc
9180 72 6f 62 62 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c 65 20 61 6e 64 20 6c 61 73 74 5f robbled.and.last_title.and.last_
91a0 64 75 72 61 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 duration.and...B................
91c0 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 2f 20 32 20 6f 72 (elapsed.>=.last_duration./.2.or
91e0 20 65 6c 61 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 49 20 20 20 20 20 20 20 20 20 20 .elapsed.>=.240)):...I..........
9200 20 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 72 74 69 73 74 2c 20 6c 61 73 74 ..scrobble(sk,.last_artist,.last
9220 5f 74 69 74 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c 61 73 74 5f 73 74 61 72 74 29 00 _title,.last_album,.last_start).
9240 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 54 72 75 65 00 ...............scrobbled.=.True.
9260 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 53 63 72 6f 62 62 6c 65 64 ..=............print(f"Scrobbled
9280 3a 20 7b 6c 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 73 74 5f 74 69 74 6c 65 7d 22 29 :.{last_artist}.-.{last_title}")
92a0 00 00 00 23 20 20 20 20 20 20 20 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 69 64 6c 65 20 70 ...#........mpd_cmd(mpd,."idle.p
92c0 6c 61 79 65 72 22 29 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 22 5f layer")........if.__name__.==."_
92e0 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 29 35 81 f5 18 00 00 00 00 00 _main__":........main()5........
9300 00 00 00 00 00 00 00 84 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9c ................................
9320 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 1e 00 00 00 20 00 00 00 00 00 ...............5._..............
9340 00 00 00 00 00 00 1f 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 ................................
9360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
93a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
93c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
93e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f9 cd 04 01 00 00 00 00 00 .....................i..........
94c0 f5 18 00 00 00 84 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 85 00 00 00 00 ................................
94e0 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 ................................
9500 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 ................5...............
9520 00 00 00 00 00 00 00 00 84 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9540 9c 0f 00 00 00 00 00 00 35 81 5f d0 00 00 00 1f 00 00 00 21 00 00 00 00 00 00 00 00 00 00 00 20 ........5._........!............
9560 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
95a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
95c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
95e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
96a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
96c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f9 d0 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 ..............i.................
96e0 00 00 02 00 00 00 00 00 00 00 85 00 00 00 16 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 ...............#!/usr/bin/env.py
9700 74 68 6f 6e 33 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 00 00 00 0b 69 6d 70 6f 72 thon3....import.hashlib....impor
9720 74 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 00 00 00 0f 69 6d 70 6f 72 t.time....import.socket....impor
9740 74 20 72 65 71 75 65 73 74 73 00 00 00 00 00 00 00 2c 41 50 49 5f 4b 45 59 20 3d 20 22 39 34 32 t.requests.......,API_KEY.=."942
9760 33 65 33 34 30 33 37 31 61 35 39 63 31 33 38 34 62 34 34 38 63 34 66 62 39 61 34 37 38 22 00 00 3e340371a59c1384b448c4fb9a478"..
9780 00 2f 41 50 49 5f 53 45 43 52 45 54 20 3d 20 22 38 35 38 64 35 61 38 33 63 38 37 35 30 62 65 35 ./API_SECRET.=."858d5a83c8750be5
97a0 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 22 00 00 00 15 55 53 45 52 4e 41 4d 45 20 3d 20 dde0006ed58a3a58"....USERNAME.=.
97c0 22 56 65 74 74 65 72 69 61 22 00 00 00 1b 50 41 53 53 57 4f 52 44 20 3d 20 22 32 53 30 79 54 70 "Vetteria"....PASSWORD.=."2S0yTp
97e0 55 34 58 35 51 36 26 68 22 00 00 00 16 4d 50 44 5f 48 4f 53 54 20 3d 20 22 6c 6f 63 61 6c 68 6f U4X5Q6&h"....MPD_HOST.=."localho
9800 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 3d 20 36 36 30 30 00 00 00 53 50 52 4f 58 49 45 st"....MPD_PORT.=.6600...SPROXIE
9820 53 20 3d 20 7b 22 68 74 74 70 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 37 2e 30 2e 30 2e 31 S.=.{"http":."socks5://127.0.0.1
9840 3a 36 35 30 30 30 22 2c 20 22 68 74 74 70 73 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 37 2e :65000",."https":."socks5://127.
9860 30 2e 30 2e 31 3a 36 35 30 30 30 22 7d 00 00 00 00 00 00 00 0b 64 65 66 20 6d 64 35 28 73 29 3a 0.0.1:65000"}........def.md5(s):
9880 00 00 00 2e 20 20 20 20 72 65 74 75 72 6e 20 68 61 73 68 6c 69 62 2e 6d 64 35 28 73 2e 65 6e 63 ........return.hashlib.md5(s.enc
98a0 6f 64 65 28 29 29 2e 68 65 78 64 69 67 65 73 74 28 29 00 00 00 00 00 00 00 11 64 65 66 20 73 69 ode()).hexdigest()........def.si
98c0 67 6e 28 70 61 72 61 6d 73 29 3a 00 00 00 20 20 20 20 20 6b 65 79 73 20 3d 20 73 6f 72 74 65 64 gn(params):........keys.=.sorted
98e0 28 70 61 72 61 6d 73 2e 6b 65 79 73 28 29 29 00 00 00 2e 20 20 20 20 73 69 67 20 3d 20 22 22 2e (params.keys())........sig.=."".
9900 6a 6f 69 6e 28 6b 20 2b 20 70 61 72 61 6d 73 5b 6b 5d 20 66 6f 72 20 6b 20 69 6e 20 6b 65 79 73 join(k.+.params[k].for.k.in.keys
9920 29 00 00 00 15 20 20 20 20 73 69 67 20 2b 3d 20 41 50 49 5f 53 45 43 52 45 54 00 00 00 13 20 20 )........sig.+=.API_SECRET......
9940 20 20 72 65 74 75 72 6e 20 6d 64 35 28 73 69 67 29 00 00 00 00 00 00 00 16 64 65 66 20 67 65 74 ..return.md5(sig)........def.get
9960 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 6f 6b 65 6e 5f 72 65 73 _session_key():...K....token_res
9980 20 3d 20 72 65 71 75 65 73 74 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 .=.requests.get("https://ws.audi
99a0 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 72 61 6d 73 3d 7b 00 00 oscrobbler.com/2.0/",.params={..
99c0 00 22 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 54 6f 6b ."........"method":."auth.getTok
99e0 65 6e 22 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b en",............"api_key":.API_K
9a00 45 59 2c 00 00 00 18 20 20 20 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a 20 22 6a 73 6f 6e 22 00 EY,............"format":."json".
9a20 00 00 17 20 20 20 20 7d 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 25 20 20 .......},.proxies=PROXIES)...%..
9a40 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 74 6f 6b 65 ..token.=.token_res.json()["toke
9a60 6e 22 5d 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2a 20 20 20 20 20 20 20 n"]........params.=.{...*.......
9a80 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 4d 6f 62 69 6c 65 53 65 73 73 69 6f ."method":."auth.getMobileSessio
9aa0 6e 22 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 75 73 65 72 6e 61 6d 65 22 3a 20 55 53 45 52 4e n",............"username":.USERN
9ac0 41 4d 45 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 22 3a 20 50 41 53 53 AME,............"password":.PASS
9ae0 57 4f 52 44 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f WORD,............"api_key":.API_
9b00 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 KEY,........}...$....params["api
9b20 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 _sig"].=.sign(params)........par
9b40 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 5b 20 20 20 20 72 65 ams["format"].=."json"...[....re
9b60 73 20 3d 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 s.=.requests.post("https://ws.au
9b80 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 dioscrobbler.com/2.0/",.data=par
9ba0 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 28 20 20 20 20 70 72 69 ams,.proxies=PROXIES)...(....pri
9bc0 6e 74 28 22 53 65 73 73 69 6f 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 72 65 73 2e 74 65 78 74 nt("Session.response:",.res.text
9be0 29 00 00 00 27 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 73 65 73 73 )...'....return.res.json()["sess
9c00 69 6f 6e 22 5d 5b 22 6b 65 79 22 5d 00 00 00 00 00 00 00 32 64 65 66 20 73 63 72 6f 62 62 6c 65 ion"]["key"].......2def.scrobble
9c20 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 2c 20 74 69 6d 65 73 (sk,.artist,.title,.album,.times
9c40 74 61 6d 70 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 23 20 20 20 20 tamp):........params.=.{...#....
9c60 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 6f 62 62 6c 65 22 2c 00 ...."method":."track.scrobble",.
9c80 00 00 1c 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 61 72 74 69 73 74 2c 00 ..........."artist[0]":.artist,.
9ca0 00 00 1a 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 69 74 6c 65 2c 00 00 00 ..........."track[0]":.title,...
9cc0 1a 20 20 20 20 20 20 20 20 22 61 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 27 20 ........."album[0]":.album,...'.
9ce0 20 20 20 20 20 20 20 22 74 69 6d 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 74 72 28 74 69 6d 65 73 ......."timestamp[0]":.str(times
9d00 74 61 6d 70 29 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 tamp),............"api_key":.API
9d20 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 _KEY,............"sk":.sk,......
9d40 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 ..}...$....params["api_sig"].=.s
9d60 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 ign(params)........params["forma
9d80 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 t"].=."json"...U....requests.pos
9da0 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d t("https://ws.audioscrobbler.com
9dc0 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f /2.0/",.data=params,.proxies=PRO
9de0 58 49 45 53 29 00 00 00 00 00 00 00 31 64 65 66 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 XIES).......1def.update_now_play
9e00 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 3a 00 00 ing(sk,.artist,.title,.album):..
9e20 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 22 6d 65 74 ......params.=.{...+........"met
9e40 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c 61 79 69 6e 67 22 2c 00 hod":."track.updateNowPlaying",.
9e60 00 00 19 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 69 73 74 2c 00 00 00 17 ..........."artist":.artist,....
9e80 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 00 00 17 20 20 20 20 20 ........"track":.title,.........
9ea0 20 20 20 22 61 6c 62 75 6d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 ..."album":.album,............"a
9ec0 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b pi_key":.API_KEY,............"sk
9ee0 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 ":.sk,........}...$....params["a
9f00 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 pi_sig"].=.sign(params)........p
9f20 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 arams["format"].=."json"...U....
9f40 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 requests.post("https://ws.audios
9f60 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c crobbler.com/2.0/",.data=params,
9f80 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 12 64 65 66 20 6d 70 64 .proxies=PROXIES)........def.mpd
9fa0 5f 63 6f 6e 6e 65 63 74 28 29 3a 00 00 00 17 20 20 20 20 73 20 3d 20 73 6f 63 6b 65 74 2e 73 6f _connect():........s.=.socket.so
9fc0 63 6b 65 74 28 29 00 00 00 23 20 20 20 20 73 2e 63 6f 6e 6e 65 63 74 28 28 4d 50 44 5f 48 4f 53 cket()...#....s.connect((MPD_HOS
9fe0 54 2c 20 4d 50 44 5f 50 4f 52 54 29 29 00 00 00 10 20 20 20 20 73 2e 72 65 63 76 28 31 30 32 34 T,.MPD_PORT))........s.recv(1024
a000 29 00 00 00 0c 20 20 20 20 72 65 74 75 72 6e 20 73 00 00 00 00 00 00 00 14 64 65 66 20 6d 70 64 )........return.s........def.mpd
a020 5f 63 6d 64 28 73 2c 20 63 6d 64 29 3a 00 00 00 24 20 20 20 20 73 2e 73 65 6e 64 61 6c 6c 28 28 _cmd(s,.cmd):...$....s.sendall((
a040 63 6d 64 20 2b 20 22 5c 6e 22 29 2e 65 6e 63 6f 64 65 28 29 29 00 00 00 0e 20 20 20 20 72 65 73 cmd.+."\n").encode())........res
a060 70 20 3d 20 62 22 22 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 1c 20 20 p.=.b""........while.True:......
a080 20 20 20 20 20 20 63 68 75 6e 6b 20 3d 20 73 2e 72 65 63 76 28 34 30 39 36 29 00 00 00 15 20 20 ......chunk.=.s.recv(4096)......
a0a0 20 20 20 20 20 20 72 65 73 70 20 2b 3d 20 63 68 75 6e 6b 00 00 00 2d 20 20 20 20 20 20 20 20 69 ......resp.+=.chunk...-........i
a0c0 66 20 62 22 4f 4b 5c 6e 22 20 69 6e 20 72 65 73 70 20 6f 72 20 62 22 41 43 4b 22 20 69 6e 20 72 f.b"OK\n".in.resp.or.b"ACK".in.r
a0e0 65 73 70 3a 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 00 00 00 18 20 20 20 esp:................break.......
a100 20 72 65 74 75 72 6e 20 72 65 73 70 2e 64 65 63 6f 64 65 28 29 00 00 00 00 00 00 00 16 64 65 66 .return.resp.decode()........def
a120 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 72 61 77 29 3a 00 00 00 0d 20 20 20 20 64 61 74 61 20 .parse_status(raw):........data.
a140 3d 20 7b 7d 00 00 00 21 20 20 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 72 61 77 2e 73 70 6c 69 =.{}...!....for.line.in.raw.spli
a160 74 6c 69 6e 65 73 28 29 3a 00 00 00 17 20 20 20 20 20 20 20 20 69 66 20 22 3a 22 20 69 6e 20 6c tlines():............if.":".in.l
a180 69 6e 65 3a 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 6b 2c 20 76 20 3d 20 6c 69 6e 65 2e ine:...%............k,.v.=.line.
a1a0 73 70 6c 69 74 28 22 3a 22 2c 20 31 29 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 split(":",.1)...'............dat
a1c0 61 5b 6b 2e 73 74 72 69 70 28 29 5d 20 3d 20 76 2e 73 74 72 69 70 28 29 00 00 00 0f 20 20 20 20 a[k.strip()].=.v.strip()........
a1e0 72 65 74 75 72 6e 20 64 61 74 61 00 00 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 00 return.data........def.main():..
a200 00 1a 20 20 20 20 73 6b 20 3d 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 00 00 00 29 ......sk.=.get_session_key()...)
a220 20 20 20 20 70 72 69 6e 74 28 66 22 41 75 74 68 65 6e 74 69 63 61 74 65 64 20 61 73 20 7b 55 53 ....print(f"Authenticated.as.{US
a240 45 52 4e 41 4d 45 7d 22 29 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d 70 64 5f 63 6f 6e 6e 65 ERNAME}")........mpd.=.mpd_conne
a260 63 74 28 29 00 00 00 15 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 4e 6f 6e 65 00 00 00 ct()........last_title.=.None...
a280 15 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 00 18 20 20 20 20 6c 61 .....last_start.=.None........la
a2a0 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 20 20 6c 61 73 74 5f 61 st_duration.=.None........last_a
a2c0 72 74 69 73 74 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d rtist.=.None........last_album.=
a2e0 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 .None........scrobbled.=.False..
a300 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 20 20 20 20 20 73 74 61 ......while.True:...+........sta
a320 74 75 73 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 73 74 61 74 75 73 22 29 tus_raw.=.mpd_cmd(mpd,."status")
a340 00 00 00 31 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d ...1........current_raw.=.mpd_cm
a360 64 28 6d 70 64 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 29 20 20 20 20 20 20 20 d(mpd,."currentsong")...).......
a380 20 73 74 61 74 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 74 61 74 75 73 5f 72 61 .status.=.parse_status(status_ra
a3a0 77 29 00 00 00 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 70 61 72 73 65 5f 73 74 w)...+........current.=.parse_st
a3c0 61 74 75 73 28 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 28 20 20 20 20 20 20 20 20 74 69 74 atus(current_raw)...(........tit
a3e0 6c 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 2c 20 22 22 29 00 00 00 le.=.current.get("Title",."")...
a400 2a 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 *........artist.=.current.get("A
a420 72 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 6c 62 75 6d 20 3d 20 63 rtist",."")...(........album.=.c
a440 75 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 00 00 2b 20 20 20 20 20 urrent.get("Album",."")...+.....
a460 20 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 74 61 74 65 22 2c 20 22 ...state.=.status.get("state",."
a480 73 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 64 20 3d 20 66 6c 6f 61 stop")...1........elapsed.=.floa
a4a0 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 30 29 29 00 00 00 33 20 t(status.get("elapsed",.0))...3.
a4c0 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 2e 67 .......duration.=.float(status.g
a4e0 65 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 3d 20 20 20 20 20 20 20 20 69 66 et("duration",.0))...=........if
a500 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 74 69 74 6c 65 20 61 6e 64 20 74 .state.==."play".and.title.and.t
a520 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 00 1e 20 20 20 20 20 20 20 20 20 itle.!=.last_title:.............
a540 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 00 00 00 20 20 20 20 20 20 20 20 ...last_title.=.title...........
a560 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 74 69 73 74 00 00 00 1e 20 20 20 .....last_artist.=.artist.......
a580 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 61 6c 62 75 6d 00 00 00 29 20 .........last_album.=.album...).
a5a0 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 69 6e 74 28 74 69 6d 65 ...........last_start.=.int(time
a5c0 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 64 75 72 .time())...$............last_dur
a5e0 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 20 20 20 20 20 20 20 20 20 20 20 ation.=.duration................
a600 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 20 20 20 20 20 20 20 20 20 20 20 scrobbled.=.False...8...........
a620 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 .update_now_playing(sk,.artist,.
a640 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 title,.album)...5............pri
a660 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 74 69 73 74 7d 20 2d 20 7b 74 69 nt(f"Now.playing:.{artist}.-.{ti
a680 74 6c 65 7d 22 29 00 00 00 3e 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 74 20 73 63 72 6f 62 62 tle}")...>........if.(not.scrobb
a6a0 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c 65 20 61 6e 64 20 6c 61 73 74 5f 64 75 72 61 led.and.last_title.and.last_dura
a6c0 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 61 tion.and...B................(ela
a6e0 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 2f 20 32 20 6f 72 20 65 6c 61 psed.>=.last_duration./.2.or.ela
a700 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 49 20 20 20 20 20 20 20 20 20 20 20 20 73 63 psed.>=.240)):...I............sc
a720 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 72 74 69 73 74 2c 20 6c 61 73 74 5f 74 69 74 robble(sk,.last_artist,.last_tit
a740 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c 61 73 74 5f 73 74 61 72 74 29 00 00 00 1c 20 le,.last_album,.last_start).....
a760 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 54 72 75 65 00 00 00 3d 20 ...........scrobbled.=.True...=.
a780 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 53 63 72 6f 62 62 6c 65 64 3a 20 7b 6c ...........print(f"Scrobbled:.{l
a7a0 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 73 74 5f 74 69 74 6c 65 7d 22 29 00 00 00 23 ast_artist}.-.{last_title}")...#
a7c0 20 20 20 20 20 20 20 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 69 64 6c 65 20 70 6c 61 79 65 ........mpd_cmd(mpd,."idle.playe
a7e0 72 22 29 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 22 5f 5f 6d 61 69 r")........if.__name__.==."__mai
a800 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 29 00 00 00 00 35 81 f5 18 00 00 00 00 00 n__":........main()....5........
a820 00 00 00 00 00 00 00 85 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9d ................................
a840 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 20 00 00 00 24 00 00 00 00 00 ...............5._........$.....
a860 00 00 00 00 00 00 21 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 ......!.........................
a880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f9 d1 04 01 00 00 00 19 00 .....................i..........
a9e0 f5 18 00 00 00 84 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 85 00 00 00 00 ................................
aa00 00 00 00 00 00 00 00 00 f5 18 00 00 00 6e 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 0a 20 20 .............n..................
aa20 20 20 20 20 20 20 61 6c f5 18 00 00 00 6f 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 ......al.....o..................
aa40 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 ................................
aa60 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6e 00 00 00 0a 00 ..5.......................n.....
aa80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 00 00 00 00 00 00 f5 18 00 00 00 00 ................................
aaa0 6e 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 16 00 00 00 00 00 00 00 00 0c 00 00 00 00 00 00 n...............................
aac0 00 00 00 00 00 00 00 00 9c 03 00 00 00 00 00 00 35 81 5f d0 00 00 00 21 00 00 00 25 00 00 00 23 ................5._....!...%...#
aae0 00 00 00 00 00 00 00 24 00 00 00 01 00 00 00 04 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 .......$........................
ab00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
abc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
abe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 fd 04 04 01 00 00 00 00 ......................i.........
ac60 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 85 00 00 00 16 23 21 2f 75 73 72 2f 62 69 .......................#!/usr/bi
ac80 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 33 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 00 n/env.python3....import.hashlib.
aca0 00 00 0b 69 6d 70 6f 72 74 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 00 ...import.time....import.socket.
acc0 00 00 0f 69 6d 70 6f 72 74 20 72 65 71 75 65 73 74 73 00 00 00 00 00 00 00 2c 41 50 49 5f 4b 45 ...import.requests.......,API_KE
ace0 59 20 3d 20 22 39 34 32 33 65 33 34 30 33 37 31 61 35 39 63 31 33 38 34 62 34 34 38 63 34 66 62 Y.=."9423e340371a59c1384b448c4fb
ad00 39 61 34 37 38 22 00 00 00 2f 41 50 49 5f 53 45 43 52 45 54 20 3d 20 22 38 35 38 64 35 61 38 33 9a478".../API_SECRET.=."858d5a83
ad20 63 38 37 35 30 62 65 35 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 22 00 00 00 15 55 53 45 c8750be5dde0006ed58a3a58"....USE
ad40 52 4e 41 4d 45 20 3d 20 22 56 65 74 74 65 72 69 61 22 00 00 00 1b 50 41 53 53 57 4f 52 44 20 3d RNAME.=."Vetteria"....PASSWORD.=
ad60 20 22 32 53 30 79 54 70 55 34 58 35 51 36 26 68 22 00 00 00 16 4d 50 44 5f 48 4f 53 54 20 3d 20 ."2S0yTpU4X5Q6&h"....MPD_HOST.=.
ad80 22 6c 6f 63 61 6c 68 6f 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 3d 20 36 36 30 30 00 00 "localhost"....MPD_PORT.=.6600..
ada0 00 53 50 52 4f 58 49 45 53 20 3d 20 7b 22 68 74 74 70 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 .SPROXIES.=.{"http":."socks5://1
adc0 32 37 2e 30 2e 30 2e 31 3a 36 35 30 30 30 22 2c 20 22 68 74 74 70 73 22 3a 20 22 73 6f 63 6b 73 27.0.0.1:65000",."https":."socks
ade0 35 3a 2f 2f 31 32 37 2e 30 2e 30 2e 31 3a 36 35 30 30 30 22 7d 00 00 00 00 00 00 00 0b 64 65 66 5://127.0.0.1:65000"}........def
ae00 20 6d 64 35 28 73 29 3a 00 00 00 2e 20 20 20 20 72 65 74 75 72 6e 20 68 61 73 68 6c 69 62 2e 6d .md5(s):........return.hashlib.m
ae20 64 35 28 73 2e 65 6e 63 6f 64 65 28 29 29 2e 68 65 78 64 69 67 65 73 74 28 29 00 00 00 00 00 00 d5(s.encode()).hexdigest()......
ae40 00 11 64 65 66 20 73 69 67 6e 28 70 61 72 61 6d 73 29 3a 00 00 00 20 20 20 20 20 6b 65 79 73 20 ..def.sign(params):........keys.
ae60 3d 20 73 6f 72 74 65 64 28 70 61 72 61 6d 73 2e 6b 65 79 73 28 29 29 00 00 00 2e 20 20 20 20 73 =.sorted(params.keys())........s
ae80 69 67 20 3d 20 22 22 2e 6a 6f 69 6e 28 6b 20 2b 20 70 61 72 61 6d 73 5b 6b 5d 20 66 6f 72 20 6b ig.=."".join(k.+.params[k].for.k
aea0 20 69 6e 20 6b 65 79 73 29 00 00 00 15 20 20 20 20 73 69 67 20 2b 3d 20 41 50 49 5f 53 45 43 52 .in.keys)........sig.+=.API_SECR
aec0 45 54 00 00 00 13 20 20 20 20 72 65 74 75 72 6e 20 6d 64 35 28 73 69 67 29 00 00 00 00 00 00 00 ET........return.md5(sig).......
aee0 16 64 65 66 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 .def.get_session_key():...K....t
af00 6f 6b 65 6e 5f 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f oken_res.=.requests.get("https:/
af20 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 /ws.audioscrobbler.com/2.0/",.pa
af40 72 61 6d 73 3d 7b 00 00 00 22 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 rams={..."........"method":."aut
af60 68 2e 67 65 74 54 6f 6b 65 6e 22 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 h.getToken",............"api_key
af80 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 18 20 20 20 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a ":.API_KEY,............"format":
afa0 20 22 6a 73 6f 6e 22 00 00 00 17 20 20 20 20 7d 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 ."json"........},.proxies=PROXIE
afc0 53 29 00 00 00 25 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 65 73 2e 6a 73 6f 6e S)...%....token.=.token_res.json
afe0 28 29 5b 22 74 6f 6b 65 6e 22 5d 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 ()["token"]........params.=.{...
b000 2a 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 4d 6f 62 69 *........"method":."auth.getMobi
b020 6c 65 53 65 73 73 69 6f 6e 22 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 75 73 65 72 6e 61 6d 65 leSession",............"username
b040 22 3a 20 55 53 45 52 4e 41 4d 45 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 ":.USERNAME,............"passwor
b060 64 22 3a 20 50 41 53 53 57 4f 52 44 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 d":.PASSWORD,............"api_ke
b080 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 y":.API_KEY,........}...$....par
b0a0 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 ams["api_sig"].=.sign(params)...
b0c0 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 .....params["format"].=."json"..
b0e0 00 5b 20 20 20 20 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 .[....res.=.requests.post("https
b100 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 ://ws.audioscrobbler.com/2.0/",.
b120 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 data=params,.proxies=PROXIES)...
b140 28 20 20 20 20 70 72 69 6e 74 28 22 53 65 73 73 69 6f 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 (....print("Session.response:",.
b160 72 65 73 2e 74 65 78 74 29 00 00 00 27 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 2e 6a 73 6f 6e res.text)...'....return.res.json
b180 28 29 5b 22 73 65 73 73 69 6f 6e 22 5d 5b 22 6b 65 79 22 5d 00 00 00 00 00 00 00 32 64 65 66 20 ()["session"]["key"].......2def.
b1a0 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 scrobble(sk,.artist,.title,.albu
b1c0 6d 2c 20 74 69 6d 65 73 74 61 6d 70 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b m,.timestamp):........params.=.{
b1e0 00 00 00 23 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 ...#........"method":."track.scr
b200 6f 62 62 6c 65 22 2c 00 00 00 1c 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 obble",............"artist[0]":.
b220 61 72 74 69 73 74 2c 00 00 00 1a 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 artist,............"track[0]":.t
b240 69 74 6c 65 2c 00 00 00 1a 20 20 20 20 20 20 20 20 22 61 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 itle,............"album[0]":.alb
b260 75 6d 2c 00 00 00 27 20 20 20 20 20 20 20 20 22 74 69 6d 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 um,...'........"timestamp[0]":.s
b280 74 72 28 74 69 6d 65 73 74 61 6d 70 29 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b tr(timestamp),............"api_k
b2a0 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 ey":.API_KEY,............"sk":.s
b2c0 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 k,........}...$....params["api_s
b2e0 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d ig"].=.sign(params)........param
b300 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 s["format"].=."json"...U....requ
b320 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 ests.post("https://ws.audioscrob
b340 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f bler.com/2.0/",.data=params,.pro
b360 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 31 64 65 66 20 75 70 64 61 74 65 5f xies=PROXIES).......1def.update_
b380 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 now_playing(sk,.artist,.title,.a
b3a0 6c 62 75 6d 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 lbum):........params.=.{...+....
b3c0 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c ...."method":."track.updateNowPl
b3e0 61 79 69 6e 67 22 2c 00 00 00 19 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 aying",............"artist":.art
b400 69 73 74 2c 00 00 00 17 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 ist,............"track":.title,.
b420 00 00 17 20 20 20 20 20 20 20 20 22 61 6c 62 75 6d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 ..........."album":.album,......
b440 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 ......"api_key":.API_KEY,.......
b460 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 ....."sk":.sk,........}...$....p
b480 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 arams["api_sig"].=.sign(params).
b4a0 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 .......params["format"].=."json"
b4c0 00 00 00 55 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 ...U....requests.post("https://w
b4e0 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 s.audioscrobbler.com/2.0/",.data
b500 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 =params,.proxies=PROXIES).......
b520 12 64 65 66 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 3a 00 00 00 17 20 20 20 20 73 20 3d 20 73 .def.mpd_connect():........s.=.s
b540 6f 63 6b 65 74 2e 73 6f 63 6b 65 74 28 29 00 00 00 23 20 20 20 20 73 2e 63 6f 6e 6e 65 63 74 28 ocket.socket()...#....s.connect(
b560 28 4d 50 44 5f 48 4f 53 54 2c 20 4d 50 44 5f 50 4f 52 54 29 29 00 00 00 10 20 20 20 20 73 2e 72 (MPD_HOST,.MPD_PORT))........s.r
b580 65 63 76 28 31 30 32 34 29 00 00 00 0c 20 20 20 20 72 65 74 75 72 6e 20 73 00 00 00 00 00 00 00 ecv(1024)........return.s.......
b5a0 14 64 65 66 20 6d 70 64 5f 63 6d 64 28 73 2c 20 63 6d 64 29 3a 00 00 00 24 20 20 20 20 73 2e 73 .def.mpd_cmd(s,.cmd):...$....s.s
b5c0 65 6e 64 61 6c 6c 28 28 63 6d 64 20 2b 20 22 5c 6e 22 29 2e 65 6e 63 6f 64 65 28 29 29 00 00 00 endall((cmd.+."\n").encode())...
b5e0 0e 20 20 20 20 72 65 73 70 20 3d 20 62 22 22 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 .....resp.=.b""........while.Tru
b600 65 3a 00 00 00 1c 20 20 20 20 20 20 20 20 63 68 75 6e 6b 20 3d 20 73 2e 72 65 63 76 28 34 30 39 e:............chunk.=.s.recv(409
b620 36 29 00 00 00 15 20 20 20 20 20 20 20 20 72 65 73 70 20 2b 3d 20 63 68 75 6e 6b 00 00 00 2d 20 6)............resp.+=.chunk...-.
b640 20 20 20 20 20 20 20 69 66 20 62 22 4f 4b 5c 6e 22 20 69 6e 20 72 65 73 70 20 6f 72 20 62 22 41 .......if.b"OK\n".in.resp.or.b"A
b660 43 4b 22 20 69 6e 20 72 65 73 70 3a 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 CK".in.resp:................brea
b680 6b 00 00 00 18 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 70 2e 64 65 63 6f 64 65 28 29 00 00 00 k........return.resp.decode()...
b6a0 00 00 00 00 16 64 65 66 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 72 61 77 29 3a 00 00 00 0d 20 .....def.parse_status(raw):.....
b6c0 20 20 20 64 61 74 61 20 3d 20 7b 7d 00 00 00 21 20 20 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 ...data.=.{}...!....for.line.in.
b6e0 72 61 77 2e 73 70 6c 69 74 6c 69 6e 65 73 28 29 3a 00 00 00 17 20 20 20 20 20 20 20 20 69 66 20 raw.splitlines():............if.
b700 22 3a 22 20 69 6e 20 6c 69 6e 65 3a 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 6b 2c 20 76 ":".in.line:...%............k,.v
b720 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 22 3a 22 2c 20 31 29 00 00 00 27 20 20 20 20 20 20 20 .=.line.split(":",.1)...'.......
b740 20 20 20 20 20 64 61 74 61 5b 6b 2e 73 74 72 69 70 28 29 5d 20 3d 20 76 2e 73 74 72 69 70 28 29 .....data[k.strip()].=.v.strip()
b760 00 00 00 0f 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 61 00 00 00 00 00 00 00 0b 64 65 66 20 6d ........return.data........def.m
b780 61 69 6e 28 29 3a 00 00 00 1a 20 20 20 20 73 6b 20 3d 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b ain():........sk.=.get_session_k
b7a0 65 79 28 29 00 00 00 29 20 20 20 20 70 72 69 6e 74 28 66 22 41 75 74 68 65 6e 74 69 63 61 74 65 ey()...)....print(f"Authenticate
b7c0 64 20 61 73 20 7b 55 53 45 52 4e 41 4d 45 7d 22 29 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d d.as.{USERNAME}")........mpd.=.m
b7e0 70 64 5f 63 6f 6e 6e 65 63 74 28 29 00 00 00 15 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d pd_connect()........last_title.=
b800 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 .None........last_start.=.None..
b820 00 18 20 20 20 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 ......last_duration.=.None......
b840 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 ..last_artist.=.None........last
b860 5f 61 6c 62 75 6d 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d _album.=.None........scrobbled.=
b880 20 46 61 6c 73 65 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 .False........while.True:...+...
b8a0 20 20 20 20 20 73 74 61 74 75 73 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 .....status_raw.=.mpd_cmd(mpd,."
b8c0 73 74 61 74 75 73 22 29 00 00 00 31 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 status")...1........current_raw.
b8e0 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 =.mpd_cmd(mpd,."currentsong")...
b900 29 20 20 20 20 20 20 20 20 73 74 61 74 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 )........status.=.parse_status(s
b920 74 61 74 75 73 5f 72 61 77 29 00 00 00 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 tatus_raw)...+........current.=.
b940 70 61 72 73 65 5f 73 74 61 74 75 73 28 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 28 20 20 20 parse_status(current_raw)...(...
b960 20 20 20 20 20 74 69 74 6c 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 .....title.=.current.get("Title"
b980 2c 20 22 22 29 00 00 00 2a 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e ,."")...*........artist.=.curren
b9a0 74 2e 67 65 74 28 22 41 72 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 t.get("Artist",."")...(........a
b9c0 6c 62 75 6d 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 lbum.=.current.get("Album",."").
b9e0 00 00 2b 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 ..+........state.=.status.get("s
ba00 74 61 74 65 22 2c 20 22 73 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 tate",."stop")...1........elapse
ba20 64 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 d.=.float(status.get("elapsed",.
ba40 30 29 29 00 00 00 33 20 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 0))...3........duration.=.float(
ba60 73 74 61 74 75 73 2e 67 65 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 3d 20 20 status.get("duration",.0))...=..
ba80 20 20 20 20 20 20 69 66 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 74 69 74 ......if.state.==."play".and.tit
baa0 6c 65 20 61 6e 64 20 74 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 00 1e 20 le.and.title.!=.last_title:.....
bac0 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 00 00 00 ...........last_title.=.title...
bae0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 74 69 73 .............last_artist.=.artis
bb00 74 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 61 6c t................last_album.=.al
bb20 62 75 6d 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 bum...)............last_start.=.
bb40 69 6e 74 28 74 69 6d 65 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 int(time.time())...$............
bb60 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 20 20 20 last_duration.=.duration........
bb80 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 20 20 20 ........scrobbled.=.False...8...
bba0 20 20 20 20 20 20 20 20 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 .........update_now_playing(sk,.
bbc0 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 20 20 20 artist,.title,.album)...5.......
bbe0 20 20 20 20 20 70 72 69 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 74 69 73 .....print(f"Now.playing:.{artis
bc00 74 7d 20 2d 20 7b 74 69 74 6c 65 7d 22 29 00 00 00 3e 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f t}.-.{title}")...>........if.(no
bc20 74 20 73 63 72 6f 62 62 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c 65 20 61 6e 64 20 6c t.scrobbled.and.last_title.and.l
bc40 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 20 20 20 20 20 20 20 ast_duration.and...B............
bc60 20 20 20 20 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 2f 20 ....(elapsed.>=.last_duration./.
bc80 32 20 6f 72 20 65 6c 61 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 49 20 20 20 20 20 20 2.or.elapsed.>=.240)):...I......
bca0 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 72 74 69 73 74 2c 20 ......scrobble(sk,.last_artist,.
bcc0 6c 61 73 74 5f 74 69 74 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c 61 73 74 5f 73 74 61 last_title,.last_album,.last_sta
bce0 72 74 29 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 54 rt)................scrobbled.=.T
bd00 72 75 65 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 53 63 72 6f 62 rue...=............print(f"Scrob
bd20 62 6c 65 64 3a 20 7b 6c 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 73 74 5f 74 69 74 6c bled:.{last_artist}.-.{last_titl
bd40 65 7d 22 29 00 00 00 23 20 20 20 20 20 20 20 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 69 64 e}")...#........mpd_cmd(mpd,."id
bd60 6c 65 20 70 6c 61 79 65 72 22 29 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d le.player")........if.__name__.=
bd80 3d 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 29 00 00 00 00 35 =."__main__":........main()....5
bda0 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 85 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 ................................
bdc0 00 00 00 00 00 00 00 9d 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 24 00 .......................5._....$.
bde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 25 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 ..............%.................
be00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 fd .............................i..
bf60 04 04 01 00 00 00 1a 00 f5 18 00 00 00 8f 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 0a 20 20 ................................
bf80 20 20 6d 61 69 6e 28 29 f5 18 00 00 00 90 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 87 ..main()........................
bfa0 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .............../................
bfc0 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 2f 20 32 20 6f f5 (elapsed.>=.last_duration./.2.o.
bfe0 18 00 00 00 88 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 7a 00 00 00 00 00 00 00 00 00 ......................z.........
c000 00 00 01 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 .......................scrobbled
c020 20 f5 18 00 00 00 7b 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 3c 00 00 00 00 00 00 00 ......{.................<.......
c040 00 00 00 00 01 00 00 00 0b 20 20 20 20 20 20 20 20 22 61 72 f5 18 00 00 00 3d 00 00 00 00 00 00 ................."ar.....=......
c060 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 ................................
c080 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ..............5.................
c0a0 00 00 00 00 00 00 3c 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 ......<.........................
c0c0 00 00 00 00 00 00 f5 18 00 00 00 00 3c 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 3e 00 00 00 ............<...............>...
c0e0 1a 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 00 00 00 f5 18 00 00 ................................
c100 00 00 7a 00 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 0d 00 00 00 2f 00 00 00 00 0e 00 00 00 00 ..z.................../.........
c120 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 f5 18 00 00 00 00 87 00 00 00 2f 00 00 00 ............................/...
c140 00 00 00 00 00 00 00 00 08 00 00 00 0a 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c160 04 01 00 00 00 00 00 00 35 81 5f d0 00 00 00 21 00 00 00 00 00 00 00 22 00 00 00 24 00 00 00 23 ........5._....!......."...$...#
c180 00 00 00 34 00 00 00 04 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...4............................
c1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 fc e3 04 01 00 00 00 18 00 f5 18 00 00 00 34 00 ..............i...............4.
c300 00 00 35 00 00 00 85 00 00 00 01 00 00 00 04 20 20 20 20 f5 18 00 00 00 35 00 00 00 36 00 00 00 ..5.....................5...6...
c320 86 00 00 00 00 f5 18 00 00 00 34 00 00 00 36 00 00 00 86 00 00 00 02 00 00 00 5b 20 20 20 20 72 ..........4...6...........[....r
c340 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 es.=.requests.post("https://ws.a
c360 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 udioscrobbler.com/2.0/",.data=pa
c380 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 27 70 72 69 6e 74 28 rams,.proxies=PROXIES)...'print(
c3a0 66 22 53 63 72 6f 62 62 6c 65 20 72 65 73 70 6f 6e 73 65 3a 20 7b 72 65 73 2e 74 65 78 74 7d 22 f"Scrobble.response:.{res.text}"
c3c0 29 f5 18 00 00 00 36 00 00 00 37 00 00 00 87 00 00 00 00 f5 18 00 00 00 35 00 00 00 37 00 00 00 ).....6...7.............5...7...
c3e0 87 00 00 00 01 00 00 00 27 70 72 69 6e 74 28 66 22 53 63 72 6f 62 62 6c 65 20 72 65 73 70 6f 6e ........'print(f"Scrobble.respon
c400 73 65 3a 20 7b 72 65 73 2e 74 65 78 74 7d 22 29 35 81 f5 18 00 00 00 00 34 00 00 00 00 00 00 00 se:.{res.text}")5.......4.......
c420 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 bc 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c440 05 00 00 00 00 00 00 00 f5 18 00 00 00 00 34 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 01 00 ..............4.................
c460 00 00 27 00 00 00 c0 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7f 00 00 00 00 00 00 00 35 81 ..'...........................5.
c480 5f d0 00 00 00 21 00 00 00 00 00 00 00 00 00 00 00 23 00 00 00 22 00 00 00 01 00 00 00 00 00 00 _....!...........#..."..........
c4a0 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c600 00 00 00 00 69 98 fc c9 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 86 00 00 00 00 00 00 00 ....i...........................
c620 01 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 85 00 00 00 00 00 00 00 01 00 00 .....5..........................
c640 00 00 00 00 00 00 00 00 00 00 00 00 00 9d 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f .............................5._
c660 d0 00 00 00 05 00 00 00 07 00 00 00 00 00 00 00 08 00 00 00 06 00 00 00 1a 00 00 00 00 00 00 00 ................................
c680 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c7c0 00 00 1a 00 00 00 1f 00 00 00 00 00 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 76 00 00 00 00 00 ..........................v.....
c7e0 00 00 00 69 98 f2 80 04 01 00 00 00 00 00 f5 18 00 00 00 19 00 00 00 2d 00 00 00 8d 00 00 00 01 ...i...................-........
c800 00 00 00 00 35 81 f5 18 00 00 00 00 19 00 00 00 00 00 00 00 12 00 00 00 20 00 00 00 00 00 00 00 ....5...........................
c820 00 00 00 00 f0 01 00 00 00 00 00 00 3c 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 ............<...............5._.
c840 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 1a 00 00 00 00 00 00 00 00 ................................
c860 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c9c0 00 00 69 98 f2 83 04 01 00 00 00 06 00 f5 18 00 00 00 1a 00 00 00 1b 00 00 00 7b 00 00 00 00 f5 ..i.......................{.....
c9e0 18 00 00 00 19 00 00 00 1b 00 00 00 7b 00 00 00 15 00 00 00 16 64 65 66 20 67 65 74 5f 73 65 73 ............{........def.get_ses
ca00 73 69 6f 6e 5f 6b 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 6f 6b 65 6e 5f 72 65 73 20 3d 20 72 sion_key():...K....token_res.=.r
ca20 65 71 75 65 73 74 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 equests.get("https://ws.audioscr
ca40 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 72 61 6d 73 3d 7b 00 00 00 22 20 20 obbler.com/2.0/",.params={..."..
ca60 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 54 6f 6b 65 6e 22 2c ......"method":."auth.getToken",
ca80 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 ............"api_key":.API_KEY,.
caa0 00 00 18 20 20 20 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a 20 22 6a 73 6f 6e 22 00 00 00 06 20 ..........."format":."json".....
cac0 20 20 20 7d 29 00 00 00 2c 20 20 20 20 70 72 69 6e 74 28 22 54 6f 6b 65 6e 20 72 65 73 70 6f 6e ...})...,....print("Token.respon
cae0 73 65 3a 22 2c 20 74 6f 6b 65 6e 5f 72 65 73 2e 74 65 78 74 29 00 00 00 25 20 20 20 20 74 6f 6b se:",.token_res.text)...%....tok
cb00 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 74 6f 6b 65 6e 22 5d 00 00 en.=.token_res.json()["token"]..
cb20 00 00 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2a 20 20 20 20 20 20 20 20 ..........params.=.{...*........
cb40 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 4d 6f 62 69 6c 65 53 65 73 73 69 6f 6e "method":."auth.getMobileSession
cb60 22 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 75 73 65 72 6e 61 6d 65 22 3a 20 55 53 45 52 4e 41 ",............"username":.USERNA
cb80 4d 45 2c 00 00 00 22 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 22 3a 20 6d 64 35 28 50 ME,..."........"password":.md5(P
cba0 41 53 53 57 4f 52 44 29 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 ASSWORD),............"api_key":.
cbc0 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b API_KEY,........}...$....params[
cbe0 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 "api_sig"].=.sign(params).......
cc00 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 00 00 00 .params["format"].=."json"......
cc20 00 4a 20 20 20 20 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 .J....res.=.requests.post("https
cc40 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 ://ws.audioscrobbler.com/2.0/",.
cc60 64 61 74 61 3d 70 61 72 61 6d 73 29 00 00 00 28 20 20 20 20 70 72 69 6e 74 28 22 53 65 73 73 69 data=params)...(....print("Sessi
cc80 6f 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 72 65 73 2e 74 65 78 74 29 00 00 00 27 20 20 20 20 on.response:",.res.text)...'....
cca0 72 65 74 75 72 6e 20 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 73 65 73 73 69 6f 6e 22 5d 5b 22 6b 65 return.res.json()["session"]["ke
ccc0 79 22 5d 35 81 f5 18 00 00 00 00 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 27 y"]5...........................'
cce0 00 00 00 f0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 92 02 00 00 00 00 00 00 35 81 e7 aa ...........................5...