TV에 무엇입니까?


11

도전

here 사이트의 XML 데이터를 사용하여 현재 BBC 1에 표시되는 프로그램 이름을 표시 하는 프로그램을 작성 하십시오 .

정보

모든 시간은 런던 시간 (포스팅시 GMT + 1, 10 월 30 일 이후 GMT + 0)에 제공됩니다. 따라서 현지 시간을 런던 시간으로 변환해야합니다.

각 프로그램에는 시작 및 종료 시간이 제공됩니다. 현재 시간이 시작 시간 이후와 프로그램 종료 시간 이전 인 경우 해당 프로그램이 현재 표시됩니다. 어쨌든 귀하의 프로그램은 중복을 처리 할 수 ​​있습니다.

출력은 다음과 같이 프로그램 제목이어야합니다.

BBC News

그러나 프로그램에 자막이있는 경우 (자막 태그가있는 경우) 출력은 다음과 같아야합니다.

Steptoe and Son: The Piano

어디 스텝 토와 아들은 제목과 피아노는 자막입니다. 자막이있는 예제 프로그램은 다음과 같습니다.

<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 단축기는 허용되지 않지만 XML 구문 분석 라이브러리는 허용됩니다.

승리

바이트 단위의 가장 짧은 코드가 이깁니다.


연결된 xml 파일에 현재 제목이 없으므로 자막 태그를 사용하여 테스트 사례를 제공 할 수 있습니다.
KarlKastor

@KarlKastor 당신은 간다
Beta Decay

현지 시간을 런던 시간으로 변환해야합니까?
KarlKastor

2
이 "빠른 골프"를 정확히 만드는 것은 무엇입니까?
Martin Ender

1
@MartinEnder 나는 그것을 빨리 썼기 때문에 생각한다 : D
Beta Decay

답변:


2

배쉬 + 컬 + XMLStarlet, 166 자

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 .

샘플 실행 :

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

bash-4.3$ bash bbc.sh 
Bargain Hunt: Carmarthen

나는 bash 스크립팅에 능숙하지 않지만 압축 버전의 주소 또는 유사한 것을 압축 해제하여 웹 사이트 주소를 생성 할 수 있습니까?

실제로는 아닙니다. 압축하기에는 너무 짧습니다. 압축되지 않은 파일은 36 바이트이고 gzip으로 압축 된 파일은 56 바이트입니다. 내가 시도한 다른 도구는 더 큰 결과를 낳습니다.
manatwork

5

파이썬 440 428 426 398 395 바이트

@Loovjo 덕분에 -31 바이트

날짜를 찾으면 오류가 발생합니다.

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],_

정규식으로 XML을 구문 분석하는 것에 대해 나를 아프게하지 마십시오.

xml 파서를 사용하는 버전, 398 바이트

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,_

7
괜찮습니다. 정규 표현식으로 HTML을 파싱하는 데 문제가 있습니다.;)
Beta Decay

1
내가 실수하지 않으면 break오류를 유발하는 것으로 대체 할 수 있다고 생각합니다 (예 1/0:) _. 제출하신 내용이 오류로 종료 될 수 있습니다.
Loovjo

타사 라이브러리가 허용됩니까? 그렇다면 첫 번째 예에서 urllib사용하도록 변경 requests하십시오 x=requests.get(link).text.split("</p")[:-1]. 그러면 2 바이트가 절약됩니다.
Zizouz212

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.