টিভিতে কী আছে?


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>

ইউআরএল সংক্ষিপ্তকরণগুলি অনুমোদিত নয় তবে এক্সএমএল পার্সিং লাইব্রেরি অনুমোদিত।

জয়লাভ

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


আপনি কি সাবটাইটেল ট্যাগ দিয়ে একটি পরীক্ষা কেস দিতে পারেন, কারণ লিঙ্কযুক্ত এক্সএমএল ফাইলটিতে (বর্তমানে) কোনওটি নেই।
কার্লকাস্টোর

@ কার্লকাস্টোর আপনি সেখানে যান
বিটা

আমাদের কি স্থানীয় সময়কে লন্ডনের সময়ে রূপান্তর করতে হবে?
কার্লকাস্টোর

2
এই "দ্রুত গল্ফ" ঠিক কি করে তোলে?
মার্টিন ইন্ডার

1
@ মার্টিনএন্ডার আমি মনে করি কারণ আমি এটি দ্রুত লিখেছি: ডি
বিটা

উত্তর:


2

বাশ + কার্ল + এক্সএমএল স্টারলেট, 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

আমি বাশ স্ক্রিপ্টিংয়ে ভাল নই, তবে ঠিকানার সংক্ষিপ্ত সংস্করণকে সংক্ষেপণ করে বা এর অনুরূপ কোনও কিছুর মাধ্যমে ওয়েবসাইট ঠিকানা তৈরি করা সম্ভব?

আসলে তা না. সংক্ষেপণের জন্য খুব ছোট short আনপ্রেসডে 36 বাইট রয়েছে, জিপিপ দিয়ে সংকুচিত হয়েছে 56 বাইট। অন্যান্য সরঞ্জামগুলি আমি আরও বড় ফলাফলের চেষ্টা করেছি।
manatwork

5

পাইথন, 440 428 426 398 395 বাইট

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

রেগেক্সের সাথে এক্সএমএল পার্স করার জন্য দয়া করে আমাকে ক্ষতি করবেন না।

একটি এক্সএমএল পার্সার, 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
এটি ঠিক আছে, আমরা কেবলমাত্র রেগেক্সের সাথে এইচটিএমএল পার্সিংয়ের সাথেই সমস্যা পেয়েছি;)
বিটা ডেক

1
যদি আমার ভুল না হয় তবে আমি মনে করি আপনি breakএমন কিছু দিয়ে প্রতিস্থাপন করতে পারেন যা একটি ত্রুটি সৃষ্টি করে (যেমন 1/0(বা এমনকি এমনকি _))। আমি নিশ্চিত যে আপনার জমাগুলি ত্রুটি সহ প্রস্থান করতে পারে।
লুভজো

তৃতীয় পক্ষের libs অনুমোদিত? হ্যাঁ, তাহলে আপনি পরিবর্তন urllibব্যবহার করতে requestsআপনার প্রথম উদাহরণে: x=requests.get(link).text.split("</p")[:-1]। এটি আপনাকে 2 বাইট সাশ্রয় করবে।
Zizouz212

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.