Was ist im Fernsehen?

11

Herausforderung

Schreiben Sie ein Programm, das unter Verwendung der XML-Daten von der Site hier den Namen des Programms anzeigt, das derzeit auf BBC 1 angezeigt wird.

Information

Alle Zeiten sind zur Londoner Zeit angegeben (GMT + 1 zum Zeitpunkt der Veröffentlichung und GMT + 0 nach dem 30. Oktober). Daher sollten Sie Ihre Ortszeit in Londoner Zeit umrechnen.

Jedes Programm erhält eine Start- und Endzeit. Wenn die aktuelle Zeit nach der Startzeit und vor der Endzeit eines Programms liegt, wird dieses Programm derzeit angezeigt. Ihr Programm kann Überlappungen nach Belieben verarbeiten.

Ihre Ausgabe muss der Programmtitel sein, wie folgt:

BBC News

Wenn das Programm jedoch einen Untertitel hat (angezeigt durch das Vorhandensein des Untertitel-Tags), sollte die Ausgabe folgendermaßen aussehen:

Steptoe and Son: The Piano

Wo Steptoe and Son der Titel und The Piano der Untertitel ist. Ein Beispielprogramm mit einem Untertitel lautet wie folgt:

<programme>
    <subtitle>Newcastle</subtitle>
    <title>Flog It!</title>
    <end>1710</end>
    <start>1610</start>
    <desc>
      Antiques series. Paul Martin presents from the Discovery Museum in Newcastle. The items uncovered include a book of autographs with a local connection. Also in HD. [S]
    </desc>
</programme>

URL-Shortener sind nicht zulässig, XML-Parsing-Bibliotheken sind jedoch zulässig.

Gewinnen

Der kürzeste Code in Bytes gewinnt.

Beta-Zerfall
quelle
Können Sie einen Testfall mit einem Untertitel-Tag angeben, da die verknüpfte XML-Datei (derzeit) keinen enthält?
KarlKastor
@ KarlKastor Los geht's
Beta Decay
Müssen wir die Ortszeit in Londoner Zeit umrechnen?
KarlKastor
2
Was genau macht dieses "schnelle Golf" aus?
Martin Ender
1
@ MartinEnder Ich nehme an, weil ich es schnell geschrieben habe: D
Beta Decay

Antworten:

2

Bash + Curl + XMLStarlet, 166 Zeichen

d=`TZ=Europe/London date +%H%M`
curl -s bleb.org/tv/data/listings/0/bbc1.xml|xmlstarlet sel -t -m "//programme[start<=$d and end>$d]" -v title -m subtitle -o :\  -v .

Probelauf:

bash-4.3$ date 
Mon Aug 22 14:17:07 EEST 2016

bash-4.3$ bash bbc.sh 
Bargain Hunt: Carmarthen
Mann bei der Arbeit
quelle
Ich bin nicht gut im Bash-Scripting, aber ist es möglich, die Website-Adresse durch Dekomprimieren der komprimierten Version der Adresse oder ähnlichem zu erstellen?
Nicht wirklich. Ist zu kurz für die Komprimierung. Unkomprimiert hat 36 Bytes, komprimiert mit gzip hat 56 Bytes. Andere Werkzeuge, die ich ausprobiert habe, liefern noch größere Ergebnisse.
Manatwork
5

Python, 440 428 426 398 395 Bytes

-31 Bytes dank @Loovjo

Wirft einen Fehler, wenn das Datum gefunden wurde.

import re,pytz,urllib
from datetime import*
x=urllib.urlopen("http://www.bleb.org/tv/data/listings/0/bbc1.xml").read().split("</p")[:-1]
for m,n in enumerate(re.search("\d*</s",i).group()for i in x):
 if n>datetime.strftime(datetime.now(pytz.utc).astimezone(pytz.timezone('Europe/London')),"%H%M"):print re.search(">.*?</t",x[m-1]).group()[1:-3],": "+re.search("e>.*?</s",x[m-1]).group()[2:-3],_

Bitte verletze mich nicht, wenn ich XML mit Regex analysiere.

Version mit einem XML-Parser, 398 Bytes

import re,pytz,urllib
import xml.etree.ElementTree as ET
from datetime import*
x=list(ET.parse(urllib.urlretrieve("http://www.bleb.org/tv/data/listings/0/bbc1.xml")[0]).getroot())
for m,n in enumerate(i.find("start").text for i in x):
 if n>datetime.strftime(datetime.now(pytz.utc).astimezone(pytz.timezone('Europe/London')),"%H%M"):print x[m-1].find("title").text,": "+x[0].find("subtitle").text,_
KarlKastor
quelle
7
Es ist okay, wir haben nur Probleme mit dem Parsen von HTML mit Regex;)
Beta Decay
1
Wenn ich mich nicht irre, können Sie das breakdurch etwas ersetzen , das einen Fehler verursacht (wie 1/0(oder vielleicht sogar _)). Ich bin mir ziemlich sicher, dass Ihre Einsendungen mit einem Fehler beendet werden können.
Loovjo
Sind Bibliotheken von Drittanbietern erlaubt? Wenn ja, ändern Sie die urllibVerwendung requestsin Ihrem ersten Beispiel : x=requests.get(link).text.split("</p")[:-1]. Das spart Ihnen 2 Bytes.
Zizouz212
@ Zizouz212 Ja, Anfragen sind erlaubt
Beta Decay