やる夫板のまとめサイトをつくって大儲けするお!

       ____
     /      \
   /  _ノ  ヽ、_  \
  / o゚((●)) ((●))゚o \  ほんとは、「やる夫板II」のまとめサイトを作りたいんだお…
  |     (__人__)    |
  \     ` ⌒´     /



       ____
     /      \
   /  _ノ  ヽ、_  \
  /  o゚⌒   ⌒゚o  \  でも、コピペが面倒くさいんだお…
  |     (__人__)    |  
  \     ` ⌒´     /



       ____
     /⌒  ⌒\
   /( ●)  (●)\
  /::::::⌒(__人__)⌒::::: \   だから自動でAAだけダウンロードするお!
  |     |r┬-|     |
  \      `ー'´     /





手順だお

1. まずダウンロードして解凍するお!

・・・C:\YaruoReaderに解凍されたとするお

2. コマンドプロンプトを立ち上げて次のようなコマンドを実行するお!


C:\YaruoReader\YaruoReader http://jbbs.livedoor.jp/bbs/read.cgi/otaku/12973/1321166817/ EUC-JP > output.txt


やる夫板版のナイスなスレのURLとエンコードの形式を入力して実行すると、AAだけ適当にとってきてくれるお。


          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)
| / / /     |r┬-|    | (⌒)/ / / //  これで、適当にまとめサイトつくって
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/    アフィリエイトで大儲けだお
|     ノ     | |  |   \  /  )  /              wwwwwwwwwwwwwww
ヽ    /     `ー'´      ヽ /    /     バ
 |    |   l||l 从人 l||l      l||l 从人 l||l  バ   ン
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、    ン
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))



   / ̄ ̄\
 /   _ノ  \
 |    ( ●)(●)
. |     (__人__) (Exciteブログはアフィリエイトに適していないことは、黙ってよう・・・)
  |     ` ⌒´ノ   
.  |         }
.  ヽ        }
   ヽ     ノ        \
   /    く  \        \
   |     \   \         \
    |    |ヽ、二⌒)、          \
昔は広告自体一切禁止だったらしいぞ。


レシピ
・C#でのコマンドプロンプトプログラムの実験です。ええ。この動画の影響うけてコマンドプロンプトをさわりたくなりました。

・HTMLはWebClientで取得してMSHTMLで解析しています。
 以下のページを参考にしています。
 【VB.NET】WebClientとHTMLDocumentを利用してHTMLを解析する

・最後にAAの判定はAA(アスキーアート)簡易判定アルゴリズムのパクリです。



コード

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.Collections;

///
namespace YaruoReader
{
///
/// ポスト内容
///

class Post
{
int no;
string name;
string time;
string detail;

public int No
{
set
{
this.no = value;
}
get
{
return this.no;
}
}
public string Name
{
set
{
this.name = value;
}
get
{
return this.name;
}
}
public string Time
{
set
{
this.time = value;
}
get
{
return this.time;
}
}
public string Detail
{
set
{
this.detail = value;
}
get
{
return this.detail;
}
}
}


class Program
{
static void Main(string[] args)
{
if (args.Length != 2)
{
Console.Error.WriteLine("Please input url and encord ex.(YaruoReader.exe http://xxxxx EUC-JP)");
Environment.Exit(1);
return;
}

string url = args[0];
Console.WriteLine(url);
WebClient wc = new WebClient();
Stream st = wc.OpenRead(url);

Encoding enc;
if (args[1] == "UTF-8")
{
enc = new System.Text.UTF8Encoding(false);
}
else
{
enc = Encoding.GetEncoding(args[1]);
}
StreamReader sr = new StreamReader(st, enc);
string html = sr.ReadToEnd();
sr.Close();

// 以下を参考
// http://blog.livedoor.jp/akf0/archives/51417144.html
mshtml.HTMLDocument msdoc = new mshtml.HTMLDocument();
mshtml.IHTMLDocument2 imsdoc;
imsdoc = (mshtml.IHTMLDocument2)msdoc;
imsdoc.write(html);

List posts = new List();

mshtml.IHTMLElementCollection taglist = msdoc.getElementsByTagName("dt");
foreach (mshtml.IHTMLElement tag in taglist)
{
string text = tag.innerText;
string[] ary = System.Text.RegularExpressions.Regex.Split(text, ":");

if (ary.Length != 3)
{
Console.Error.WriteLine("Failed parese {0}", text );
Environment.Exit(1);
return;
}
Post p = new Post();
p.No = int.Parse(ary[0]);
p.Name = ary[1];
if (ary[2].IndexOf("ID:") == -1)
{
p.Time = ary[2];
}
else
{
p.Time = ary[2].Substring(0, ary[2].IndexOf("ID:"));
}
posts.Add(p);
}
taglist = msdoc.getElementsByTagName("dd");
if (taglist.length != posts.Count)
{
Console.Error.WriteLine("Not match
:{0} and
:{0}", posts.Count,taglist.length);
Environment.Exit(1);
return;
}
int idx = 0;
foreach (mshtml.IHTMLElement tag in taglist)
{
Post p = posts[idx];
p.Detail = tag.innerText;
++idx;
}

foreach (Post p in posts)
{
//AA(アスキーアート)簡易判定アルゴリズム
// http://d.hatena.ne.jp/awef/20110412/1302605740
if (p.Detail.IndexOf("  ")== -1)
{
continue;
}

Console.WriteLine("---------------------------------------------");
Console.WriteLine("no:{0} name:{1} time{2}", p.No, p.Name, p.Time);
Console.WriteLine(p.Detail);
}


}
}
}

[PR]
by mima_ita | 2012-01-08 22:46 | 実験
<< コマンドプロンプトを半透明にす... ゆっくり翻訳ソフトをつくってみたよ! >>



実験ですお
検索
カテゴリ
最新の記事
.NET4.5におけるasy..
at 2014-07-02 00:46
.NETでTwitterを検..
at 2014-06-29 00:49
Redmineのプラグインで..
at 2014-06-28 03:29
IO.popenのwrite..
at 2014-06-28 03:25
RedmineのWikiでU..
at 2014-06-28 03:16
以前の記事
最新のトラックバック
その他のジャンル
ブログパーツ