URLLinkerを改良/YouTubeプレイヤーを自動設置

火曜日, 3月 22nd, 2011 by

URLLinkerをYouTubeに対応させました。YouTubeっぽいURLを見つけると引数を解析して自動的にYouTubeのプレイヤーを埋めこみます。また、生成したHTMLのプレビューを画面の下部に表示するようにしました。

対応URL形式

以下のようなURLに対応しているつもりです。

  • YouTubeのURL
    YouTubeのプレイヤーを設置します。
  • 画像っぽいURL
    imgタグで表示します。
  • それ以外のURL
    target=_blankでAリンクを張ります。
  • ttp
    httpに修正します。

使う

URLLinker

ソースコード

ソースコードは以下の通り。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
import re,cgi

class MainHandler(webapp.RequestHandler):
    def post(self):
        self.get()

    def get(self):
        raw = encoded = ""
        if self.request.get("encode"):
            raw = cgi.escape(self.request.get("raw"))
            preview = linkURLs(imgTags(youtube(ttp2http(self.request.get("raw")))))
            encoded = cgi.escape(preview)
            preview = nl2br(preview)
       
        self.response.out.write(u"""
<html>
<head>
<title>URL Linker</title>
</head>
<body>
<h1>URL Linker</h1>
左側のテキストエリアにURLを含むテキストを入力して変換ボタンをクリックしてください。
URL部分がリンクに変換されたテキストが右側のテキストエリアに表示されます。
<form action="/" method="post"><input type="hidden" name="phpMyAdmin" value="cfc2644bd9c947213a0141747c2608b0" />
<textarea name="raw" style="float:left;width:450px;height:450px">%s</textarea>
<div style="float:left;margin-top:70px">
<input name="encode" type="submit" value=" > 変換 > "><br>
</div>
<textarea name="encoded" style="float:left;width:450px;height:450px">%s</textarea>
</form><br clear="all">
%s
Developed by <a href="http://php6.jp/python">python練習帳</a>
</body>
</html>
"""
% (raw, encoded, preview))


def ttp2http(str):
  return re.compile(r'([^"]|^)h?ttp(://)').sub(r'\1http\2', str)

def linkURLs(str):
  return re.compile(r'([^"]|^)(https?|ftp)(://[\w:;/.?%#&=+-]+)').sub(r'\1<a href="\2\3?phpMyAdmin=cfc2644bd9c947213a0141747c2608b0" target="_blank">\2\3</a>', str)
 
def imgTags(str):
  return re.compile(r'([^"]|^)(https?)(://[\w:;/.?%#&=+-]+\.(jpg|jpeg|png|gif|JPG|JPEG|PNG|GIF))').sub(r'\1<img src="\2\3"/>', str)

def youtube(str):
  return re.compile(r'([^"]|^)(https?)://.+.youtube.com/([\w:;/.?%#&=+-]+)v=([a-zA-Z0-9]+)(&\w+)*').sub(r'<br/><iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/\4" frameborder="0" allowfullscreen></iframe>', str)

def nl2br(str):
  return str.replace('\r\n','\n').replace('\n','<br />\n')

def main():
    application = webapp.WSGIApplication([('/', MainHandler)],
                                         debug=True)
    util.run_wsgi_app(application)

if __name__ == '__main__':
    main()

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Facebook comments:

comments

Leave a Reply


Get Adobe Flash player
single