Pythonでエッチなプログラムを書いてみた
こんにちは、アダルトハッカーのDAIです。前回、DMM Web APIを利用して、新人もののAVを取得しました。今度は取得したXML形式のデータを使って、ツイッターに投稿してみました。(ちなみにツイッターの規定を読んだところ、アダルトコンテンツの禁止条項はないようでした)
先日、ふと友達とAVの話をしたときに、一定数サンプル動画のほうが長い動画より好きな人がいることを知りました。そこで今回はDMMのTwitterで自動でポストするプログラムを書いてみました。(アダルト耐性がない人はみないでください)。
追記)そして結局bot化させました。
鳳かなめのサンプル動画まとめbot
#TODO
- 自分のサイトの準備(ツイッターでも可)(事前準備)
- TwitterでAPI KEYの取得(事前準備)
- DMMアフィリエイトに登録(事前準備)
- DMM APIのためにAPP IDとAFFILIATE IDの取得(事前準備)
- 検索キーワードの文字コードを取得(事前準備)
- コーディング
自分のサイトの準備
DMM Web APIを利用する際、アフィリエイトプログラムに登録する必要があります。その際、自分のウェブページが必要になりますので取得しておいてください。ページはツイッターアカウントのページでもかまわないみたいようです。
TwitterでAPI KEYの取得
この記事を参照して、Twitter API KEYを取得してきてください。
DMMアフィリエイトに登録
この記事を参考に、DMMアフィリエイトに登録してください!
DMMのAPIのためにAPP IDとAFFILIATE IDの取得
これもこちらの記事を参照して、コードを取得してください。
検索キーワードの文字コードを取得
検索キーワードを取得します。これは自分の性癖に合うようにしてください。僕はスケベな友人にリクエストで、「新人」をキーワードに設定しました。グーグル検索で「新人」と打って、表示されたURLをコピーして、日本語の文字コードを取得します。
新人の場合だと、%E6%96%B0%E4%BA%BA&oq=%E6%96%B0%E4%BA%BAとなります。
コーディング
さて、前回、DMM Web-APIから新人でキーワード検索をかけ、XMLデータを取得しました。今回はこのXMLデータをAVのタイトル、画像URL、動画URLをツイートします。
完成形
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 65 66 67 68 69 70 71 72 73 74 75 76 77 | import urllib.request from requests_oauthlib import OAuth1Session # ライブラリ(1) from bs4 import BeautifulSoup from TwitterAPI import TwitterAPI import requests import tweepy import os # 各種キーをセット CONSUMER_KEY = '[CONSUMER_KEY]' CONSUMER_SECRET = '[CONSUMER_SECRET]' ACCESS_TOKEN = '[ACCESS_TOKEN]' ACCESS_SECRET = '[ACCESS_SECRET]' #apiを取得 auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET) api = tweepy.API(auth) # ツイート投稿用のURL # DMMのAPP ID, AFFILIATE ID, 検索キーワードをセット APPID = "[APPID]" AFFILIATEID = "[AFFILIATEID]" KEYWORD = "your keyword here" #DMMのAPIを取得し、XMLをBeautifulsoupで取得 html = urllib.request.urlopen( "https://api.dmm.com/affiliate/v3/ItemList?api_id=" + APPID + "&affiliate_id=" + AFFILIATEID + "%20&site=DMM.R18&service=digital&floor=videoa&hits=2&sort=date&keyword=" + KEYWORD + "&output=xml" ) soup = BeautifulSoup(html, "html5lib" ) #取得したXMLを整理して表示する print ( "取得したデータを表示します" ) print (soup.prettify()) #タイトル・女優・画像URL・動画URLを追加 items = soup.items #1つ1つのitemオブジェクトを取得 print ( "取得したitems数:{}" . format ( len (items.item))) for item in items: print ( "--------------" ) title = item.title.string #動画タイトル title = (title[: 40 ] + "..動画はこちら→" ) if len (title) > 75 else title #タイトルが40字過ぎたら省略 print ( "title:{}" . format (title)) photoURL = item.imageurl.large.string #画像URL print ( "photoURL:{}" . format (photoURL)) #動画によってはサンプル動画がない。ない場合エラーになるので、tryで囲む try : videoURL = item.samplemovieurl.size_476_306.string print ( "videoURL:{}" . format (videoURL)) #ツイート内容 content = title + "|" + videoURL print ( "ツイート内容:{}" . format (content)) #DMMから取得した画像を一度ローカルに保存 request = requests.get(photoURL, stream = True ) filename = "temp.jpg" if request.status_code = = 200 : print ( "status_code == 200" ) with open (filename, 'wb' ) as image: for chunk in request: image.write(chunk) api.update_with_media(filename, status = content) print ( "ツイートに成功しました" ) os.remove(filename) else : print ( "画像をダウンロードできませんでした" ) except Exception as e: print (e) print ( "プログラムを終了しました" ) |
落とし穴
・For文でAPI回しすぎて、本アカウントでアダルト投稿を100して社会的に抹消される件居場所がなくなるので、気を付けてください。
・AVのタイトルが長すぎて140字普通に超える件
AVのタイトルが長すぎて、ツイート最大文字数を超えることもしばしば。そこで、以下のようなコードを実装して、回避しました。AVのタイトル、タイトルというよりもはやコンテンツに近いくらい長くて笑いました笑
title = (title[:40] + "..動画はこちら→") if len(title) > 75 else title #タイトルが40字過ぎたら省略
・画像をURL指定してポストしようとしてもうまくいかなかった件
urllibから、画像のURLを指定し、ポストしようと試みましたがうまくいきませんでした。ここでかなり時間をとりました。結局、一度ローカルに落とさないとうまくいかないようでしたので、ローカルに一時ファイルを保存し、ポストしたところ成功しました。
最後に
このプログラム定期実行して、ツイッターに埋め込めばオリジナルのアダルトボットがつくれそうですね。特にサンプル動画派の人にとっては、ツイッターを眺めているだけでおかずにスムーズに出会えるので、とてもよいですね。またアフィリエイト収益も入るそうなので、自動プログラムにして稼いでみるのも面白いかもしれません。
追記)その自動化については、Cloud9上での環境構築方法をまとめたので、ぜひご覧ください!そして自動化したbotのフォローもよろしくお願いします。
鳳かなめのサンプル動画まとめbot
追記)その自動化については、Cloud9上での環境構築方法をまとめたので、ぜひご覧ください!そして自動化したbotのフォローもよろしくお願いします。
鳳かなめのサンプル動画まとめbot
スポンサーリンク