{"id":50515,"date":"2021-10-12T06:52:51","date_gmt":"2021-10-12T10:52:51","guid":{"rendered":"https:\/\/swling.com\/blog\/?p=50515"},"modified":"2021-10-12T06:52:51","modified_gmt":"2021-10-12T10:52:51","slug":"guest-post-simple-android-database-part-2","status":"publish","type":"post","link":"https:\/\/swling.com\/blog\/2021\/10\/guest-post-simple-android-database-part-2\/","title":{"rendered":"Guest Post: Simple Android Database Part 2"},"content":{"rendered":"<p><em><strong><a href=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-2.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-50523\" src=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-2.jpeg\" alt=\"\" width=\"1032\" height=\"576\" srcset=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-2.jpeg 1032w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-2-300x167.jpeg 300w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-2-1024x572.jpeg 1024w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-2-768x429.jpeg 768w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-2-624x348.jpeg 624w\" sizes=\"auto, (max-width: 1032px) 100vw, 1032px\" \/><\/a>Many thanks to SWLing Post contributor, Bill Hemphill, who shares the following guest post:<\/strong><\/em><\/p>\n<hr \/>\n<h1>Simple Android Database-PART 2<\/h1>\n<p style=\"text-align: right;\"><strong>by Billy Hemphill, WD9EQD<\/strong><\/p>\n<p>In the first part, I showed how you could easily take a spreadsheet and create a simple database for viewing on an Android phone\/tablet. The examples used in that article was two spreadsheets of radio schedules \u2013 one for Shortwave and one for FM Radio Programs. See the following link to the original article: <a href=\"https:\/\/swling.com\/blog\/2021\/10\/guest-post-radio-schedules-in-a-simple-android-database\/\">https:\/\/swling.com\/blog\/2021\/10\/guest-post-radio-schedules-in-a-simple-android-database\/<\/a><\/p>\n<p>There are many lists on the internet of various radio databases. If the database can be downloaded as either a CVS file or a spreadsheet, then it is possible to load it into the PortoDB app on the phone tablet. I\u2019ll show how this can be done with two popular databases that I reference all the time.<\/p>\n<h2>EIBI Data Base<\/h2>\n<p>Most of you are probably familiar with the EIBI database of shortwave schedules. Many of the Shortwave Schedule apps on the Phones reference this database. For example, I use the <a href=\"https:\/\/swling.com\/blog\/2017\/10\/skywave-radio-schedules-now-on-the-google-play-store\/\">Skywave Schedules<\/a> on my phone. While it does allow for me to search by many parameters, I thought it might be fun to have it in a PortoDB database. Plus it would be interesting to see how PortoDB performs with a large data set.<!--more--><\/p>\n<p>Fortunately, the EIBI is available as a CVS file. Just go to the following and download it:<\/p>\n<p><a href=\"http:\/\/www.eibispace.de\/\" target=\"_blank\" rel=\"noopener\">http:\/\/www.eibispace.de\/<\/a><\/p>\n<p>The CVS EIBI file uses semi-colons as the delimiter between fields. The first line is the header for the various columns. For example, first few lines of CVS text file:<\/p>\n<p><em>kHz:75;Time(UTC):93;Days:59;ITU:49;Station:201;Lng:49;Target:62;Remarks:135;P:35;Start:60;Stop:60;<\/em><br \/>\n<em>16.4;0000-2400;;NOR;JXN Marine Norway;;NEu;no;1;;<\/em><br \/>\n<em>18.1;0000-2400;;RUS;RDL Russian Navy;-CW;RUS;m;1;;[1219]<\/em><br \/>\n<em>18.2;0000-2400;;IND;VTX Indian Navy;;SAs;v;1;;<\/em><br \/>\n<em>18.3;0000-2400;;F;HWU French Navy;;WEu;wu;1;;<\/em><br \/>\n<em>19.6;0000-2400;;G;GQD Anthorn;;WEu;an;1;;<\/em><br \/>\n<em>19.8;0000-2400;;AUS;NWC US\/Australian Navy;;Oc;ex;1;;<\/em><\/p>\n<p>The first thought is to just send this CVS file to the phone\/tablet and Import it into a table. This will create a table with 16,995 rows. But if you do that, then you will get the following:<\/p>\n<p><a href=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P01-1.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-50516\" src=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P01-1.jpeg\" alt=\"\" width=\"1200\" height=\"1920\" srcset=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P01-1.jpeg 1200w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P01-1-188x300.jpeg 188w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P01-1-640x1024.jpeg 640w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P01-1-768x1229.jpeg 768w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P01-1-960x1536.jpeg 960w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P01-1-624x998.jpeg 624w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/p>\n<p>PortoDB uses Commas as delimiters, not semicolon. You need to change the semicolons to commas in the original file before you import it into the table. Any text editor can be used to do a global replace of all semicolons with commas. Once that is done, it can be imported into a table:<\/p>\n<p><a href=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P02-1.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-50519\" src=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P02-1.jpeg\" alt=\"\" width=\"880\" height=\"550\" srcset=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P02-1.jpeg 880w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P02-1-300x188.jpeg 300w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P02-1-768x480.jpeg 768w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P02-1-624x390.jpeg 624w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/a><\/p>\n<p>Beautiful; now the data has all the columns. You need to scroll to the right to see all the columns.<\/p>\n<p>After reviewing the data, I realized that I don\u2019t need all the columns and probably don\u2019t need all the rows of data. I recommend downloading the Readme.txt file from the EIBI website. This file describes the layout of CVS file. There are 11 columns (or as the readme file calls it \u2013 \u201cEntry\u201d). They are:<\/p>\n<p style=\"padding-left: 40px;\">Col 1: Frequency in kHz<br \/>\nCol 2: UTC Start and End Time<br \/>\nCol 3: Days of Operation<br \/>\nCol 4: ITU Code<br \/>\nCol 5: Station Name<br \/>\nCol 6: Language Code<br \/>\nCol 7: Target Area Code<br \/>\nCol 8: Transmitter Site Code<br \/>\nCol 9: Persistence Code<br \/>\nCol 10: Start Date<br \/>\nCol 11: End Date<\/p>\n<p>After playing around with the data, I found that I wanted the data arranged as follow:<\/p>\n<p style=\"padding-left: 40px;\">Col 1: Frequency between 4000 and 24000 kHz<br \/>\nCol 2: Start Time<br \/>\nCol 3: End Time<br \/>\nCol 4: Days of Operation<br \/>\nCol 5: Station Name<br \/>\nCol 6: Language<br \/>\nCol 7: Target Area<\/p>\n<p>I wrote an AWK program, EIBI.AWK, that will take the original EIBI.cvs file and create a new file in the format I wanted. This program will change the semicolons to colons, filter the frequency to 4000-24000, split the time into Start and End times, and filter the Language column to English only. This AWK program can easily be change to filter in other ways. It also adds a space before frequencies less than 5 digits. This is so that portoDB can sort correctly. And Quotes are added around the Days of Operation and Station Names to ensure that commas in these field get handled correctly.<\/p>\n<hr \/>\n<p><code>Program EIBI.AWK:<\/code><\/p>\n<p><code>#   EIBI.AWK<\/code><br \/>\n<code><br \/>\n#<\/code><br \/>\n<code><br \/>\n# print the first line with the column headers<\/code><br \/>\n<code><br \/>\nBEGIN {print \"kHz,Start (UTC),End (UTC),Days,Station,Language,Target\"}<\/code><\/p>\n<p><code>{FS=\";\" # set the input file separator<\/code><br \/>\n<code>OFS=\",\" # set the output file separator<\/code><br \/>\n<code>q=\"\\\"\" # set q to quote symbol<\/code><\/p>\n<p><code># set k = to the khz. add a space in front if less than 5 digits<\/code><\/p>\n<p><code>if (($1+0) &gt; 9999)<\/code><br \/>\n<code>k=$1<\/code><br \/>\n<code>else<\/code><br \/>\n<code>k=\" \" $1}<\/code><\/p>\n<p><code># split the time into start and end times<\/code><br \/>\n<code>{split($2,t,\/-\/)}<\/code><\/p>\n<p><code>#cycle thru the file starting at row 2 (ignore row 1 headers)<\/code><br \/>\n<code>#only include freq from 4000 to 24000 and english<\/code><\/p>\n<p><code>{if ((NR ! 1) &amp;&amp;<\/code><br \/>\n<code>(($1+0) &gt; 4000) &amp;&amp;<\/code><br \/>\n<code>(($1+0) &lt; 24000) &amp;&amp;<\/code><br \/>\n<code>($6 = \"E\"))<\/code><br \/>\n<code>print k,t[1],t[2],q$3q,q$5q,$6,$7}<\/code><\/p>\n<hr \/>\n<p>The resulting output file looks like this:<\/p>\n<p><em>kHz,Start (UTC),End (UTC),Days,Station,Language,Target<\/em><br \/>\n<em>4005.5,0000,2400,&#8221;&#8221;,&#8221;Dutch Military ALE&#8221;,E,HOL<\/em><br \/>\n<em>4005,0000,2400,&#8221;&#8221;,&#8221;NSS US Navy RTTY\/STANAG&#8221;,E,NAm<\/em><br \/>\n<em>4010,0000,1800,&#8221;&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><br \/>\n<em>4010,0105,0110,&#8221;Sa&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><br \/>\n<em>4010,0140,0150,&#8221;Sa&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><br \/>\n<em>4010,0155,0200,&#8221;SaSu&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><br \/>\n<em>4010,0325,0330,&#8221;Mo-Fr&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><br \/>\n<em>4010,0445,0454,&#8221;Mo,We&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><br \/>\n<em>4010,0500,0505,&#8221;Mo-Fr&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><br \/>\n<em>4010,0505,0530,&#8221;Mo-We&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><br \/>\n<em>4010,0535,0600,&#8221;Mo,We&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><br \/>\n<em>4010,0605,0620,&#8221;Th,Fr&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><br \/>\n<em>4010,0620,0623,&#8221;Mo-Fr&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><br \/>\n<em>4010,0623,0640,&#8221;Th,Fr&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><br \/>\n<em>4010,0645,0700,&#8221;We-Fr&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><br \/>\n<em>4010,0705,0710,&#8221;SaSu&#8221;,&#8221;Birinchi Radio&#8221;,E,CAs<\/em><\/p>\n<p>This file can now be imported into PortoDB with following results:<a href=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P03-1.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-50518\" src=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P03-1.jpeg\" alt=\"\" width=\"880\" height=\"550\" srcset=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P03-1.jpeg 880w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P03-1-300x188.jpeg 300w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P03-1-768x480.jpeg 768w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P03-1-624x390.jpeg 624w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/a><\/p>\n<p>I can now sort by Station, Start time, Target Area, etc.<br \/>\nWhile this data is in the App Skywave Schedules, I find that for many purposes, sorting and searching the EIBI database directly works better.<\/p>\n<h2>Mesa Mike&#8217;s List of USA AM Band Radio Stations<\/h2>\n<p>I am always using my loop antennas to see what AM radio stations I can hear. While there are many websites to help with determining what station is on what frequency, I have found that Mesa\u2019s Mikes List of USA AM Band Radio Stations to be a good first place to look:<\/p>\n<p><a href=\"http:\/\/mesamike.org\/radio\/cdbs\/amdb.mvc\" target=\"_blank\" rel=\"noopener\">http:\/\/mesamike.org\/radio\/cdbs\/amdb.mvc<\/a><\/p>\n<p>His site compiles the list daily from FCC data base. You can scroll through the listings or search by Frequency and\/or State.<\/p>\n<p>But the best part is that you can download the current list as a delimiter text file. The CVS file uses the Vertical Bar character as the delimiter. This needs to be changed to a comma for importing into a table in PortoDB. Following is first few lines of the downloaded file;<\/p>\n<p><em>Last Updated Mon, Jan 04, 2021 at 1002 UTC<\/em><br \/>\n<em>APP_ID|FAC_ID|FREQ|CALL|STATE|CITY|PWRD|PWRN|PWRC|LAT|LON|STATUS|<\/em><br \/>\n<em>APP_ID|FAC_ID|FREQ|CALL|STATE|COL|PWR_D|PWR_N|PWR_C|LAT|LON|NOTE<\/em><br \/>\n<em>153|73308|1540|WYCL|OH|NILES|500|||41.1322|-80.7611|<\/em><br \/>\n<em>598|29597|1110|WKQA|VA|NORFOLK|50000|||36.9428|-76.5322|<\/em><br \/>\n<em>604|51661|0930|WPAT|NJ|PATERSON|5000|5000||40.8497|-74.1831|<\/em><br \/>\n<em>608|11127|1530|WYMM|FL|JACKSONVILLE|50000|||30.3639|-81.7483|<\/em><br \/>\n<em>619|65695|1130|WISN|WI|MILWAUKEE|50000|10000||42.7550|-88.0814|<\/em><br \/>\n<em>623|73364|1320|WOBL|OH|OBERLIN|1000|1000||41.2681|-82.2111|<\/em><br \/>\n<em>634|54500|1450|KBFI|ID|BONNERS FERRY|1000|1000||48.6889|-116.3344|<\/em><br \/>\n<em>635|9665|1360|KKBJ|MN|BEMIDJI|5000|2500||47.4422|-94.8658|<\/em><br \/>\n<em>639|9412|1030|WOSO|PR|SAN JUAN|10000|10000||18.3686|-66.2547|<\/em><br \/>\n<em>643|47079|1260|WXCE|WI|AMERY|5000|5000||45.2569|-92.3667|<\/em><br \/>\n<em>652|67672|0910|WJCW|TN|JOHNSON CITY|5000|1000||36.4103|-82.4536|<\/em><br \/>\n<em>656|54873|1340|WVCV|VA|ORANGE|1000|1000||38.2539|-78.1208|<\/em><\/p>\n<p>I wrote another AWK program to take the downloaded file and put it in a better format for importing into a table. Following is the AWK program<\/p>\n<p><code>AM.AWK:<\/code><\/p>\n<p><code>#! \/usr\/bin\/awk -f<\/code><br \/>\n<code># print the first line with the column headers<\/code><br \/>\n<code>BEGIN {print \"FREQ,CALL,STATE,CITY,PWR_D,PWR_N\"}<\/code><\/p>\n<p>&nbsp;<\/p>\n<p><code>{FS=\"|\" # set the input file separator<\/code><br \/>\n<code>OFS=\",\" # set the output file separator<\/code><br \/>\n<code>q=\"\\\"\" # set q to quote symbol<\/code><\/p>\n<p><code># set k = to the khz. add a space in front if less than 1000<\/code><\/p>\n<p><code>f = $3 + 0<\/code><\/p>\n<p><code>if (f &gt; 999)<\/code><br \/>\n<code>k=f <\/code><br \/>\n<code>else <\/code><br \/>\n<code>k=\" \" f}<\/code><\/p>\n<p><code>#cycle thru the file starting at row 4 (ignore the 3 headers)<\/code><\/p>\n<p><code>{if (NR &gt; 3)<\/code><br \/>\n<code>print k,q$4q,q$5q,q$6q,$7,$8}<\/code><\/p>\n<p>The AWK program selects only certain columns, skips the header lines, write a new header line and adds a space before any frequency that is less than 1000. It also adds Quotes around some of fields to ensure that they get imported as text fields.<\/p>\n<p>The resulting output file after processing by the AWK program is;<\/p>\n<p><em>FREQ,CALL,STATE,CITY,PWR_D,PWR_N<\/em><br \/>\n<em>1540,&#8221;WYCL&#8221;,&#8221;OH&#8221;,&#8221;NILES&#8221;,500,<\/em><br \/>\n<em>1110,&#8221;WKQA&#8221;,&#8221;VA&#8221;,&#8221;NORFOLK&#8221;,50000,<\/em><br \/>\n<em>930,&#8221;WPAT&#8221;,&#8221;NJ&#8221;,&#8221;PATERSON&#8221;,5000,5000<\/em><br \/>\n<em>1530,&#8221;WYMM&#8221;,&#8221;FL&#8221;,&#8221;JACKSONVILLE&#8221;,50000,<\/em><br \/>\n<em>1130,&#8221;WISN&#8221;,&#8221;WI&#8221;,&#8221;MILWAUKEE&#8221;,50000,10000<\/em><br \/>\n<em>1320,&#8221;WOBL&#8221;,&#8221;OH&#8221;,&#8221;OBERLIN&#8221;,1000,1000<\/em><br \/>\n<em>1450,&#8221;KBFI&#8221;,&#8221;ID&#8221;,&#8221;BONNERS FERRY&#8221;,1000,1000<\/em><br \/>\n<em>1360,&#8221;KKBJ&#8221;,&#8221;MN&#8221;,&#8221;BEMIDJI&#8221;,5000,2500<\/em><br \/>\n<em>1030,&#8221;WOSO&#8221;,&#8221;PR&#8221;,&#8221;SAN JUAN&#8221;,10000,10000<\/em><br \/>\n<em>1260,&#8221;WXCE&#8221;,&#8221;WI&#8221;,&#8221;AMERY&#8221;,5000,5000<\/em><br \/>\n<em>910,&#8221;WJCW&#8221;,&#8221;TN&#8221;,&#8221;JOHNSON CITY&#8221;,5000,1000<\/em><br \/>\n<em>1340,&#8221;WVCV&#8221;,&#8221;VA&#8221;,&#8221;ORANGE&#8221;,1000,1000<\/em><br \/>\n<em>540,&#8221;KWMT&#8221;,&#8221;IA&#8221;,&#8221;FORT DODGE&#8221;,5000,170<\/em><\/p>\n<p>This file can now be directly imported into a Table in the PortoDB. The results are:<\/p>\n<p><a href=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-1.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-50517\" src=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-1.jpeg\" alt=\"\" width=\"1200\" height=\"1920\" srcset=\"https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-1.jpeg 1200w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-1-188x300.jpeg 188w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-1-640x1024.jpeg 640w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-1-768x1229.jpeg 768w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-1-960x1536.jpeg 960w, https:\/\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P04-1-624x998.jpeg 624w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/p>\n<p>You can now sort by any column or combination and search on any particular value to create a subset of the data.<\/p>\n<p>In conclusion, any set of data that can be presented in a CVS format can easily be imported into a table on your phone\/tablet for ready reference at any time.<\/p>\n<p>If anyone knows of any other useful datasets, please let us know.<\/p>\n<h2>Final comment about the AWK program<\/h2>\n<p>I\u2019m sure many of us (especially Linux users) are already familiar with how to use it. It\u2019s a great utility program for quickly manipulating text files in many different ways. While it is a standard utility on a Linux computer, it can also be used on a Windows system. Gawk for Windows can be downloaded from:<\/p>\n<p><a href=\"http:\/\/gnuwin32.sourceforge.net\/packages\/gawk.htm\" target=\"_blank\" rel=\"noopener\">http:\/\/gnuwin32.sourceforge.net\/packages\/gawk.htm<\/a><\/p>\n<p>Once installed, AWK can be run on a Command Line in a Command Window. To keep it simple, I created Batch files:<\/p>\n<p><code>REM EIBI.BAT<\/code><br \/>\n<code>awk -f eibi.awk &lt; %1 &gt; %2<\/code><\/p>\n<p>I then just run the batch file as:<\/p>\n<p><code>EIBI sked-a21.csv eibi.csv<\/code><\/p>\n<p>This takes the downloaded file sked-a21.cvs and processes it into a new file eibi.csv which can then be imported into the database table.<\/p>\n<p>I have a similar batch file for processing the Mesa Mike database.<\/p>\n<p>AWK is very powerful. If you are not familiar with it, I recommend you spend some time review some of the many online tutorials.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Many thanks to SWLing Post contributor, Bill Hemphill, who shares the following guest post: Simple Android Database-PART 2 by Billy Hemphill, WD9EQD In the first part, I showed how you could easily take a spreadsheet and create a simple database for viewing on an Android phone\/tablet. The examples used in that article was two spreadsheets [&hellip;]<\/p>\n","protected":false},"author":15,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[8,3194,627,3,438,651,43,4652],"tags":[2515,6954,4342,9484,2731,301],"class_list":["post-50515","post","type-post","status-publish","format-standard","hentry","category-articles","category-guest-posts","category-how-to","category-news","category-schedules","category-schedules-and-frequencies","category-shortwave-radio","category-wifi-radio","tag-android-apps","tag-bill-hemphill-wd9eqd","tag-guest-posts","tag-portodb","tag-shortwave-broadcast-schedules","tag-shortwave-schedules"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pn3uc-d8L","jetpack-related-posts":[{"id":50464,"url":"https:\/\/swling.com\/blog\/2021\/10\/guest-post-radio-schedules-in-a-simple-android-database\/","url_meta":{"origin":50515,"position":0},"title":"Guest Post: Radio Schedules in a Simple Android Database","author":"Thomas","date":"October 8, 2021","format":false,"excerpt":"Many thanks to SWLing Post contributor, Bill Hemphill, who shares the following guest post: Radio Schedules in a Simple Android Database by Bill Hemphill I am a program listener. I really enjoy listening to various radio stations direct and by internet streaming. Over time, I have come up with a\u2026","rel":"","context":"In &quot;Apps&quot;","block_context":{"text":"Apps","link":"https:\/\/swling.com\/blog\/category\/apps\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2021\/10\/P08-188x300.jpeg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":57418,"url":"https:\/\/swling.com\/blog\/2023\/08\/ghosts-in-the-air-glow-haarp-transmission-august-14-2023-0330-430-utc\/","url_meta":{"origin":50515,"position":1},"title":"Ghosts in the Air Glow HAARP transmission: August 14, 2023, 03:30-4:30 UTC","author":"Thomas","date":"August 6, 2023","format":false,"excerpt":"Many thanks to SWLing Post contributor, Bill (WD9EQD), who writes: \u201cGhosts in the Air Glow\u201d by Canadian artist Amanda Dawn Christie is a transmission art project through HAARP that mixes audio and images from the transition between Earth\u2019s atmosphere and outer space. Shortwave radio listeners from around the world are\u2026","rel":"","context":"In &quot;News&quot;","block_context":{"text":"News","link":"https:\/\/swling.com\/blog\/category\/news\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2023\/08\/Ghosts-in-the-air-glow-HAARP-1.jpeg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2023\/08\/Ghosts-in-the-air-glow-HAARP-1.jpeg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2023\/08\/Ghosts-in-the-air-glow-HAARP-1.jpeg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2023\/08\/Ghosts-in-the-air-glow-HAARP-1.jpeg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2023\/08\/Ghosts-in-the-air-glow-HAARP-1.jpeg?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":28611,"url":"https:\/\/swling.com\/blog\/2017\/10\/skywave-radio-schedules-now-on-the-google-play-store\/","url_meta":{"origin":50515,"position":2},"title":"Skywave Radio Schedules now on the Google Play store","author":"Thomas","date":"October 2, 2017","format":false,"excerpt":"Many thanks to SWLing Post contributor, Cap, who has just notified me that his shortwave radio schedules app for Android--Skywave Radio Schedules--is now available via the Google Play store. You might recall that Cap first shared this app in Beta form and invited us to share feedback and comments.\u00a0Cap has\u2026","rel":"","context":"In &quot;Apps&quot;","block_context":{"text":"Apps","link":"https:\/\/swling.com\/blog\/category\/apps\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2014\/01\/SkywaveSchedules.jpeg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":56597,"url":"https:\/\/swling.com\/blog\/2023\/05\/shortwave-db-a-new-database-of-hf-radio-schedules\/","url_meta":{"origin":50515,"position":3},"title":"Shortwave DB: A new database of HF radio schedules","author":"Thomas","date":"May 18, 2023","format":false,"excerpt":"Many thanks to SWLing Post contributor, Dan Ervin, who writes: Hi Thomas - Long time fan of your blog. I recently stumbled upon a (new to me) Shortwave Broadcast Schedule database. It is aggregated from AOKI, EiBi and HFCC databases. Home|Shortwave DB\u2122 Not sure if you've seen it? But I've\u2026","rel":"","context":"In &quot;News&quot;","block_context":{"text":"News","link":"https:\/\/swling.com\/blog\/category\/news\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2023\/05\/Shortwave-Database-1.jpeg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2023\/05\/Shortwave-Database-1.jpeg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2023\/05\/Shortwave-Database-1.jpeg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2023\/05\/Shortwave-Database-1.jpeg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2023\/05\/Shortwave-Database-1.jpeg?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":43124,"url":"https:\/\/swling.com\/blog\/2020\/05\/panasonic-rd-9820-antenna-coupler-operating-instructions\/","url_meta":{"origin":50515,"position":4},"title":"Panasonic RD-9820 Antenna Coupler Operating Instructions","author":"Thomas","date":"May 3, 2020","format":false,"excerpt":"Many thanks to SWLing Post contributor, Bill Hemphill (WD9EQD), who shares a PDF copy of the Panasonic RD-9820 Antenna Coupler we recently mentioned in a post. He notes that he can't remember how he found this manual, but thought he'd share it. Click here to download the RD-9820 manual as\u2026","rel":"","context":"In &quot;Accessories&quot;","block_context":{"text":"Accessories","link":"https:\/\/swling.com\/blog\/category\/accessories\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2020\/04\/RF-2200-Antenna-Coupler-1024x848.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2020\/04\/RF-2200-Antenna-Coupler-1024x848.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2020\/04\/RF-2200-Antenna-Coupler-1024x848.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":3191,"url":"https:\/\/swling.com\/blog\/2012\/04\/shortwaveschedule-com-an-up-to-date-online-frequencybroadcaster-database-for-shortwave-radio\/","url_meta":{"origin":50515,"position":5},"title":"ShortwaveSchedule.com: An up-to-date online frequency\/broadcaster database for shortwave radio","author":"Thomas","date":"April 6, 2012","format":false,"excerpt":"There are a number of online shortwave frequency databases out there, but until recently, I was never satisfied with any one single site. Some of the more user-friendly sites are horribly out-of-date and many of the up-to-date sites are difficult to navigate when you're in a hurry. After all, it's\u2026","rel":"","context":"In &quot;News&quot;","block_context":{"text":"News","link":"https:\/\/swling.com\/blog\/category\/news\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/swling.com\/blog\/wp-content\/uploads\/2012\/04\/Schedule-and-frequencies-for-Bhutan-BS-Google-Chrome-442012-61228-AM-300x140.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/swling.com\/blog\/wp-json\/wp\/v2\/posts\/50515","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/swling.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/swling.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/swling.com\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/swling.com\/blog\/wp-json\/wp\/v2\/comments?post=50515"}],"version-history":[{"count":0,"href":"https:\/\/swling.com\/blog\/wp-json\/wp\/v2\/posts\/50515\/revisions"}],"wp:attachment":[{"href":"https:\/\/swling.com\/blog\/wp-json\/wp\/v2\/media?parent=50515"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/swling.com\/blog\/wp-json\/wp\/v2\/categories?post=50515"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swling.com\/blog\/wp-json\/wp\/v2\/tags?post=50515"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}