While I still prefer a more "traditional" shell for day-to-day use, I'm finding [Nushell](https://www.nushell.sh)'s structured data capabilities to be a fantastic companion to the SE API (among others). It's been months since I've used `jq` for processing JSON REST results. Starting with a simple example: ``` # Get the last 100 questions posted on Stack Overflow > let res = (http get "https://api.stackexchange.com/questions?pagesize=100&site=stackoverflow") # Will error if you are out of quota - Append a key param if needed > $res.items.title | first 5 ╭───┬───────────────────────────────────────────────────────────────────────────────╮ │ 0 │ Same Framework for multiple target and different destinations │ │ 1 │ Unable to control full screen menu bar visibility on MacOS using CLI defaults │ │ 2 │ How should MqttClient lifecycle be managed? │ │ 3 │ Auth0 External Provider │ │ 4 │ Passing a function to a react-router action in TypeScript? │ ╰───┴───────────────────────────────────────────────────────────────────────────────╯ > $res.quota_remaining 167 > $res # Will print the data (truncate based on screen width) in a table format > $res | explore # Will enter a data explorer view where you can scroll and drill down into data # For example, select the "items" column and hit <Enter> to drill down to the questions themselves # What key/value pairs (columns) are available in the result? > $res | columns ╭───┬─────────────────╮ │ 0 │ items │ │ 1 │ has_more │ │ 2 │ quota_max │ │ 3 │ quota_remaining │ ╰───┴─────────────────╯ # What key/value pairs (columns) are available for items? > $res.items | columns ╭────┬───────────────────────╮ │ 0 │ tags │ │ 1 │ owner │ │ 2 │ post_state │ │ 3 │ is_answered │ │ 4 │ view_count │ │ 5 │ answer_count │ │ 6 │ score │ │ 7 │ last_activity_date │ │ 8 │ creation_date │ │ 9 │ question_id │ │ 10 │ content_license │ │ 11 │ link │ │ 12 │ title │ │ 13 │ posted_by_collectives │ │ 14 │ closed_date │ │ 15 │ closed_reason │ │ 16 │ last_edit_date │ │ 17 │ accepted_answer_id │ ╰────┴───────────────────────╯ # Which questions were about Python? > $res.items | filter {|question| "python" in $question.tags} | select title link ╭───┬──────────────────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ # │ title │ link │ ├───┼──────────────────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 0 │ Python Mypy fails on Decorator │ https://stackoverflow.com/questions/76766815/python-mypy-fails-on-decorator │ │ 1 │ How do I find the key with the highest value in a python dictionary? │ https://stackoverflow.com/questions/76766810/how-do-i-find-the-key-with-the-highest-value-in-a-python-dictionary │ │ 2 │ How to insert a Python script into a website with DJango? │ https://stackoverflow.com/questions/76766795/how-to-insert-a-python-script-into-a-website-with-django │ │ 3 │ Beautifulsoup append ignores namespace (xml) │ https://stackoverflow.com/questions/76766794/beautifulsoup-append-ignores-namespace-xml │ │ 4 │ Http api not giving updated response │ https://stackoverflow.com/questions/76766744/http-api-not-giving-updated-response │ │ 5 │ What type hint should I use to specify a set of functions │ https://stackoverflow.com/questions/76766740/what-type-hint-should-i-use-to-specify-a-set-of-functions │ │ 6 │ can someone explain this append() part of a for loop? │ https://stackoverflow.com/questions/76766707/can-someone-explain-this-append-part-of-a-for-loop │ │ 7 │ How to make it faster? │ https://stackoverflow.com/questions/76766684/how-to-make-it-faster │ │ 8 │ Changing Pandas Period to another frequency │ https://stackoverflow.com/questions/76766650/changing-pandas-period-to-another-frequency │ │ 9 │ PFX certificate with Selenium with python │ https://stackoverflow.com/questions/76766634/pfx-certificate-with-selenium-with-python │ ╰───┴──────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ``` For comparison, some Bash/curl/jq equivalents: ``` > res=`curl -o - "https://api.stackexchange.com/questions?pagesize=100&site=stackoverflow&sort=creation" | gunzip` > echo $res | jq '.items[0:5][].title' "Strange data prepending incoming WebSocket data. What is the cause?" "Why does nothing happen when i try to multiple two variables?" "How can I test functions that node-redis using vitest?" "Create a Piece-Wise Regression in ggplot2 (R) with multiple 'knots'" "feeding continuous stdin using bash script" > echo $res | jq '.quota_remaining' 143 > echo $res | jq 'keys' [ "has_more", "items", "quota_max", "quota_remaining" ] # Note that this is slightly different from Nushell, in that Nushell will show *all* # columns from all results, whereas this will only show the keys from the first result > echo $res | jq '.items[0] | keys' [ "answer_count", "content_license", "creation_date", "is_answered", "last_activity_date", "link", "owner", "post_state", "question_id", "score", "tags", "title", "view_count" ] # Which questions were about Python? > echo $res | jq -r '.items[] | select(.tags[] | contains ("python")) | .title, .link' feeding continuous stdin using bash script https://stackoverflow.com/questions/76766988/feeding-continuous-stdin-using-bash-script Dijkstra's algorithm while moving through a maze https://stackoverflow.com/questions/76766972/dijkstras-algorithm-while-moving-through-a-maze numba: parallelize a nested for loop with a cartopy function in it https://stackoverflow.com/questions/76766960/numba-parallelize-a-nested-for-loop-with-a-cartopy-function-in-it How to avoid lack of convergence while using PassiveAggressiveClassifier for online learning? https://stackoverflow.com/questions/76766958/how-to-avoid-lack-of-convergence-while-using-passiveaggressiveclassifier-for-onl Opencv camera is available ret returns true, but frame is still empty, is there any fix? https://stackoverflow.com/questions/76766956/opencv-camera-is-available-ret-returns-true-but-frame-is-still-empty-is-there Remove pushpin on Bing Maps API using Python requests https://stackoverflow.com/questions/76766949/remove-pushpin-on-bing-maps-api-using-python-requests Why key parameters in Python has to be "so complicated"? https://stackoverflow.com/questions/76766948/why-key-parameters-in-python-has-to-be-so-complicated Plotting points on a HSV color wheel https://stackoverflow.com/questions/76766947/plotting-points-on-a-hsv-color-wheel Solving Sudoku with Gurobipy for Inequality https://stackoverflow.com/questions/76766946/solving-sudoku-with-gurobipy-for-inequality Solving Sudoku with Gurobipy for Inequality https://stackoverflow.com/questions/76766946/solving-sudoku-with-gurobipy-for-inequality How to open files outside of the django project? https://stackoverflow.com/questions/76766934/how-to-open-files-outside-of-the-django-project how to create kedro catalog entry + custom DataSet init method with values from credentials.yml https://stackoverflow.com/questions/76766933/how-to-create-kedro-catalog-entry-custom-dataset-init-method-with-values-from Adding a tkinter scrollbar to a treeview without any space https://stackoverflow.com/questions/76766918/adding-a-tkinter-scrollbar-to-a-treeview-without-any-space Pandas Ethnicity Count/Percentage https://stackoverflow.com/questions/76766907/pandas-ethnicity-count-percentage SQLite3 can't open database in Flask server https://stackoverflow.com/questions/76766884/sqlite3-cant-open-database-in-flask-server How to display a variable from a different file to the screen with PyQt5 https://stackoverflow.com/questions/76766870/how-to-display-a-variable-from-a-different-file-to-the-screen-with-pyqt5 compare two file and get only diffe name https://stackoverflow.com/questions/76766869/compare-two-file-and-get-only-diffe-name Why does my pygbag pygame application have laggy sound? https://stackoverflow.com/questions/76766845/why-does-my-pygbag-pygame-application-have-laggy-sound ```