twitterをなんかするやつ

検索すると色々出てくるけど、シンプルにシェルスクリプトというのがよさげ。

基本的なアイデアは生きてるけど、今のtwitterの仕様では動画がダウンロードできないらしい。

GIF動画についてはこちらのページのやり方でいける。

mp4の動画はどうしようかと思って色々と悩んだ結果、youtube-dlに任せることにした。名前からしYoutube専用なのかと思ったら色々なサイトから動画がダウンロードできて便利ね。

youtube-dl

あとは不具合ではないんだけど、-oオプション(:orig)を付けた際にファイル名が "*.jpg%3Aorig" みたいになって見にくいのを直した。

全体的にはこんな感じか。時間があったら後で備忘録として実装の説明を書いておきたい。

youtube-dlにcookieを渡してないので、ログインしないとダメなヤツは保存できない。ま、必要になったら追加しよう・・・

$ diff -u berryjack berryjack.org
--- berryjack   2017-10-18 02:12:01.985022700 +0900
+++ berryjack.org       2017-10-17 23:34:22.090356500 +0900
@@ -4,9 +4,6 @@
 SCRIPT_DIR=$(cd $(dirname $0);pwd)
 source "$SCRIPT_DIR/common.sh"

-YOUTUBE_DL=$SCRIPT_DIR/youtube-dl
-FFMPEG=$SCRIPT_DIR/ffmpeg
-
 function get_profile_image()
 {
   src="$1"
@@ -130,31 +127,6 @@
       #   skip=1
       # fi
     done
-
-    # video(2) - GIF
-    # cf. http://www.unknownengineer.net/entry/2017/06/03/193913
-    for video in $(grep -Eo 'https://pbs\.twimg\.com/tweet_video_thumb/[a-zA-Z0-9_\-]+\.(jpg|png)' $tmp |sort |uniq |sed -e "s/pbs.twimg.com\/tweet_video_thumb/video.twimg.com\/tweet_video/" | sed -e "s/jpg/mp4/")
-    do
-      exist "$dir" "$video"
-    done
-
-    # video(3) - MP4(HLS)
-    # save sumbnails
-    for image in $(grep -Eo 'https://pbs\.twimg\.com/ext_tw_video_thumb/[0-9]+/[a-z]+/[a-z]+/[a-zA-Z0-9_\-]+\.(jpg|png)' $tmp)
-    do
-      exist "$dir" "$image"
-    done
-    # save videos
-    for video in $(grep -Eo 'data-conversation-id="[0-9]+"|ext_tw_video_thumb' $tmp | grep -B 1 ext_tw_video_thumb | grep data-conversation-id | grep -Eo '[0-9]+' | sed -e "s/^/https\:\/\/twitter.com\/$id\/status\//")
-    do
-      m3u8url=$($YOUTUBE_DL -g $video)
-      video2=$(echo $(basename $m3u8url) | sed -e 's/\.m3u8/.mp4/')
-      exist "$dir" "$video2" > /dev/null
-      if [ $? -eq 0 ]; then
-        echo $m3u8url
-      fi
-    done
-
     # image
     for image in $( grep -Eo 'https://pbs\.twimg\.com/media/[a-zA-Z0-9_\-]+\.(jpg|png)' $tmp | sort | uniq | \
       (if [ $orig -eq 0 ]; then
@@ -164,18 +136,9 @@
       fi
       ) )
     do
-      if [ $orig -eq 0 ]; then
-        exist "$dir" "$image"
-        if [ $? -ne 0 ]; then
-          skip=1
-        fi
-      else
-        exist "$dir" "$(echo $(basename $image) | sed -e 's/:orig$//')" > /dev/null
-        if [ $? -ne 0 ]; then
-          skip=1
-        else
-          echo $image
-        fi
+      exist "$dir" "$image"
+      if [ $? -ne 0 ]; then
+        skip=1
       fi
     done
     if [ $force -ne 1 -a $skip -eq 1 ]; then
@@ -276,17 +239,7 @@
     fi
     for media_url in $(get_media_url $id $get_orig "$cookie_file" $userdir $force)
     do
-      echo $media_url | grep -E '\.m3u8' > /dev/null 2>&1
-      if [ $? -eq 0 ]; then
-        $YOUTUBE_DL -o "${userdir:+${userdir}/}%(id)s.%(ext)s" --ffmpeg-location $FFMPEG $media_url
-      else
-        echo $media_url | grep -E ':orig$' > /dev/null 2>&1
-        if [ $? -eq 0 ]; then
-          wget $cookie_opt -nc -nv -P "$userdir" -O ${userdir:+${userdir}/}$(echo $(basename $media_url) | sed -e 's/:orig$//') "$media_url"
-        else
-          wget $cookie_opt -nc -nv -P "$userdir" "$media_url"
-        fi
-      fi
+      wget $cookie_opt -nc -nv -P "$userdir" "$media_url"
     done
   else
     get_media_url $id $get_orig "$cookie_file" "" $force