কঙ্কির পক্ষে কি শব্দগুলিতে সময় প্রদর্শন করা সম্ভব এবং সংখ্যায় নয়?


10

আমি সংখ্যাগুলি নয় বরং কঙ্কি শব্দ ব্যবহার করে সময় প্রদর্শন করতে চাই।

আমি যা করতে চাই তা কমবেশি কীভাবে পেবল ওয়াচটি দেখায় ( রেড ওয়াচ )।

এখানে চিত্র বর্ণনা লিখুন

চিত্রটিতে লাইক থাকলেও, কেবল সময় এবং তারিখটি প্রদর্শিত না হলেও।

এটা কি সম্ভব?


চিত্রগুলি ব্যবহার করা আমার কাছে অনেক কঠিন বলে মনে হয় ... আমি কখনই লুয়ায় প্রোগ্রাম করি নি বা কঙ্কি আগে ব্যবহার করিনি, তবে আমি সোমবার সকালে একটি দুর্দান্ত চ্যালেঞ্জ দেখেছি এবং উত্তরটি লেখার সাথে শেষ করতে আমাকে 2 ঘন্টা সময় লেগেছে: পি
জেরহার্ড বার্গার

এটা ঠিক আছে এটা আমার কিছু চিন্তা ছিল। কোন উত্তরগুলি সবচেয়ে ভাল কাজ করে তা এখনও চেষ্টা করি নি।
উরি হেরেরা

উত্তর:


9

লুয়া স্ক্রিপ্টিং সমাধান

লুয়া স্ক্রিপ্টিং ব্যবহার করে এটি সম্ভবত সম্ভব। আপনি নীচের স্ক্রিপ্টটি ব্যবহার করতে পারেন (নম্বর রূপান্তরটি rosettacode.org থেকে নেওয়া হয়েছে )।

স্ক্রিপ্টটি বিরক্তিকর বিকল্প করতে পারে, যা 12:45 থেকে "বারো পঁয়তাল্লিশ" অনুবাদ করে দেবে, এবং একটি দুর্দান্ত বিকল্প এটি এটি "চতুর্থাংশের এক ভাগ" হিসাবে অনুবাদ করবে। এটি একটি উরি হেরেরা বিকল্পও করে যা ঘন্টাটি সাহসী করে;)

সময় পরিবর্তনের সাথে সাথে এটি স্বয়ংক্রিয়ভাবে সতেজ হয়।

words = {"one ", "two ", "three ", "four ", "five ", "six ", "seven ", "eight ", "nine "}
levels = {"thousand ", "million ", "billion ", "trillion ", "quadrillion ", "quintillion ", "sextillion ", "septillion ", "octillion ", [0] = ""}
iwords = {"ten ", "twenty ", "thirty ", "forty ", "fifty ", "sixty ", "seventy ", "eighty ", "ninety "}
twords = {"eleven ", "twelve ", "thirteen ", "fourteen ", "fifteen ", "sixteen ", "seventeen ", "eighteen ", "nineteen "}

function digits(n)
  local i, ret = -1
  return function()
    i, ret = i + 1, n % 10
    if n > 0 then
      n = math.floor(n / 10)
      return i, ret
    end
  end
end

level = false
function getname(pos, dig)
  level = level or pos % 3 == 0
  if(dig == 0) then return "" end
  local name = (pos % 3 == 1 and iwords[dig] or words[dig]) .. (pos % 3 == 2 and "hundred " or "")
  if(level) then name, level = name .. levels[math.floor(pos / 3)], false end
  return name
end

function numberToWord(number)
    if(number == 0) then return "zero" end
    vword = ""
    for i, v in digits(number) do
      vword = getname(i, v) .. vword
    end

    for i, v in ipairs(words) do
      vword = vword:gsub("ty " .. v, "ty-" .. v)
      vword = vword:gsub("ten " .. v, twords[i])
    end
    return vword
end

function conky_boringTime()
    hour = os.date("%H") + 0
    minute = os.date("%M") + 0
    return numberToWord(hour) .. numberToWord(minute)
end

function conky_awesomeTime()
    hour = os.date("%H") + 0
    minute = os.date("%M") + 0
    hour = hour % 12
    if(hour == 0) then 
        hour, nextHourWord = 12, "one " 
    else
        nextHourWord = numberToWord(hour+1)
    end
    hourWord = numberToWord(hour)
    if(minute == 0 ) then 
        return hourWord .. "o'clock"
    elseif(minute == 30) then
        return "half past " .. hourWord
    elseif(minute == 15) then
        return "a quarter past " .. hourWord 
    elseif(minute == 45) then
        return "a quarter to " .. nextHourWord 
    else
        if(minute < 30) then
            return numberToWord(minute) .. "past " .. hourWord
        else
            return numberToWord(60-minute) .. "to " .. nextHourWord
        end
    end
end

function conky_getHourWord()
    return numberToWord(os.date("%H") + 0)
end

function conky_getMinuteWord()
    return numberToWord(os.date("%M") + 0)
end

এখন এটিকে কোথাও সংরক্ষণ করুন, এই প্রশ্নের উদ্দেশ্য হিসাবে ধরে নিই আমরা এটি সংরক্ষণ করি ~/.config/conky/scripts/pretty_time.lua

একটি লাইন যুক্ত .conkyrcকরার আগে এখন আপনার সম্পাদনা করুনTEXT

lua_load ~/.config/conky/scripts/pretty_time.lua

এটি স্ক্রিপ্টটি লোড করে যাতে আমরা ফাংশনগুলি অ্যাক্সেস করতে পারি।

তারপরে, নীচের উপযুক্ত জায়গায় TEXT, আপনি নিম্নলিখিত পদ্ধতিতে ফাংশনগুলি কল করতে পারেন (কঙ্কি স্বয়ংক্রিয়ভাবে conky_উপসর্গ যোগ করে )

TEXT
...
${color grey}Boring time:$color ${lua boringTime}
${color grey}Awesome time:$color ${lua awesomeTime}
${color grey}Special Uri Herrera:$color ${font Aria:bold} ${lua getHourWord}$font ${lua getMinuteWord}
...

এর ফলে হবে

এখানে চিত্র বর্ণনা লিখুন

আপনি যদি সেকেন্ড চান, এটি নিজেকে যুক্ত করা খুব কঠিন হওয়া উচিত নয়।


গ্রেট! পাঠ্যের আকারটি কীভাবে পরিবর্তন করা যায় তা খুঁজে পেতে এখন ভাল কাজ করে।
উরি হেরেরার

3

হ্যাঁ, এটি সম্ভব তবে কেবল লুয়া স্ক্রিপ্টিংয়ের মাধ্যমে। আপনার একটি স্ক্রিপ্টের দরকার হবে যা সংখ্যার মধ্যে নেয় এবং শব্দগুলি আউটপুট করে। জ্যাঙ্গোর মতো অনেকগুলি ফ্রেমওয়ার্কের এই বৈশিষ্ট্য রয়েছে তবে এটির জন্য সমতুল্য লুয়া গ্রন্থাগার না থাকলে আপনি নিজেরাই থাকতে পারেন:

function conky_translate_number(number) {
    if (number == 1) { 
        return "one";
    } else {
        return "not a clue";
    }
}

আপনি কেবল একটি পাইথন স্ক্রিপ্ট লিখতে চাইতে পারেন যা এটির মোক্ষম ভাষা ব্যবহার করে অনুবাদটির জন্য জ্যাঙ্গোকে উপকৃত করে।


ঠিক আছে ধন্যবাদ, আপনি একটি উদাহরণ যোগ করতে পারেন?
উরি হেরেরা

সম্পন্ন, প্রাথমিক, কিন্তু হ্যাঁ। আপনি চাইলে আমি বিশদভাবে বলতে পারি, তবে আপনাকে পাইথনকে সম্পূর্ণরূপে শেখানো প্রশ্নের ক্ষেত্রের বাইরে বলে মনে হচ্ছে :)
নাফতুলি কে

এটি আমি যা ভাবি তার থেকে কিছুটা জটিল, আমি সম্ভবত সম্পূর্ণ চিত্র (এক, দুই, তিন, ইত্যাদি) যুক্ত চিত্রগুলির ব্যবহারের পংক্তিতে আরও ভাবছিলাম এবং এই চিত্রগুলির প্রতিটি সময় অনুসারে পরিবর্তিত হবে, তাই যদি এটি 12 হয় : 22 এটি বারো বিশটি প্রদর্শিত হবে।
উরি হেরেরা

@ উরিহেরা আসলে এটি বেশ কার্যকর, আমার উত্তর দেখুন
জেরহার্ড বার্গার

2

আপনি এই সোর্সফোজের পৃষ্ঠায়pynum2word উপলব্ধ লাইব্রেরি ব্যবহার করে এর জন্য পাইথন স্ক্রিপ্ট লিখতে পারেন

মূলত এটি যা করে তা হ'ল:

>>> import num2word
>>> num2word.to_card(10)
'ten'
>>> num2word.to_card(100)
'one hundred'
>>> num2word.to_card(1025)
'one thousand and twenty-five'

একটি তুচ্ছ উদাহরণ আমি এখানে যা করেছি:

>>> import datetime
>>> import num2word
>>> now = datetime.datetime.now()
>>> t = datetime.time(now.hour, now.minute, now.second).strftime('%H:%M:%S').split(':')
>>> print "%s hours %s minutes and %s seconds" %(num2word.to_card(t[0]), num2word.to_card(t[1]), num2word.to_card(t[2]))
>>> two hours thirty one minutes and fifteen seconds

এখন এটি কঙ্কি দ্বারা রেন্ডার করতে আপনার কনকি কনফিগার ডিরেক্টরিতে একটি ডিরেক্টরি তৈরি করুন ~/.conky/pyscripts/এবং এর মধ্যে pynum2wordলাইব্রেরি রাখুন, এখন অন্য একটি ফাইল তৈরি করুন timeToWordএবং এই স্ক্রিপ্টটিকে এই ফাইলে রাখুন:

#!/bin/python
import datetime
import num2word
now = datetime.datetime.now()
t = datetime.time(now.hour, now.minute, now.second).strftime('%H:%M:%S').split(':')
print "%s hours %s minutes and %s seconds" %(num2word.to_card(t[0]), num2word.to_card(t[1]), num2word.to_card(t[2]))

আপনি চাইলে সময়ের বিন্যাস পরিবর্তন করতে পারেন এবং তারিখটিও অন্তর্ভুক্ত করতে পারেন। বিন্যাসের বিকল্পগুলির জন্য এই পৃষ্ঠাটি একবার দেখুন ।

তারপরে কনকি কনফিগারেশন ফাইলটি খুলুন /etc/conky/conky.confএবং এই লাইনটি কোথাও রাখুন:

{execpi 30 ~/.conky/pyscripts/timeToWord}

এই লাইনটি যা করে তা হ'ল এটি প্রতি 30 সেকেন্ডে স্ক্রিপ্ট ফাইলটি চালায় এবং কঙ্কি উইন্ডোতে আউটপুট আপডেট করে।

অবশ্যই আপনি অবাধে স্ক্রিপ্ট ফাইলগুলি কোনও ডিরেক্টরিতে রাখতে পারেন তবে নিশ্চিত করুন যে pynum2wordলাইব্রেরি একই ডিরেক্টরিতে রয়েছে।


আকর্ষণীয়, তবে বলুন যে কঙ্কিকে এটি কীভাবে যুক্ত করবেন তা আমি জানি না। আমি কীভাবে কনকি ফাইল যুক্ত করব বা কী করব যাতে এটি পাঠাগারটি আমদানি করে? সুতরাং এটি সময় মত প্রদর্শন করে।
উরি হেরেরার

আমি সবেমাত্র উত্তরটি আপডেট করেছি, দয়া করে পর্যালোচনা করুন।
গুফরান

0

আপনি কি প্রতিটি চিহ্নের লিখিত শব্দের সমন্বয়ে একটি প্রতীক-ফন্ট তৈরি করতে পারেননি? সময় প্রদর্শনের জন্য আপনার এই ফন্টটি (যদি সম্ভব হয়) বেছে নেওয়া উচিত।


এটি জিনিস, আশ্চর্যজনকভাবে কঙ্কি সমস্ত ফন্ট লোড করে না। আমার কাছে ফন্ট রয়েছে যে কঙ্কি কেবল লোড করবে না, এবং এরিয়াল বা টাইমস নিউ রোমে ডিফল্ট হয়। একটি ফন্ট তৈরির সমস্ত কাজ মানে তা উল্লেখ করার দরকার নেই। এছাড়াও আমি যে চিত্রটি ব্যবহার করেছি তা একটি উদাহরণ, আমি বোল্ড ফন্টে ঘন্টা এবং একটি পাতলা / হালকা ফন্টে মিনিট থাকতে চাই।
উরি হেরেরা

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