হ্যাঁ, এটি ট্রেলো এপিআই এবং কয়েকটি অন্যান্য সরঞ্জাম ব্যবহার করে।
এই উত্তরটি উপর নির্ভর HTTPie এবং jq , দুই সহজলভ্য টুলস মাধ্যমে ইনস্টল করা যাবে যে পিপ এবং Homebrew আপনি Mac ব্যবহার করছেন যদি:
$ pip install httpie
$ brew install jq
ব্যবহার করে HTTPie
আমরা বোর্ডের কাঁচা অ্যাকশন ফিড পেতে ট্রেলো এপিআই জিজ্ঞাসা করতে পারি, তারপরে আমরা সেই ডেটাটিকে jq
দরকারী কিছুতে পরিণত করতে ব্যবহার করতে পারি ।
আসুন "সহজ কিছু" দিয়ে শুরু করা যাক। নিম্নলিখিত কমান্ডটি এপ্রিল ২০১৩ মাসে ট্রেলো দেব বোর্ডে আমাদের দেওয়া সমস্ত মন্তব্য দেবে I'll আমি এটি একটি সেকেন্ডে ব্যাখ্যা করব:
http GET "https://api.trello.com/1/boards/4d5ea62fd76aa1136000000c/actions" "since==Apr 1 2013 EDT" "before==May 1 2013 EDT" "limit==1000" "filter==commentCard" | jq 'group_by(.data.card.id) | map({key: (.[0].data.card | "\(.name) (\(.id))"), value: map({date, member: .memberCreator.fullName, comment: .data.text}) }) | from_entries'
সবকিছু যদি পরিকল্পনা অনুসারে চলে যায় তবে আমাদের এমন কিছু দেখতে পাওয়া উচিত:
{
"Embed All The Things (516fcff9b998572923008fb2)": [
{
"comment": "Embed.ly now supports https better, so maybe we can upgrade to that version. http://embed.ly/embed/security/ssl",
"member": "Brett Kiefer",
"date": "2013-04-26T16:15:21.408Z"
},
{
"comment": "Embedding a Google Map would be nice.",
"member": "Michael Warkentin",
"date": "2013-04-24T18:39:12.155Z"
},
{
"comment": "Github issues / pull requests",
"member": "Michael Warkentin",
...
কুল। এটি একটি একক, যুক্তিসঙ্গত JSON অবজেক্ট যা আমরা সহজেই যে কোনও সংখ্যক অন্যান্য ফর্ম্যাটে পার্স করতে পারি। এখন আসুন আমরা এটির মাধ্যমে পদক্ষেপ নিই যাতে আমরা এটি আমাদের প্রয়োজন অনুসারে এটি সংশোধন করতে যথেষ্ট ভাল বুঝতে পারি।
http GET "https://api.trello.com/1/boards/4d5ea62fd76aa1136000000c/actions" "since==Apr 1 2013 EDT" "before==May 1 2013 EDT" "limit==1000" "filter==commentCard"
এটিই একমাত্র অংশ যা ট্রেলোর উপর নির্ভর করে। আমরা আইডি সহ বোর্ডের জন্য সর্বজনীন এপিআইয়ের বিরুদ্ধে একটি অনুরোধ জানাই 4d5ea62fd76aa1136000000c
- আমি পেয়েছি যে https://trello.com/dev এ গিয়ে আইডিটি দেখে ট্রেলো পুরো URL- এ যুক্ত হয় https://trello.com/board/trello-development/4d5ea62fd76aa1136000000c
)
since
এবং before
ক্ষেত্র স্বশাসিত হয়। আমি একটি নির্দিষ্ট limit
এর 1000
কারণ যে বৃহত্তম প্রতিক্রিয়া Trello অনুমতি দেবে না। যদি আপনার বোর্ডের প্রাসঙ্গিক তারিখের পরিসরে এক হাজারেরও বেশি মন্তব্য থাকে তবে এখানে আরও জটিল পেজিং সমাধানের প্রয়োজন হবে। আমি একটি নির্দিষ্ট filter
এর commentCard
কারণ আমি শুধুমাত্র এই উত্তরটি উদ্দেশ্যে ঐ সম্পর্কে আগ্রহী। আপনি যদি আরও অ্যাকশন ধরণের চান তবে কমা-বিচ্ছিন্ন তালিকাটি নির্দিষ্ট করুন filter==commentCard,updateCard:idList,createCard
। ট্রেডো এপিআই রেফারেন্সে বৈধ ক্রিয়াকলাপগুলি পাওয়া যাবে ।
যদি আমরা এটি নিজে চালিত করি তবে আমরা প্রচুর তথ্য পেয়ে যাব যা তুলনামূলকভাবে শক্ত। সুতরাং আমরা এটিকে jq
আরও কিছু দরকারী কিছুতে ম্যাসেজ করার জন্য পাইপ দিই ।
jq 'group_by(.data.card.id) | map({key: (.[0].data.card | "\(.name) (\(.id))"), value: map({date, member: .memberCreator.fullName, comment: .data.text}) }) | from_entries'
টুকরো টুকরো করে, আমাদের jq
স্ক্রিপ্টটি নিম্নলিখিত ট্রান্সফর্মেশনগুলি করছে, প্রতিটি প্রত্যেকে তার ফলাফল পরবর্তী অপারেটরের কাছে পাইপ করছে:
group_by(.data.card.id)
- ট্রেলো কেবল আমাদের ক্রিয়াগুলির একটি অ্যারে দেয়। আমরা এটিকে অ্যারেতে পরিণত করি, যেখানে প্রতিটি উপ অ্যারে প্রদত্ত কার্ডের জন্য কেবল ক্রিয়া থাকে। মূলত
[[card1_action1, card1_action2...], [card2_action1, card2_action2...], ...]
map({key: KEY_EXPRESSION, value: VALUE_EXPRESSION}) | from_entries
- আমরা একটি অ্যারে চাই না; আমরা কেবল ফর্মের একটি বস্তু চাই
{ card1: [action1, action2, ...], card2: [action1, action2, ...], ...}
। অ্যারেটিকে কী-মান জোড়গুলির একটি অ্যারে রূপান্তরিত করে আমরা from_entries
এটিকে একটি বস্তুতে পরিণত করতে ব্যবহার করতে পারি । কুল।
- এখন আসুন আমি কি
KEY_EXPRESSION
উপরে কল করেছি:(.[0].data.card | "\(.name) (\(.id))")
- এটি মোটামুটি সহজ। আমরা প্রথম ক্রিয়া থেকে কার্ড এন্ট্রি নিই (যেহেতু এটি সমস্ত ক্রিয়াগুলির জন্য একই হওয়া উচিত, আমরা যে কোনওটিকে বেছে নিতে পারি, তবে প্রথমটি বুদ্ধিমান পছন্দ মতো মনে হয়)। তারপরে আমরা
\(...)
দেখতে কিছু দেখতে এমন স্ট্রিং ইন্টারপোলেশন ( ) ব্যবহার করি "name (id)"
।
VALUE_EXPRESSION
হয় map({date, member: .memberCreator.fullName, comment: .data.text})
- আমরা কেবলমাত্র
.
সমস্ত ক্রিয়াকলাপের অ্যারেটি অপরিবর্তিত রাখতে ব্যবহার করতে পারি। তবে যেহেতু ক্রিয়াগুলি কৃপণাত্মক তাই আমরা অ্যারেগুলিকে map
পিং করে {date, member: .memberCreator.fullName, comment: .data.text}
প্রতিটি স্বতন্ত্র ক্রিয়াকলাপটিকে প্রয়োগ করে দরকারী কিছুতে ম্যাসেজ করছি ।
{date}
হিসাবে একই {date: date}
থেকে jq
।
- অন্য সব কিছুই বেশ স্ব-ব্যাখ্যামূলক। আমাদের কাছে এখন তারিখ, সদস্য (কেবল তাদের নাম, তবে এটি আরও সহজে পাওয়া সহজ হবে) এবং মন্তব্যের পাঠ্য।
তাই সেখানে যদি আপনি এটি আছে। আশা করি। আমরা কোনও স্ক্রিপ্টিং ভাষায় এই ডেটা ম্যাসেজ করতে পারতাম, তবে এটি ঠিক jq
এটির জন্যই নির্মিত হয়েছিল, তাই একটি দুর্দান্ত নতুন সরঞ্জাম শেখার জন্য এটি একটি বাহানা। আরও জন্য jq ম্যানুয়াল পরীক্ষা করে দেখুন।
এখন, এটি কাজ করে কারণ ট্রেলো দেব বোর্ড সর্বজনীন। কিন্তু আমরা যদি ব্যক্তিগত ডেটা চাই?
এটি করার সঠিক উপায় হ'ল একটি এপিআই টোকেন তৈরি করা। Trello এপিআই শুরু করার নির্দেশিকা এই কিভাবে করতে হবে একটি বিস্তারিত runthrough হয়েছে। তবে আমরা তাড়াহুড়ো করে রয়েছি, তাই আমরা অলস মানুষের উপায়টি করবো ...
ক্রোমে http://trello.com এ লগ ইন করুন এবং কনসোলটি দেখুন (দেখুন> বিকাশকারী> জাভাস্ক্রিপ্ট কনসোল)। $.cookie('token')
উইন্ডোতে টাইপ করুন । এটি কিছু আবার থুতু হবে "uniquememberid/somegarbledstring"
। উদ্ধৃতিগুলির মধ্যে অংশটি অনুলিপি করুন এবং অনুরোধটি এমন কিছু হওয়ার জন্য সংশোধন করুন:
http GET "https://api.trello.com/1/boards/THE_ID_OF_THE_PRIVATE_BOARD_YOU_WANT/actions" "Cookie:token=uniquememberid/somegarbledstring" "since==Apr 1 2013 EDT" "before==May 1 2013 EDT" "limit==1000" "filter==commentCard" | jq ...
কেবলমাত্র আমরা পরিবর্তন করেছি "Cookie:token=uniquememberid/somegarbledstring"
শিরোনাম যুক্ত করা। এটি ট্রেলো টোকেনটি ব্যবহার করবে। উল্লেখ্য যে টোকেনটি খুব ব্যক্তিগত ... আপনি যদি এটি অন্য কাউকে দেন তবে আপনি ট্রেলো অ্যাকাউন্ট পৃষ্ঠাতে বাতিল না করা পর্যন্ত তারা মূলত আপনার হিসাবে লগ ইন করতে পারে । সুতরাং, আপনি জানেন, সাবধান। বা এপিআই কী / টোকেন উত্পন্ন পদক্ষেপের মধ্য দিয়ে যান।
আপনি যে ফর্ম্যাটটি চান সেটিতে আপনার প্রয়োজনীয় নির্ভুল ডেটা পেতে এখনই সংশোধন করুন।