Thứ Hai, 22 tháng 4, 2019

Đăng bài lên blogspot bằng google gdata api




https://c-sharp-asp-snippets.blogspot.com/2015/03/posting-to-blogspot-using-google-gdata.html?view=flipcard


https://c-sharp-asp-snippets.blogspot.com/?view=flipcard


hướng dẫn google gdata api
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách sử dụng  Google GData API để đăng lên Blogspot /  Blog Blogger từ google bằng  Ứng dụng C # hoặc .Net . Bạn cũng sẽ thấy cách  tải hình ảnh lên google bằng API  và đính kèm nó vào bài đăng trên blog và cách thêm thẻ trực tiếp từ Ứng dụng C # của bạn.
Trước hết, bạn phải tải xuống Google_Data_API tại đây  hoặc tải trực tiếp các lib  mà tôi đã sử dụng trong hướng dẫn này  tại đây .
Ok, sau khi bạn đã tải xuống  Google API Libs,  hãy bắt đầu.

1. CÁC KHOẢN PHỤ TÙNG GDATA LIBS

Chẳng hạn libs trên  C: \ Libs \  chẳng hạn.
Tạo dự án C # mới >> Chuyển đến  Solution Explorer  >> Nhấp chuột phải vào  Dự án  >>  Thêm  >>  Tham khảo
Google api libs gdata
Bây giờ, hãy đi tới Duyệt >> Nhấp vào Duyệt nút >> Chuyển đến  C: \ Libs \ Google API \ Samples  và chọn: 
"Google.GData.Photos.dll" "ExecRequest" "Google.GData.Blogger.dll" "Google.GData.Client.DLL" "Google.GData.Extensions.dll" >> Thêm
blogger phụ thuộc google api
Bây giờ bạn phải thêm vào mã của bạn:
1
2
3
4
using Google.GData.Blogger;
using Google.GData.Client;
using Google.GData.Photos;
using Google.GData.Extensions;
Và đó là tất cả với libs, bây giờ hãy đăng một cái gì đó

2. CÁCH ĐĂNG KÝ ĐẾN BLOGSPOT

Một loại bài đăng đơn giản trông giống như:
1
2
3
4
5
6
7
số 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
CheckForIllegalCrossThreadCalls = false;
Service service = new Service("blogger", "googleAPIshittyName");
service.Credentials = new GDataCredentials("yourGoogleUsername@gmail.com", "yourGooglePassword");
GDataGAuthRequestFactory factory = (GDataGAuthRequestFactory)service.RequestFactory;
factory.AccountType = "GOOGLE";
AtomEntry post = new AtomEntry();
post.Title.Text = "YourPostTitle";
post.Content = new AtomContent();
post.Content.Content = "Post Body, Descrption...";
post.Content.Type = "xhtml";
string tags = "tag1,tag2,tag3";
string[] tagsS = tags.Split(',');
foreach(string tag in tagsS)
{
    AtomCategory cat = new AtomCategory();
    cat.Scheme = new Uri("http://www.blogger.com/atom/ns#");
    cat.Term = tag;
    post.Categories.Add(cat);
}
post.IsDraft = false;
Uri blogFeedUri = new Uri("http://www.blogger.com/feeds/" + "yourBlogspotID" + "/posts/default");
AtomEntry createdEntry = null;
try
{
    createdEntry = service.Insert(blogFeedUri, post);
    MessageBox.Show("Done!");
}
catch (GDataRequestException exception)
{
    if (exception.ResponseString == "Blog has exceeded rate limit or otherwise requires word verification for new posts")
        MessageBox.Show("Blog has exceeded rate limit or otherwise requires word verification for new posts");
}
if (createdEntry == null)
    MessageBox.Show("Something went wrong, atricle was not published...\nCheck all html tags...");
Và bạn có thể tải lên một hình ảnh lên google theo cách này:
1
2
3
4
5
6
7
số 8
9
10
11
12
13
14
15
16
17
18
19
20
21
public string uploadImageToGoogle(string path, string username, string password, string blogId)
{
    if (!System.IO.File.Exists(path))
        return "Error! Image file not found";
    ///////////////////////token session and shits...///////////
    PicasaService service = new PicasaService("HowToFix.PRO");
    service.setUserCredentials(username, password);
    /////////////////cdefault album is dropBox or something////
    Uri postUri = new Uri(PicasaQuery.CreatePicasaUri(username));
    System.IO.FileInfo fileInfo = new System.IO.FileInfo(path);
    System.IO.FileStream fileStream = fileInfo.OpenRead();
    PicasaEntry entry = (PicasaEntry)service.Insert(postUri, fileStream, "image/png", "nameOfYourFile");
    fileStream.Close();
    PhotoAccessor ac = new PhotoAccessor(entry);
    string contentUrl = entry.Media.Content.Attributes["url"] as string;
    return contentUrl;
}
Chức năng  tải hình ảnh lên google  sẽ trả về liên kết trực tiếp đến hình ảnh của bạn mà bạn sẽ sử dụng trong bài đăng của mình như:
<img src="returnedString" />
blogId : Bạn có thể lấy nó từ Blogger. Đăng nhập vào blogger >> Truy cập Blog mong muốn và liên kết giống như: Tôi nghĩ bạn hiểu BlogID ở đâu
https://www.blogger.com/blogger.g?blogID=5004180000000060001

3.OR GAY TRỰC TIẾP MỘT CHỨC NĂNG ĐĂNG KÝ ĐẾN BLOGSPOT, HOẶC HAI

1
2
3
4
5
6
7
số 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
78
79
80
81
82
83
84
public void sendPostToBlogspot(string blogId, string username, string password, string title, string postBody, string tags)
{
    CheckForIllegalCrossThreadCalls = false;
    Service service = new Service("blogger", "googleAPIshittyName");
    service.Credentials = new GDataCredentials(username, password);
    GDataGAuthRequestFactory factory = (GDataGAuthRequestFactory)service.RequestFactory;
    factory.AccountType = "GOOGLE";
    /////////////////////////////////////////////////////////////
    if (postBody.Contains("[IMGLINK]"))
    {
        postBody = postBody.Replace("[IMGLINK]", uploadImageToGoogle("image.png", username, password, blogId));
    }
    ///////post////////////////////////////////
    AtomEntry post = new AtomEntry();
    post.Title.Text = title;
    post.Content = new AtomContent();
    post.Content.Content = postBody;
    post.Content.Type = "xhtml";
    int length = 0;
    //make sure that tags are not too long
    string[] tagsS = tags.Split(',');
    foreach (string label in tagsS)
    {
        length = length + label.Count();
        if (length > 198)
        {
            string label2 = label.Substring(0, 199);
            AtomCategory cat = new AtomCategory();
            cat.Scheme = new Uri("http://www.blogger.com/atom/ns#");
            cat.Term = label2;
            post.Categories.Add(cat);
            this.maskedTextBox5.Text = this.maskedTextBox5.Text + label2 + ",";
            break;
        }
        else
        {
            AtomCategory cat = new AtomCategory();
            cat.Scheme = new Uri("http://www.blogger.com/atom/ns#");
            cat.Term = label;
            post.Categories.Add(cat);
        }
    }
    post.IsDraft = false;
    ///////////////publishing post/_/_/_/_/_/_\_|_/_)_(_--> () - {} - [] 0_o
    Uri blogFeedUri = new Uri("http://www.blogger.com/feeds/" + blogId + "/posts/default");
    AtomEntry createdEntry = null;
    try
    {
        createdEntry = service.Insert(blogFeedUri, post);
        MessageBox.Show("Done!");
    }
    catch (GDataRequestException exception)
    {
        if (exception.ResponseString == "Blog has exceeded rate limit or otherwise requires word verification for new posts")
            MessageBox.Show("Blog has exceeded rate limit or otherwise requires word verification for new posts");
    }
    if (createdEntry == null)
        MessageBox.Show("Something went wrong, atricle was not published...\nCheck all html tags...");
    }
public string uploadImageToGoogle(string path, string username, string password, string blogId)
{
    if (!System.IO.File.Exists(path))
        return "Error! Image file not found";
    ///////////////////////token session and shits...///////////
    PicasaService service = new PicasaService("HowToFixPRO");
    service.setUserCredentials(username, password);
    /////////////////cdefault album is dropBox or something////
    Uri postUri = new Uri(PicasaQuery.CreatePicasaUri(username));
    System.IO.FileInfo fileInfo = new System.IO.FileInfo(path);
    System.IO.FileStream fileStream = fileInfo.OpenRead();
    PicasaEntry entry = (PicasaEntry)service.Insert(postUri, fileStream, "image/png", "nameOfYourFile");
    fileStream.Close();
    PhotoAccessor ac = new PhotoAccessor(entry);
    string contentUrl = entry.Media.Content.Attributes["url"] as string;
    return contentUrl;
}
Nếu bạn có hình ảnh trong bài đăng của mình, bạn phải đảm bảo rằng bài đăng đó sẽ giống như: 
<img src="[IMGLINK]" /> vwhere [IMGLINK] sẽ được thay thế bằng liên kết hình ảnh mà bạn đã chọn đường dẫn.

3.A LITTLE C # ỨNG DỤNG MÀ SAU BÀI ĐĂNG CHO BLOGSPOT:

google api đăng lên blogspot ứng dụng mạng
Bạn có thể tải C # Post lên Blogspot bằng dự án Google API  tại đây.
Bạn phải có libs  C:\Libs\ và thư mục này với libs C:\Libs\Google API\Samples

5. KẾT LUẬN

Bạn có thể tìm hiểu thêm về Google API trên Diễn đàn nhà phát triển Google GData như tạo album và những thứ khác nhưng tôi nghĩ những ví dụ này là một điểm tốt để bắt đầu.
Hãy bình luận nếu làm việc cho bạn hay không và tại sao không nếu có :))

Chủ Nhật, 21 tháng 4, 2019

Làm thế nào để đặt một thẻ?

https://www.megastock.ru/
https://cards.web.money/
https://www.megastock.ru/




https://cards.web.money/



https://github.com/sharpbrowser/SharpBrowser

https://github.com/sharpbrowser/SharpBrowser


SharpBrowser là trình duyệt web C # mã nguồn mở nhanh nhất hiện có! Nhanh hơn một chút so với Google Chrome khi kết xuất các trang web do trình kết xuất CEF nhẹ. Chúng tôi đã so sánh mọi công cụ duyệt duyệt .NET có sẵn và cuối cùng giải quyết trên CefSharp hiệu suất cao Được phát hành theo giấy phép MIT cho phép.

Tính năng, đặc điểm

  • HTML5, CSS3, JS, Video HTML5, WebGL 3D, v.v.
  • Duyệt theo tab
  • Thanh địa chỉ (cũng mở Google)
  • Quay lại, Chuyển tiếp, Dừng lại, Làm mới
  • Những công cụ phát triển
  • Thanh tìm kiếm (cũng nhấn mạnh tất cả các trường hợp)
  • Quản lý download
  • Trang lỗi tùy chỉnh
  • Menu ngữ cảnh tùy chỉnh
  • Dễ dàng thêm nhãn hiệu, nút hoặc phím nóng dành riêng cho nhà cung cấp
  • Xem các trang web trực tuyến và ngoại tuyến

Phím nóng

Phím nóngChức năng
Ctrl + TThêm một tab mới
Ctrl + NThêm một cửa sổ mới
Ctrl + WĐóng tab hoạt động
F5Làm mới tab hoạt động
F12Mở công cụ phát triển
Ctrl + TabChuyển sang tab tiếp theo
Ctrl + Shift + TabChuyển sang tab trước
Ctrl + FMở thanh tìm kiếm (Enter để tìm tiếp theo, Esc để đóng)

  • SharpBrowser sử dụng CefSharp 71, NET Framework 4.6
  • MainForm.cs - UI trình duyệt web chính và chức năng liên quan
  • Handlers - các trình xử lý khác nhau mà chúng tôi đã đăng ký với CefSharp cho phép tích hợp sâu hơn giữa chúng tôi và CefSharp
  • Data/JSON.cs - Trình tuần tự hóa / giải tuần tự JSON nhanh
  • bin- Các nhị phân được bao gồm trong binthư mục do yêu cầu thiết lập CefSharp phức tạp. Đừng để trống thư mục này.
  • bin/storage - Yêu cầu HTML và JS cho trình quản lý tải xuống và các trang lỗi tùy chỉnh

Tín dụng

Ảnh chụp màn hình

Trang chủ Apple

bản đồ Google

Thanh tim kiêm

Tab tải xuống

Những công cụ phát triển

Trang lỗi tùy chỉnh


Cách nhận hóa đơn gửi SMS trong ASP .NET MVC

Cách nhận hóa đơn gửi SMS trong ASP .NET MVC


Được xuất bản ngày 21 tháng 7 năm 2017 bởi Rabeb Othmani
Bây giờ bạn đã gửi SMS thành công và nhận SMS bằng số Nexmo của mình, đã đến lúc kiểm tra trạng thái của tin nhắn để đảm bảo nó được gửi. Để làm điều này, chúng tôi phải lấy biên lai gửi, sẽ trả lại trạng thái gửi của tin nhắn.

Yêu cầu

  • Một dự án Visual Studio
  • Tài khoản Nexmo. Bạn có thể đăng ký tại đây.
  • Một dự án được thiết lập như được mô tả trong bài đăng trên blog trước trong loạt bài hướng dẫn này mà bạn có thể tìm thấy trên GitHub.
  • Tùy chọn: Nexmo CLI

Nhận webhooks trên localhost của bạn

API SMS Nexmo sử dụng webhooks để thông báo cho ứng dụng ASP.NET về trạng thái của tin nhắn văn bản đã gửi. Như đã giải thích trong hướng dẫn trước , chúng tôi sẽ sử dụng ngrok để hiển thị cổng ra internet để máy chủ của Nexmo có thể kết nối với nó trong khi thử nghiệm.
Quay trở lại Visual Studio và chạy chương trình của bạn, sau đó đi đến Bảng điều khiển Nexmo . Trên trang Cài đặt , về phía dưới, bạn sẽ thấy Gọi lại cho Biên nhận giao hàngtrong Cài đặt API . Dán URL ngrok bên trong hộp văn bản và thêm / SMS / DLR vào cuối của nó. Điều này sẽ định tuyến tin nhắn đến hành động Nhận trong bộ điều khiển SMS.

Đi sâu vào mã

Trong loạt bài hướng dẫn này, chúng tôi đã bắt đầu bằng cách học cách gửi SMS.
Trong hướng dẫn đầu tiên này , chúng tôi đã tạo một dự án ASP.NET MVC và thêm một bộ điều khiển có tên SMSController.csSau đó, chúng tôi tạo ra hai phương thức hành động. Một trong số đó là trình bày quan điểm về các chi tiết của SMS (số đích và văn bản tin nhắn) và cách khác là lấy các giá trị từ biểu mẫu và gửi SMS.
Trong hướng dẫn thứ hai , chúng tôi đã tạo một phương thức hành động khác để in chi tiết tin nhắn SMS đến vào cửa sổ đầu ra.
Để đọc biên lai giao hàng, chúng tôi sẽ tạo một phương thức hành động được gọi là DLRtrong SMSController.cs.
Như bạn có thể thấy trong đoạn mã trên, bạn cần thêm [FromUri] trong tham số để có thể đọc biên lai giao hàng. Trên phương thức này, thêm HTTPGetAttribution để hạn chế phương thức xử lý các yêu cầu GET. In messageID ( ID tin nhắn ), msisdn ( số ảo Nexmo ), sang ( số đích ) và trạng thái ( thông báo trạng thái ) vào cửa sổ đầu ra bằng cách sử dụng 'Debug.WriteLine'. 
Bạn có thể kiểm tra danh sách mã trạng thái ở đây .
Bây giờ bạn đã sẵn sàng để đi! Gửi SMS bằng số ảo Nexmo của bạn và mở cửa sổ đầu ra trong Visual Studio. Ở đó bạn sẽ thấy biên lai giao hàng cho văn bản bạn đã gửi! Bây giờ bạn đã thiết lập thành công số ảo của mình để trả về trạng thái cho tin nhắn văn bản qua webhook!

Liên kết hữu ích