Skip to content

Instantly share code, notes, and snippets.

View chrippa's full-sized avatar

Christopher Rosell chrippa

View GitHub Profile
21:33:37 DEBUG ../src/anidbfs/anidbfs-update.c:236: Connecting to AniDB
21:33:37 DEBUG ../src/anidbfs/anidbfs-update.c:141: <result 0x804c800 (string) "MhSXN">
21:33:37 LOG Hashing dir: /storage/ch01/anime/hdtv
21:33:37 LOG Hashing dir: /storage/ch01/anime/hdtv/ergo_proxy.720p
21:33:37 LOG Hashing dir: /storage/ch01/anime/hdtv/ergo_proxy.720p/[A-Kraze]_Ergo_Proxy_01-12_[1280x720_H264_AAC_5.1]
21:33:37 LOG Hashing file: [A-Kraze]_Ergo_Proxy_-_12_[1280x720_H264_AAC_5.1][84B13C80].mkv
21:33:38 DEBUG ../src/anidbfs/anidbfs-update.c:175: Hash: 8a9eed460c11a9494c5428de202e0e9b
21:33:38 DEBUG ../src/anidbfs/anidbfs-update.c:152: <result 0x804c8b8 (dict)
21:33:38 DEBUG ../src/anidbfs/anidbfs-update.c:155: fid = "256492"
21:33:38 DEBUG ../src/anidbfs/anidbfs-update.c:155: aid = "3302"
// Pseudokod
handle_file (file)
{
// Hasha filen
hash = hashfs_hash_ed2k(file)
// Leta upp metadata
result = anidb_ed2k_lookup(hash)
// Pseudokod
/*
path: /by-group/zx/Shin Seiki Evangelion/Shin Seiki Evangelion 01.mkv
level 0: /
level 1: by-group
level 2: zx
level 3: Shin Seiki Evangelion
// mounts
{
"by-name": {
{ "query": "pkey.BeginsWith(set:anidb:anime)", "display": "$romaji [$eps]" }
{ "query": "pkey.BeginsWith(file:), anime.Equals($prev[1].pkey)", "display": "$anime_romaji - $ep_number [$group_name].$ext" }
},
"by-group": {
{ "query": "pkey.BeginsWith(set:anidb:group)", "display": "$name" },
{ "query": "pkey.BeginsWith(file:), group.Equals($prev[1].pkey)", "groupby": "anime", "display": "$romaji" },
diff --git a/src/livestreamer/cli.py b/src/livestreamer/cli.py
index a30b58f..a60b184 100644
--- a/src/livestreamer/cli.py
+++ b/src/livestreamer/cli.py
@@ -62,6 +62,8 @@ outputopt.add_argument("-O", "--stdout", action="store_true",
streamopt = parser.add_argument_group("stream options")
streamopt.add_argument("-c", "--cmdline", action="store_true",
help="Print command-line used internally to play stream, this may not be available on all streams")
+streamopt.add_argument("--repr", action="store_true",
+ help="Print internal representation of the stream, useful for external programs that wants access to internal parameters")
diff --git a/src/livestreamer/cli.py b/src/livestreamer/cli.py
index a60b184..d0148dd 100644
--- a/src/livestreamer/cli.py
+++ b/src/livestreamer/cli.py
@@ -310,9 +310,21 @@ def handle_url(args):
if len(streams) == 0:
exit("No streams found on this URL: {0}", args.url)
- keys = list(streams.keys())
- keys.sort()
var xmmsclient = require('xmmsclient'),
util = require('util')
var client = new xmmsclient.Client('blackcat');
client.onconnect = function () {
console.log("Connected!")
client.playback.broadcast_current_id().onvalue = function (id) {
client.medialib.get_info(id).onvalue = function (propdict) {
metadata = xmmsclient.PropDict.flatten(propdict)
@chrippa
chrippa / twitchdl.sh
Last active December 20, 2015 15:09
#!/bin/sh
CHANNEL=$1
while true; do
OUTPUT="./$CHANNEL-$(date +%Y-%m-%d).flv"
if [ -f $OUTPUT ]; then
for i in `seq 1 99`; do
filename="$OUTPUT.$i"
@chrippa
chrippa / blizzcon.py
Created November 8, 2013 02:15
Livestreamer plugin for Blizzcon esport streams, valid urls: blizzcon://sc2 blizzcon://wow blizzcon://esports
from livestreamer.plugin import Plugin
from livestreamer.stream import HTTPStream
from livestreamer.utils import urlget, parse_json, res_xml
import re
CHANNELS = {
"sc2": ["blizzcon2013_scii_d1_ah_l",
"blizzcon2013_scii_d1_ah_m",
"blizzcon2013_scii_d1_ah_h"],
@chrippa
chrippa / gist:7402186
Created November 10, 2013 18:50
livestream.com test
import librtmp
channel = "tv_zenica_live"
url = "rtmp://x" + channel + "x.e.channel.livestream.com/mogulus-edge/" + channel
data = ["player", None, "instance390", "", None, {}, "password", 197377, True]
conn = librtmp.RTMP(url, connect_data=data, app="mogulus-edge/" + channel)
status = conn.connect().result()