ট্রেলোতে প্রদত্ত তারিখের পরিসরের জন্য সমস্ত ক্রিয়াকলাপের তালিকা দেওয়া কি সম্ভব?


11

আমি বেশ কয়েক মাস ধরে ট্রেলো ব্যবহার করে আসছি এবং কার্ডগুলিতে কাজ করার সাথে আমি নিয়মিত ক্রিয়াকলাপ পোস্ট করি এবং তারপরে এগুলি বাম থেকে ডানদিকে 'সম্পূর্ণ' তালিকায় নিয়ে যাই। আমি নির্ধারিত তারিখগুলি লাভ করি না। প্রদত্ত ব্যাপ্তির জন্য সমস্ত কার্ডে ক্রিয়াকলাপের পাঠ্য তালিকার কোনও ব্যবস্থা আছে কি? আমি একটি নির্দিষ্ট সময়ের জন্য একটি স্থিতির প্রতিবেদন ফিড করতে কিছু কাঁচা তথ্য টানতে চেষ্টা করছি।

উদাহরণ: বর্তমান দিন যদি 15 ই মে, 2013 হয় তবে আমি প্রতিটি কার্ডে সমস্ত ক্রিয়াকলাপের পাঠ্যের একটি তালিকা তৈরি করতে চাই যে 29 এপ্রিল - 3 শে মে পিরিয়ডের জন্য 'ক্রিয়াকলাপ' এন্ট্রি ছিল।


এটি করা যেতে পারে তবে কেবল ট্রেলো এপিআই ব্যবহার করে। আপনি যে ডেটা চান তা পেতে কিছু হালকা প্রোগ্রামিং করে আরামদায়ক?
ইয়ান হেনরি

@ আইয়ানহেনরি হ্যাঁ আমি আরামদায়ক।
ব্রায়ান

উত্তর:


14

হ্যাঁ, এটি ট্রেলো এপিআই এবং কয়েকটি অন্যান্য সরঞ্জাম ব্যবহার করে।

এই উত্তরটি উপর নির্ভর 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"শিরোনাম যুক্ত করা। এটি ট্রেলো টোকেনটি ব্যবহার করবে। উল্লেখ্য যে টোকেনটি খুব ব্যক্তিগত ... আপনি যদি এটি অন্য কাউকে দেন তবে আপনি ট্রেলো অ্যাকাউন্ট পৃষ্ঠাতে বাতিল না করা পর্যন্ত তারা মূলত আপনার হিসাবে লগ ইন করতে পারে । সুতরাং, আপনি জানেন, সাবধান। বা এপিআই কী / টোকেন উত্পন্ন পদক্ষেপের মধ্য দিয়ে যান।

আপনি যে ফর্ম্যাটটি চান সেটিতে আপনার প্রয়োজনীয় নির্ভুল ডেটা পেতে এখনই সংশোধন করুন।


3

আমি রিপোর্টফ্রেটোলো ডটকম নামে একটি সরঞ্জাম তৈরি করেছি যা আপনাকে দেখিয়ে দেবে যে কোনও সময়ের জন্য একটি তালিকায় কার্ড কত দিন ছিল।

এটি নিখরচায় এবং আপনাকে প্রতি বোর্ড প্রতি 1000 টি ক্রিয়া দেখতে দেয়। এটি কার্ডের সদস্যতাও ট্র্যাক করতে পারে।

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