Light12306/StationDataFileGenerator/Program.cs

49 lines
1.9 KiB
C#
Raw Normal View History

2014-05-05 19:34:47 +08:00
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using Newtonsoft.Json;
namespace StationDataFileGenerator
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var targetDataFile = Path.Combine(_root, @"..\Web12306\js\station\station_data.js");
var inputDataFile = Path.Combine(_root, @"station_name.js");
var inputPopFile = Path.Combine(_root, @"favorite_name.js");
//常规数据
var commonDataText = File.ReadAllText(inputDataFile);
var popDataText = File.ReadAllText(inputPopFile);
//@bjb|北京北|VAP|beijingbei|bjb|0
//@bji|北京|BJP|0
var commonData = new Regex(@"@([a-z]+)\|([^\|]+)\|([^\|]+)\|([^\|@]+)\|([^\|@]+)\|([^\|@'""]+)", RegexOptions.IgnoreCase).Matches(commonDataText)
.Cast<Match>().Select(s => new { p = s.Groups[4].Value.ToLower(), n = s.Groups[2].Value.ToLower(), c = s.Groups[3].Value, s = int.Parse(s.Groups[6].Value), h = s.Groups[5].Value.ToLower() })
.GroupBy(s => char.ToUpper(s.h[0])).ToDictionary(s => s.Key, s => s.OrderBy(x => x.s).ToDictionary(x => x.c))
;
var popData = new Regex(@"@([a-z]+)\|([^\|]+)\|([^\|]+)\|([^\|@]+)", RegexOptions.IgnoreCase).Matches(popDataText)
.Cast<Match>().Select(s => s.Groups[3].Value).ToArray();
;
File.WriteAllText(targetDataFile, "define(function(require, exports, module){\r\n exports.data=" + Newtonsoft.Json.JsonConvert.SerializeObject(commonData) + ";\r\n exports.popcity=" + JsonConvert.SerializeObject(popData) + ";\r\n});");
Console.Write("OK.");
Console.ReadKey();
}
static string _root = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
}
}