टीवी पर क्या है?


11

चुनौती

एक प्रोग्राम लिखें, जो यहां साइट से एक्सएमएल डेटा का उपयोग करके , उस प्रोग्राम का नाम प्रदर्शित करें जो वर्तमान में बीबीसी 1 पर दिखाई दे रहा है।

जानकारी

सभी समय लंदन के समय (पोस्टिंग के समय GMT + 1 और 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 वहाँ तुम जाओ
बीटा Decay

क्या हमें स्थानीय समय को लंदन के समय में बदलना है?
कार्लकॉस्टर

2
क्या वास्तव में यह "त्वरित गोल्फ" बनाता है?
मार्टिन एंडर

1
@MartinEnder मुझे लगता है क्योंकि मैंने इसे जल्दी से लिखा है: D
बीटा

जवाबों:


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

मैं बैश स्क्रिप्टिंग में अच्छा नहीं हूं, लेकिन क्या वेबसाइट के पते के संपीड़ित संस्करण को डिकम्प्रेसिंग के माध्यम से या कुछ इसी तरह का उत्पादन करना संभव है?

ज़रुरी नहीं। संपीड़न के लिए बहुत कम है। अनकम्प्रेस्ड में 36 बाइट्स होते हैं, गज़िप के साथ 56 बाइट्स होते हैं। अन्य उपकरणों की कोशिश की मैं भी बड़ा परिणाम का उत्पादन किया।
मैनटवर्क

5

पायथन, 440 428 426 398 395 बाइट्स

-31 बाइट्स @Lovjo को धन्यवाद

दिनांक मिलते ही एक त्रुटि फेंकता है।

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

कृपया मुझे regex के साथ 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 के पुनर्जन्म के साथ समस्याएँ मिली हैं;)
बीटा डेके

1
अगर मुझसे गलती नहीं हुई है, तो मुझे लगता है कि आप किसी breakऐसी चीज की जगह ले सकते हैं जो त्रुटि का कारण बनती है (जैसे कि 1/0(या शायद भी _))। मुझे पूरा यकीन है कि आपकी प्रस्तुतियाँ एक त्रुटि के साथ बाहर निकल सकती हैं।
लोवजो

क्या तृतीय पक्ष की अनुमति है? यदि हाँ, तो आप अपने पहले उदाहरण में urllibउपयोग करने के लिए बदल जाते हैं :। यह आपको 2 बाइट्स बचाएगा। requestsx=requests.get(link).text.split("</p")[:-1]
Zizouz212

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.