<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/xml.xsl" type="text/xsl"?><feed xmlns="http://www.w3.org/2005/Atom">
  <title>nulog, NULL::something : out of the headphone &gt; 2006 &gt; February &gt; 28 &gt; flickr で CC じゃない写真を消す GM スクリプト</title>
  <link href="http://lowreal.net/logs/2006/02/28/2"/>
  <icon>http://lowreal.net/img/banner.png</icon>
  <link rel="self" type="application/atom+xml" href="http://lowreal.net/logs/2006/02/28/2.atom"/>
  <link rel="alternate" type="application/xhtml+xml" href="http://lowreal.net/logs/2006/02/28/2.xhtml"/>
  <updated>2006-02-28T17:00:16+09:00</updated>
  <author>
    <name>cho45(砂糖)</name>
  </author>
  <id>http://lowreal.net/2006/02/28/2</id>
  <entry>
    <title>flickr で CC じゃない写真を消す GM スクリプト</title>
    <link rel="alternate" type="text/html" href="http://lowreal.net/logs/2006/02/28/2.html"/>
    <link rel="alternate" type="application/xml+xhtml" href="http://lowreal.net/logs/2006/02/28/2.xhtml"/>
    <updated>2006-02-28T17:00:16+09:00</updated>
    <published>2006-02-28T17:00:16+09:00</published>
    <id>http://lowreal.net/2006/02/28/2</id>
    <category term="js"/>
    <category term="gm"/>
    <content type="xhtml" xml:base="http://lowreal.net/">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="/2006/ignore-not-cc-photo.user.js">ignore-not-cc-photo.user.js</a>
        </p>
        <p>実際は消すんじゃなくて半透明にします。適用先は他の人の写真一覧のページ (/photo/username/)</p>
        <p>以下スクリプトの説明</p>
        <p>実は Set があるときとないときとで構造化の度合いみたいなのが違っててややこしい。具体的には Set がない人の一覧では <code class="CSS">div.StreamView</code> 一個に対し、一つの写真と写真の情報が含まれる望ましい構造であるのに対し、Set がある人の一覧では、写真一覧が全部 <code class="CSS">div.StreamView</code> 一個に含まれている。</p>
        <p>ということで、Set がある場合とない場合にわけてる。きもいー。</p>
        <p>Set がある場合、<code class="CSS">div.StreamView</code> 以下の要素を一旦構造化する。</p>
        <ol title="Set がある場合">
          <li><code>DocumentFragment</code> を作っておく。</li>
          <li><code class="CSS">div.StreamView</code> 以下列挙してループ</li>
          <li><code>h4</code> がでてきたら <samp>div (class="__GM_Photo")</samp> という要素を作る</li>
          <li>他の要素だったら <code class="CSS">div.__GM_Photo</code> に <code>appendChild</code> (一旦ノードは削除される)</li>
          <li>また <code>h4</code> がでてきたら <code>DocumentFragment</code> に突っ込む</li>
          <li>ループ終わったら残ってる <code class="CSS">div.__GM_Photo</code> も <code>DocumentFragment</code> に突っ込む</li>
          <li><code class="CSS">div.StreamView</code> に <code>DocumentFragment</code> を <code>appendChild</code> (戻す)</li>
        </ol>
        <p><code>DocumentFragment</code> は <abbr title="Document Object Model">DOM</abbr> における無名ノードみたいなもの。名前そのまんまだけど！！！</p>
        <p><code>appenChild</code> は既に同じドキュメントにあるノードを追加するとき、一旦そのノードを取り除く。すなわち移動したいときはいちいち削除する必要はない。逆にコピーしたいときは <code>cloneNode</code> する必要がある。</p>
        <p>そいでもって、Set がない場合は <code class="CSS">div.StreamView</code> のクラス名に <samp>__GM_Photo</samp> を追加するだけしとく。</p>
        <p>あとは、Set のあるなしに関わらず、<abbr title="Creative Commons">CC</abbr> の画像を含んでいない <code class="CSS">div.__GM_Photo</code> にアレしてコレした的な何か。</p>
      </div>
    </content>
  </entry>
</feed>
