【前提・実現したいこと】
プログラム初心者で、Python3のみ使っています。
今回、Python3のhttp.server機能を使って、iPhone8のPodcastアプリ(Apple製)にラズパイ上にあるmp4動画をダウンロードさせようとしています。
(家庭内LANを使用、ユーザは1~2人、同時アクセス無し、家の編集ビデオをPodcastへ登録する目的)
(cgiを使ってrssを生成、Podcastへ番組登録までは実施済み)
Podcast上で入手可能なエピソードからダウンロード指示までできるのですが、そこからダウンロードが進まない状態です。
【質問内容】
ダウンロードが進まない理由を知りたいと思っています。
・そもそもCGIHTTPRequestHandlerにファイルをダウンロードする機能が無いのが理由でしょうか?
・もし原因を調べる場合、どのような方法があるでしょうか?
【環境】
サーバー側:192.168.11.9
Raspberry Pi3 Model B(Raspbian Jessie)
Python 3.5.3
端末側:192.168.11.7
iPhone8(ios12.4.1)
Podcast(Apple製)
【エラーメッセージとその説明】
Podcastからダウンロード指示をするとHEADのログが表示
それ以降はだんまり状態
次のGET以降のログは、Podcastでダウンロード中止したら表示される
Python3のコンソールに出てくるログ
serving at port 8080 192.168.11.7 - - [19/Sep/2019 22:27:17] "HEAD /podcast/test01.mp4 HTTP/1.1" 200 - 192.168.11.7 - - [19/Sep/2019 22:28:20] "GET /podcast/test01.mp4 HTTP/1.1" 200 - ---------------------------------------- Exception happened during processing of request from ('192.168.11.7', 55307) Traceback (most recent call last): File "/usr/lib/python3.5/socketserver.py", line 313, in _handle_request_noblock self.process_request(request, client_address) File "/usr/lib/python3.5/socketserver.py", line 341, in process_request self.finish_request(request, client_address) File "/usr/lib/python3.5/socketserver.py", line 354, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python3.5/socketserver.py", line 681, in __init__ self.handle() File "/usr/lib/python3.5/http/server.py", line 422, in handle self.handle_one_request() File "/usr/lib/python3.5/http/server.py", line 410, in handle_one_request method() File "/usr/lib/python3.5/http/server.py", line 648, in do_GET self.copyfile(f, self.wfile) File "/usr/lib/python3.5/http/server.py", line 809, in copyfile shutil.copyfileobj(source, outputfile) File "/usr/lib/python3.5/shutil.py", line 82, in copyfileobj fdst.write(buf) File "/usr/lib/python3.5/socket.py", line 594, in write return self._sock.send(b) BrokenPipeError: [Errno 32] Broken pipe ----------------------------------------
【該当のソースコード】
┳art-work(今回は関係なし)
┣CSS(今回は関係なし)
┣cgi-bin(今回は関係なし)
┣podcast━movie.rss, test01.mp4, test02.mp4
┣index.html(今回は関係なし)
┗start.py
python
1start.py 2#!/usr/bin/env python3 3# -*- coding: utf-8 -*- 4 5from http.server import HTTPServer, CGIHTTPRequestHandler 6import os 7 8host = "" 9port = 8080 10httpd = HTTPServer((host, port), CGIHTTPRequestHandler) 11print('serving at port', port) 12httpd.serve_forever()
rss
1movie.rss 2<?xml version="1.0" encoding="utf-8"?> 3<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"> 4 <channel> 5 <title>家のビデオt</title> 6 <itunes:owner/> 7 <itunes:image href="http://192.168.11.9:8080/art-work/001.png"/> 8 <itunes:category text="video"/> 9 <item> 10 <title>test01.mp4</title> 11 <enclosure url="http://192.168.11.9:8080/podcast/test01.mp4" length="200000" type="video/mp4"/> 12 <guid isPermaLink="true">http://192.168.11.9:8080/podcast/test01.mp4</guid> 13 <pubDate>Tue, 10 Sep 2019 02:00:00 -0000</pubDate> 14 </item> 15 <item> 16 <title>test02.mp4</title> 17 <enclosure url="http://192.168.11.9:8080/podcast/test02.mp4" length="300000" type="video/mp4"/> 18 <guid isPermaLink="true">http://192.168.11.9:8080/podcast/test02.mp4</guid> 19 <pubDate>Tue, 10 Sep 2019 03:00:00 -0000</pubDate> 20 </item> 21 </channel> 22</rss>
試したこと
- 登録するファイルの数、サイズは関係無いようです。
- SimpleHTTPRequestHandlerやBaseHTTPRequestHandlerもダメでした。
回答1件
あなたの回答
tips
プレビュー