PySide/QtWebkitで楽々 slideshare Hack

  • 2,206 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,206
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
5
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

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順
    • 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の全クラス:分類別
      □共通・全体 □設定系
      • QWebSettings
      □プラグイン系
      • QWebPluginFactory
      • 56. QWebPluginFactory.MimeType
      • 57. QWebPluginFactory.Plugin
    • □タブ,HTMLとかページ系
    • □???
      • 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 うまうま