ちょっとした物。InstagramのAPI取得する

2019.10.05

Logging

Instagram(インスタグラム)の画像などが取得することが出来ます。アクセストークンの取得の方法がわからない場合はぐぐってください。尚、APIのバージョンが、今後上がった場合は下記のコードは使用できなくなる可能性があります。ちなみにこのコード動作確認はしておりません。このコードを理解して使用できる人のみお使いください。
尚、画像取得数はデフォルト10にしています。プログラムではアクセストークンと20を渡しています。
画像URLはコメントアウトのところに入ってきます。※プログラムを可変してお使いください。

<?php
//Instagram
//https://api.instagram.com/v1/users/self/media/recent/?access_token=&count=
class instagram_api{
    public const url ="https://api.instagram.com/v1/users/self/media/recent/?access_token=";
    public function api ($access_token= "",$img_count =10){
        $url = self::url;
        return (object)json_decode(@file_get_contents($url . $access_token."&count=".$img_count));
    }
    public function obj_img($obj=Null){
        if(!is_object($obj))return false;
        if(!$obj->data)return false;
        foreach ($obj->data as $key => $item) {
            var_dump($item);
            // $item->images->standard_resolution->url
            // $item->images->low_resolution->url
        }
        return true;
    }
}
$obj = instagram_api::api("access_token",20);
instagram_api::obj_img($obj);

タグ

, 10, 20, access, API, class, com, const, count, https, instagr, Instagram, lt, media', php, public, quot, recent, self, token, url, users, アウト, アクセス, インスタグラム, コード, こと, コメント, デフォルト, トークン, ところ, バージョン, プログラム, 下記, , 今後, 使用, 動作, 取得, 可能性, 場合, 方法, , 理解, 画像, 確認,

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。

2019.02.22

Logging

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。
実際、自分の階層に合わして呼び出しを変更してください。
なお、さくらレンタルサーバーでクロンの設定をして自動投稿できます。
ライブラリの設置などは割愛してます。

<?php
// cron:: cd /home/user/www/zip358.com/site/tw; /usr/local/bin/php tw.php
require_once ('../../wp-load.php');
require "vendor/autoload.php";
use AbrahamTwitterOAuthTwitterOAuth;
$consumer_key = "XXXXXXXXXXXXXX";
$consumer_secret = "XXXXXXXXXXXX";
$access_token = "XXXXXXXXXXXXXX";
$access_token_secret = "XXXXXXXXXXXXXXX";
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
$args = array(
	'posts_per_page' => 1,
    'orderby' => 'rand'
);
$posts = get_posts($args);
foreach ( $posts as $val ){
    $href =  get_permalink($val->ID);
    $title = get_the_title($val->ID);
    $res = $to->post("statuses/update", array("status" => $title . " " . $href));
}

タグ

358, Abraham, access, autoload, bin, cd, com, consumer, cron, home, key, local, lt, once, php, require, secret, site, tok, tw, TwitterOAuth, use, user, usr, vendor, WordPress, wp-load, XXXXXXXXXXXX, XXXXXXXXXXXXXX, zip, クロン, サーバー, さくら, ツイート, ピックアップ, ライブラリ, ランダム, レンタル, , 割愛, 変更, 実際, 投稿, 自分, 自動, 記事, 設定, 設置, 階層,

AccessVBAのSQL文で抽出しクエリ出力しCSVファイルで吐き出すコード。

2016.06.17

Logging

Option Compare Database
Private Sub csvconvert_Click()
Dim Path As String
Path = "C:\Users\zip\Desktop\test.csv" 'ファイルが存在すること。
DoCmd.TransferText acExportDelim, , "任意のテーブル名", Path, True
End Sub

Access、VBAのSQL文で抽出しクエリ出力しCSVファイルで吐き出すコード。
まず、フォームにボタン配置とテーブル(吐き出したいデーブル名)を用意してください。なお、SQL文を変更してselect文以外にもJOINしたり、検索を結果をクエリに出力することも可能です。

出力した結果は既存のCSVに吐き出すという処理まで記載しています。
今回、このようなコードを記載したのには訳があります。
こういうコードをやってみたいなと思っても検索したコードはエラーコードばかりでうまく処理されなかったのでそれでは意味が無いと思い。
今回の記載に至りました。

この頃思うのですが、昔の技術者の考え方は古すぎる悩んで考え覚える。なんて効率が悪いでしょうか。おそらく大手の会社ではこのようなスタンスを取っている会社は少ないと思います。いまは、教えて覚えての反復で即戦力をという考えでないと時代に置いてけぼりになりますが地方ではまだ、昔ながらの古い体質があります。業種によれば、そういう教え方がベストかも知れませんがIT業界は、もうその時代は終わっているように思えます

2021/11/18 追記:嫌気が差して出来ないようにしたのを放置していた事を忘れてました?

2022/09/08 追記:概要は教えるべきだが後は考えるべきというか🤔、プログラム教えて理解するものじゃないというのが今の回答かも。技は教えても良い派です。この頃思うのはどこにコメントを入れるべきなのかという事が悩ましい🙄。そして昔のコードは何だこれが多い😱。今も適当だけども…。

タグ

access, CSV, csv&quot, Dim Path As String Path, DoCmd.TransferText acExportDelim, Option Compare Database Private Sub csvconvert_Click, path, quot, SQL文, True End Sub, UserszipDesktop, VBA, クエリ, クエリ出力しCSVファイル, スタンス, デーブル名, 即戦力, 反復, 嫌気, 追記,

Accessを触り始めてつれづれと。

2014.08.30

Logging

Accessを勉強し始めて2週間{まぁ本当は…}たったぐらいです。会社でAccessの制作をしようと思って発案{2ヶ月前}したものの、結局丸投げするような感じになりそうです{退きました}、もしくは頓挫。Accessの方ですが、今ままでDBと言えばCUIの系統ばかり触っていたので自分にはふ?んっていう感じでした。CUIに比べて逆に面倒だなという第一印象です。第二印象はAccessには、元々いろいろな機能が付いていて、それを使えばもっと手が抜けるのだと印象を受けました。そこらへんゴリゴリとコードを書くか、もともと合ったAccessの機能を使用するかは人によると思います。
結論から言えば、もっとGUIの機能を使用してGUIで出来る所はGUIで、コード(クラスやメソッド)で出来る所はコードでと言う風に単純明快に分けることによって、かなり良いコードが書けると思います{見やすいかどうかは人によります}。
みんなが分かるコードを書く{コードの統一}。
みんなが分かるコードを書くというのは非常に難しいですね。プログラムを書くにあたって、人それぞれ考え方が違うのです、統一にはコードというよりも人というものが大事かも。
同じものを作ってもプログラムの場合、シンプルなコードもありますし、長いコードもあります。レベルの違いや考え方の違いです。最終的な問題は人なんですね、プログラムの基本は自分で覚えれるのですが、その後の技{技術}の吸収はどんなに教えても、その人が理解できなければ無理なんです。自分もAccessの機能を、全部覚えたわけではないのですが、ひと通りの事は理解しました{まだDBまわりの機能は理解してないかな}。
まとめ
プログラムは結果と答えが正しければ良いのですが…。

タグ

access, CUI, DBまわり, GUI, かなり良いコード, コード, そこら, ひと通り, プログラム, みんな, メソッド, 人それぞれ考え方, 吸収, 機能, 発案, 系統, 結論, 統一, 長いコード, 頓挫,

Accessのさんぷるコードができましたので(´Д`)貼っときます。

2014.08.21

Logging

突貫工事で作ったのでバグは多少あると思いますが{例えばsql インジェクション対策とか。}、Accessのsampleコードができましたので貼っときます。なお、これで何が出来るかって言えばDBの修正、追加、削除といった基本的な動きをします{挙動不審ぎみ嘘!?}。若干、ソースコードを弄くれば使い回しが出来るようにしております。飯くったり他のことをしながらもガリガリとコードを書きました。ちなみにAccessのViewerをマイクロソフトからダウンロードすると動作すると思います。ファイルは下記からダウンロードください。 追記:暇な時に改良していきますので( ゚д゚)ノ ヨロシクとコメントも暇があれば書いときます。そして無駄なコードがありますが、それも軽量していくつもりです(`・ω・´)。ちなみにいまはDBを空にすると落ちますので・・・・(直しました。)。?samplezip358.zip?[https://zip358.com/tool/samplezip358.zip][08/21 11:26]

Option Compare Database
Public db_x As Long
Public max As Variant
Function sel_all(tablename As Variant, tal_valname As Variant) As Variant
    Dim x As Long
    Dim y As Long
    Dim sql As String
    Dim RS As DAO.Recordset
    Dim db As DAO.Database
    Dim hoge(999, 999) As Variant
    Dim val_n As Variant
    Dim val As Variant
    Set db = CurrentDb
    sql = "SELECT * FROM " & tablename & " ORDER BY ID ASC;"
    MsgBox sql
    Set RS = db.OpenRecordset(sql)
    Do Until RS.EOF
        For y = 0 To UBound(tal_valname)
            hoge(x, y) = RS.Fields(tal_valname(y))
        Next y
        RS.MoveNext
        x = x + 1
    Loop
    Set db = CurrentDb
    sql = "SELECT MAX(ID) as maxs  FROM " & tablename & ";"
    MsgBox sql
    Set RS = db.OpenRecordset(sql)
    max = RS.Fields("maxs")
    db_x = x - 1
    Set db = Nothing
    sel_all = hoge
End Function
Function up_in(chk As Boolean, tablename As Variant, tal_valname As Variant, tal_val As Variant, ID As Long) As Variant
    Dim sql As String
    Dim RS As DAO.Recordset
    Dim db As DAO.Database
    Dim hoge_valname As String
    Dim hoge_val As String
    Dim hoge As Variant
    If chk = True Then
        For i = 0 To UBound(tal_valname)
            hoge_valname = hoge_valname & tal_valname(i) & ", "
        Next i
        hoge_val = sql_str(tal_val, "", "", True)
        sql = "INSERT INTO " & tablename & " (" & Left(hoge_valname, Len(hoge_valname) - 2) & ")VALUES (" & hoge_val & ");"
    Else
        hoge_valn_val = sql_str("", tal_valname, tal_val, False)
        sql = "Update " & tablename & " Set " & hoge_valn_val & " WHERE ID = " & ID & ";"
    End If
    MsgBox sql
    Set db = CurrentDb
    db.Execute (sql)
    Set db = Nothing
    up_in = True
End Function
Function del(tablename As Variant, tal_valname As Variant, tal_val As Variant) As Variant
    Dim sql As String
    Dim RS As DAO.Recordset
    Dim db As DAO.Database
    Dim hoge As Variant
    sql = "DELETE FROM " & tablename & " WHERE " & tal_valname & " = " & tal_val & ";"
    MsgBox sql
    Set db = CurrentDb
    db.Execute (sql)
    Set db = Nothing
    del = True
End Function
Function sql_str(hoge As Variant, tal_valname As Variant, tal_val As Variant, chk As Boolean) As Variant
    Dim i As Long
    Dim hoge_str As Variant
    If chk = True Then
        For i = 0 To UBound(hoge)
            If IsNumeric(hoge(i)) Then
                hoge_str = hoge_str & hoge(i) & ", "
            Else
                hoge_str = hoge_str & "'" & hoge(i) & "', "
            End If
        Next i
    Else
        For i = 0 To UBound(tal_valname)
            If IsNumeric(tal_val(i)) Then
                hoge_str = hoge_str & tal_valname(i) & " = " & tal_val(i) & ", "
            Else
                hoge_str = hoge_str & tal_valname(i) & " = '" & tal_val(i) & "', "
            End If
        Next i
    End If
    sql_str = Left(hoge_str, Len(hoge_str) - 2)
End Function

↑クラスdbソースコード

Option Compare Database
Dim max As Long
Dim ID As Long
Dim val_val As Variant
Private Sub Form_Load()
lod
End Sub
Sub lod()
    Dim db As db_db
    Dim val_name As Variant
    Dim x As Long
    Set db = New db_db
    val_name = Array("ID", "表題", "数値", "文字")
    val_val = db.sel_all("tableone", val_name)
    max = db.max + 1
    If cmb.ListCount > 0 Then
        For x = 0 To cmb.ListCount - 1
            cmb.RemoveItem 0
        Next
    End If
    For x = 0 To db.db_x
        cmb.AddItem val_val(x, 1)
    Next
    Set db = Nothing
End Sub
Private Sub cmb_Click()
    If cmb.ListIndex >= 0 Then
        Viw cmb.ListIndex
    End If
End Sub
Private Sub del_btn_Click()
    Dim db As db_db
    Dim hoge As Variant
    Set db = New db_db
    val_name = Array("ID", "表題", "数値", "文字")
    If ID > 0 And max > 1 Then
        hoge = db.del("tableone", "ID", ID)
    End If
    Set db = Nothing
    lod
End Sub
Private Sub in_btn_Click()
    Dim db As db_db
    Dim val_name As Variant
    Dim val As Variant
    Dim hoge As Variant
    chkchk
    val_name = Array("ID", "表題", "数値", "文字")
    val = Array(max, cmb, suuzi, moji)
    Set db = New db_db
    hoge = db.up_in(True, "tableone", val_name, val, max)
    Set db = Nothing
    lod
End Sub
Private Sub upd_btn_Click()
    Dim db As db_db
    Dim val_name As Variant
    Dim val As Variant
    Dim hoge As Variant
    chkchk
    val_name = Array("表題", "数値", "文字")
    val = Array(cmb, suuzi, moji)
    Set db = New db_db
    If ID > 0 And max > 1 Then
        hoge = db.up_in(False, "tableone", val_name, val, ID)
    End If
    Set db = Nothing
    lod
End Sub
Sub Viw(i As Long)
    ID = val_val(i, 0)
    suuzi = val_val(i, 2)
    moji = val_val(i, 3)
End Sub
Sub chkchk()
    If IsNumeric(suuzi) Then
        If suuzi > 9999 Then
            suuzi = 9999
        End If
    Else
        suuzi = 0
    End If
    If IsNumeric(moji) Then
        moji = "文字が不正>" & moji
    End If
    If IsNumeric(cmb) Then
        cmb = "文字が不正>" & cmb
    End If
End Sub

↑formソースコード

タグ

35, 358, access, db, https, sample, samplezip, SQL, Viewer, www, zip, いま, インジェクション, コード, こと, コメント, これ, サンプル, ソース, それ, ダウンロード, つもり, バグ, ファイル, マイクロソフト, ヨロシク, 下記, , , 修正, 削除, 動作, , 対策, 工事, 改良, , , 無駄, , 突貫, 若干, 軽量, 追加, 追記, ,

Access2013届きましたよ(;´Д`)ハァハァ

2014.08.17

Logging

Access2013が手元に届きました。それは良かったのですけどポストに投函されてました。実際、これってメール便ではないので投函ってあり得ないのですが…。1万2千円の品物を投函って!!まぁ田舎だから取っていく人もいないだろうけど・・・と愚痴りながら、中身を開封してたらアレ!?( ´・ω・`)< ショボいぞ!!、プロダクトキーの赤いカードとインストールの手続き書の薄っぺらい紙だけ入ってました{店頭で聞いたとおりだ(´・ω・`)}。さっそくマイクロソフトのアカウントでログインし指定したURLからダウンロード&インストールしました。ちなみに2013の印象ですけど、UI(ユーザーインターフェース)はほぼAccess2010と変わってません、なので2010から移行される方は戸惑うことはないと思います。
今月か来月にはサンプルコードをUPします{忘れているかも(´Д`)、そのうちUPと思ってください}。

 

タグ

, 2, 2010, 2013, access, nbsp, UI, UP, url, アカウント, アレ, インストール, インターフェース, うち, カード, キー, コード, こと, コレ, サンプル, ショボ, ソレ, ダウンロード, とおり, ハァハァ, プロダクト, ポスト, マイクロソフト, メール便, ユーザー, ログイン, , 中身, , 今月, , 印象, 品物, 実際, 店頭, 手元, 手続き, 投函, 指定, , 来月, 田舎, 移行, 開封,

accessを購入します{本日、購入}。

2014.08.16

Logging

Access2013を購入します、旧のアクセスは持っているのだけどセキュリティ上使用できなくなったので購入します。ちなみにアクセスは、いまいち使い勝手良くなかったので今まで牽制していましたが、この頃、使用してみて基本的にエクセルVBAとそんなに変わらないなという事がわかりました。エクセルVBAにDB機能とシステム要素が付与したものと考えると良い感じですね。ただ、Formの呼び出しなどが、もっとソフト開発(VisualStudio)よりな呼び出しになっている感じです{最初はわからなったです}。よくよく考えるとVisualStudioなんてものを使用せずとも結構これだけで、ひと通りの事が出来そうです{前にも同じこと言っていた気がします}。
購入して何を作るかっていう所ですけどサンプルコードをひとつ作って見ようかなと、あとは、ちょっとしたデータ入力のために簡易てきな入力システムみたいなものを作ってみようと思いますが、こちらは公開しません。

タグ

2013, access, db, Form, VBA, VisualStudio, アクセス, あと, いまいち, エクセル, コード, コチラ, こと, これだけ, サンプル, システム, セキュリティ, ソフト, ため, データ, ひとつ, ひと通り, もの, , 付与, , 使い勝手, 使用, 入力, 公開, , 感じ, , , 最初, 本日, 機能, , 牽制, 簡易, 要素, 購入, 開発, ,