1. 程式人生 > >【開源一個小工具】一鍵將網頁內容推送到Kindle

【開源一個小工具】一鍵將網頁內容推送到Kindle

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using System.Diagnostics; 7 8 namespace Startup 9 { 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 try
15 { 16 if (!Directory.Exists(System.AppDomain.CurrentDomain.BaseDirectory + "\\log")) 17 { 18 Directory.CreateDirectory(System.AppDomain.CurrentDomain.BaseDirectory + "\\log"); 19 } 20 21 if
(args.Length == 0) 22 { 23 WriteStandardStreamOut("Missing parameter."); 24 Log2File("Missing parameter."); 25 return; 26 } 27 28 string url = ReadStandardStreamIn(); 29 Log2File("
Running SimpleSendToKindle.jar with url:" + url); 30 string ret = RunJar(url); 31 Log2File("Completed with return msg:" + ret); 32 WriteStandardStreamOut("{\"text\":\"" + ret + "\"}"); 33 } 34 catch (Exception ex) 35 { 36 Log2File("Error:" + ex.ToString()); 37 WriteStandardStreamOut("{\"text\":\"" + "Error." + ex.Message + "\"}"); 38 } 39 } 40 41 static string RunJar(string arg) 42 { 43 ProcessStartInfo startInfo = new ProcessStartInfo() 44 { 45 WorkingDirectory = System.AppDomain.CurrentDomain.BaseDirectory, 46 UseShellExecute = false,//要重定向 IO 流,Process 物件必須將 UseShellExecute 屬性設定為 False。 47 CreateNoWindow = true, 48 RedirectStandardOutput = true, 49 //RedirectStandardInput = false, 50 WindowStyle = ProcessWindowStyle.Normal, 51 FileName = "java.exe", 52 Arguments = @" -Dfile.encoding=utf-8 -jar SimpleSendToKindle.jar " + arg, 53 }; 54 //啟動程序 55 using (Process process = Process.Start(startInfo)) 56 { 57 process.Start(); 58 //process.WaitForExit(); 59 using (StreamReader reader = process.StandardOutput) 60 { 61 return reader.ReadToEnd(); 62 } 63 } 64 } 65 66 static void Log2File(string s) 67 { 68 FileStream fs = new FileStream(System.AppDomain.CurrentDomain.BaseDirectory + @"log/startup.log", FileMode.Append); 69 StreamWriter sw = new StreamWriter(fs, Encoding.UTF8); 70 sw.WriteLine(s); 71 sw.Close(); 72 fs.Close(); 73 } 74 75 static string ReadStandardStreamIn() 76 { 77 using (Stream stdin = Console.OpenStandardInput()) 78 { 79 int length = 0; 80 byte[] bytes = new byte[4]; 81 stdin.Read(bytes, 0, 4); 82 length = System.BitConverter.ToInt32(bytes, 0); 83 84 byte[] msgBytes = new byte[length]; 85 stdin.Read(msgBytes, 0, length); 86 87 string decodeMsg = Microsoft.JScript.GlobalObject.decodeURI(System.Text.Encoding.UTF8.GetString(msgBytes)); 88 return decodeMsg; 89 } 90 } 91 92 static void WriteStandardStreamOut(string msg) 93 { 94 int length = msg.Length; 95 byte[] lenBytes = System.BitConverter.GetBytes(length); 96 byte[] msgBytes = System.Text.Encoding.UTF8.GetBytes(msg); 97 byte[] wrapBytes = new byte[4 + length]; 98 Array.Copy(lenBytes, 0, wrapBytes, 0, 4); 99 Array.Copy(msgBytes, 0, wrapBytes, 4, length); 100 101 using (Stream stdout = Console.OpenStandardOutput()) 102 { 103 stdout.Write(wrapBytes, 0, wrapBytes.Length); 104 } 105 } 106 } 107 }

相關推薦

開源一個工具網頁內容Kindle

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using System.Diagnostic

工具python 在服務器上臨時啟用一個端口

python socket 啟用端口在服務器還未部署應用,而這時候如果要驗證網絡是否開通,我們可以先在服務器上模擬啟用應用的端口,然後從其他地方telnet這個端口來驗證網絡的開通情況。這邊使用python腳本來臨時啟用一個端口,用於測試使用。腳本如下:import socket while True:

Python式發郵件指令碼

     工作中涉及到給客戶定時發郵件,這裡提供一個Python小指令碼,單獨放進一個py小檔案,每次用時import一下非常簡單方便。 # !/usr/bin/python # -*- coding: utf-8 -*- # # create_author: (JAVA

iOS開發之使用UICollectionView實現美團App的分類功能偶現大眾點評App的一個bug

sso leg 一個 borde spa line 註意 oba alt 郝萌主傾心貢獻,尊重作者的勞動成果,請勿轉載。假設文章對您有所幫助,歡迎給作者捐贈,支持郝萌主,捐贈數額任意,重在心意^_^ 我要捐贈: 點擊捐贈Cocos2d-X源代碼下載:點我傳送遊戲官方下載

工具python 連接redis查詢

python redis 查詢作用說明:通過python連接redis進行查詢,判斷結果並進行後續操作。需先安裝redis-2.10.5.tar.gz。代碼如下:#!/usr/local/bin/python import redis r = redis.StrictRedis(host=‘192.168.1

工具在新文件夾中打開快捷方式所指向的文件

快捷 簡單 快速 image 文件 行程 images rdquo blog 最近在整理所有曾安裝過的小程序,發現Windows系統默認右鍵菜單中的定位目標功能只會在當前文件夾中打開。如果要刪除所指向的文件夾之後,就無法再利用退回功能快速回到之前的文件夾了。 所以我就寫了

微信遊戲遊戲開發調試--關於找不到app.json入口文件

com png info alt 微信開發者 遊戲 進入 http 找不到 經了解發現 小程序必須要有app.json 小遊戲必須的文件只有2個 game.js  小遊戲入口文件 game.json  小遊戲配置文件 所以不是工程文件缺失,解決方案如下: 進入微信開發者工具

VBA天的心血,收藏一下生成報表2

Public batch$ Sub crAddReport() '獲取窗體單選框選擇 UserForm1.Show If UserForm1.OptionButton1.Value = True Then batch = "一" ElseIf Us

VBA天的心血,收藏一下生成報表

Sub crDelReport() t1 = Timer Application.ScreenUpdating = False Call importLog Call findBrokenStation Call nowCrRe

微信程式在微信開發工具上七牛雲的圖片可以看到,但是在真機上看不到的原因解決

在開發微信小程式過程中,在微信開發者工具上,七牛雲的圖片都可以展示出來,但是在真機上,七牛雲的圖片卻展示不出來,也沒有報404找不到或者不能載入圖片的問題,     必須保證: 1.圖片是用image載入的; 2.圖片的url裡面沒有中文; 3.圖片的HTTP應為小寫的

憶童年舊時光() 寵物精靈

起初,寫部落格時為了找一個獨具匠心的頭像,便慕名想起了那可愛而優雅的神奇寶貝,故,便開始一堆超清圖片搜尋,頭像沒找到幾個好看的,桌布卻蜂擁而至。所以,在這裡默默默存放,記錄我兒時愛·德·布耀布耀德·Cartoon!!!   就決定是你了!     (武藏)既然

教程挖礦就這麼簡單-ITGC

最近有很多朋友請教我如何挖礦,而挖礦這個事,三言兩語又很難說清楚,目前主流幣過高的挖礦投入、技術門檻都讓小白們“望幣興嘆”。對於新朋友而言,再生派(ITGC)是一個很好的切入點。 再生派(貨幣代號ITGC),一個基於區塊鏈的跨平臺、多落地應用的資源再流通生

工具-按照xmind層結構轉成資料夾形式

按照xmind層結構轉成資料夾形式 如下圖所示,將如下的xmind層級結構轉換為具體的資料夾結構: 然後將上面的層級結構轉成如下形式: 詳細程式碼如下: #coding:utf-8 from xmindparser import xmind_to_dict

整理js開發中的實用工具):做一個整合儲存的工具

在開發工作中,常遇到程式碼重複開發的問題,比如一個分頁,左滑動等常見功能,而我們的解決辦法可能是這次寫一點,下次 copy 一點,如果不能解決問題,再改寫一點。若是沒有把可複用的程式碼抽離出來,做成一個通用的、可配置的小工具,私以為對技能的提升無益,所以在此立下個 flag,以後工作中遇到頻繁開發的功能

vim + ctags + taglist配置和使用 安裝 ctags和cscope的方法 vim語法高亮,自動縮排,python 自動縮排設定

1, vim + ctags + taglist配置和使用 taglist依賴於ctags,所以要先裝ctags,否則taglist裝了也沒法用! 1、首先安裝ctags 首先是ctags的安裝,推薦使用exuberant ctags,我們可以從其官方網站上下載它的原始碼包

工具——從文字內容中提取日期時間

需求 需要從文字檔案中提取中時間及日期 程式碼 “`java /** * 從文字內容中提取日期時間 * @param text 包含日期時間的文字(格式:yy

Android清理後臺實現附原始碼

整個程式很簡單 只有一個CleanActivity,實現清理後臺及並展示動畫效果 一個桌面小部件,點選啟動CleanActivity,實現同樣效果 一.  CleanActivity的實現 1.  主程式佈局 對應佈局為檔案為 R.layout.activity_clea

Android 進階清理

一鍵清理流程圖 系統快取分析 Android 已安裝 app /data/data/packagename/cache 資料夾和 /sdcard/Android/data/packagename/cache 資料夾組成 原生設定(Settings

微信程式註冊一個微信程式

小程式是一種新的開放能力,開發者可以快速地開發一個小程式。小程式可以在微信內被便捷地獲取和傳播,同時具有出色的使用體驗。這裡註冊一個小程式賬號體驗一下。接收流程每個郵箱僅能申請一個小程式註冊頁面http

微信程式微信開發者工具的使用

微信開發者工作是微信官方提供的針對微信小程式的開發工具,集中了開發,除錯,預覽,上傳等功能。下面來介紹下自己的針對小程式和微信開發者工具的使用心得。 1.下載並安裝以後開啟,需使用微訊號掃碼登入開發