Compare commits
No commits in common. "010ecad8ce8c6f1ef7c7282075ba21573a48f8e2" and "058f230ef0c079ad72243b392964330d851c10c6" have entirely different histories.
010ecad8ce
...
058f230ef0
|
@ -1,198 +0,0 @@
|
||||||
#!/bin/bash -e
|
|
||||||
# Provide a more complete configuration for LS_COLORS, which can be useful in
|
|
||||||
# some specific directories, but is a bit cumbersome to enable by default
|
|
||||||
# because of the gigantic and ugly env variable it sets.
|
|
||||||
# This script has to be sourced and not merely executed to have any effect!
|
|
||||||
CONFIG_PATH="$(mktemp)"
|
|
||||||
cat << EOF > "$CONFIG_PATH"
|
|
||||||
# Configuration file for dircolors, a utility to help you set the
|
|
||||||
# LS_COLORS environment variable used by GNU ls with the --color option.
|
|
||||||
# Copyright (C) 1996-2016 Free Software Foundation, Inc.
|
|
||||||
# Copying and distribution of this file, with or without modification,
|
|
||||||
# are permitted provided the copyright notice and this notice are preserved.
|
|
||||||
# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
|
|
||||||
# slackware version of dircolors) are recognized but ignored.
|
|
||||||
# Below are TERM entries, which can be a glob patterns, to match
|
|
||||||
# against the TERM environment variable to determine if it is colorizable.
|
|
||||||
TERM Eterm
|
|
||||||
TERM ansi
|
|
||||||
TERM *color*
|
|
||||||
TERM con[0-9]*x[0-9]*
|
|
||||||
TERM cons25
|
|
||||||
TERM console
|
|
||||||
TERM cygwin
|
|
||||||
TERM dtterm
|
|
||||||
TERM gnome
|
|
||||||
TERM hurd
|
|
||||||
TERM jfbterm
|
|
||||||
TERM konsole
|
|
||||||
TERM kterm
|
|
||||||
TERM linux
|
|
||||||
TERM linux-c
|
|
||||||
TERM mlterm
|
|
||||||
TERM putty
|
|
||||||
TERM rxvt*
|
|
||||||
TERM screen*
|
|
||||||
TERM st
|
|
||||||
TERM terminator
|
|
||||||
TERM tmux*
|
|
||||||
TERM vt100
|
|
||||||
TERM xterm*
|
|
||||||
# Below are the color init strings for the basic file types. A color init
|
|
||||||
# string consists of one or more of the following numeric codes:
|
|
||||||
# Attribute codes:
|
|
||||||
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
|
|
||||||
# Text color codes:
|
|
||||||
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
|
|
||||||
# Background color codes:
|
|
||||||
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
|
|
||||||
#NORMAL 00 # no color code at all
|
|
||||||
#FILE 00 # regular file: use no color at all
|
|
||||||
RESET 0 # reset to "normal" color
|
|
||||||
DIR 01;34 # directory
|
|
||||||
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
|
|
||||||
# numerical value, the color is as for the file pointed to.)
|
|
||||||
MULTIHARDLINK 00 # regular file with more than one link
|
|
||||||
FIFO 40;33 # pipe
|
|
||||||
SOCK 01;35 # socket
|
|
||||||
DOOR 01;35 # door
|
|
||||||
BLK 40;33;01 # block device driver
|
|
||||||
CHR 40;33;01 # character device driver
|
|
||||||
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ...
|
|
||||||
MISSING 00 # ... and the files they point to
|
|
||||||
SETUID 37;41 # file that is setuid (u+s)
|
|
||||||
SETGID 30;43 # file that is setgid (g+s)
|
|
||||||
CAPABILITY 30;41 # file with capability
|
|
||||||
STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
|
|
||||||
OTHER_WRITABLE 30;42 # dir that is other-writable (o+w) and not sticky
|
|
||||||
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
|
|
||||||
# This is for files with execute permission:
|
|
||||||
EXEC 01;32
|
|
||||||
# List any file extensions like '.gz' or '.tar' that you would like ls
|
|
||||||
# to colorize below. Put the extension, a space, and the color init string.
|
|
||||||
# (and any comments you want to add after a '#')
|
|
||||||
# If you use DOS-style suffixes, you may want to uncomment the following:
|
|
||||||
#.cmd 01;32 # executables (bright green)
|
|
||||||
#.exe 01;32
|
|
||||||
#.com 01;32
|
|
||||||
#.btm 01;32
|
|
||||||
#.bat 01;32
|
|
||||||
# Or if you want to colorize scripts even if they do not have the
|
|
||||||
# executable bit actually set.
|
|
||||||
#.sh 01;32
|
|
||||||
#.csh 01;32
|
|
||||||
# archives or compressed (bright red)
|
|
||||||
.tar 01;31
|
|
||||||
.tgz 01;31
|
|
||||||
.arc 01;31
|
|
||||||
.arj 01;31
|
|
||||||
.taz 01;31
|
|
||||||
.lha 01;31
|
|
||||||
.lz4 01;31
|
|
||||||
.lzh 01;31
|
|
||||||
.lzma 01;31
|
|
||||||
.tlz 01;31
|
|
||||||
.txz 01;31
|
|
||||||
.tzo 01;31
|
|
||||||
.t7z 01;31
|
|
||||||
.zip 01;31
|
|
||||||
.z 01;31
|
|
||||||
.Z 01;31
|
|
||||||
.dz 01;31
|
|
||||||
.gz 01;31
|
|
||||||
.lrz 01;31
|
|
||||||
.lz 01;31
|
|
||||||
.lzo 01;31
|
|
||||||
.xz 01;31
|
|
||||||
.zst 01;31
|
|
||||||
.tzst 01;31
|
|
||||||
.bz2 01;31
|
|
||||||
.bz 01;31
|
|
||||||
.tbz 01;31
|
|
||||||
.tbz2 01;31
|
|
||||||
.tz 01;31
|
|
||||||
.deb 01;31
|
|
||||||
.rpm 01;31
|
|
||||||
.jar 01;31
|
|
||||||
.war 01;31
|
|
||||||
.ear 01;31
|
|
||||||
.sar 01;31
|
|
||||||
.rar 01;31
|
|
||||||
.alz 01;31
|
|
||||||
.ace 01;31
|
|
||||||
.zoo 01;31
|
|
||||||
.cpio 01;31
|
|
||||||
.7z 01;31
|
|
||||||
.rz 01;31
|
|
||||||
.cab 01;31
|
|
||||||
# image formats
|
|
||||||
.jpg 01;35
|
|
||||||
.jpeg 01;35
|
|
||||||
.mjpg 01;35
|
|
||||||
.mjpeg 01;35
|
|
||||||
.gif 01;35
|
|
||||||
.bmp 01;35
|
|
||||||
.pbm 01;35
|
|
||||||
.pgm 01;35
|
|
||||||
.ppm 01;35
|
|
||||||
.tga 01;35
|
|
||||||
.xbm 01;35
|
|
||||||
.xpm 01;35
|
|
||||||
.tif 01;35
|
|
||||||
.tiff 01;35
|
|
||||||
.png 01;35
|
|
||||||
.svg 01;35
|
|
||||||
.svgz 01;35
|
|
||||||
.mng 01;35
|
|
||||||
.pcx 01;35
|
|
||||||
.mov 01;35
|
|
||||||
.mpg 01;35
|
|
||||||
.mpeg 01;35
|
|
||||||
.m2v 01;35
|
|
||||||
.mkv 01;35
|
|
||||||
.webm 01;35
|
|
||||||
.ogm 01;35
|
|
||||||
.mp4 01;35
|
|
||||||
.m4v 01;35
|
|
||||||
.mp4v 01;35
|
|
||||||
.vob 01;35
|
|
||||||
.qt 01;35
|
|
||||||
.nuv 01;35
|
|
||||||
.wmv 01;35
|
|
||||||
.asf 01;35
|
|
||||||
.rm 01;35
|
|
||||||
.rmvb 01;35
|
|
||||||
.flc 01;35
|
|
||||||
.avi 01;35
|
|
||||||
.fli 01;35
|
|
||||||
.flv 01;35
|
|
||||||
.gl 01;35
|
|
||||||
.dl 01;35
|
|
||||||
.xcf 01;35
|
|
||||||
.xwd 01;35
|
|
||||||
.yuv 01;35
|
|
||||||
.cgm 01;35
|
|
||||||
.emf 01;35
|
|
||||||
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
|
|
||||||
.ogv 01;35
|
|
||||||
.ogx 01;35
|
|
||||||
# audio formats
|
|
||||||
.aac 00;36
|
|
||||||
.au 00;36
|
|
||||||
.flac 00;36
|
|
||||||
.m4a 00;36
|
|
||||||
.mid 00;36
|
|
||||||
.midi 00;36
|
|
||||||
.mka 00;36
|
|
||||||
.mp3 00;36
|
|
||||||
.mpc 00;36
|
|
||||||
.ogg 00;36
|
|
||||||
.ra 00;36
|
|
||||||
.wav 00;36
|
|
||||||
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
|
|
||||||
.oga 00;36
|
|
||||||
.opus 00;36
|
|
||||||
.spx 00;36
|
|
||||||
.xspf 00;36
|
|
||||||
EOF
|
|
||||||
eval "$(dircolors "$CONFIG_PATH")"
|
|
|
@ -1,116 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
"""Python bindings to the Nectarine Queue interface
|
|
||||||
|
|
||||||
If used as a script, print on stdout the current track song and artist(s).
|
|
||||||
|
|
||||||
It's mainly useful if you work with terminals around and don't want to keep the
|
|
||||||
Nectarine tab under your eyes all the time (even if it's raina's design).
|
|
||||||
Respect their servers, and long live Nectarine!
|
|
||||||
|
|
||||||
Requirements: the requests package.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import xml.etree.ElementTree as ElementTree
|
|
||||||
from dataclasses import dataclass
|
|
||||||
|
|
||||||
import requests
|
|
||||||
|
|
||||||
QUEUE_URL = "https://scenestream.net/demovibes/xml/queue/"
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class Artist:
|
|
||||||
ident: int
|
|
||||||
flag: str
|
|
||||||
name: str
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class Song:
|
|
||||||
ident: int
|
|
||||||
length: str
|
|
||||||
title: str
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class Requester:
|
|
||||||
flag: str
|
|
||||||
name: str
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class Entry:
|
|
||||||
request_time: str
|
|
||||||
artists: list[Artist]
|
|
||||||
song: Song
|
|
||||||
requester: Requester
|
|
||||||
playstart: str
|
|
||||||
|
|
||||||
|
|
||||||
def get_queue_xml(url=QUEUE_URL):
|
|
||||||
"""Return the XML tree from the API, or None on error."""
|
|
||||||
response = requests.get(url)
|
|
||||||
if response.status_code != 200:
|
|
||||||
sys.stderr.write(f"Failed to open URL: {QUEUE_URL}")
|
|
||||||
return None
|
|
||||||
return ElementTree.XML(response.text)
|
|
||||||
|
|
||||||
|
|
||||||
def get_now_playing(queue_xml):
|
|
||||||
"""Return the Entry of the currently playing song."""
|
|
||||||
entry_node = queue_xml.find("now").find("entry")
|
|
||||||
return parse_entry(entry_node)
|
|
||||||
|
|
||||||
|
|
||||||
def parse_entry(entry_node) -> Entry:
|
|
||||||
artists = entry_node.findall("artist")
|
|
||||||
song = entry_node.find("song")
|
|
||||||
req = entry_node.find("requester")
|
|
||||||
playstart = entry_node.find("playstart")
|
|
||||||
return Entry(
|
|
||||||
request_time=entry_node.get("request_time"),
|
|
||||||
artists=[
|
|
||||||
Artist(
|
|
||||||
ident=artist.get("id"),
|
|
||||||
flag=artist.get("flag"),
|
|
||||||
name=artist.text,
|
|
||||||
)
|
|
||||||
for artist in artists
|
|
||||||
],
|
|
||||||
song=Song(
|
|
||||||
ident=song.get("id"),
|
|
||||||
length=song.get("length"),
|
|
||||||
title=song.text,
|
|
||||||
),
|
|
||||||
requester=Requester(
|
|
||||||
flag=req.get("flag"),
|
|
||||||
name=req.text,
|
|
||||||
),
|
|
||||||
playstart=playstart.text,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
queue_xml = get_queue_xml()
|
|
||||||
if queue_xml is None:
|
|
||||||
return
|
|
||||||
now_playing = get_now_playing(queue_xml)
|
|
||||||
|
|
||||||
print(
|
|
||||||
"{artists} — {song} [{length}] — requested by {req}".format(
|
|
||||||
artists=(
|
|
||||||
" & ".join(
|
|
||||||
f"{a.name} ({a.flag})"
|
|
||||||
for a in now_playing.artists
|
|
||||||
)
|
|
||||||
),
|
|
||||||
song=now_playing.song.title,
|
|
||||||
length=now_playing.song.length,
|
|
||||||
req=now_playing.requester.name,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
|
@ -34,9 +34,7 @@ cat << EOF > "$HTML_FILE"
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<pre>
|
|
||||||
$(cat "$1")
|
$(cat "$1")
|
||||||
</pre>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
EOF
|
EOF
|
||||||
|
|
Loading…
Reference in a new issue