{"id":5067,"date":"2025-12-22T20:57:20","date_gmt":"2025-12-22T11:57:20","guid":{"rendered":"https:\/\/matoken.org\/blog\/?p=5067"},"modified":"2025-12-22T22:59:23","modified_gmt":"2025-12-22T13:59:23","slug":"flyover","status":"publish","type":"post","link":"https:\/\/matoken.org\/blog\/2025\/12\/22\/flyover\/","title":{"rendered":"bash script\u306eflyover\u3067\u6307\u5b9a\u7b87\u6240\u306e\u822a\u7a7a\u6a5f\u60c5\u5831\u3092\u8868\u793a"},"content":{"rendered":"<p><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\"><circle cx=\"24\" cy=\"24\" r=\"21.5\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1\"\/><circle cx=\"24\" cy=\"24\" r=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1\"\/><circle cx=\"24\" cy=\"24\" r=\"6.5\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1\"\/><circle cx=\"24\" cy=\"24\" r=\".75\" fill=\"currentColor\"\/><circle cx=\"14.601\" cy=\"18.911\" r=\".75\" fill=\"currentColor\"\/><circle cx=\"13.851\" cy=\"38.75\" r=\".75\" fill=\"currentColor\"\/><circle cx=\"28.486\" cy=\"35.47\" r=\".75\" fill=\"currentColor\"\/><circle cx=\"33.449\" cy=\"8.845\" r=\".75\" fill=\"currentColor\"\/><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M24 24L9.102 39.5\" stroke-width=\"1\"\/><\/svg><!-- arcticons:flightradar24 --><\/p>\n<div class=\"paragraph\">\n<p>flyover \u306f\u5f15\u6570\u3067\u6307\u5b9a\u3057\u305f\u5834\u6240(\u5730\u540d\u3084\u5ea7\u6a19\u3067\u6307\u5b9a\u53ef\u80fd)\u306e(\u4e3b\u306b)\u822a\u7a7a\u6a5f\u306e\u60c5\u5831\u3092flightradar24 \u304b\u3089\u53d6\u5f97\u3057\u3066\u8868\u793a\u3057\u3066\u304f\u308c\u308bbash script \u3067\u3059\uff0e<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/pvonmoradi\/flyover-bash\">pvonmoradi\/flyover-bash: A shell-script client for flightradar24.com, showing info of aircrafts flying overhead in a [latitude \u00b1 \u03b4, longitude \u00b1 \u03b4] vicinity<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<p><!--more--><\/p>\n<div class=\"paragraph\">\n<p>\u307e\u305a\u306f\u4f9d\u5b58\u95a2\u4fc2\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u5c0e\u5165\u3057\u307e\u3059\uff0e<\/p>\n<\/div>\n<div class=\"quoteblock\">\n<blockquote>\n<div class=\"paragraph\">\n<p>## Dependencies<br \/>\n&#8211; <code>curl jq<\/code><br \/>\n&#8211; <code>notify-send<\/code>: (optional)<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>In a Debian-like distro, these can be installed with:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight\"><code class=\"language-shell\" data-lang=\"shell\">sudo apt install curl jq libnotify-bin<\/code><\/pre>\n<\/div>\n<\/div>\n<\/blockquote>\n<div class=\"attribution\">\n&#8212; README.md\u3088\u308a\n<\/div>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>$ sudo apt install curl jq libnotify-bin<\/pre>\n<\/div>\n<\/div>\n<div class=\"admonitionblock note\">\n<table  class=\" table table-hover\" >\n<tr>\n<td class=\"icon\">\n<div class=\"title\">Note<\/div>\n<\/td>\n<td class=\"content\">\n\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u901a\u77e5\u3092\u5229\u7528\u3057\u306a\u3044\u5834\u5408\u306f <code>libnotify-bin<\/code> \u306f\u4e0d\u8981\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<div class=\"paragraph\">\n<p>bash script \u306a\u306e\u3067script \u3092\u8cb0\u3063\u3066\u304d\u3066bash \u306b\u6e21\u305b\u3070\u52d5\u304d\u307e\u3059\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>$ wget https:\/\/github.com\/pvonmoradi\/flyover-bash\/raw\/refs\/heads\/master\/flyover\n$ bash .\/flyover -h\nDESCRIPTION\n    A simple client for flightradar24.com. Shows info of aircrafts flying\n    overhead in a [latitude \u00b1 \u03b4, longitude \u00b1 \u03b4] vicinity\n\nUSAGE: flyover [OPTIONS]\nOPTIONS\n      [-s search_str]\n        Search for city\/region\/place\n        Use quotes for multi-word queries\n      [-y latitude]\n        Negative for south of equator and positive for north of equator\n        Range: -90 &lt;= latitude[float] &lt;= +90\n      [-x longitude]\n        Negative for west of Prime Meridian and positive for east of Prime Meridian\n        Range: -180 &lt;= longitude[float] &lt;= +180\n      [-b bounds]\n        Geographic bounds of the region of interest\n        Format (comma-separated): \"lat1,lon1,lat2,lon2\"\n      [-i flight_ids]\n        flightradar24 flight_ids as a comma-separated list\n        In this mode, only the corresponding flight details are queried\n        Note: id is flightradar24's internal id (not ICAO or other standards)\n        Format example: \"id1,id2,id3\"\n      [-r delta_deg]\n        \u03b4 in degrees in scan square : [latitude \u00b1 \u03b4, longitude \u00b1 \u03b4]\n        Note: 1\u00b0 of latitude \u2248 111 km\n        Range: r[float] &gt; 0\n      [-o \/path\/to\/detailed_flights]\n        Set output path for detailed info of flights (json array)\n        (implies 'detailed' mode)\n      [-n]\n        Use notification (implies 'detailed' mode)\n      [-f]\n        Set mode to 'brief', only print an augmented json\n      [-v log_level]\n        v = 0 : No logs. Equivalent to -q\n        v = 1 : Set level to error\n        v = 2 : Set level to warn\n        v = 3 : Set level to info (default)\n        v = 4 : Set level to debug\n      [-q]\n        Set log level to v = 0\n      [-V]\n        Print version\n      [-h]\n        Print help message\n\nNOTES\n    - latitude\/longitude should be input in decimal degrees (not DMS)\n    - Either use -s (geolocation service) OR (-y,-x) but NOT both\n    - Default mode of operation is 'detailed'\n\nEXAMPLES\n    flyover -s \"deylaman\" -r 2\n    flyover -s \"\u0642\u0644\u0639\u0647 \u06af\u0628\u0631\u06cc\" -r 0.5 -n -v4\n    flyover -y \"-27.115\" -x \"-109.395\" -r 24.15 -o \/tmp\/detailed.json\n    flyover -s \"\u6df1\u5733\" -qf\n    flyover -i \"2b1abd2f,2b1cae23\"\n    flyover -b \"43.58,58.72,46.58,61.72\"<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>\u3068\u308a\u3042\u3048\u305ahelp \u306e\u4e0b\u90e8\u306b\u66f8\u304b\u308c\u3066\u3044\u308bEXAMPLES \u3092\u771f\u4f3c\u3057\u3066\u307f\u307e\u3059\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>$ bash .\/flyover -s \"tokyo\" -r 2\n[info ] Match found: \"\u6771\u4eac\u90fd, \u65e5\u672c\"\n[info ] 'tokyo' WGS84 coordinates at latitude=35.6768601, longitude=139.7638947\n.\/flyover: line 264: bc: command not found\n[error] Problem in generating bounds. Check -h<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>\u304c\uff0c\u5931\u6557\u3057\u307e\u3057\u305f\uff0e <code>bc<\/code> \u30b3\u30de\u30f3\u30c9\u304c\u8db3\u308a\u306a\u3044\u3088\u3046\u3067\u3059\uff0e<br \/>\nbc \u30b3\u30de\u30f3\u30c9\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u63a2\u3057\u3066\u5c0e\u5165\u3057\u305f\u3089\u52d5\u304f\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>$ apt-file search -x bin\/bc$\n9base: \/usr\/lib\/plan9\/bin\/bc\nbc: \/usr\/bin\/bc\n$ sudo apt install bc\n$ bash .\/flyover -s \"tokyo\" -r 2\n[info ] Match found: \"\u6771\u4eac\u90fd, \u65e5\u672c\"\n[info ] 'tokyo' WGS84 coordinates at latitude=35.6768601, longitude=139.7638947\n[info ] Scan region for \u03b4=2\u00b0: 37.676860,33.676860,137.763895,141.763895\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\nAir Canada, AC1\/ACA1\n&#x2708;&#xfe0f; Boeing 777-333(ER)\n&#x2197;&#xfe0f; Canada, Toronto\n&#x2198;&#xfe0f; Japan, Tokyo\n&#x1f4c5; Landed 20:29\n&#x1f4cf; 0km, 9km\/h\nhttps:\/\/www.flightradar24.com\/ACA1\/3d9afc99\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\nChina Airlines, CI35\/CAL035\n&#x2708;&#xfe0f; Airbus A350-941\n&#x2197;&#xfe0f; United States, Phoenix\n&#x2198;&#xfe0f; Taiwan, Taipei\n&#x1f4c5; Delayed 22:47\n&#x1f4cf; 12km, 664km\/h\nhttps:\/\/www.flightradar24.com\/CAL035\/3d9b45e8\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\nQantas, QF59\/QFA59\n&#x2708;&#xfe0f; Airbus A330-303\n&#x2197;&#xfe0f; Australia, Sydney\n&#x2198;&#xfe0f; Japan, Tokyo\n&#x1f4c5; Delayed 20:41\n&#x1f4cf; 1km, 494km\/h\nhttps:\/\/www.flightradar24.com\/QFA59\/3d9b996e\n^C<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>README.md \u3092\u4fee\u6b63\u3057\u305f\u307b\u3046\u304c\u826f\u3055\u305d\u3046\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>$ git diff\ndiff --git a\/README.md b\/README.md\nindex cf34873..1847e02 100644\n--- a\/README.md\n+++ b\/README.md\n@@ -16,13 +16,13 @@ latitude\/longitude and \u03b4.\n\n\n ## Dependencies\n-- `curl jq`\n+- `curl jq bc`\n - `notify-send`: (optional)\n\n In a Debian-like distro, these can be installed with:\n\n ``` shell\n-sudo apt install curl jq libnotify-bin\n+sudo apt install curl jq bc libnotify-bin\n ```\n\n ## Usage<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>-n \u306e\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u901a\u77e5\u3082\u8a66\u3057\u3066\u307f\u308b\u3068\u3053\u3093\u306a\u611f\u3058\u3067\u51fa\u3066\u304d\u307e\u3059\uff0e<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/matoken.org\/blog\/wp-content\/uploads\/2025\/12\/flyover-n.webp\" alt=\"flyover n\"><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>\u5e38\u99d0\u3057\u3066\u6307\u5b9a\u7bc4\u56f2\u5185\u306b\u822a\u7a7a\u6a5f\u304c\u73fe\u308c\u305f\u3089notify \u304c\u51fa\u305b\u305f\u308a\u3059\u308b\u3068\u4fbf\u5229\u305d\u3046\u3067\u3059\u304c\u305d\u3046\u3044\u3046\u6a5f\u80fd\u306f\u7121\u3055\u305d\u3046\u3067\u3059\uff0e<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>\u81ea\u5206\u306e\u5bb6\u306e\u3042\u305f\u308a\u306f\u4e0a\u7a7a\u3092\u305f\u304f\u3055\u3093\u306e\u98db\u884c\u6a5f\u304c\u901a\u308a\uff0c\u591c\u9593\u5e2f\u306a\u3069\u306f\u822a\u7a7a\u6a5f\u304c\u901a\u308b\u97f3\u304c\u3088\u304f\u805e\u3053\u3048\u307e\u3059\uff0e\u305d\u3046\u3044\u3046\u3068\u304d\u306b\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3092\u53e9\u304f\u3068\u4f55\u304c\u98db\u3093\u3067\u3044\u308b\u304b\u308f\u304b\u3063\u3066\u697d\u3057\u305d\u3046\u3067\u3059\uff0e(\u81ea\u885b\u968a\u6a5f\u3082\u3088\u304f\u901a\u308a\u307e\u3059\u304c\u3053\u308c\u3089\u306ffr24\u306b\u8f09\u3089\u306a\u3044\u306e\u3067\u3042\u307e\u308a\u9762\u767d\u304f\u306a\u3044\u2026\u2026)<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"title\">\u74b0\u5883<\/div>\n<div class=\"content\">\n<pre>$ dpkg-query -W bash curl jq bc libnotify-bin\nbash    5.2.15-2+b9\nbc      1.07.1-3\ncurl    7.88.1-10+rpi1+deb12u14\njq      1.6-2.1+deb12u1\nlibnotify-bin   0.8.1-1\n$ lsb_release -dr\nNo LSB modules are available.\nDescription:    Raspbian GNU\/Linux 12 (bookworm)\nRelease:        12\n$ arch\narmv7l<\/pre>\n<\/div>\n<\/div>\n<blockquote class=\"mastodon-embed\" data-embed-url=\"https:\/\/inari.opencocon.org\/@matoken\/115327475035099637\/embed\" style=\"background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;\"><p> <a href=\"https:\/\/inari.opencocon.org\/@matoken\/115327475035099637\" target=\"_blank\" style=\"align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;\"> <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" width=\"32\" height=\"32\" viewBox=\"0 0 79 75\"><path d=\"M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z\" fill=\"currentColor\"\/><\/svg> <\/p>\n<div style=\"color: #787588; margin-top: 16px;\">Post by <a rel=\"mention\" class=\"u-url mention\" href=\"https:\/\/inari.opencocon.org\/@matoken\">@matoken<\/a><\/div>\n<div style=\"font-weight: 500;\">View on Mastodon<\/div>\n<p> <\/a> <\/p><\/blockquote>\n<p> <script data-allowed-prefixes=\"https:\/\/inari.opencocon.org\/\" async src=\"https:\/\/inari.opencocon.org\/embed.js\"><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>flyover \u306f\u5f15\u6570\u3067\u6307\u5b9a\u3057\u305f\u5834\u6240(\u5730\u540d\u3084\u5ea7\u6a19\u3067\u6307\u5b9a\u53ef\u80fd)\u306e(\u4e3b\u306b)\u822a\u7a7a\u6a5f\u306e\u60c5\u5831\u3092flightradar24 \u304b\u3089\u53d6\u5f97\u3057\u3066\u8868\u793a\u3057\u3066\u304f\u308c\u308bbash script \u3067\u3059\uff0e pvonmoradi\/flyover-bash:  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"webmentions_disabled_pings":false,"webmentions_disabled":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":""},"categories":[6,91,1253],"tags":[272,1254],"class_list":["post-5067","post","type-post","status-publish","format-standard","hentry","category-linux","category-raspberry-pi","category-raspberrypi_os_bookworm","tag-bash","tag-flightradar24"],"_links":{"self":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/5067","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/comments?post=5067"}],"version-history":[{"count":3,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/5067\/revisions"}],"predecessor-version":[{"id":5074,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/5067\/revisions\/5074"}],"wp:attachment":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/media?parent=5067"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/categories?post=5067"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/tags?post=5067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}