PySide/QtWebkitで楽々 slideshare Hack
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

PySide/QtWebkitで楽々 slideshare Hack

on

  • 2,652 views

 

Statistics

Views

Total Views
2,652
Views on SlideShare
2,643
Embed Views
9

Actions

Likes
0
Downloads
4
Comments
0

4 Embeds 9

http://a0.twimg.com 3
https://twitter.com 3
http://paper.li 2
http://tweetedtimes.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

PySide/QtWebkitで楽々 slideshare Hack Presentation Transcript

  • 1.
      PySide/QWebkit で 楽々 Slidehare Hack 第 7 回関東 Qt 勉強会
      Kazushige TAKEUCHI
    • <@myb1126>
      N9 買いました!
  • 2.
      0. 自己紹介
    • 職業   : NW SE/SIer( 元携帯 S/W 開発 )
      • NW の設計とか(内部用の)テストツールとか
    • Twitter id : @myb1126
    • 3. 主な出現箇所:
      • 来月あたりに東京の東側にいくので,そっちの方で勉強会
    • 興味
      • NW ツール
      • 4. 開発を楽にする仕組み
        • CI/BTS
  • 5.
      0. 自己紹介
    • 買いました。 (∩´∀ ` )∩
  • 6.
      今日の発表の内容
      成果物
      • 地下鉄通勤が暇なので、 Slideshare でもみて勉強して通勤したい!
      • 7. そんな願望を元に作った Slideshare Downloader の紹介
      発表流れ
      • Python: どんな言語なの?
      • 8. PySide:PySide とは、 Qt SDK/PyQt との違い
      • 9. Slideshare Downloader の紹介
  • 10. 1.Pythonとは
    • Lightweight Language
      • 書いたらすぐ試せる。
      • 11. プロトタイプ向け(だけではなく実用にも使える)
      • 12. 短いコード
      • 13. GC:メモリ管理が容易(プロトタイプ用途ならとりあえず)
    • C/C++同様のマルチパラダイム言語
      • 関数型言語のパラダイムも使える。
      • 14. 短いコードで高度なことが出来るようになってる。
    • 海外で人気があるためユーザが多数
      • ツールなどもかなり充実
        • 海外製のツールが実はpython製でプラグインがpythonなんてことも
      • ただし、マルチバイト文字の扱いが若干。。。
        • python3 も良いけど、(Webアプリでは)まだまだ
  • 15. 1.Pythonとは
    • 適用範囲が広い
      • CLIアプリ
        • Linuxの随所に!(pythonを削ってしまうと動かないOSもあるとか)
      • デスクトップアプリケーション
        • フリージングで、exe/app化
          • .exeを生成可能でランタイムのインストール無しで配布されたアプリを実行可能(for Windows)
      • Webアプリ
        • フレームワークが充実
          • Model / View / Controllerが多種多様で、色んな組み合わせで利用可能
        • Webサーバも規格化されており、互換性あり
          • WSGIとかでぐぐってください。
      • 組み込み
        • Python on a Chip
          • (詳しく知らない。。。)
  • 16. 1.Pythonとは
      Pythonistaは モテ ます らしいです。
  • 17. 2.PySideとは
  • 18. 2.PySideとは
    • ライセンス
      • LGPL
    • PySide Qt bindings allow both free open source and proprietary software development
    • 19. 商用ソフトウェア書けるよ !
  • 20. 2.PySideとは
    • これは何?
      • LGPL な Qt python Binding (PyQt は GPL )
    • Python ver
      • - 2.6/2.7 (3.2 は experimental)
    • Qt ver
      • 4.8 を beta support
    • Url
      • http://www.pyside.org/
  • 21. 2.PySide
      色々書きたいことはあるのですが, まとめきれなかったのでゴメンナサイ
  • 22. 3.Slideshare Downloader(以下,SD
  • 23. 3.Slideshare Downloader てめえは俺を怒らせた (Button) オラオラオラオラ (Button) やれやれだぜ (Button) アドレスバー( LineEdit ) スライド (WebView)
  • 24. 3.Slideshare Downloader
      Demo しようと思ったけど回線が細くて無理
    • (´ ・ ω ・` )
    • 25. どなたか, LAN / MicroUSB 貸してくだされば出来ます.
  • 26. 3.Slideshare Downloader
    • Qwebkit を利用
    • 27. Windows ではMozilla Firefoxのプラグインが利用可能
      • 参考URL
  • 28. QtWebKit
    • Apple謹製HTMLレンダリングエンジン
      • のQt Port
    • プラグインもサポート
      • Windowsの場合は、Firefoxのプラグインを兼用
    • HTML5 Support
      • まだまだ実装中(らしい)
      • 29. Win 64bit ではなぜか動かない時が
        • なぜかWin 64bitでは、HTML5のスライドが表示出来なかった。(SDでは未対応とした)
        • 30. 32bitなら出来た。
  • 31. QtWebkitの全クラス:ABC順
      WebCore
    • QGraphicsWebView
    • 32. QWebDatabase
    • 33. QWebElement
    • 34. QWebElementCollection
    • 35. QWebFrame
    • 36. QWebHistory
    • 37. QWebHistoryInterface
    • 38. QWebHistoryItem
    • 39. QWebHitTestResult
    • 40. QwebInspector
    • QWebPage
    • 41. QWebPage.ChooseMultipleFilesExtensionOption
    • 42. QWebPage.ChooseMultipleFilesExtensionReturn
    • 43. QWebPage.ErrorPageExtensionOption
    • 44. QWebPage.ErrorPageExtensionReturn
    • 45. QWebPage.ExtensionOption
    • 46. QWebPage.ExtensionReturn
    • 47. QWebPluginFactory
    • 48. QWebPluginFactory.MimeType
    • 49. QWebPluginFactory.Plugin
    • 50. QWebSecurityOrigin
    • 51. QWebSettings
    • 52. QWebView
  • 53. QtWebkitの全クラス:分類別
      □共通・全体
      • WebCore
      • 54. QwebView
      • 55. QgraphicsWebView
      □設定系
      • QWebSettings
      □プラグイン系
      • QWebPluginFactory
      • 56. QWebPluginFactory.MimeType
      • 57. QWebPluginFactory.Plugin
    • □タブ,HTMLとかページ系
      • QWebElement
      • 58. QWebElementCollection
      • 59. QWebFrame
      • 60. QwebInspector
    • □???
      • QWebHitTestResult
      □ページ系
      • QWebPage
      • 61. QWebPage.ChooseMultipleFilesExtensionOption
      • 62. QWebPage.ChooseMultipleFilesExtensionReturn
      • 63. QWebPage.ErrorPageExtensionOption
      • 64. QWebPage.ErrorPageExtensionReturn
      • 65. QWebPage.ExtensionOption
      • 66. QWebPage.ExtensionReturn
      □セキュリティ系
      • QWebSecurityOrigin
    • DB系
      • QWebDatabase
    • 履歴系
      • QWebHistory
      • 67. QWebHistoryInterface
      • 68. QWebHistoryItem
  • 69. Slideshare Downloaderの仕組み(1)
    • WebView の設定を行う
      • s = QtWebKit.QWebSettings.globalSettings()
      • 70. s.setAttribute(QWebSettings.PluginsEnabled, True)
      • 71. s.setAttribute(QWebSettings.JavascriptEnabled, True)
    • SlideshareのAPIを叩く
      • WebFrame#evaluateJavascript()
        • Javascriptを評価します.
        • 72. 値を返します.
  • 73. Slideshare API:Player API
    • jumpTo(slide_number):Void
      • In the Slide-show jump to the specified slide number
    • next():Void
      • Move to the next slide
    • previous():Void
      • Move to the previous slide
    • first():Void
      • Move to the first slide in the slide-show
    • last():Void
      • Move to the last slide in the slide-show
    • getCurrentSlide():Number
      • Get the current slide number
  • 74. Slideshare Downloaderの仕組み(2)
    • キャプチャの取得
    • 75. WebFrame#render(QPainter)
      • size = QSize(598, 441)
      • 76. offscreen_image = QImage(size, QImage.Format_RGB32)
      • 77. painter = QPainter(offscreen_image)
      • 78. self.frame.render(painter)
  • 79. Slideshare Downloader(3)
    • ZIPで固める(pythonでやってしまった.)
    zip_gen = os.walk(&quot;.&quot;) for zip_me in zip_gen: # [rootname, dirnamelist, filenamelist ] print zip_me for reg_file in zip_me[2]: # loop for finename print reg_file write_file = os.path.join(zip_me[0], reg_file) arc_name = write_file # print &quot;zip write: &quot;, write_file, arc_name try: zipf.write(write_file, arc_name); except: print &quot;ERROR: writing file =&quot;, write_file zipf.close()
  • 80. これから
    • 完全自動化
      • HTTPClientのロード率がおかしい?
    • バッチ処理
      • ”○○”のキーワードの物を自動的にDL
    • テスト
    • 81. Watermark の付与(公開するなら)
  • 82. その他、PySideを使って作ったアプリ
    • Teratermっぽいコンソールアプリ
      • Qconsoleの移植
      • 83. Pythonでマクロ
    • PC Link Tool 互換アプリ
      • NEC製の携帯に積んであるWebサーバと通信
      • 84. Growl でAndroidの新着情報をPCで
  • 85. 参考資料
    • PySide/QML on MeeGo Tutorial
      • http://thp.io/2010/meego-python/
    • 上記の翻訳(途中)
      • http://erlang.web.fc2.com/pyside_tutorial/
    • 後は独学
  • 86.
      ご清聴 ありがとうございました
      N9 うまうま