Last active
November 27, 2020 05:19
-
-
Save jtlimson/182620bec9ae86c4e44d175dcfe082f9 to your computer and use it in GitHub Desktop.
Get JapanPost "〒 (郵便記号, yūbin kigō)" delivery status using windows console app
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Author : julius limson | |
* Description : Get JapanPost "〒 (郵便記号, yūbin kigō)" delivery status | |
* Parameter : args[0] = Tracking Number | |
* Output: (delivered, returned to sender, not delivered) and dates. | |
* usage : in cmd | |
ProjLocation> Projectname.exe <trackingnumber> | |
*/ | |
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Net.Http; | |
using System.Text.RegularExpressions; | |
namespace Japanpost_deliverystatus | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
string tracking_number = Regex.Replace(args[0], "[^0-9_.]+", "", RegexOptions.Compiled); | |
var values = new List<KeyValuePair<string, string>> | |
{ | |
new KeyValuePair<string, string>("requestNo1", tracking_number), | |
new KeyValuePair<string, string>("search.x", "0"), | |
new KeyValuePair<string, string>("search.y", "0"), | |
new KeyValuePair<string, string>("search", "Tracking+start"), | |
new KeyValuePair<string, string>("locale", "en"), | |
new KeyValuePair<string, string>("startingUrlPatten", "") | |
}; | |
var client = new HttpClient(); | |
var requestContent = new FormUrlEncodedContent(values); | |
var response = client.PostAsync("https://trackings.post.japanpost.jp/services/srv/search/", requestContent).Result; | |
var content = response.Content.ReadAsStringAsync().Result; | |
if (response.Content.ReadAsStringAsync().Result.Contains("Final delivery")) { | |
Console.Write("delivered - {0}\n", tracking_number); | |
var arr = Regex.Matches(content, @"\d{2}/\d{2}/\d{4}").Cast<Match>() | |
.Select(m => m.Value) | |
.ToArray(); | |
string sent_date = arr[0]; | |
string received_date = arr[arr.Count() - 1]; | |
Console.WriteLine("Fulfill on {0} Delivered on {1}", sent_date, received_date); | |
} | |
else | |
{ | |
if (response.Content.ReadAsStringAsync().Result.Contains("Returned to sender")) | |
{ | |
Console.Write("Returned to sender - {0} \n", tracking_number); | |
var arr = Regex.Matches(content, @"\d{2}/\d{2}/\d{4}").Cast<Match>() | |
.Select(m => m.Value) | |
.ToArray(); | |
string sent_date = arr[0]; | |
string returned_date = arr[arr.Count() - 1]; | |
Console.WriteLine("Fulfill on {0} Returned on {1}", sent_date, returned_date); | |
} | |
else { | |
Console.Write("\"{0}\" - not delivered\n", tracking_number); | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment